// 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  S1538C5_nt  {
  int s1538c5f0[2];
  void  mf1538c5(); // _ZN10S1538C5_nt8mf1538c5Ev
};
//SIG(-1 S1538C5_nt) C1{ m Fi[2]}


void  S1538C5_nt ::mf1538c5(){}

//skip512 S1538C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1538C4_nt  {
  int s1538c4f0;
  __tsi64 s1538c4f1;
  void *s1538c4f2[4];
  int s1538c4f3[2];
  void *s1538c4f4;
  ::S1538C5_nt s1538c4f5;
  void *s1538c4f6[2];
  virtual  ~S1538C4_nt(); // _ZN10S1538C4_ntD1Ev
  virtual void  v7(); // _ZN10S1538C4_nt2v7Ev
  virtual void  v8(); // _ZN10S1538C4_nt2v8Ev
  virtual void  v9(); // _ZN10S1538C4_nt2v9Ev
  virtual void  v10(); // _ZN10S1538C4_nt3v10Ev
  virtual void  v11(); // _ZN10S1538C4_nt3v11Ev
  virtual void  v12(); // _ZN10S1538C4_nt3v12Ev
  virtual void  v13(); // _ZN10S1538C4_nt3v13Ev
  virtual void  v14(); // _ZN10S1538C4_nt3v14Ev
  virtual void  v15(); // _ZN10S1538C4_nt3v15Ev
  virtual void  v16(); // _ZN10S1538C4_nt3v16Ev
  virtual void  v17(); // _ZN10S1538C4_nt3v17Ev
  virtual void  v18(); // _ZN10S1538C4_nt3v18Ev
  virtual void  v19(); // _ZN10S1538C4_nt3v19Ev
  virtual void  v20(); // _ZN10S1538C4_nt3v20Ev
  virtual void  v21(); // _ZN10S1538C4_nt3v21Ev
  virtual void  v22(); // _ZN10S1538C4_nt3v22Ev
  virtual void  v23(); // _ZN10S1538C4_nt3v23Ev
  virtual void  v24(); // _ZN10S1538C4_nt3v24Ev
  virtual void  v25(); // _ZN10S1538C4_nt3v25Ev
  virtual void  v26(); // _ZN10S1538C4_nt3v26Ev
  virtual void  v27(); // _ZN10S1538C4_nt3v27Ev
  virtual void  v28(); // _ZN10S1538C4_nt3v28Ev
  virtual void  v29(); // _ZN10S1538C4_nt3v29Ev
  virtual void  v30(); // _ZN10S1538C4_nt3v30Ev
  virtual void  v31(); // _ZN10S1538C4_nt3v31Ev
  virtual void  v32(); // _ZN10S1538C4_nt3v32Ev
  virtual void  v33(); // _ZN10S1538C4_nt3v33Ev
  virtual void  v34(); // _ZN10S1538C4_nt3v34Ev
  virtual void  v35(); // _ZN10S1538C4_nt3v35Ev
  virtual void  v36(); // _ZN10S1538C4_nt3v36Ev
  virtual void  v37(); // _ZN10S1538C4_nt3v37Ev
  virtual void  v38(); // _ZN10S1538C4_nt3v38Ev
  virtual void  v39(); // _ZN10S1538C4_nt3v39Ev
  virtual void  v40(); // _ZN10S1538C4_nt3v40Ev
  virtual void  v41(); // _ZN10S1538C4_nt3v41Ev
  virtual void  v42(); // _ZN10S1538C4_nt3v42Ev
  virtual void  v43(); // _ZN10S1538C4_nt3v43Ev
  virtual void  v44(); // _ZN10S1538C4_nt3v44Ev
  virtual void  v45(); // _ZN10S1538C4_nt3v45Ev
  virtual void  v46(); // _ZN10S1538C4_nt3v46Ev
  virtual void  v47(); // _ZN10S1538C4_nt3v47Ev
  virtual void  v48(); // _ZN10S1538C4_nt3v48Ev
  virtual void  v49(); // _ZN10S1538C4_nt3v49Ev
  virtual void  v50(); // _ZN10S1538C4_nt3v50Ev
  virtual void  v51(); // _ZN10S1538C4_nt3v51Ev
  virtual void  v52(); // _ZN10S1538C4_nt3v52Ev
  virtual void  v53(); // _ZN10S1538C4_nt3v53Ev
  virtual void  v54(); // _ZN10S1538C4_nt3v54Ev
  virtual void  v55(); // _ZN10S1538C4_nt3v55Ev
  virtual void  v56(); // _ZN10S1538C4_nt3v56Ev
  virtual void  v57(); // _ZN10S1538C4_nt3v57Ev
  virtual void  v58(); // _ZN10S1538C4_nt3v58Ev
  virtual void  v59(); // _ZN10S1538C4_nt3v59Ev
  virtual void  v60(); // _ZN10S1538C4_nt3v60Ev
  virtual void  v61(); // _ZN10S1538C4_nt3v61Ev
  virtual void  v62(); // _ZN10S1538C4_nt3v62Ev
  virtual void  v63(); // _ZN10S1538C4_nt3v63Ev
  virtual void  v64(); // _ZN10S1538C4_nt3v64Ev
  virtual void  v65(); // _ZN10S1538C4_nt3v65Ev
  virtual void  v66(); // _ZN10S1538C4_nt3v66Ev
  virtual void  v67(); // _ZN10S1538C4_nt3v67Ev
  virtual void  v68(); // _ZN10S1538C4_nt3v68Ev
  virtual void  v69(); // _ZN10S1538C4_nt3v69Ev
  virtual void  v70(); // _ZN10S1538C4_nt3v70Ev
  S1538C4_nt(); // tgen
};
//SIG(-1 S1538C4_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]}


 S1538C4_nt ::~S1538C4_nt(){ note_dtor("S1538C4_nt", this);}
void  S1538C4_nt ::v7(){vfunc_called(this, "_ZN10S1538C4_nt2v7Ev");}
void  S1538C4_nt ::v8(){vfunc_called(this, "_ZN10S1538C4_nt2v8Ev");}
void  S1538C4_nt ::v9(){vfunc_called(this, "_ZN10S1538C4_nt2v9Ev");}
void  S1538C4_nt ::v10(){vfunc_called(this, "_ZN10S1538C4_nt3v10Ev");}
void  S1538C4_nt ::v11(){vfunc_called(this, "_ZN10S1538C4_nt3v11Ev");}
void  S1538C4_nt ::v12(){vfunc_called(this, "_ZN10S1538C4_nt3v12Ev");}
void  S1538C4_nt ::v13(){vfunc_called(this, "_ZN10S1538C4_nt3v13Ev");}
void  S1538C4_nt ::v14(){vfunc_called(this, "_ZN10S1538C4_nt3v14Ev");}
void  S1538C4_nt ::v15(){vfunc_called(this, "_ZN10S1538C4_nt3v15Ev");}
void  S1538C4_nt ::v16(){vfunc_called(this, "_ZN10S1538C4_nt3v16Ev");}
void  S1538C4_nt ::v17(){vfunc_called(this, "_ZN10S1538C4_nt3v17Ev");}
void  S1538C4_nt ::v18(){vfunc_called(this, "_ZN10S1538C4_nt3v18Ev");}
void  S1538C4_nt ::v19(){vfunc_called(this, "_ZN10S1538C4_nt3v19Ev");}
void  S1538C4_nt ::v20(){vfunc_called(this, "_ZN10S1538C4_nt3v20Ev");}
void  S1538C4_nt ::v21(){vfunc_called(this, "_ZN10S1538C4_nt3v21Ev");}
void  S1538C4_nt ::v22(){vfunc_called(this, "_ZN10S1538C4_nt3v22Ev");}
void  S1538C4_nt ::v23(){vfunc_called(this, "_ZN10S1538C4_nt3v23Ev");}
void  S1538C4_nt ::v24(){vfunc_called(this, "_ZN10S1538C4_nt3v24Ev");}
void  S1538C4_nt ::v25(){vfunc_called(this, "_ZN10S1538C4_nt3v25Ev");}
void  S1538C4_nt ::v26(){vfunc_called(this, "_ZN10S1538C4_nt3v26Ev");}
void  S1538C4_nt ::v27(){vfunc_called(this, "_ZN10S1538C4_nt3v27Ev");}
void  S1538C4_nt ::v28(){vfunc_called(this, "_ZN10S1538C4_nt3v28Ev");}
void  S1538C4_nt ::v29(){vfunc_called(this, "_ZN10S1538C4_nt3v29Ev");}
void  S1538C4_nt ::v30(){vfunc_called(this, "_ZN10S1538C4_nt3v30Ev");}
void  S1538C4_nt ::v31(){vfunc_called(this, "_ZN10S1538C4_nt3v31Ev");}
void  S1538C4_nt ::v32(){vfunc_called(this, "_ZN10S1538C4_nt3v32Ev");}
void  S1538C4_nt ::v33(){vfunc_called(this, "_ZN10S1538C4_nt3v33Ev");}
void  S1538C4_nt ::v34(){vfunc_called(this, "_ZN10S1538C4_nt3v34Ev");}
void  S1538C4_nt ::v35(){vfunc_called(this, "_ZN10S1538C4_nt3v35Ev");}
void  S1538C4_nt ::v36(){vfunc_called(this, "_ZN10S1538C4_nt3v36Ev");}
void  S1538C4_nt ::v37(){vfunc_called(this, "_ZN10S1538C4_nt3v37Ev");}
void  S1538C4_nt ::v38(){vfunc_called(this, "_ZN10S1538C4_nt3v38Ev");}
void  S1538C4_nt ::v39(){vfunc_called(this, "_ZN10S1538C4_nt3v39Ev");}
void  S1538C4_nt ::v40(){vfunc_called(this, "_ZN10S1538C4_nt3v40Ev");}
void  S1538C4_nt ::v41(){vfunc_called(this, "_ZN10S1538C4_nt3v41Ev");}
void  S1538C4_nt ::v42(){vfunc_called(this, "_ZN10S1538C4_nt3v42Ev");}
void  S1538C4_nt ::v43(){vfunc_called(this, "_ZN10S1538C4_nt3v43Ev");}
void  S1538C4_nt ::v44(){vfunc_called(this, "_ZN10S1538C4_nt3v44Ev");}
void  S1538C4_nt ::v45(){vfunc_called(this, "_ZN10S1538C4_nt3v45Ev");}
void  S1538C4_nt ::v46(){vfunc_called(this, "_ZN10S1538C4_nt3v46Ev");}
void  S1538C4_nt ::v47(){vfunc_called(this, "_ZN10S1538C4_nt3v47Ev");}
void  S1538C4_nt ::v48(){vfunc_called(this, "_ZN10S1538C4_nt3v48Ev");}
void  S1538C4_nt ::v49(){vfunc_called(this, "_ZN10S1538C4_nt3v49Ev");}
void  S1538C4_nt ::v50(){vfunc_called(this, "_ZN10S1538C4_nt3v50Ev");}
void  S1538C4_nt ::v51(){vfunc_called(this, "_ZN10S1538C4_nt3v51Ev");}
void  S1538C4_nt ::v52(){vfunc_called(this, "_ZN10S1538C4_nt3v52Ev");}
void  S1538C4_nt ::v53(){vfunc_called(this, "_ZN10S1538C4_nt3v53Ev");}
void  S1538C4_nt ::v54(){vfunc_called(this, "_ZN10S1538C4_nt3v54Ev");}
void  S1538C4_nt ::v55(){vfunc_called(this, "_ZN10S1538C4_nt3v55Ev");}
void  S1538C4_nt ::v56(){vfunc_called(this, "_ZN10S1538C4_nt3v56Ev");}
void  S1538C4_nt ::v57(){vfunc_called(this, "_ZN10S1538C4_nt3v57Ev");}
void  S1538C4_nt ::v58(){vfunc_called(this, "_ZN10S1538C4_nt3v58Ev");}
void  S1538C4_nt ::v59(){vfunc_called(this, "_ZN10S1538C4_nt3v59Ev");}
void  S1538C4_nt ::v60(){vfunc_called(this, "_ZN10S1538C4_nt3v60Ev");}
void  S1538C4_nt ::v61(){vfunc_called(this, "_ZN10S1538C4_nt3v61Ev");}
void  S1538C4_nt ::v62(){vfunc_called(this, "_ZN10S1538C4_nt3v62Ev");}
void  S1538C4_nt ::v63(){vfunc_called(this, "_ZN10S1538C4_nt3v63Ev");}
void  S1538C4_nt ::v64(){vfunc_called(this, "_ZN10S1538C4_nt3v64Ev");}
void  S1538C4_nt ::v65(){vfunc_called(this, "_ZN10S1538C4_nt3v65Ev");}
void  S1538C4_nt ::v66(){vfunc_called(this, "_ZN10S1538C4_nt3v66Ev");}
void  S1538C4_nt ::v67(){vfunc_called(this, "_ZN10S1538C4_nt3v67Ev");}
void  S1538C4_nt ::v68(){vfunc_called(this, "_ZN10S1538C4_nt3v68Ev");}
void  S1538C4_nt ::v69(){vfunc_called(this, "_ZN10S1538C4_nt3v69Ev");}
void  S1538C4_nt ::v70(){vfunc_called(this, "_ZN10S1538C4_nt3v70Ev");}
S1538C4_nt ::S1538C4_nt(){ note_ctor("S1538C4_nt", this);} // tgen

//skip512 S1538C4_nt

#else // __cplusplus

extern void _ZN10S1538C4_ntC1Ev();
extern void _ZN10S1538C4_ntD1Ev();
Name_Map name_map_S1538C4_nt[] = {
  NSPAIR(_ZN10S1538C4_ntC1Ev),
  NSPAIR(_ZN10S1538C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1538C4_nt[];
extern void _ZN10S1538C4_ntD1Ev();
extern void _ZN10S1538C4_ntD0Ev();
extern void _ZN10S1538C4_nt2v7Ev();
extern void _ZN10S1538C4_nt2v8Ev();
extern void _ZN10S1538C4_nt2v9Ev();
extern void _ZN10S1538C4_nt3v10Ev();
extern void _ZN10S1538C4_nt3v11Ev();
extern void _ZN10S1538C4_nt3v12Ev();
extern void _ZN10S1538C4_nt3v13Ev();
extern void _ZN10S1538C4_nt3v14Ev();
extern void _ZN10S1538C4_nt3v15Ev();
extern void _ZN10S1538C4_nt3v16Ev();
extern void _ZN10S1538C4_nt3v17Ev();
extern void _ZN10S1538C4_nt3v18Ev();
extern void _ZN10S1538C4_nt3v19Ev();
extern void _ZN10S1538C4_nt3v20Ev();
extern void _ZN10S1538C4_nt3v21Ev();
extern void _ZN10S1538C4_nt3v22Ev();
extern void _ZN10S1538C4_nt3v23Ev();
extern void _ZN10S1538C4_nt3v24Ev();
extern void _ZN10S1538C4_nt3v25Ev();
extern void _ZN10S1538C4_nt3v26Ev();
extern void _ZN10S1538C4_nt3v27Ev();
extern void _ZN10S1538C4_nt3v28Ev();
extern void _ZN10S1538C4_nt3v29Ev();
extern void _ZN10S1538C4_nt3v30Ev();
extern void _ZN10S1538C4_nt3v31Ev();
extern void _ZN10S1538C4_nt3v32Ev();
extern void _ZN10S1538C4_nt3v33Ev();
extern void _ZN10S1538C4_nt3v34Ev();
extern void _ZN10S1538C4_nt3v35Ev();
extern void _ZN10S1538C4_nt3v36Ev();
extern void _ZN10S1538C4_nt3v37Ev();
extern void _ZN10S1538C4_nt3v38Ev();
extern void _ZN10S1538C4_nt3v39Ev();
extern void _ZN10S1538C4_nt3v40Ev();
extern void _ZN10S1538C4_nt3v41Ev();
extern void _ZN10S1538C4_nt3v42Ev();
extern void _ZN10S1538C4_nt3v43Ev();
extern void _ZN10S1538C4_nt3v44Ev();
extern void _ZN10S1538C4_nt3v45Ev();
extern void _ZN10S1538C4_nt3v46Ev();
extern void _ZN10S1538C4_nt3v47Ev();
extern void _ZN10S1538C4_nt3v48Ev();
extern void _ZN10S1538C4_nt3v49Ev();
extern void _ZN10S1538C4_nt3v50Ev();
extern void _ZN10S1538C4_nt3v51Ev();
extern void _ZN10S1538C4_nt3v52Ev();
extern void _ZN10S1538C4_nt3v53Ev();
extern void _ZN10S1538C4_nt3v54Ev();
extern void _ZN10S1538C4_nt3v55Ev();
extern void _ZN10S1538C4_nt3v56Ev();
extern void _ZN10S1538C4_nt3v57Ev();
extern void _ZN10S1538C4_nt3v58Ev();
extern void _ZN10S1538C4_nt3v59Ev();
extern void _ZN10S1538C4_nt3v60Ev();
extern void _ZN10S1538C4_nt3v61Ev();
extern void _ZN10S1538C4_nt3v62Ev();
extern void _ZN10S1538C4_nt3v63Ev();
extern void _ZN10S1538C4_nt3v64Ev();
extern void _ZN10S1538C4_nt3v65Ev();
extern void _ZN10S1538C4_nt3v66Ev();
extern void _ZN10S1538C4_nt3v67Ev();
extern void _ZN10S1538C4_nt3v68Ev();
extern void _ZN10S1538C4_nt3v69Ev();
extern void _ZN10S1538C4_nt3v70Ev();
static  VTBL_ENTRY vtc_S1538C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1538C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1538C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI10S1538C4_nt[];
VTBL_ENTRY *P__ZTI10S1538C4_nt = _ZTI10S1538C4_nt; 
extern  VTBL_ENTRY _ZTV10S1538C4_nt[];
Class_Descriptor cd_S1538C4_nt = {  "S1538C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1538C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S1538C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1538C4_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  S1538C8_nt  {
  void *s1538c8f0;
  int s1538c8f1[2];
  void  mf1538c8(); // _ZN10S1538C8_nt8mf1538c8Ev
};
//SIG(-1 S1538C8_nt) C1{ m Fp Fi[2]}


void  S1538C8_nt ::mf1538c8(){}

//skip512 S1538C8_nt

#else // __cplusplus

Class_Descriptor cd_S1538C8_nt = {  "S1538C8_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  S1538C7_nt  : S1538C8_nt {
};
//SIG(-1 S1538C7_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S1538C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1538C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C7_nt = {  "S1538C7_nt", // class name
  bases_S1538C7_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  S1538C6_nt  : S1538C7_nt {
};
//SIG(-1 S1538C6_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S1538C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1538C7_nt;
static Base_Class bases_S1538C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1538C9_nt  {
  int s1538c9f0;
  void  mf1538c9(); // _ZN10S1538C9_nt8mf1538c9Ev
};
//SIG(-1 S1538C9_nt) C1{ m Fi}


void  S1538C9_nt ::mf1538c9(){}

//skip512 S1538C9_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S1538C9_nt[];
VTBL_ENTRY *P__ZTI10S1538C9_nt = _ZTI10S1538C9_nt; 
Class_Descriptor cd_S1538C9_nt = {  "S1538C9_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1538C9_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  S1538C13  : S1538C8_nt {
};
//SIG(-1 S1538C13) C1{ BC2{ m Fp Fi[2]}}



static void Test_S1538C13()
{
  extern Class_Descriptor cd_S1538C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C13, buf);
    S1538C13 &lv = *(new (buf) S1538C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C13)");
    check_base_class_offset(lv, (S1538C8_nt*), 0, "S1538C13");
    test_class_info(&lv, &cd_S1538C13);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C13(Test_S1538C13, "S1538C13", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1538C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C13 = {  "S1538C13", // class name
  bases_S1538C13, 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  S1538C12  : S1538C13 {
};
//SIG(-1 S1538C12) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1538C12()
{
  extern Class_Descriptor cd_S1538C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C12, buf);
    S1538C12 &lv = *(new (buf) S1538C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C12)");
    check_base_class_offset(lv, (S1538C8_nt*)(S1538C13*), 0, "S1538C12");
    check_base_class_offset(lv, (S1538C13*), 0, "S1538C12");
    test_class_info(&lv, &cd_S1538C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C12(Test_S1538C12, "S1538C12", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1538C13;
static Base_Class bases_S1538C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C12 = {  "S1538C12", // class name
  bases_S1538C12, 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  S1538C14_nt  {
  int s1538c14f0[3];
  void  mf1538c14(); // _ZN11S1538C14_nt9mf1538c14Ev
};
//SIG(-1 S1538C14_nt) C1{ m Fi[3]}


void  S1538C14_nt ::mf1538c14(){}

//skip512 S1538C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S1538C19()
{
  extern Class_Descriptor cd_S1538C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C19, buf);
    S1538C19 &lv = *(new (buf) S1538C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C19)");
    check_base_class_offset(lv, (S1538C8_nt*), 0, "S1538C19");
    test_class_info(&lv, &cd_S1538C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C19(Test_S1538C19, "S1538C19", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1538C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C19 = {  "S1538C19", // class name
  bases_S1538C19, 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  S1538C18  : S1538C19 {
};
//SIG(-1 S1538C18) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1538C18()
{
  extern Class_Descriptor cd_S1538C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C18, buf);
    S1538C18 &lv = *(new (buf) S1538C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C18)");
    check_base_class_offset(lv, (S1538C8_nt*)(S1538C19*), 0, "S1538C18");
    check_base_class_offset(lv, (S1538C19*), 0, "S1538C18");
    test_class_info(&lv, &cd_S1538C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C18(Test_S1538C18, "S1538C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1538C19;
static Base_Class bases_S1538C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C18 = {  "S1538C18", // class name
  bases_S1538C18, 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  S1538C3_nt  : S1538C4_nt {
  ::S1538C6_nt s1538c3f0;
  ::S1538C6_nt s1538c3f1;
  ::S1538C9_nt s1538c3f2;
  int s1538c3f3;
  char s1538c3f4[4];
  void *s1538c3f5[2];
  ::S1538C6_nt s1538c3f6;
  unsigned int s1538c3f7:1;
  unsigned int s1538c3f8:1;
  unsigned int s1538c3f9:1;
  unsigned int s1538c3f10:1;
  unsigned int s1538c3f11:1;
  unsigned int s1538c3f12:1;
  unsigned int s1538c3f13:1;
  unsigned int s1538c3f14:1;
  unsigned int s1538c3f15:1;
  unsigned int s1538c3f16:1;
  unsigned int s1538c3f17:1;
  unsigned int s1538c3f18:1;
  unsigned int s1538c3f19:1;
  unsigned int s1538c3f20:1;
  unsigned int s1538c3f21:1;
  unsigned int s1538c3f22:1;
  unsigned int s1538c3f23:1;
  unsigned int s1538c3f24:1;
  unsigned int s1538c3f25:1;
  unsigned int s1538c3f26:1;
  unsigned int s1538c3f27:1;
  unsigned int s1538c3f28:1;
  unsigned int s1538c3f29:1;
  unsigned int s1538c3f30:1;
  unsigned int s1538c3f31:1;
  unsigned int s1538c3f32:1;
  unsigned int s1538c3f33:1;
  unsigned int s1538c3f34:1;
  unsigned int s1538c3f35:1;
  unsigned int s1538c3f36:1;
  unsigned int s1538c3f37:1;
  unsigned int s1538c3f38:1;
  unsigned int s1538c3f39:1;
  unsigned int s1538c3f40:1;
  unsigned int s1538c3f41:1;
  unsigned int s1538c3f42:1;
  unsigned int s1538c3f43:1;
  unsigned int s1538c3f44:1;
  unsigned int s1538c3f45:1;
  unsigned int s1538c3f46:1;
  unsigned int s1538c3f47:1;
  unsigned int s1538c3f48:1;
  unsigned int s1538c3f49:1;
  unsigned int s1538c3f50:1;
  unsigned int s1538c3f51:1;
  unsigned int s1538c3f52:1;
  unsigned int s1538c3f53:1;
  unsigned int s1538c3f54:1;
  unsigned int s1538c3f55:1;
  unsigned int s1538c3f56:1;
  unsigned int s1538c3f57:1;
  unsigned int s1538c3f58:1;
  unsigned int s1538c3f59:1;
  unsigned int s1538c3f60:1;
  unsigned int s1538c3f61:1;
  unsigned int s1538c3f62:1;
  unsigned int s1538c3f63:1;
  unsigned int s1538c3f64:1;
  unsigned int s1538c3f65:1;
  unsigned int s1538c3f66:1;
  unsigned int s1538c3f67:1;
  unsigned int s1538c3f68:1;
  unsigned int s1538c3f69:1;
  unsigned int s1538c3f70:1;
  unsigned int s1538c3f71:1;
  unsigned int s1538c3f72:1;
  unsigned int s1538c3f73:1;
  unsigned int s1538c3f74:1;
  unsigned int s1538c3f75:1;
  unsigned int s1538c3f76:1;
  unsigned int s1538c3f77:1;
  unsigned int s1538c3f78:1;
  unsigned int s1538c3f79:1;
  unsigned int s1538c3f80:1;
  unsigned int s1538c3f81:1;
  unsigned int s1538c3f82:1;
  unsigned int s1538c3f83:1;
  int s1538c3f84[5];
  void *s1538c3f85[2];
  int s1538c3f86[3];
  ::S1538C5_nt s1538c3f87;
  ::S1538C5_nt s1538c3f88;
  ::S1538C5_nt s1538c3f89;
  ::S1538C12 s1538c3f90;
  ::S1538C12 s1538c3f91;
  int s1538c3f92;
  void *s1538c3f93[2];
  ::S1538C14_nt s1538c3f94;
  ::S1538C14_nt s1538c3f95;
  ::S1538C14_nt s1538c3f96;
  ::S1538C14_nt s1538c3f97;
  void *s1538c3f98;
  ::S1538C5_nt s1538c3f99;
  ::S1538C12 s1538c3f100;
  ::S1538C14_nt s1538c3f101;
  ::S1538C14_nt s1538c3f102;
  int s1538c3f103;
  ::S1538C14_nt s1538c3f104;
  ::S1538C14_nt s1538c3f105;
  void *s1538c3f106;
  int s1538c3f107;
  char s1538c3f108;
  ::S1538C14_nt s1538c3f109;
  ::S1538C14_nt s1538c3f110;
  void *s1538c3f111;
  int s1538c3f112;
  void *s1538c3f113;
  ::S1538C12 s1538c3f114;
  ::S1538C18 s1538c3f115;
  ::S1538C18 s1538c3f116;
  virtual  ~S1538C3_nt(); // _ZN10S1538C3_ntD1Ev
  virtual void  v71(); // _ZN10S1538C3_nt3v71Ev
  virtual void  v72(); // _ZN10S1538C3_nt3v72Ev
  virtual void  v73(); // _ZN10S1538C3_nt3v73Ev
  virtual void  v74(); // _ZN10S1538C3_nt3v74Ev
  virtual void  v75(); // _ZN10S1538C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1538C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1538C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1538C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1538C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1538C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1538C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1538C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1538C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1538C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1538C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1538C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1538C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1538C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1538C3_nt3v89Ev
  virtual void  v90(); // _ZN10S1538C3_nt3v90Ev
  virtual void  v91(); // _ZN10S1538C3_nt3v91Ev
  virtual void  v92(); // _ZN10S1538C3_nt3v92Ev
  virtual void  v93(); // _ZN10S1538C3_nt3v93Ev
  virtual void  v94(); // _ZN10S1538C3_nt3v94Ev
  virtual void  v95(); // _ZN10S1538C3_nt3v95Ev
  virtual void  v96(); // _ZN10S1538C3_nt3v96Ev
  virtual void  v97(); // _ZN10S1538C3_nt3v97Ev
  virtual void  v98(); // _ZN10S1538C3_nt3v98Ev
  virtual void  v99(); // _ZN10S1538C3_nt3v99Ev
  virtual void  v100(); // _ZN10S1538C3_nt4v100Ev
  virtual void  v101(); // _ZN10S1538C3_nt4v101Ev
  virtual void  v102(); // _ZN10S1538C3_nt4v102Ev
  virtual void  v103(); // _ZN10S1538C3_nt4v103Ev
  virtual void  v104(); // _ZN10S1538C3_nt4v104Ev
  virtual void  v105(); // _ZN10S1538C3_nt4v105Ev
  virtual void  v106(); // _ZN10S1538C3_nt4v106Ev
  virtual void  v107(); // _ZN10S1538C3_nt4v107Ev
  virtual void  v108(); // _ZN10S1538C3_nt4v108Ev
  virtual void  v109(); // _ZN10S1538C3_nt4v109Ev
  virtual void  v110(); // _ZN10S1538C3_nt4v110Ev
  virtual void  v111(); // _ZN10S1538C3_nt4v111Ev
  virtual void  v112(); // _ZN10S1538C3_nt4v112Ev
  virtual void  v113(); // _ZN10S1538C3_nt4v113Ev
  virtual void  v114(); // _ZN10S1538C3_nt4v114Ev
  virtual void  v115(); // _ZN10S1538C3_nt4v115Ev
  virtual void  v116(); // _ZN10S1538C3_nt4v116Ev
  virtual void  v117(); // _ZN10S1538C3_nt4v117Ev
  virtual void  v118(); // _ZN10S1538C3_nt4v118Ev
  virtual void  v119(); // _ZN10S1538C3_nt4v119Ev
  virtual void  v120(); // _ZN10S1538C3_nt4v120Ev
  virtual void  v121(); // _ZN10S1538C3_nt4v121Ev
  virtual void  v122(); // _ZN10S1538C3_nt4v122Ev
  virtual void  v123(); // _ZN10S1538C3_nt4v123Ev
  virtual void  v124(); // _ZN10S1538C3_nt4v124Ev
  virtual void  v125(); // _ZN10S1538C3_nt4v125Ev
  virtual void  v126(); // _ZN10S1538C3_nt4v126Ev
  virtual void  v127(); // _ZN10S1538C3_nt4v127Ev
  virtual void  v128(); // _ZN10S1538C3_nt4v128Ev
  virtual void  v129(); // _ZN10S1538C3_nt4v129Ev
  virtual void  v130(); // _ZN10S1538C3_nt4v130Ev
  virtual void  v131(); // _ZN10S1538C3_nt4v131Ev
  virtual void  v132(); // _ZN10S1538C3_nt4v132Ev
  virtual void  v133(); // _ZN10S1538C3_nt4v133Ev
  virtual void  v134(); // _ZN10S1538C3_nt4v134Ev
  virtual void  v135(); // _ZN10S1538C3_nt4v135Ev
  virtual void  v136(); // _ZN10S1538C3_nt4v136Ev
  virtual void  v137(); // _ZN10S1538C3_nt4v137Ev
  virtual void  v138(); // _ZN10S1538C3_nt4v138Ev
  virtual void  v139(); // _ZN10S1538C3_nt4v139Ev
  virtual void  v140(); // _ZN10S1538C3_nt4v140Ev
  virtual void  v141(); // _ZN10S1538C3_nt4v141Ev
  virtual void  v142(); // _ZN10S1538C3_nt4v142Ev
  virtual void  v143(); // _ZN10S1538C3_nt4v143Ev
  virtual void  v144(); // _ZN10S1538C3_nt4v144Ev
  virtual void  v145(); // _ZN10S1538C3_nt4v145Ev
  virtual void  v146(); // _ZN10S1538C3_nt4v146Ev
  virtual void  v147(); // _ZN10S1538C3_nt4v147Ev
  virtual void  v148(); // _ZN10S1538C3_nt4v148Ev
  virtual void  v149(); // _ZN10S1538C3_nt4v149Ev
  virtual void  v150(); // _ZN10S1538C3_nt4v150Ev
  virtual void  v151(); // _ZN10S1538C3_nt4v151Ev
  virtual void  v152(); // _ZN10S1538C3_nt4v152Ev
  virtual void  v153(); // _ZN10S1538C3_nt4v153Ev
  virtual void  v154(); // _ZN10S1538C3_nt4v154Ev
  virtual void  v155(); // _ZN10S1538C3_nt4v155Ev
  virtual void  v156(); // _ZN10S1538C3_nt4v156Ev
  virtual void  v157(); // _ZN10S1538C3_nt4v157Ev
  virtual void  v158(); // _ZN10S1538C3_nt4v158Ev
  virtual void  v159(); // _ZN10S1538C3_nt4v159Ev
  virtual void  v160(); // _ZN10S1538C3_nt4v160Ev
  virtual void  v161(); // _ZN10S1538C3_nt4v161Ev
  virtual void  v162(); // _ZN10S1538C3_nt4v162Ev
  virtual void  v163(); // _ZN10S1538C3_nt4v163Ev
  virtual void  v164(); // _ZN10S1538C3_nt4v164Ev
  virtual void  v165(); // _ZN10S1538C3_nt4v165Ev
  virtual void  v166(); // _ZN10S1538C3_nt4v166Ev
  virtual void  v167(); // _ZN10S1538C3_nt4v167Ev
  virtual void  v168(); // _ZN10S1538C3_nt4v168Ev
  virtual void  v169(); // _ZN10S1538C3_nt4v169Ev
  virtual void  v170(); // _ZN10S1538C3_nt4v170Ev
  virtual void  v171(); // _ZN10S1538C3_nt4v171Ev
  virtual void  v172(); // _ZN10S1538C3_nt4v172Ev
  virtual void  v173(); // _ZN10S1538C3_nt4v173Ev
  virtual void  v174(); // _ZN10S1538C3_nt4v174Ev
  virtual void  v175(); // _ZN10S1538C3_nt4v175Ev
  virtual void  v176(); // _ZN10S1538C3_nt4v176Ev
  virtual void  v177(); // _ZN10S1538C3_nt4v177Ev
  virtual void  v178(); // _ZN10S1538C3_nt4v178Ev
  virtual void  v179(); // _ZN10S1538C3_nt4v179Ev
  virtual void  v180(); // _ZN10S1538C3_nt4v180Ev
  virtual void  v181(); // _ZN10S1538C3_nt4v181Ev
  virtual void  v182(); // _ZN10S1538C3_nt4v182Ev
  virtual void  v183(); // _ZN10S1538C3_nt4v183Ev
  virtual void  v184(); // _ZN10S1538C3_nt4v184Ev
  virtual void  v185(); // _ZN10S1538C3_nt4v185Ev
  virtual void  v186(); // _ZN10S1538C3_nt4v186Ev
  virtual void  v187(); // _ZN10S1538C3_nt4v187Ev
  virtual void  v188(); // _ZN10S1538C3_nt4v188Ev
  virtual void  v189(); // _ZN10S1538C3_nt4v189Ev
  virtual void  v190(); // _ZN10S1538C3_nt4v190Ev
  virtual void  v191(); // _ZN10S1538C3_nt4v191Ev
  virtual void  v192(); // _ZN10S1538C3_nt4v192Ev
  virtual void  v193(); // _ZN10S1538C3_nt4v193Ev
  virtual void  v194(); // _ZN10S1538C3_nt4v194Ev
  virtual void  v195(); // _ZN10S1538C3_nt4v195Ev
  virtual void  v196(); // _ZN10S1538C3_nt4v196Ev
  virtual void  v197(); // _ZN10S1538C3_nt4v197Ev
  virtual void  v198(); // _ZN10S1538C3_nt4v198Ev
  virtual void  v199(); // _ZN10S1538C3_nt4v199Ev
  virtual void  v200(); // _ZN10S1538C3_nt4v200Ev
  virtual void  v201(); // _ZN10S1538C3_nt4v201Ev
  virtual void  v202(); // _ZN10S1538C3_nt4v202Ev
  virtual void  v203(); // _ZN10S1538C3_nt4v203Ev
  virtual void  v204(); // _ZN10S1538C3_nt4v204Ev
  virtual void  v205(); // _ZN10S1538C3_nt4v205Ev
  virtual void  v206(); // _ZN10S1538C3_nt4v206Ev
  virtual void  v207(); // _ZN10S1538C3_nt4v207Ev
  virtual void  v208(); // _ZN10S1538C3_nt4v208Ev
  virtual void  v209(); // _ZN10S1538C3_nt4v209Ev
  virtual void  v210(); // _ZN10S1538C3_nt4v210Ev
  virtual void  v211(); // _ZN10S1538C3_nt4v211Ev
  virtual void  v212(); // _ZN10S1538C3_nt4v212Ev
  virtual void  v213(); // _ZN10S1538C3_nt4v213Ev
  S1538C3_nt(); // tgen
};
//SIG(-1 S1538C3_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}


 S1538C3_nt ::~S1538C3_nt(){ note_dtor("S1538C3_nt", this);}
void  S1538C3_nt ::v71(){vfunc_called(this, "_ZN10S1538C3_nt3v71Ev");}
void  S1538C3_nt ::v72(){vfunc_called(this, "_ZN10S1538C3_nt3v72Ev");}
void  S1538C3_nt ::v73(){vfunc_called(this, "_ZN10S1538C3_nt3v73Ev");}
void  S1538C3_nt ::v74(){vfunc_called(this, "_ZN10S1538C3_nt3v74Ev");}
void  S1538C3_nt ::v75(){vfunc_called(this, "_ZN10S1538C3_nt3v75Ev");}
void  S1538C3_nt ::v76(){vfunc_called(this, "_ZN10S1538C3_nt3v76Ev");}
void  S1538C3_nt ::v77(){vfunc_called(this, "_ZN10S1538C3_nt3v77Ev");}
void  S1538C3_nt ::v78(){vfunc_called(this, "_ZN10S1538C3_nt3v78Ev");}
void  S1538C3_nt ::v79(){vfunc_called(this, "_ZN10S1538C3_nt3v79Ev");}
void  S1538C3_nt ::v80(){vfunc_called(this, "_ZN10S1538C3_nt3v80Ev");}
void  S1538C3_nt ::v81(){vfunc_called(this, "_ZN10S1538C3_nt3v81Ev");}
void  S1538C3_nt ::v82(){vfunc_called(this, "_ZN10S1538C3_nt3v82Ev");}
void  S1538C3_nt ::v83(){vfunc_called(this, "_ZN10S1538C3_nt3v83Ev");}
void  S1538C3_nt ::v84(){vfunc_called(this, "_ZN10S1538C3_nt3v84Ev");}
void  S1538C3_nt ::v85(){vfunc_called(this, "_ZN10S1538C3_nt3v85Ev");}
void  S1538C3_nt ::v86(){vfunc_called(this, "_ZN10S1538C3_nt3v86Ev");}
void  S1538C3_nt ::v87(){vfunc_called(this, "_ZN10S1538C3_nt3v87Ev");}
void  S1538C3_nt ::v88(){vfunc_called(this, "_ZN10S1538C3_nt3v88Ev");}
void  S1538C3_nt ::v89(){vfunc_called(this, "_ZN10S1538C3_nt3v89Ev");}
void  S1538C3_nt ::v90(){vfunc_called(this, "_ZN10S1538C3_nt3v90Ev");}
void  S1538C3_nt ::v91(){vfunc_called(this, "_ZN10S1538C3_nt3v91Ev");}
void  S1538C3_nt ::v92(){vfunc_called(this, "_ZN10S1538C3_nt3v92Ev");}
void  S1538C3_nt ::v93(){vfunc_called(this, "_ZN10S1538C3_nt3v93Ev");}
void  S1538C3_nt ::v94(){vfunc_called(this, "_ZN10S1538C3_nt3v94Ev");}
void  S1538C3_nt ::v95(){vfunc_called(this, "_ZN10S1538C3_nt3v95Ev");}
void  S1538C3_nt ::v96(){vfunc_called(this, "_ZN10S1538C3_nt3v96Ev");}
void  S1538C3_nt ::v97(){vfunc_called(this, "_ZN10S1538C3_nt3v97Ev");}
void  S1538C3_nt ::v98(){vfunc_called(this, "_ZN10S1538C3_nt3v98Ev");}
void  S1538C3_nt ::v99(){vfunc_called(this, "_ZN10S1538C3_nt3v99Ev");}
void  S1538C3_nt ::v100(){vfunc_called(this, "_ZN10S1538C3_nt4v100Ev");}
void  S1538C3_nt ::v101(){vfunc_called(this, "_ZN10S1538C3_nt4v101Ev");}
void  S1538C3_nt ::v102(){vfunc_called(this, "_ZN10S1538C3_nt4v102Ev");}
void  S1538C3_nt ::v103(){vfunc_called(this, "_ZN10S1538C3_nt4v103Ev");}
void  S1538C3_nt ::v104(){vfunc_called(this, "_ZN10S1538C3_nt4v104Ev");}
void  S1538C3_nt ::v105(){vfunc_called(this, "_ZN10S1538C3_nt4v105Ev");}
void  S1538C3_nt ::v106(){vfunc_called(this, "_ZN10S1538C3_nt4v106Ev");}
void  S1538C3_nt ::v107(){vfunc_called(this, "_ZN10S1538C3_nt4v107Ev");}
void  S1538C3_nt ::v108(){vfunc_called(this, "_ZN10S1538C3_nt4v108Ev");}
void  S1538C3_nt ::v109(){vfunc_called(this, "_ZN10S1538C3_nt4v109Ev");}
void  S1538C3_nt ::v110(){vfunc_called(this, "_ZN10S1538C3_nt4v110Ev");}
void  S1538C3_nt ::v111(){vfunc_called(this, "_ZN10S1538C3_nt4v111Ev");}
void  S1538C3_nt ::v112(){vfunc_called(this, "_ZN10S1538C3_nt4v112Ev");}
void  S1538C3_nt ::v113(){vfunc_called(this, "_ZN10S1538C3_nt4v113Ev");}
void  S1538C3_nt ::v114(){vfunc_called(this, "_ZN10S1538C3_nt4v114Ev");}
void  S1538C3_nt ::v115(){vfunc_called(this, "_ZN10S1538C3_nt4v115Ev");}
void  S1538C3_nt ::v116(){vfunc_called(this, "_ZN10S1538C3_nt4v116Ev");}
void  S1538C3_nt ::v117(){vfunc_called(this, "_ZN10S1538C3_nt4v117Ev");}
void  S1538C3_nt ::v118(){vfunc_called(this, "_ZN10S1538C3_nt4v118Ev");}
void  S1538C3_nt ::v119(){vfunc_called(this, "_ZN10S1538C3_nt4v119Ev");}
void  S1538C3_nt ::v120(){vfunc_called(this, "_ZN10S1538C3_nt4v120Ev");}
void  S1538C3_nt ::v121(){vfunc_called(this, "_ZN10S1538C3_nt4v121Ev");}
void  S1538C3_nt ::v122(){vfunc_called(this, "_ZN10S1538C3_nt4v122Ev");}
void  S1538C3_nt ::v123(){vfunc_called(this, "_ZN10S1538C3_nt4v123Ev");}
void  S1538C3_nt ::v124(){vfunc_called(this, "_ZN10S1538C3_nt4v124Ev");}
void  S1538C3_nt ::v125(){vfunc_called(this, "_ZN10S1538C3_nt4v125Ev");}
void  S1538C3_nt ::v126(){vfunc_called(this, "_ZN10S1538C3_nt4v126Ev");}
void  S1538C3_nt ::v127(){vfunc_called(this, "_ZN10S1538C3_nt4v127Ev");}
void  S1538C3_nt ::v128(){vfunc_called(this, "_ZN10S1538C3_nt4v128Ev");}
void  S1538C3_nt ::v129(){vfunc_called(this, "_ZN10S1538C3_nt4v129Ev");}
void  S1538C3_nt ::v130(){vfunc_called(this, "_ZN10S1538C3_nt4v130Ev");}
void  S1538C3_nt ::v131(){vfunc_called(this, "_ZN10S1538C3_nt4v131Ev");}
void  S1538C3_nt ::v132(){vfunc_called(this, "_ZN10S1538C3_nt4v132Ev");}
void  S1538C3_nt ::v133(){vfunc_called(this, "_ZN10S1538C3_nt4v133Ev");}
void  S1538C3_nt ::v134(){vfunc_called(this, "_ZN10S1538C3_nt4v134Ev");}
void  S1538C3_nt ::v135(){vfunc_called(this, "_ZN10S1538C3_nt4v135Ev");}
void  S1538C3_nt ::v136(){vfunc_called(this, "_ZN10S1538C3_nt4v136Ev");}
void  S1538C3_nt ::v137(){vfunc_called(this, "_ZN10S1538C3_nt4v137Ev");}
void  S1538C3_nt ::v138(){vfunc_called(this, "_ZN10S1538C3_nt4v138Ev");}
void  S1538C3_nt ::v139(){vfunc_called(this, "_ZN10S1538C3_nt4v139Ev");}
void  S1538C3_nt ::v140(){vfunc_called(this, "_ZN10S1538C3_nt4v140Ev");}
void  S1538C3_nt ::v141(){vfunc_called(this, "_ZN10S1538C3_nt4v141Ev");}
void  S1538C3_nt ::v142(){vfunc_called(this, "_ZN10S1538C3_nt4v142Ev");}
void  S1538C3_nt ::v143(){vfunc_called(this, "_ZN10S1538C3_nt4v143Ev");}
void  S1538C3_nt ::v144(){vfunc_called(this, "_ZN10S1538C3_nt4v144Ev");}
void  S1538C3_nt ::v145(){vfunc_called(this, "_ZN10S1538C3_nt4v145Ev");}
void  S1538C3_nt ::v146(){vfunc_called(this, "_ZN10S1538C3_nt4v146Ev");}
void  S1538C3_nt ::v147(){vfunc_called(this, "_ZN10S1538C3_nt4v147Ev");}
void  S1538C3_nt ::v148(){vfunc_called(this, "_ZN10S1538C3_nt4v148Ev");}
void  S1538C3_nt ::v149(){vfunc_called(this, "_ZN10S1538C3_nt4v149Ev");}
void  S1538C3_nt ::v150(){vfunc_called(this, "_ZN10S1538C3_nt4v150Ev");}
void  S1538C3_nt ::v151(){vfunc_called(this, "_ZN10S1538C3_nt4v151Ev");}
void  S1538C3_nt ::v152(){vfunc_called(this, "_ZN10S1538C3_nt4v152Ev");}
void  S1538C3_nt ::v153(){vfunc_called(this, "_ZN10S1538C3_nt4v153Ev");}
void  S1538C3_nt ::v154(){vfunc_called(this, "_ZN10S1538C3_nt4v154Ev");}
void  S1538C3_nt ::v155(){vfunc_called(this, "_ZN10S1538C3_nt4v155Ev");}
void  S1538C3_nt ::v156(){vfunc_called(this, "_ZN10S1538C3_nt4v156Ev");}
void  S1538C3_nt ::v157(){vfunc_called(this, "_ZN10S1538C3_nt4v157Ev");}
void  S1538C3_nt ::v158(){vfunc_called(this, "_ZN10S1538C3_nt4v158Ev");}
void  S1538C3_nt ::v159(){vfunc_called(this, "_ZN10S1538C3_nt4v159Ev");}
void  S1538C3_nt ::v160(){vfunc_called(this, "_ZN10S1538C3_nt4v160Ev");}
void  S1538C3_nt ::v161(){vfunc_called(this, "_ZN10S1538C3_nt4v161Ev");}
void  S1538C3_nt ::v162(){vfunc_called(this, "_ZN10S1538C3_nt4v162Ev");}
void  S1538C3_nt ::v163(){vfunc_called(this, "_ZN10S1538C3_nt4v163Ev");}
void  S1538C3_nt ::v164(){vfunc_called(this, "_ZN10S1538C3_nt4v164Ev");}
void  S1538C3_nt ::v165(){vfunc_called(this, "_ZN10S1538C3_nt4v165Ev");}
void  S1538C3_nt ::v166(){vfunc_called(this, "_ZN10S1538C3_nt4v166Ev");}
void  S1538C3_nt ::v167(){vfunc_called(this, "_ZN10S1538C3_nt4v167Ev");}
void  S1538C3_nt ::v168(){vfunc_called(this, "_ZN10S1538C3_nt4v168Ev");}
void  S1538C3_nt ::v169(){vfunc_called(this, "_ZN10S1538C3_nt4v169Ev");}
void  S1538C3_nt ::v170(){vfunc_called(this, "_ZN10S1538C3_nt4v170Ev");}
void  S1538C3_nt ::v171(){vfunc_called(this, "_ZN10S1538C3_nt4v171Ev");}
void  S1538C3_nt ::v172(){vfunc_called(this, "_ZN10S1538C3_nt4v172Ev");}
void  S1538C3_nt ::v173(){vfunc_called(this, "_ZN10S1538C3_nt4v173Ev");}
void  S1538C3_nt ::v174(){vfunc_called(this, "_ZN10S1538C3_nt4v174Ev");}
void  S1538C3_nt ::v175(){vfunc_called(this, "_ZN10S1538C3_nt4v175Ev");}
void  S1538C3_nt ::v176(){vfunc_called(this, "_ZN10S1538C3_nt4v176Ev");}
void  S1538C3_nt ::v177(){vfunc_called(this, "_ZN10S1538C3_nt4v177Ev");}
void  S1538C3_nt ::v178(){vfunc_called(this, "_ZN10S1538C3_nt4v178Ev");}
void  S1538C3_nt ::v179(){vfunc_called(this, "_ZN10S1538C3_nt4v179Ev");}
void  S1538C3_nt ::v180(){vfunc_called(this, "_ZN10S1538C3_nt4v180Ev");}
void  S1538C3_nt ::v181(){vfunc_called(this, "_ZN10S1538C3_nt4v181Ev");}
void  S1538C3_nt ::v182(){vfunc_called(this, "_ZN10S1538C3_nt4v182Ev");}
void  S1538C3_nt ::v183(){vfunc_called(this, "_ZN10S1538C3_nt4v183Ev");}
void  S1538C3_nt ::v184(){vfunc_called(this, "_ZN10S1538C3_nt4v184Ev");}
void  S1538C3_nt ::v185(){vfunc_called(this, "_ZN10S1538C3_nt4v185Ev");}
void  S1538C3_nt ::v186(){vfunc_called(this, "_ZN10S1538C3_nt4v186Ev");}
void  S1538C3_nt ::v187(){vfunc_called(this, "_ZN10S1538C3_nt4v187Ev");}
void  S1538C3_nt ::v188(){vfunc_called(this, "_ZN10S1538C3_nt4v188Ev");}
void  S1538C3_nt ::v189(){vfunc_called(this, "_ZN10S1538C3_nt4v189Ev");}
void  S1538C3_nt ::v190(){vfunc_called(this, "_ZN10S1538C3_nt4v190Ev");}
void  S1538C3_nt ::v191(){vfunc_called(this, "_ZN10S1538C3_nt4v191Ev");}
void  S1538C3_nt ::v192(){vfunc_called(this, "_ZN10S1538C3_nt4v192Ev");}
void  S1538C3_nt ::v193(){vfunc_called(this, "_ZN10S1538C3_nt4v193Ev");}
void  S1538C3_nt ::v194(){vfunc_called(this, "_ZN10S1538C3_nt4v194Ev");}
void  S1538C3_nt ::v195(){vfunc_called(this, "_ZN10S1538C3_nt4v195Ev");}
void  S1538C3_nt ::v196(){vfunc_called(this, "_ZN10S1538C3_nt4v196Ev");}
void  S1538C3_nt ::v197(){vfunc_called(this, "_ZN10S1538C3_nt4v197Ev");}
void  S1538C3_nt ::v198(){vfunc_called(this, "_ZN10S1538C3_nt4v198Ev");}
void  S1538C3_nt ::v199(){vfunc_called(this, "_ZN10S1538C3_nt4v199Ev");}
void  S1538C3_nt ::v200(){vfunc_called(this, "_ZN10S1538C3_nt4v200Ev");}
void  S1538C3_nt ::v201(){vfunc_called(this, "_ZN10S1538C3_nt4v201Ev");}
void  S1538C3_nt ::v202(){vfunc_called(this, "_ZN10S1538C3_nt4v202Ev");}
void  S1538C3_nt ::v203(){vfunc_called(this, "_ZN10S1538C3_nt4v203Ev");}
void  S1538C3_nt ::v204(){vfunc_called(this, "_ZN10S1538C3_nt4v204Ev");}
void  S1538C3_nt ::v205(){vfunc_called(this, "_ZN10S1538C3_nt4v205Ev");}
void  S1538C3_nt ::v206(){vfunc_called(this, "_ZN10S1538C3_nt4v206Ev");}
void  S1538C3_nt ::v207(){vfunc_called(this, "_ZN10S1538C3_nt4v207Ev");}
void  S1538C3_nt ::v208(){vfunc_called(this, "_ZN10S1538C3_nt4v208Ev");}
void  S1538C3_nt ::v209(){vfunc_called(this, "_ZN10S1538C3_nt4v209Ev");}
void  S1538C3_nt ::v210(){vfunc_called(this, "_ZN10S1538C3_nt4v210Ev");}
void  S1538C3_nt ::v211(){vfunc_called(this, "_ZN10S1538C3_nt4v211Ev");}
void  S1538C3_nt ::v212(){vfunc_called(this, "_ZN10S1538C3_nt4v212Ev");}
void  S1538C3_nt ::v213(){vfunc_called(this, "_ZN10S1538C3_nt4v213Ev");}
S1538C3_nt ::S1538C3_nt(){ note_ctor("S1538C3_nt", this);} // tgen

//skip512 S1538C3_nt

#else // __cplusplus

extern void _ZN10S1538C3_ntC1Ev();
extern void _ZN10S1538C3_ntD1Ev();
Name_Map name_map_S1538C3_nt[] = {
  NSPAIR(_ZN10S1538C3_ntC1Ev),
  NSPAIR(_ZN10S1538C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C4_nt;
extern VTBL_ENTRY _ZTI10S1538C4_nt[];
extern  VTBL_ENTRY _ZTV10S1538C4_nt[];
static Base_Class bases_S1538C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1538C3_nt[];
extern void _ZN10S1538C3_ntD1Ev();
extern void _ZN10S1538C3_ntD0Ev();
extern void _ZN10S1538C4_nt2v7Ev();
extern void _ZN10S1538C4_nt2v8Ev();
extern void _ZN10S1538C4_nt2v9Ev();
extern void _ZN10S1538C4_nt3v10Ev();
extern void _ZN10S1538C4_nt3v11Ev();
extern void _ZN10S1538C4_nt3v12Ev();
extern void _ZN10S1538C4_nt3v13Ev();
extern void _ZN10S1538C4_nt3v14Ev();
extern void _ZN10S1538C4_nt3v15Ev();
extern void _ZN10S1538C4_nt3v16Ev();
extern void _ZN10S1538C4_nt3v17Ev();
extern void _ZN10S1538C4_nt3v18Ev();
extern void _ZN10S1538C4_nt3v19Ev();
extern void _ZN10S1538C4_nt3v20Ev();
extern void _ZN10S1538C4_nt3v21Ev();
extern void _ZN10S1538C4_nt3v22Ev();
extern void _ZN10S1538C4_nt3v23Ev();
extern void _ZN10S1538C4_nt3v24Ev();
extern void _ZN10S1538C4_nt3v25Ev();
extern void _ZN10S1538C4_nt3v26Ev();
extern void _ZN10S1538C4_nt3v27Ev();
extern void _ZN10S1538C4_nt3v28Ev();
extern void _ZN10S1538C4_nt3v29Ev();
extern void _ZN10S1538C4_nt3v30Ev();
extern void _ZN10S1538C4_nt3v31Ev();
extern void _ZN10S1538C4_nt3v32Ev();
extern void _ZN10S1538C4_nt3v33Ev();
extern void _ZN10S1538C4_nt3v34Ev();
extern void _ZN10S1538C4_nt3v35Ev();
extern void _ZN10S1538C4_nt3v36Ev();
extern void _ZN10S1538C4_nt3v37Ev();
extern void _ZN10S1538C4_nt3v38Ev();
extern void _ZN10S1538C4_nt3v39Ev();
extern void _ZN10S1538C4_nt3v40Ev();
extern void _ZN10S1538C4_nt3v41Ev();
extern void _ZN10S1538C4_nt3v42Ev();
extern void _ZN10S1538C4_nt3v43Ev();
extern void _ZN10S1538C4_nt3v44Ev();
extern void _ZN10S1538C4_nt3v45Ev();
extern void _ZN10S1538C4_nt3v46Ev();
extern void _ZN10S1538C4_nt3v47Ev();
extern void _ZN10S1538C4_nt3v48Ev();
extern void _ZN10S1538C4_nt3v49Ev();
extern void _ZN10S1538C4_nt3v50Ev();
extern void _ZN10S1538C4_nt3v51Ev();
extern void _ZN10S1538C4_nt3v52Ev();
extern void _ZN10S1538C4_nt3v53Ev();
extern void _ZN10S1538C4_nt3v54Ev();
extern void _ZN10S1538C4_nt3v55Ev();
extern void _ZN10S1538C4_nt3v56Ev();
extern void _ZN10S1538C4_nt3v57Ev();
extern void _ZN10S1538C4_nt3v58Ev();
extern void _ZN10S1538C4_nt3v59Ev();
extern void _ZN10S1538C4_nt3v60Ev();
extern void _ZN10S1538C4_nt3v61Ev();
extern void _ZN10S1538C4_nt3v62Ev();
extern void _ZN10S1538C4_nt3v63Ev();
extern void _ZN10S1538C4_nt3v64Ev();
extern void _ZN10S1538C4_nt3v65Ev();
extern void _ZN10S1538C4_nt3v66Ev();
extern void _ZN10S1538C4_nt3v67Ev();
extern void _ZN10S1538C4_nt3v68Ev();
extern void _ZN10S1538C4_nt3v69Ev();
extern void _ZN10S1538C4_nt3v70Ev();
extern void _ZN10S1538C3_nt3v71Ev();
extern void _ZN10S1538C3_nt3v72Ev();
extern void _ZN10S1538C3_nt3v73Ev();
extern void _ZN10S1538C3_nt3v74Ev();
extern void _ZN10S1538C3_nt3v75Ev();
extern void _ZN10S1538C3_nt3v76Ev();
extern void _ZN10S1538C3_nt3v77Ev();
extern void _ZN10S1538C3_nt3v78Ev();
extern void _ZN10S1538C3_nt3v79Ev();
extern void _ZN10S1538C3_nt3v80Ev();
extern void _ZN10S1538C3_nt3v81Ev();
extern void _ZN10S1538C3_nt3v82Ev();
extern void _ZN10S1538C3_nt3v83Ev();
extern void _ZN10S1538C3_nt3v84Ev();
extern void _ZN10S1538C3_nt3v85Ev();
extern void _ZN10S1538C3_nt3v86Ev();
extern void _ZN10S1538C3_nt3v87Ev();
extern void _ZN10S1538C3_nt3v88Ev();
extern void _ZN10S1538C3_nt3v89Ev();
extern void _ZN10S1538C3_nt3v90Ev();
extern void _ZN10S1538C3_nt3v91Ev();
extern void _ZN10S1538C3_nt3v92Ev();
extern void _ZN10S1538C3_nt3v93Ev();
extern void _ZN10S1538C3_nt3v94Ev();
extern void _ZN10S1538C3_nt3v95Ev();
extern void _ZN10S1538C3_nt3v96Ev();
extern void _ZN10S1538C3_nt3v97Ev();
extern void _ZN10S1538C3_nt3v98Ev();
extern void _ZN10S1538C3_nt3v99Ev();
extern void _ZN10S1538C3_nt4v100Ev();
extern void _ZN10S1538C3_nt4v101Ev();
extern void _ZN10S1538C3_nt4v102Ev();
extern void _ZN10S1538C3_nt4v103Ev();
extern void _ZN10S1538C3_nt4v104Ev();
extern void _ZN10S1538C3_nt4v105Ev();
extern void _ZN10S1538C3_nt4v106Ev();
extern void _ZN10S1538C3_nt4v107Ev();
extern void _ZN10S1538C3_nt4v108Ev();
extern void _ZN10S1538C3_nt4v109Ev();
extern void _ZN10S1538C3_nt4v110Ev();
extern void _ZN10S1538C3_nt4v111Ev();
extern void _ZN10S1538C3_nt4v112Ev();
extern void _ZN10S1538C3_nt4v113Ev();
extern void _ZN10S1538C3_nt4v114Ev();
extern void _ZN10S1538C3_nt4v115Ev();
extern void _ZN10S1538C3_nt4v116Ev();
extern void _ZN10S1538C3_nt4v117Ev();
extern void _ZN10S1538C3_nt4v118Ev();
extern void _ZN10S1538C3_nt4v119Ev();
extern void _ZN10S1538C3_nt4v120Ev();
extern void _ZN10S1538C3_nt4v121Ev();
extern void _ZN10S1538C3_nt4v122Ev();
extern void _ZN10S1538C3_nt4v123Ev();
extern void _ZN10S1538C3_nt4v124Ev();
extern void _ZN10S1538C3_nt4v125Ev();
extern void _ZN10S1538C3_nt4v126Ev();
extern void _ZN10S1538C3_nt4v127Ev();
extern void _ZN10S1538C3_nt4v128Ev();
extern void _ZN10S1538C3_nt4v129Ev();
extern void _ZN10S1538C3_nt4v130Ev();
extern void _ZN10S1538C3_nt4v131Ev();
extern void _ZN10S1538C3_nt4v132Ev();
extern void _ZN10S1538C3_nt4v133Ev();
extern void _ZN10S1538C3_nt4v134Ev();
extern void _ZN10S1538C3_nt4v135Ev();
extern void _ZN10S1538C3_nt4v136Ev();
extern void _ZN10S1538C3_nt4v137Ev();
extern void _ZN10S1538C3_nt4v138Ev();
extern void _ZN10S1538C3_nt4v139Ev();
extern void _ZN10S1538C3_nt4v140Ev();
extern void _ZN10S1538C3_nt4v141Ev();
extern void _ZN10S1538C3_nt4v142Ev();
extern void _ZN10S1538C3_nt4v143Ev();
extern void _ZN10S1538C3_nt4v144Ev();
extern void _ZN10S1538C3_nt4v145Ev();
extern void _ZN10S1538C3_nt4v146Ev();
extern void _ZN10S1538C3_nt4v147Ev();
extern void _ZN10S1538C3_nt4v148Ev();
extern void _ZN10S1538C3_nt4v149Ev();
extern void _ZN10S1538C3_nt4v150Ev();
extern void _ZN10S1538C3_nt4v151Ev();
extern void _ZN10S1538C3_nt4v152Ev();
extern void _ZN10S1538C3_nt4v153Ev();
extern void _ZN10S1538C3_nt4v154Ev();
extern void _ZN10S1538C3_nt4v155Ev();
extern void _ZN10S1538C3_nt4v156Ev();
extern void _ZN10S1538C3_nt4v157Ev();
extern void _ZN10S1538C3_nt4v158Ev();
extern void _ZN10S1538C3_nt4v159Ev();
extern void _ZN10S1538C3_nt4v160Ev();
extern void _ZN10S1538C3_nt4v161Ev();
extern void _ZN10S1538C3_nt4v162Ev();
extern void _ZN10S1538C3_nt4v163Ev();
extern void _ZN10S1538C3_nt4v164Ev();
extern void _ZN10S1538C3_nt4v165Ev();
extern void _ZN10S1538C3_nt4v166Ev();
extern void _ZN10S1538C3_nt4v167Ev();
extern void _ZN10S1538C3_nt4v168Ev();
extern void _ZN10S1538C3_nt4v169Ev();
extern void _ZN10S1538C3_nt4v170Ev();
extern void _ZN10S1538C3_nt4v171Ev();
extern void _ZN10S1538C3_nt4v172Ev();
extern void _ZN10S1538C3_nt4v173Ev();
extern void _ZN10S1538C3_nt4v174Ev();
extern void _ZN10S1538C3_nt4v175Ev();
extern void _ZN10S1538C3_nt4v176Ev();
extern void _ZN10S1538C3_nt4v177Ev();
extern void _ZN10S1538C3_nt4v178Ev();
extern void _ZN10S1538C3_nt4v179Ev();
extern void _ZN10S1538C3_nt4v180Ev();
extern void _ZN10S1538C3_nt4v181Ev();
extern void _ZN10S1538C3_nt4v182Ev();
extern void _ZN10S1538C3_nt4v183Ev();
extern void _ZN10S1538C3_nt4v184Ev();
extern void _ZN10S1538C3_nt4v185Ev();
extern void _ZN10S1538C3_nt4v186Ev();
extern void _ZN10S1538C3_nt4v187Ev();
extern void _ZN10S1538C3_nt4v188Ev();
extern void _ZN10S1538C3_nt4v189Ev();
extern void _ZN10S1538C3_nt4v190Ev();
extern void _ZN10S1538C3_nt4v191Ev();
extern void _ZN10S1538C3_nt4v192Ev();
extern void _ZN10S1538C3_nt4v193Ev();
extern void _ZN10S1538C3_nt4v194Ev();
extern void _ZN10S1538C3_nt4v195Ev();
extern void _ZN10S1538C3_nt4v196Ev();
extern void _ZN10S1538C3_nt4v197Ev();
extern void _ZN10S1538C3_nt4v198Ev();
extern void _ZN10S1538C3_nt4v199Ev();
extern void _ZN10S1538C3_nt4v200Ev();
extern void _ZN10S1538C3_nt4v201Ev();
extern void _ZN10S1538C3_nt4v202Ev();
extern void _ZN10S1538C3_nt4v203Ev();
extern void _ZN10S1538C3_nt4v204Ev();
extern void _ZN10S1538C3_nt4v205Ev();
extern void _ZN10S1538C3_nt4v206Ev();
extern void _ZN10S1538C3_nt4v207Ev();
extern void _ZN10S1538C3_nt4v208Ev();
extern void _ZN10S1538C3_nt4v209Ev();
extern void _ZN10S1538C3_nt4v210Ev();
extern void _ZN10S1538C3_nt4v211Ev();
extern void _ZN10S1538C3_nt4v212Ev();
extern void _ZN10S1538C3_nt4v213Ev();
static  VTBL_ENTRY vtc_S1538C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1538C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1538C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v213Ev,
};
extern VTBL_ENTRY _ZTI10S1538C3_nt[];
VTBL_ENTRY *P__ZTI10S1538C3_nt = _ZTI10S1538C3_nt; 
extern  VTBL_ENTRY _ZTV10S1538C3_nt[];
Class_Descriptor cd_S1538C3_nt = {  "S1538C3_nt", // class name
  bases_S1538C3_nt, 1,
  &(vtc_S1538C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S1538C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1538C3_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  S1538C23  : S1538C8_nt {
};
//SIG(-1 S1538C23) C1{ BC2{ m Fp Fi[2]}}



static void Test_S1538C23()
{
  extern Class_Descriptor cd_S1538C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C23, buf);
    S1538C23 &lv = *(new (buf) S1538C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C23)");
    check_base_class_offset(lv, (S1538C8_nt*), 0, "S1538C23");
    test_class_info(&lv, &cd_S1538C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C23(Test_S1538C23, "S1538C23", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1538C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C23 = {  "S1538C23", // class name
  bases_S1538C23, 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  S1538C22  : S1538C23 {
};
//SIG(-1 S1538C22) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1538C22()
{
  extern Class_Descriptor cd_S1538C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C22, buf);
    S1538C22 &lv = *(new (buf) S1538C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C22)");
    check_base_class_offset(lv, (S1538C8_nt*)(S1538C23*), 0, "S1538C22");
    check_base_class_offset(lv, (S1538C23*), 0, "S1538C22");
    test_class_info(&lv, &cd_S1538C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C22(Test_S1538C22, "S1538C22", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1538C23;
static Base_Class bases_S1538C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C22 = {  "S1538C22", // class name
  bases_S1538C22, 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  S1538C24_nt  {
  int s1538c24f0[4];
  void  mf1538c24(); // _ZN11S1538C24_nt9mf1538c24Ev
};
//SIG(-1 S1538C24_nt) C1{ m Fi[4]}


void  S1538C24_nt ::mf1538c24(){}

//skip512 S1538C24_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1538C2  : S1538C3_nt {
  void *s1538c2f0;
  int s1538c2f1;
  unsigned int s1538c2f2:1;
  unsigned int s1538c2f3:1;
  unsigned int s1538c2f4:1;
  unsigned int s1538c2f5:1;
  void *s1538c2f6[3];
  ::S1538C14_nt s1538c2f7;
  int s1538c2f8[2];
  void *s1538c2f9;
  ::S1538C22 s1538c2f10;
  ::S1538C14_nt s1538c2f11;
  int s1538c2f12;
  ::S1538C24_nt s1538c2f13;
  void *s1538c2f14;
  ::S1538C5_nt s1538c2f15;
  ::S1538C14_nt s1538c2f16;
  ::S1538C14_nt s1538c2f17;
  ::S1538C14_nt s1538c2f18;
  ::S1538C14_nt s1538c2f19;
  void *s1538c2f20[5];
  int s1538c2f21[2];
  void *s1538c2f22;
  ::S1538C22 s1538c2f23;
  void *s1538c2f24[2];
  int s1538c2f25[6];
  ::S1538C24_nt s1538c2f26;
  ::S1538C24_nt s1538c2f27;
  ::S1538C24_nt s1538c2f28;
  void *s1538c2f29;
  virtual  ~S1538C2(); // _ZN7S1538C2D1Ev
  virtual void  v214(); // _ZN7S1538C24v214Ev
  virtual void  v215(); // _ZN7S1538C24v215Ev
  virtual void  v216(); // _ZN7S1538C24v216Ev
  virtual void  v217(); // _ZN7S1538C24v217Ev
  virtual void  v218(); // _ZN7S1538C24v218Ev
  virtual void  v219(); // _ZN7S1538C24v219Ev
  virtual void  v220(); // _ZN7S1538C24v220Ev
  virtual void  v221(); // _ZN7S1538C24v221Ev
  virtual void  v222(); // _ZN7S1538C24v222Ev
  S1538C2(); // tgen
};
//SIG(-1 S1538C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75 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 v215 v216 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 Fp Fi Fi:1 Fi:1 Fi:1 Fi:1 Fp[3] FC11 Fi[2] Fp FC14{ BC15{ BC7}} FC11 Fi FC16{ m Fi[4]} Fp FC4 FC11 FC11 FC11 FC11 Fp[5] Fi[2] Fp FC14 Fp[2] Fi[6] FC16 FC16 FC16 Fp}


 S1538C2 ::~S1538C2(){ note_dtor("S1538C2", this);}
void  S1538C2 ::v214(){vfunc_called(this, "_ZN7S1538C24v214Ev");}
void  S1538C2 ::v215(){vfunc_called(this, "_ZN7S1538C24v215Ev");}
void  S1538C2 ::v216(){vfunc_called(this, "_ZN7S1538C24v216Ev");}
void  S1538C2 ::v217(){vfunc_called(this, "_ZN7S1538C24v217Ev");}
void  S1538C2 ::v218(){vfunc_called(this, "_ZN7S1538C24v218Ev");}
void  S1538C2 ::v219(){vfunc_called(this, "_ZN7S1538C24v219Ev");}
void  S1538C2 ::v220(){vfunc_called(this, "_ZN7S1538C24v220Ev");}
void  S1538C2 ::v221(){vfunc_called(this, "_ZN7S1538C24v221Ev");}
void  S1538C2 ::v222(){vfunc_called(this, "_ZN7S1538C24v222Ev");}
S1538C2 ::S1538C2(){ note_ctor("S1538C2", this);} // tgen

static void Test_S1538C2()
{
  extern Class_Descriptor cd_S1538C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,180)];
    init_test(&cd_S1538C2, buf);
    S1538C2 *dp, &lv = *(dp=new (buf) S1538C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,716), "sizeof(S1538C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C2)");
    check_base_class_offset(lv, (S1538C4_nt*)(S1538C3_nt*), 0, "S1538C2");
    check_base_class_offset(lv, (S1538C3_nt*), 0, "S1538C2");
    check_field_offset(lv, s1538c2f0, ABISELECT(568,436), "S1538C2.s1538c2f0");
    check_field_offset(lv, s1538c2f1, ABISELECT(576,440), "S1538C2.s1538c2f1");
    set_bf_and_test(lv, s1538c2f2, ABISELECT(580,444), 0, 1, 1, "S1538C2");
    set_bf_and_test(lv, s1538c2f3, ABISELECT(580,444), 1, 1, 1, "S1538C2");
    set_bf_and_test(lv, s1538c2f4, ABISELECT(580,444), 2, 1, 1, "S1538C2");
    set_bf_and_test(lv, s1538c2f5, ABISELECT(580,444), 3, 1, 1, "S1538C2");
    check_field_offset(lv, s1538c2f6, ABISELECT(584,448), "S1538C2.s1538c2f6");
    check_field_offset(lv, s1538c2f7, ABISELECT(608,460), "S1538C2.s1538c2f7");
    check_field_offset(lv, s1538c2f8, ABISELECT(620,472), "S1538C2.s1538c2f8");
    check_field_offset(lv, s1538c2f9, ABISELECT(632,480), "S1538C2.s1538c2f9");
    check_field_offset(lv, s1538c2f10, ABISELECT(640,484), "S1538C2.s1538c2f10");
    check_field_offset(lv, s1538c2f11, ABISELECT(656,496), "S1538C2.s1538c2f11");
    check_field_offset(lv, s1538c2f12, ABISELECT(668,508), "S1538C2.s1538c2f12");
    check_field_offset(lv, s1538c2f13, ABISELECT(672,512), "S1538C2.s1538c2f13");
    check_field_offset(lv, s1538c2f14, ABISELECT(688,528), "S1538C2.s1538c2f14");
    check_field_offset(lv, s1538c2f15, ABISELECT(696,532), "S1538C2.s1538c2f15");
    check_field_offset(lv, s1538c2f16, ABISELECT(704,540), "S1538C2.s1538c2f16");
    check_field_offset(lv, s1538c2f17, ABISELECT(716,552), "S1538C2.s1538c2f17");
    check_field_offset(lv, s1538c2f18, ABISELECT(728,564), "S1538C2.s1538c2f18");
    check_field_offset(lv, s1538c2f19, ABISELECT(740,576), "S1538C2.s1538c2f19");
    check_field_offset(lv, s1538c2f20, ABISELECT(752,588), "S1538C2.s1538c2f20");
    check_field_offset(lv, s1538c2f21, ABISELECT(792,608), "S1538C2.s1538c2f21");
    check_field_offset(lv, s1538c2f22, ABISELECT(800,616), "S1538C2.s1538c2f22");
    check_field_offset(lv, s1538c2f23, ABISELECT(808,620), "S1538C2.s1538c2f23");
    check_field_offset(lv, s1538c2f24, ABISELECT(824,632), "S1538C2.s1538c2f24");
    check_field_offset(lv, s1538c2f25, ABISELECT(840,640), "S1538C2.s1538c2f25");
    check_field_offset(lv, s1538c2f26, ABISELECT(864,664), "S1538C2.s1538c2f26");
    check_field_offset(lv, s1538c2f27, ABISELECT(880,680), "S1538C2.s1538c2f27");
    check_field_offset(lv, s1538c2f28, ABISELECT(896,696), "S1538C2.s1538c2f28");
    check_field_offset(lv, s1538c2f29, ABISELECT(912,712), "S1538C2.s1538c2f29");
    test_class_info(&lv, &cd_S1538C2);
    dp->~S1538C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C2(Test_S1538C2, "S1538C2", ABISELECT(920,716));

#else // __cplusplus

extern void _ZN7S1538C2C1Ev();
extern void _ZN7S1538C2D1Ev();
Name_Map name_map_S1538C2[] = {
  NSPAIR(_ZN7S1538C2C1Ev),
  NSPAIR(_ZN7S1538C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C4_nt;
extern VTBL_ENTRY _ZTI10S1538C4_nt[];
extern  VTBL_ENTRY _ZTV10S1538C4_nt[];
extern Class_Descriptor cd_S1538C3_nt;
extern VTBL_ENTRY _ZTI10S1538C3_nt[];
extern  VTBL_ENTRY _ZTV10S1538C3_nt[];
static Base_Class bases_S1538C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S1538C2[];
extern void _ZN7S1538C2D1Ev();
extern void _ZN7S1538C2D0Ev();
extern void _ZN10S1538C4_nt2v7Ev();
extern void _ZN10S1538C4_nt2v8Ev();
extern void _ZN10S1538C4_nt2v9Ev();
extern void _ZN10S1538C4_nt3v10Ev();
extern void _ZN10S1538C4_nt3v11Ev();
extern void _ZN10S1538C4_nt3v12Ev();
extern void _ZN10S1538C4_nt3v13Ev();
extern void _ZN10S1538C4_nt3v14Ev();
extern void _ZN10S1538C4_nt3v15Ev();
extern void _ZN10S1538C4_nt3v16Ev();
extern void _ZN10S1538C4_nt3v17Ev();
extern void _ZN10S1538C4_nt3v18Ev();
extern void _ZN10S1538C4_nt3v19Ev();
extern void _ZN10S1538C4_nt3v20Ev();
extern void _ZN10S1538C4_nt3v21Ev();
extern void _ZN10S1538C4_nt3v22Ev();
extern void _ZN10S1538C4_nt3v23Ev();
extern void _ZN10S1538C4_nt3v24Ev();
extern void _ZN10S1538C4_nt3v25Ev();
extern void _ZN10S1538C4_nt3v26Ev();
extern void _ZN10S1538C4_nt3v27Ev();
extern void _ZN10S1538C4_nt3v28Ev();
extern void _ZN10S1538C4_nt3v29Ev();
extern void _ZN10S1538C4_nt3v30Ev();
extern void _ZN10S1538C4_nt3v31Ev();
extern void _ZN10S1538C4_nt3v32Ev();
extern void _ZN10S1538C4_nt3v33Ev();
extern void _ZN10S1538C4_nt3v34Ev();
extern void _ZN10S1538C4_nt3v35Ev();
extern void _ZN10S1538C4_nt3v36Ev();
extern void _ZN10S1538C4_nt3v37Ev();
extern void _ZN10S1538C4_nt3v38Ev();
extern void _ZN10S1538C4_nt3v39Ev();
extern void _ZN10S1538C4_nt3v40Ev();
extern void _ZN10S1538C4_nt3v41Ev();
extern void _ZN10S1538C4_nt3v42Ev();
extern void _ZN10S1538C4_nt3v43Ev();
extern void _ZN10S1538C4_nt3v44Ev();
extern void _ZN10S1538C4_nt3v45Ev();
extern void _ZN10S1538C4_nt3v46Ev();
extern void _ZN10S1538C4_nt3v47Ev();
extern void _ZN10S1538C4_nt3v48Ev();
extern void _ZN10S1538C4_nt3v49Ev();
extern void _ZN10S1538C4_nt3v50Ev();
extern void _ZN10S1538C4_nt3v51Ev();
extern void _ZN10S1538C4_nt3v52Ev();
extern void _ZN10S1538C4_nt3v53Ev();
extern void _ZN10S1538C4_nt3v54Ev();
extern void _ZN10S1538C4_nt3v55Ev();
extern void _ZN10S1538C4_nt3v56Ev();
extern void _ZN10S1538C4_nt3v57Ev();
extern void _ZN10S1538C4_nt3v58Ev();
extern void _ZN10S1538C4_nt3v59Ev();
extern void _ZN10S1538C4_nt3v60Ev();
extern void _ZN10S1538C4_nt3v61Ev();
extern void _ZN10S1538C4_nt3v62Ev();
extern void _ZN10S1538C4_nt3v63Ev();
extern void _ZN10S1538C4_nt3v64Ev();
extern void _ZN10S1538C4_nt3v65Ev();
extern void _ZN10S1538C4_nt3v66Ev();
extern void _ZN10S1538C4_nt3v67Ev();
extern void _ZN10S1538C4_nt3v68Ev();
extern void _ZN10S1538C4_nt3v69Ev();
extern void _ZN10S1538C4_nt3v70Ev();
extern void _ZN10S1538C3_nt3v71Ev();
extern void _ZN10S1538C3_nt3v72Ev();
extern void _ZN10S1538C3_nt3v73Ev();
extern void _ZN10S1538C3_nt3v74Ev();
extern void _ZN10S1538C3_nt3v75Ev();
extern void _ZN10S1538C3_nt3v76Ev();
extern void _ZN10S1538C3_nt3v77Ev();
extern void _ZN10S1538C3_nt3v78Ev();
extern void _ZN10S1538C3_nt3v79Ev();
extern void _ZN10S1538C3_nt3v80Ev();
extern void _ZN10S1538C3_nt3v81Ev();
extern void _ZN10S1538C3_nt3v82Ev();
extern void _ZN10S1538C3_nt3v83Ev();
extern void _ZN10S1538C3_nt3v84Ev();
extern void _ZN10S1538C3_nt3v85Ev();
extern void _ZN10S1538C3_nt3v86Ev();
extern void _ZN10S1538C3_nt3v87Ev();
extern void _ZN10S1538C3_nt3v88Ev();
extern void _ZN10S1538C3_nt3v89Ev();
extern void _ZN10S1538C3_nt3v90Ev();
extern void _ZN10S1538C3_nt3v91Ev();
extern void _ZN10S1538C3_nt3v92Ev();
extern void _ZN10S1538C3_nt3v93Ev();
extern void _ZN10S1538C3_nt3v94Ev();
extern void _ZN10S1538C3_nt3v95Ev();
extern void _ZN10S1538C3_nt3v96Ev();
extern void _ZN10S1538C3_nt3v97Ev();
extern void _ZN10S1538C3_nt3v98Ev();
extern void _ZN10S1538C3_nt3v99Ev();
extern void _ZN10S1538C3_nt4v100Ev();
extern void _ZN10S1538C3_nt4v101Ev();
extern void _ZN10S1538C3_nt4v102Ev();
extern void _ZN10S1538C3_nt4v103Ev();
extern void _ZN10S1538C3_nt4v104Ev();
extern void _ZN10S1538C3_nt4v105Ev();
extern void _ZN10S1538C3_nt4v106Ev();
extern void _ZN10S1538C3_nt4v107Ev();
extern void _ZN10S1538C3_nt4v108Ev();
extern void _ZN10S1538C3_nt4v109Ev();
extern void _ZN10S1538C3_nt4v110Ev();
extern void _ZN10S1538C3_nt4v111Ev();
extern void _ZN10S1538C3_nt4v112Ev();
extern void _ZN10S1538C3_nt4v113Ev();
extern void _ZN10S1538C3_nt4v114Ev();
extern void _ZN10S1538C3_nt4v115Ev();
extern void _ZN10S1538C3_nt4v116Ev();
extern void _ZN10S1538C3_nt4v117Ev();
extern void _ZN10S1538C3_nt4v118Ev();
extern void _ZN10S1538C3_nt4v119Ev();
extern void _ZN10S1538C3_nt4v120Ev();
extern void _ZN10S1538C3_nt4v121Ev();
extern void _ZN10S1538C3_nt4v122Ev();
extern void _ZN10S1538C3_nt4v123Ev();
extern void _ZN10S1538C3_nt4v124Ev();
extern void _ZN10S1538C3_nt4v125Ev();
extern void _ZN10S1538C3_nt4v126Ev();
extern void _ZN10S1538C3_nt4v127Ev();
extern void _ZN10S1538C3_nt4v128Ev();
extern void _ZN10S1538C3_nt4v129Ev();
extern void _ZN10S1538C3_nt4v130Ev();
extern void _ZN10S1538C3_nt4v131Ev();
extern void _ZN10S1538C3_nt4v132Ev();
extern void _ZN10S1538C3_nt4v133Ev();
extern void _ZN10S1538C3_nt4v134Ev();
extern void _ZN10S1538C3_nt4v135Ev();
extern void _ZN10S1538C3_nt4v136Ev();
extern void _ZN10S1538C3_nt4v137Ev();
extern void _ZN10S1538C3_nt4v138Ev();
extern void _ZN10S1538C3_nt4v139Ev();
extern void _ZN10S1538C3_nt4v140Ev();
extern void _ZN10S1538C3_nt4v141Ev();
extern void _ZN10S1538C3_nt4v142Ev();
extern void _ZN10S1538C3_nt4v143Ev();
extern void _ZN10S1538C3_nt4v144Ev();
extern void _ZN10S1538C3_nt4v145Ev();
extern void _ZN10S1538C3_nt4v146Ev();
extern void _ZN10S1538C3_nt4v147Ev();
extern void _ZN10S1538C3_nt4v148Ev();
extern void _ZN10S1538C3_nt4v149Ev();
extern void _ZN10S1538C3_nt4v150Ev();
extern void _ZN10S1538C3_nt4v151Ev();
extern void _ZN10S1538C3_nt4v152Ev();
extern void _ZN10S1538C3_nt4v153Ev();
extern void _ZN10S1538C3_nt4v154Ev();
extern void _ZN10S1538C3_nt4v155Ev();
extern void _ZN10S1538C3_nt4v156Ev();
extern void _ZN10S1538C3_nt4v157Ev();
extern void _ZN10S1538C3_nt4v158Ev();
extern void _ZN10S1538C3_nt4v159Ev();
extern void _ZN10S1538C3_nt4v160Ev();
extern void _ZN10S1538C3_nt4v161Ev();
extern void _ZN10S1538C3_nt4v162Ev();
extern void _ZN10S1538C3_nt4v163Ev();
extern void _ZN10S1538C3_nt4v164Ev();
extern void _ZN10S1538C3_nt4v165Ev();
extern void _ZN10S1538C3_nt4v166Ev();
extern void _ZN10S1538C3_nt4v167Ev();
extern void _ZN10S1538C3_nt4v168Ev();
extern void _ZN10S1538C3_nt4v169Ev();
extern void _ZN10S1538C3_nt4v170Ev();
extern void _ZN10S1538C3_nt4v171Ev();
extern void _ZN10S1538C3_nt4v172Ev();
extern void _ZN10S1538C3_nt4v173Ev();
extern void _ZN10S1538C3_nt4v174Ev();
extern void _ZN10S1538C3_nt4v175Ev();
extern void _ZN10S1538C3_nt4v176Ev();
extern void _ZN10S1538C3_nt4v177Ev();
extern void _ZN10S1538C3_nt4v178Ev();
extern void _ZN10S1538C3_nt4v179Ev();
extern void _ZN10S1538C3_nt4v180Ev();
extern void _ZN10S1538C3_nt4v181Ev();
extern void _ZN10S1538C3_nt4v182Ev();
extern void _ZN10S1538C3_nt4v183Ev();
extern void _ZN10S1538C3_nt4v184Ev();
extern void _ZN10S1538C3_nt4v185Ev();
extern void _ZN10S1538C3_nt4v186Ev();
extern void _ZN10S1538C3_nt4v187Ev();
extern void _ZN10S1538C3_nt4v188Ev();
extern void _ZN10S1538C3_nt4v189Ev();
extern void _ZN10S1538C3_nt4v190Ev();
extern void _ZN10S1538C3_nt4v191Ev();
extern void _ZN10S1538C3_nt4v192Ev();
extern void _ZN10S1538C3_nt4v193Ev();
extern void _ZN10S1538C3_nt4v194Ev();
extern void _ZN10S1538C3_nt4v195Ev();
extern void _ZN10S1538C3_nt4v196Ev();
extern void _ZN10S1538C3_nt4v197Ev();
extern void _ZN10S1538C3_nt4v198Ev();
extern void _ZN10S1538C3_nt4v199Ev();
extern void _ZN10S1538C3_nt4v200Ev();
extern void _ZN10S1538C3_nt4v201Ev();
extern void _ZN10S1538C3_nt4v202Ev();
extern void _ZN10S1538C3_nt4v203Ev();
extern void _ZN10S1538C3_nt4v204Ev();
extern void _ZN10S1538C3_nt4v205Ev();
extern void _ZN10S1538C3_nt4v206Ev();
extern void _ZN10S1538C3_nt4v207Ev();
extern void _ZN10S1538C3_nt4v208Ev();
extern void _ZN10S1538C3_nt4v209Ev();
extern void _ZN10S1538C3_nt4v210Ev();
extern void _ZN10S1538C3_nt4v211Ev();
extern void _ZN10S1538C3_nt4v212Ev();
extern void _ZN10S1538C3_nt4v213Ev();
extern void _ZN7S1538C24v214Ev();
extern void _ZN7S1538C24v215Ev();
extern void _ZN7S1538C24v216Ev();
extern void _ZN7S1538C24v217Ev();
extern void _ZN7S1538C24v218Ev();
extern void _ZN7S1538C24v219Ev();
extern void _ZN7S1538C24v220Ev();
extern void _ZN7S1538C24v221Ev();
extern void _ZN7S1538C24v222Ev();
static  VTBL_ENTRY vtc_S1538C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1538C2[0]),
  (VTBL_ENTRY)&_ZN7S1538C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1538C2D0Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v213Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v214Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v215Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v216Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v217Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v218Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v219Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v220Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v221Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v222Ev,
};
extern VTBL_ENTRY _ZTI7S1538C2[];
extern  VTBL_ENTRY _ZTV7S1538C2[];
Class_Descriptor cd_S1538C2 = {  "S1538C2", // class name
  bases_S1538C2, 2,
  &(vtc_S1538C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,716), // object size
  NSPAIRA(_ZTI7S1538C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1538C2),220, //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  S1538C28_nt  {
  void  mf1538c28(); // _ZN11S1538C28_nt9mf1538c28Ev
};
//SIG(-1 S1538C28_nt) C1{ m}


void  S1538C28_nt ::mf1538c28(){}

//skip512 S1538C28_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S1538C28_nt[];
VTBL_ENTRY *P__ZTI11S1538C28_nt = _ZTI11S1538C28_nt; 
Class_Descriptor cd_S1538C28_nt = {  "S1538C28_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S1538C28_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  S1538C31  : S1538C8_nt {
};
//SIG(-1 S1538C31) C1{ BC2{ m Fp Fi[2]}}



static void Test_S1538C31()
{
  extern Class_Descriptor cd_S1538C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C31, buf);
    S1538C31 &lv = *(new (buf) S1538C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C31)");
    check_base_class_offset(lv, (S1538C8_nt*), 0, "S1538C31");
    test_class_info(&lv, &cd_S1538C31);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C31(Test_S1538C31, "S1538C31", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1538C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C31 = {  "S1538C31", // class name
  bases_S1538C31, 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  S1538C30  : S1538C31 {
};
//SIG(-1 S1538C30) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1538C30()
{
  extern Class_Descriptor cd_S1538C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1538C30, buf);
    S1538C30 &lv = *(new (buf) S1538C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1538C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C30)");
    check_base_class_offset(lv, (S1538C8_nt*)(S1538C31*), 0, "S1538C30");
    check_base_class_offset(lv, (S1538C31*), 0, "S1538C30");
    test_class_info(&lv, &cd_S1538C30);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C30(Test_S1538C30, "S1538C30", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1538C31;
static Base_Class bases_S1538C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C31,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1538C30 = {  "S1538C30", // class name
  bases_S1538C30, 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  S1538C29_nt  : S1538C30 {
};
//SIG(-1 S1538C29_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S1538C29_nt

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1538C31;
extern Class_Descriptor cd_S1538C30;
static Base_Class bases_S1538C29_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C31,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C30,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1538C1  : S1538C2 {
  void *s1538c1f0[6];
  ::S1538C28_nt s1538c1f1[2];
  int s1538c1f2;
  void *s1538c1f3[3];
  int s1538c1f4;
  ::S1538C14_nt s1538c1f5;
  void *s1538c1f6[2];
  int s1538c1f7[5];
  char s1538c1f8;
  int s1538c1f9;
  void *s1538c1f10;
  int s1538c1f11[2];
  void *s1538c1f12;
  int s1538c1f13[2];
  void *s1538c1f14;
  int s1538c1f15[3];
  ::S1538C24_nt s1538c1f16;
  int s1538c1f17;
  ::S1538C29_nt s1538c1f18;
  int s1538c1f19;
  virtual  ~S1538C1(); // _ZN7S1538C1D1Ev
  virtual void  v1(); // _ZN7S1538C12v1Ev
  virtual void  v2(); // _ZN7S1538C12v2Ev
  virtual void  v3(); // _ZN7S1538C12v3Ev
  virtual void  v4(); // _ZN7S1538C12v4Ev
  virtual void  v5(); // _ZN7S1538C12v5Ev
  virtual void  v6(); // _ZN7S1538C12v6Ev
  S1538C1(); // tgen
};
//SIG(1 S1538C1) C1{ BC2{ BC3{ BC4{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd 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 v211 v212 v213 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 v214 v215 v216 v217 v218 v219 v220 v221 v222 Fp Fi Fi:1 Fi:1 Fi:1 Fi:1 Fp[3] FC12 Fi[2] Fp FC15{ BC16{ BC8}} FC12 Fi FC17{ m Fi[4]} Fp FC5 FC12 FC12 FC12 FC12 Fp[5] Fi[2] Fp FC15 Fp[2] Fi[6] FC17 FC17 FC17 Fp} vd v1 v2 v3 v4 v5 v6 Fp[6] FC18{ m}[2] Fi Fp[3] Fi FC12 Fp[2] Fi[5] Fc Fi Fp Fi[2] Fp Fi[2] Fp Fi[3] FC17 Fi FC19{ BC20{ BC21{ BC8}}} Fi}


 S1538C1 ::~S1538C1(){ note_dtor("S1538C1", this);}
void  S1538C1 ::v1(){vfunc_called(this, "_ZN7S1538C12v1Ev");}
void  S1538C1 ::v2(){vfunc_called(this, "_ZN7S1538C12v2Ev");}
void  S1538C1 ::v3(){vfunc_called(this, "_ZN7S1538C12v3Ev");}
void  S1538C1 ::v4(){vfunc_called(this, "_ZN7S1538C12v4Ev");}
void  S1538C1 ::v5(){vfunc_called(this, "_ZN7S1538C12v5Ev");}
void  S1538C1 ::v6(){vfunc_called(this, "_ZN7S1538C12v6Ev");}
S1538C1 ::S1538C1(){ note_ctor("S1538C1", this);} // tgen

static void Test_S1538C1()
{
  extern Class_Descriptor cd_S1538C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,223)];
    init_test(&cd_S1538C1, buf);
    S1538C1 *dp, &lv = *(dp=new (buf) S1538C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,888), "sizeof(S1538C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1538C1)");
    check_base_class_offset(lv, (S1538C4_nt*)(S1538C3_nt*)(S1538C2*), 0, "S1538C1");
    check_base_class_offset(lv, (S1538C3_nt*)(S1538C2*), 0, "S1538C1");
    check_base_class_offset(lv, (S1538C2*), 0, "S1538C1");
    check_field_offset(lv, s1538c1f0, ABISELECT(920,716), "S1538C1.s1538c1f0");
    check_field_offset(lv, s1538c1f1, ABISELECT(968,740), "S1538C1.s1538c1f1");
    check_field_offset(lv, s1538c1f2, ABISELECT(972,744), "S1538C1.s1538c1f2");
    check_field_offset(lv, s1538c1f3, ABISELECT(976,748), "S1538C1.s1538c1f3");
    check_field_offset(lv, s1538c1f4, ABISELECT(1000,760), "S1538C1.s1538c1f4");
    check_field_offset(lv, s1538c1f5, ABISELECT(1004,764), "S1538C1.s1538c1f5");
    check_field_offset(lv, s1538c1f6, ABISELECT(1016,776), "S1538C1.s1538c1f6");
    check_field_offset(lv, s1538c1f7, ABISELECT(1032,784), "S1538C1.s1538c1f7");
    check_field_offset(lv, s1538c1f8, ABISELECT(1052,804), "S1538C1.s1538c1f8");
    check_field_offset(lv, s1538c1f9, ABISELECT(1056,808), "S1538C1.s1538c1f9");
    check_field_offset(lv, s1538c1f10, ABISELECT(1064,812), "S1538C1.s1538c1f10");
    check_field_offset(lv, s1538c1f11, ABISELECT(1072,816), "S1538C1.s1538c1f11");
    check_field_offset(lv, s1538c1f12, ABISELECT(1080,824), "S1538C1.s1538c1f12");
    check_field_offset(lv, s1538c1f13, ABISELECT(1088,828), "S1538C1.s1538c1f13");
    check_field_offset(lv, s1538c1f14, ABISELECT(1096,836), "S1538C1.s1538c1f14");
    check_field_offset(lv, s1538c1f15, ABISELECT(1104,840), "S1538C1.s1538c1f15");
    check_field_offset(lv, s1538c1f16, ABISELECT(1116,852), "S1538C1.s1538c1f16");
    check_field_offset(lv, s1538c1f17, ABISELECT(1132,868), "S1538C1.s1538c1f17");
    check_field_offset(lv, s1538c1f18, ABISELECT(1136,872), "S1538C1.s1538c1f18");
    check_field_offset(lv, s1538c1f19, ABISELECT(1152,884), "S1538C1.s1538c1f19");
    test_class_info(&lv, &cd_S1538C1);
    dp->~S1538C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1538C1(Test_S1538C1, "S1538C1", ABISELECT(1160,888));

#else // __cplusplus

extern void _ZN7S1538C1C1Ev();
extern void _ZN7S1538C1D1Ev();
Name_Map name_map_S1538C1[] = {
  NSPAIR(_ZN7S1538C1C1Ev),
  NSPAIR(_ZN7S1538C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C4_nt;
extern VTBL_ENTRY _ZTI10S1538C4_nt[];
extern  VTBL_ENTRY _ZTV10S1538C4_nt[];
extern Class_Descriptor cd_S1538C3_nt;
extern VTBL_ENTRY _ZTI10S1538C3_nt[];
extern  VTBL_ENTRY _ZTV10S1538C3_nt[];
extern Class_Descriptor cd_S1538C2;
extern VTBL_ENTRY _ZTI7S1538C2[];
extern  VTBL_ENTRY _ZTV7S1538C2[];
static Base_Class bases_S1538C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1538C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1538C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1538C1[];
extern void _ZN7S1538C1D1Ev();
extern void _ZN7S1538C1D0Ev();
extern void _ZN10S1538C4_nt2v7Ev();
extern void _ZN10S1538C4_nt2v8Ev();
extern void _ZN10S1538C4_nt2v9Ev();
extern void _ZN10S1538C4_nt3v10Ev();
extern void _ZN10S1538C4_nt3v11Ev();
extern void _ZN10S1538C4_nt3v12Ev();
extern void _ZN10S1538C4_nt3v13Ev();
extern void _ZN10S1538C4_nt3v14Ev();
extern void _ZN10S1538C4_nt3v15Ev();
extern void _ZN10S1538C4_nt3v16Ev();
extern void _ZN10S1538C4_nt3v17Ev();
extern void _ZN10S1538C4_nt3v18Ev();
extern void _ZN10S1538C4_nt3v19Ev();
extern void _ZN10S1538C4_nt3v20Ev();
extern void _ZN10S1538C4_nt3v21Ev();
extern void _ZN10S1538C4_nt3v22Ev();
extern void _ZN10S1538C4_nt3v23Ev();
extern void _ZN10S1538C4_nt3v24Ev();
extern void _ZN10S1538C4_nt3v25Ev();
extern void _ZN10S1538C4_nt3v26Ev();
extern void _ZN10S1538C4_nt3v27Ev();
extern void _ZN10S1538C4_nt3v28Ev();
extern void _ZN10S1538C4_nt3v29Ev();
extern void _ZN10S1538C4_nt3v30Ev();
extern void _ZN10S1538C4_nt3v31Ev();
extern void _ZN10S1538C4_nt3v32Ev();
extern void _ZN10S1538C4_nt3v33Ev();
extern void _ZN10S1538C4_nt3v34Ev();
extern void _ZN10S1538C4_nt3v35Ev();
extern void _ZN10S1538C4_nt3v36Ev();
extern void _ZN10S1538C4_nt3v37Ev();
extern void _ZN10S1538C4_nt3v38Ev();
extern void _ZN10S1538C4_nt3v39Ev();
extern void _ZN10S1538C4_nt3v40Ev();
extern void _ZN10S1538C4_nt3v41Ev();
extern void _ZN10S1538C4_nt3v42Ev();
extern void _ZN10S1538C4_nt3v43Ev();
extern void _ZN10S1538C4_nt3v44Ev();
extern void _ZN10S1538C4_nt3v45Ev();
extern void _ZN10S1538C4_nt3v46Ev();
extern void _ZN10S1538C4_nt3v47Ev();
extern void _ZN10S1538C4_nt3v48Ev();
extern void _ZN10S1538C4_nt3v49Ev();
extern void _ZN10S1538C4_nt3v50Ev();
extern void _ZN10S1538C4_nt3v51Ev();
extern void _ZN10S1538C4_nt3v52Ev();
extern void _ZN10S1538C4_nt3v53Ev();
extern void _ZN10S1538C4_nt3v54Ev();
extern void _ZN10S1538C4_nt3v55Ev();
extern void _ZN10S1538C4_nt3v56Ev();
extern void _ZN10S1538C4_nt3v57Ev();
extern void _ZN10S1538C4_nt3v58Ev();
extern void _ZN10S1538C4_nt3v59Ev();
extern void _ZN10S1538C4_nt3v60Ev();
extern void _ZN10S1538C4_nt3v61Ev();
extern void _ZN10S1538C4_nt3v62Ev();
extern void _ZN10S1538C4_nt3v63Ev();
extern void _ZN10S1538C4_nt3v64Ev();
extern void _ZN10S1538C4_nt3v65Ev();
extern void _ZN10S1538C4_nt3v66Ev();
extern void _ZN10S1538C4_nt3v67Ev();
extern void _ZN10S1538C4_nt3v68Ev();
extern void _ZN10S1538C4_nt3v69Ev();
extern void _ZN10S1538C4_nt3v70Ev();
extern void _ZN10S1538C3_nt3v71Ev();
extern void _ZN10S1538C3_nt3v72Ev();
extern void _ZN10S1538C3_nt3v73Ev();
extern void _ZN10S1538C3_nt3v74Ev();
extern void _ZN10S1538C3_nt3v75Ev();
extern void _ZN10S1538C3_nt3v76Ev();
extern void _ZN10S1538C3_nt3v77Ev();
extern void _ZN10S1538C3_nt3v78Ev();
extern void _ZN10S1538C3_nt3v79Ev();
extern void _ZN10S1538C3_nt3v80Ev();
extern void _ZN10S1538C3_nt3v81Ev();
extern void _ZN10S1538C3_nt3v82Ev();
extern void _ZN10S1538C3_nt3v83Ev();
extern void _ZN10S1538C3_nt3v84Ev();
extern void _ZN10S1538C3_nt3v85Ev();
extern void _ZN10S1538C3_nt3v86Ev();
extern void _ZN10S1538C3_nt3v87Ev();
extern void _ZN10S1538C3_nt3v88Ev();
extern void _ZN10S1538C3_nt3v89Ev();
extern void _ZN10S1538C3_nt3v90Ev();
extern void _ZN10S1538C3_nt3v91Ev();
extern void _ZN10S1538C3_nt3v92Ev();
extern void _ZN10S1538C3_nt3v93Ev();
extern void _ZN10S1538C3_nt3v94Ev();
extern void _ZN10S1538C3_nt3v95Ev();
extern void _ZN10S1538C3_nt3v96Ev();
extern void _ZN10S1538C3_nt3v97Ev();
extern void _ZN10S1538C3_nt3v98Ev();
extern void _ZN10S1538C3_nt3v99Ev();
extern void _ZN10S1538C3_nt4v100Ev();
extern void _ZN10S1538C3_nt4v101Ev();
extern void _ZN10S1538C3_nt4v102Ev();
extern void _ZN10S1538C3_nt4v103Ev();
extern void _ZN10S1538C3_nt4v104Ev();
extern void _ZN10S1538C3_nt4v105Ev();
extern void _ZN10S1538C3_nt4v106Ev();
extern void _ZN10S1538C3_nt4v107Ev();
extern void _ZN10S1538C3_nt4v108Ev();
extern void _ZN10S1538C3_nt4v109Ev();
extern void _ZN10S1538C3_nt4v110Ev();
extern void _ZN10S1538C3_nt4v111Ev();
extern void _ZN10S1538C3_nt4v112Ev();
extern void _ZN10S1538C3_nt4v113Ev();
extern void _ZN10S1538C3_nt4v114Ev();
extern void _ZN10S1538C3_nt4v115Ev();
extern void _ZN10S1538C3_nt4v116Ev();
extern void _ZN10S1538C3_nt4v117Ev();
extern void _ZN10S1538C3_nt4v118Ev();
extern void _ZN10S1538C3_nt4v119Ev();
extern void _ZN10S1538C3_nt4v120Ev();
extern void _ZN10S1538C3_nt4v121Ev();
extern void _ZN10S1538C3_nt4v122Ev();
extern void _ZN10S1538C3_nt4v123Ev();
extern void _ZN10S1538C3_nt4v124Ev();
extern void _ZN10S1538C3_nt4v125Ev();
extern void _ZN10S1538C3_nt4v126Ev();
extern void _ZN10S1538C3_nt4v127Ev();
extern void _ZN10S1538C3_nt4v128Ev();
extern void _ZN10S1538C3_nt4v129Ev();
extern void _ZN10S1538C3_nt4v130Ev();
extern void _ZN10S1538C3_nt4v131Ev();
extern void _ZN10S1538C3_nt4v132Ev();
extern void _ZN10S1538C3_nt4v133Ev();
extern void _ZN10S1538C3_nt4v134Ev();
extern void _ZN10S1538C3_nt4v135Ev();
extern void _ZN10S1538C3_nt4v136Ev();
extern void _ZN10S1538C3_nt4v137Ev();
extern void _ZN10S1538C3_nt4v138Ev();
extern void _ZN10S1538C3_nt4v139Ev();
extern void _ZN10S1538C3_nt4v140Ev();
extern void _ZN10S1538C3_nt4v141Ev();
extern void _ZN10S1538C3_nt4v142Ev();
extern void _ZN10S1538C3_nt4v143Ev();
extern void _ZN10S1538C3_nt4v144Ev();
extern void _ZN10S1538C3_nt4v145Ev();
extern void _ZN10S1538C3_nt4v146Ev();
extern void _ZN10S1538C3_nt4v147Ev();
extern void _ZN10S1538C3_nt4v148Ev();
extern void _ZN10S1538C3_nt4v149Ev();
extern void _ZN10S1538C3_nt4v150Ev();
extern void _ZN10S1538C3_nt4v151Ev();
extern void _ZN10S1538C3_nt4v152Ev();
extern void _ZN10S1538C3_nt4v153Ev();
extern void _ZN10S1538C3_nt4v154Ev();
extern void _ZN10S1538C3_nt4v155Ev();
extern void _ZN10S1538C3_nt4v156Ev();
extern void _ZN10S1538C3_nt4v157Ev();
extern void _ZN10S1538C3_nt4v158Ev();
extern void _ZN10S1538C3_nt4v159Ev();
extern void _ZN10S1538C3_nt4v160Ev();
extern void _ZN10S1538C3_nt4v161Ev();
extern void _ZN10S1538C3_nt4v162Ev();
extern void _ZN10S1538C3_nt4v163Ev();
extern void _ZN10S1538C3_nt4v164Ev();
extern void _ZN10S1538C3_nt4v165Ev();
extern void _ZN10S1538C3_nt4v166Ev();
extern void _ZN10S1538C3_nt4v167Ev();
extern void _ZN10S1538C3_nt4v168Ev();
extern void _ZN10S1538C3_nt4v169Ev();
extern void _ZN10S1538C3_nt4v170Ev();
extern void _ZN10S1538C3_nt4v171Ev();
extern void _ZN10S1538C3_nt4v172Ev();
extern void _ZN10S1538C3_nt4v173Ev();
extern void _ZN10S1538C3_nt4v174Ev();
extern void _ZN10S1538C3_nt4v175Ev();
extern void _ZN10S1538C3_nt4v176Ev();
extern void _ZN10S1538C3_nt4v177Ev();
extern void _ZN10S1538C3_nt4v178Ev();
extern void _ZN10S1538C3_nt4v179Ev();
extern void _ZN10S1538C3_nt4v180Ev();
extern void _ZN10S1538C3_nt4v181Ev();
extern void _ZN10S1538C3_nt4v182Ev();
extern void _ZN10S1538C3_nt4v183Ev();
extern void _ZN10S1538C3_nt4v184Ev();
extern void _ZN10S1538C3_nt4v185Ev();
extern void _ZN10S1538C3_nt4v186Ev();
extern void _ZN10S1538C3_nt4v187Ev();
extern void _ZN10S1538C3_nt4v188Ev();
extern void _ZN10S1538C3_nt4v189Ev();
extern void _ZN10S1538C3_nt4v190Ev();
extern void _ZN10S1538C3_nt4v191Ev();
extern void _ZN10S1538C3_nt4v192Ev();
extern void _ZN10S1538C3_nt4v193Ev();
extern void _ZN10S1538C3_nt4v194Ev();
extern void _ZN10S1538C3_nt4v195Ev();
extern void _ZN10S1538C3_nt4v196Ev();
extern void _ZN10S1538C3_nt4v197Ev();
extern void _ZN10S1538C3_nt4v198Ev();
extern void _ZN10S1538C3_nt4v199Ev();
extern void _ZN10S1538C3_nt4v200Ev();
extern void _ZN10S1538C3_nt4v201Ev();
extern void _ZN10S1538C3_nt4v202Ev();
extern void _ZN10S1538C3_nt4v203Ev();
extern void _ZN10S1538C3_nt4v204Ev();
extern void _ZN10S1538C3_nt4v205Ev();
extern void _ZN10S1538C3_nt4v206Ev();
extern void _ZN10S1538C3_nt4v207Ev();
extern void _ZN10S1538C3_nt4v208Ev();
extern void _ZN10S1538C3_nt4v209Ev();
extern void _ZN10S1538C3_nt4v210Ev();
extern void _ZN10S1538C3_nt4v211Ev();
extern void _ZN10S1538C3_nt4v212Ev();
extern void _ZN10S1538C3_nt4v213Ev();
extern void _ZN7S1538C24v214Ev();
extern void _ZN7S1538C24v215Ev();
extern void _ZN7S1538C24v216Ev();
extern void _ZN7S1538C24v217Ev();
extern void _ZN7S1538C24v218Ev();
extern void _ZN7S1538C24v219Ev();
extern void _ZN7S1538C24v220Ev();
extern void _ZN7S1538C24v221Ev();
extern void _ZN7S1538C24v222Ev();
extern void _ZN7S1538C12v1Ev();
extern void _ZN7S1538C12v2Ev();
extern void _ZN7S1538C12v3Ev();
extern void _ZN7S1538C12v4Ev();
extern void _ZN7S1538C12v5Ev();
extern void _ZN7S1538C12v6Ev();
static  VTBL_ENTRY vtc_S1538C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1538C1[0]),
  (VTBL_ENTRY)&_ZN7S1538C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1538C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1538C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S1538C3_nt4v213Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v214Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v215Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v216Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v217Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v218Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v219Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v220Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v221Ev,
  (VTBL_ENTRY)&_ZN7S1538C24v222Ev,
  (VTBL_ENTRY)&_ZN7S1538C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1538C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1538C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1538C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1538C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1538C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S1538C1[];
extern  VTBL_ENTRY _ZTV7S1538C1[];
Class_Descriptor cd_S1538C1 = {  "S1538C1", // class name
  bases_S1538C1, 3,
  &(vtc_S1538C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1160,888), // object size
  NSPAIRA(_ZTI7S1538C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1538C1),226, //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  S1403C4  {
  int s1403c4f0;
  __tsi64 s1403c4f1;
  void *s1403c4f2[4];
  int s1403c4f3[2];
  void *s1403c4f4;
  ::S1538C5_nt s1403c4f5;
  void *s1403c4f6[2];
  virtual  ~S1403C4(); // _ZN7S1403C4D1Ev
  virtual void  v4(); // _ZN7S1403C42v4Ev
  virtual void  v5(); // _ZN7S1403C42v5Ev
  virtual void  v6(); // _ZN7S1403C42v6Ev
  virtual void  v7(); // _ZN7S1403C42v7Ev
  virtual void  v8(); // _ZN7S1403C42v8Ev
  virtual void  v9(); // _ZN7S1403C42v9Ev
  virtual void  v10(); // _ZN7S1403C43v10Ev
  virtual void  v11(); // _ZN7S1403C43v11Ev
  virtual void  v12(); // _ZN7S1403C43v12Ev
  virtual void  v13(); // _ZN7S1403C43v13Ev
  virtual void  v14(); // _ZN7S1403C43v14Ev
  virtual void  v15(); // _ZN7S1403C43v15Ev
  virtual void  v16(); // _ZN7S1403C43v16Ev
  virtual void  v17(); // _ZN7S1403C43v17Ev
  virtual void  v18(); // _ZN7S1403C43v18Ev
  virtual void  v19(); // _ZN7S1403C43v19Ev
  virtual void  v20(); // _ZN7S1403C43v20Ev
  virtual void  v21(); // _ZN7S1403C43v21Ev
  virtual void  v22(); // _ZN7S1403C43v22Ev
  virtual void  v23(); // _ZN7S1403C43v23Ev
  virtual void  v24(); // _ZN7S1403C43v24Ev
  virtual void  v25(); // _ZN7S1403C43v25Ev
  virtual void  v26(); // _ZN7S1403C43v26Ev
  virtual void  v27(); // _ZN7S1403C43v27Ev
  virtual void  v28(); // _ZN7S1403C43v28Ev
  virtual void  v29(); // _ZN7S1403C43v29Ev
  virtual void  v30(); // _ZN7S1403C43v30Ev
  virtual void  v31(); // _ZN7S1403C43v31Ev
  virtual void  v32(); // _ZN7S1403C43v32Ev
  virtual void  v33(); // _ZN7S1403C43v33Ev
  virtual void  v34(); // _ZN7S1403C43v34Ev
  virtual void  v35(); // _ZN7S1403C43v35Ev
  virtual void  v36(); // _ZN7S1403C43v36Ev
  virtual void  v37(); // _ZN7S1403C43v37Ev
  virtual void  v38(); // _ZN7S1403C43v38Ev
  virtual void  v39(); // _ZN7S1403C43v39Ev
  virtual void  v40(); // _ZN7S1403C43v40Ev
  virtual void  v41(); // _ZN7S1403C43v41Ev
  virtual void  v42(); // _ZN7S1403C43v42Ev
  virtual void  v43(); // _ZN7S1403C43v43Ev
  virtual void  v44(); // _ZN7S1403C43v44Ev
  virtual void  v45(); // _ZN7S1403C43v45Ev
  virtual void  v46(); // _ZN7S1403C43v46Ev
  virtual void  v47(); // _ZN7S1403C43v47Ev
  virtual void  v48(); // _ZN7S1403C43v48Ev
  virtual void  v49(); // _ZN7S1403C43v49Ev
  virtual void  v50(); // _ZN7S1403C43v50Ev
  virtual void  v51(); // _ZN7S1403C43v51Ev
  virtual void  v52(); // _ZN7S1403C43v52Ev
  virtual void  v53(); // _ZN7S1403C43v53Ev
  virtual void  v54(); // _ZN7S1403C43v54Ev
  virtual void  v55(); // _ZN7S1403C43v55Ev
  virtual void  v56(); // _ZN7S1403C43v56Ev
  virtual void  v57(); // _ZN7S1403C43v57Ev
  virtual void  v58(); // _ZN7S1403C43v58Ev
  virtual void  v59(); // _ZN7S1403C43v59Ev
  virtual void  v60(); // _ZN7S1403C43v60Ev
  virtual void  v61(); // _ZN7S1403C43v61Ev
  virtual void  v62(); // _ZN7S1403C43v62Ev
  virtual void  v63(); // _ZN7S1403C43v63Ev
  virtual void  v64(); // _ZN7S1403C43v64Ev
  virtual void  v65(); // _ZN7S1403C43v65Ev
  virtual void  v66(); // _ZN7S1403C43v66Ev
  virtual void  v67(); // _ZN7S1403C43v67Ev
  S1403C4(); // tgen
};
//SIG(-1 S1403C4) 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]}


 S1403C4 ::~S1403C4(){ note_dtor("S1403C4", this);}
void  S1403C4 ::v4(){vfunc_called(this, "_ZN7S1403C42v4Ev");}
void  S1403C4 ::v5(){vfunc_called(this, "_ZN7S1403C42v5Ev");}
void  S1403C4 ::v6(){vfunc_called(this, "_ZN7S1403C42v6Ev");}
void  S1403C4 ::v7(){vfunc_called(this, "_ZN7S1403C42v7Ev");}
void  S1403C4 ::v8(){vfunc_called(this, "_ZN7S1403C42v8Ev");}
void  S1403C4 ::v9(){vfunc_called(this, "_ZN7S1403C42v9Ev");}
void  S1403C4 ::v10(){vfunc_called(this, "_ZN7S1403C43v10Ev");}
void  S1403C4 ::v11(){vfunc_called(this, "_ZN7S1403C43v11Ev");}
void  S1403C4 ::v12(){vfunc_called(this, "_ZN7S1403C43v12Ev");}
void  S1403C4 ::v13(){vfunc_called(this, "_ZN7S1403C43v13Ev");}
void  S1403C4 ::v14(){vfunc_called(this, "_ZN7S1403C43v14Ev");}
void  S1403C4 ::v15(){vfunc_called(this, "_ZN7S1403C43v15Ev");}
void  S1403C4 ::v16(){vfunc_called(this, "_ZN7S1403C43v16Ev");}
void  S1403C4 ::v17(){vfunc_called(this, "_ZN7S1403C43v17Ev");}
void  S1403C4 ::v18(){vfunc_called(this, "_ZN7S1403C43v18Ev");}
void  S1403C4 ::v19(){vfunc_called(this, "_ZN7S1403C43v19Ev");}
void  S1403C4 ::v20(){vfunc_called(this, "_ZN7S1403C43v20Ev");}
void  S1403C4 ::v21(){vfunc_called(this, "_ZN7S1403C43v21Ev");}
void  S1403C4 ::v22(){vfunc_called(this, "_ZN7S1403C43v22Ev");}
void  S1403C4 ::v23(){vfunc_called(this, "_ZN7S1403C43v23Ev");}
void  S1403C4 ::v24(){vfunc_called(this, "_ZN7S1403C43v24Ev");}
void  S1403C4 ::v25(){vfunc_called(this, "_ZN7S1403C43v25Ev");}
void  S1403C4 ::v26(){vfunc_called(this, "_ZN7S1403C43v26Ev");}
void  S1403C4 ::v27(){vfunc_called(this, "_ZN7S1403C43v27Ev");}
void  S1403C4 ::v28(){vfunc_called(this, "_ZN7S1403C43v28Ev");}
void  S1403C4 ::v29(){vfunc_called(this, "_ZN7S1403C43v29Ev");}
void  S1403C4 ::v30(){vfunc_called(this, "_ZN7S1403C43v30Ev");}
void  S1403C4 ::v31(){vfunc_called(this, "_ZN7S1403C43v31Ev");}
void  S1403C4 ::v32(){vfunc_called(this, "_ZN7S1403C43v32Ev");}
void  S1403C4 ::v33(){vfunc_called(this, "_ZN7S1403C43v33Ev");}
void  S1403C4 ::v34(){vfunc_called(this, "_ZN7S1403C43v34Ev");}
void  S1403C4 ::v35(){vfunc_called(this, "_ZN7S1403C43v35Ev");}
void  S1403C4 ::v36(){vfunc_called(this, "_ZN7S1403C43v36Ev");}
void  S1403C4 ::v37(){vfunc_called(this, "_ZN7S1403C43v37Ev");}
void  S1403C4 ::v38(){vfunc_called(this, "_ZN7S1403C43v38Ev");}
void  S1403C4 ::v39(){vfunc_called(this, "_ZN7S1403C43v39Ev");}
void  S1403C4 ::v40(){vfunc_called(this, "_ZN7S1403C43v40Ev");}
void  S1403C4 ::v41(){vfunc_called(this, "_ZN7S1403C43v41Ev");}
void  S1403C4 ::v42(){vfunc_called(this, "_ZN7S1403C43v42Ev");}
void  S1403C4 ::v43(){vfunc_called(this, "_ZN7S1403C43v43Ev");}
void  S1403C4 ::v44(){vfunc_called(this, "_ZN7S1403C43v44Ev");}
void  S1403C4 ::v45(){vfunc_called(this, "_ZN7S1403C43v45Ev");}
void  S1403C4 ::v46(){vfunc_called(this, "_ZN7S1403C43v46Ev");}
void  S1403C4 ::v47(){vfunc_called(this, "_ZN7S1403C43v47Ev");}
void  S1403C4 ::v48(){vfunc_called(this, "_ZN7S1403C43v48Ev");}
void  S1403C4 ::v49(){vfunc_called(this, "_ZN7S1403C43v49Ev");}
void  S1403C4 ::v50(){vfunc_called(this, "_ZN7S1403C43v50Ev");}
void  S1403C4 ::v51(){vfunc_called(this, "_ZN7S1403C43v51Ev");}
void  S1403C4 ::v52(){vfunc_called(this, "_ZN7S1403C43v52Ev");}
void  S1403C4 ::v53(){vfunc_called(this, "_ZN7S1403C43v53Ev");}
void  S1403C4 ::v54(){vfunc_called(this, "_ZN7S1403C43v54Ev");}
void  S1403C4 ::v55(){vfunc_called(this, "_ZN7S1403C43v55Ev");}
void  S1403C4 ::v56(){vfunc_called(this, "_ZN7S1403C43v56Ev");}
void  S1403C4 ::v57(){vfunc_called(this, "_ZN7S1403C43v57Ev");}
void  S1403C4 ::v58(){vfunc_called(this, "_ZN7S1403C43v58Ev");}
void  S1403C4 ::v59(){vfunc_called(this, "_ZN7S1403C43v59Ev");}
void  S1403C4 ::v60(){vfunc_called(this, "_ZN7S1403C43v60Ev");}
void  S1403C4 ::v61(){vfunc_called(this, "_ZN7S1403C43v61Ev");}
void  S1403C4 ::v62(){vfunc_called(this, "_ZN7S1403C43v62Ev");}
void  S1403C4 ::v63(){vfunc_called(this, "_ZN7S1403C43v63Ev");}
void  S1403C4 ::v64(){vfunc_called(this, "_ZN7S1403C43v64Ev");}
void  S1403C4 ::v65(){vfunc_called(this, "_ZN7S1403C43v65Ev");}
void  S1403C4 ::v66(){vfunc_called(this, "_ZN7S1403C43v66Ev");}
void  S1403C4 ::v67(){vfunc_called(this, "_ZN7S1403C43v67Ev");}
S1403C4 ::S1403C4(){ note_ctor("S1403C4", this);} // tgen

static void Test_S1403C4()
{
  extern Class_Descriptor cd_S1403C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1403C4, buf);
    S1403C4 *dp, &lv = *(dp=new (buf) S1403C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1403C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C4)");
    check_field_offset(lv, s1403c4f0, ABISELECT(8,4), "S1403C4.s1403c4f0");
    check_field_offset(lv, s1403c4f1, ABISELECT(16,8), "S1403C4.s1403c4f1");
    check_field_offset(lv, s1403c4f2, ABISELECT(24,16), "S1403C4.s1403c4f2");
    check_field_offset(lv, s1403c4f3, ABISELECT(56,32), "S1403C4.s1403c4f3");
    check_field_offset(lv, s1403c4f4, ABISELECT(64,40), "S1403C4.s1403c4f4");
    check_field_offset(lv, s1403c4f5, ABISELECT(72,44), "S1403C4.s1403c4f5");
    check_field_offset(lv, s1403c4f6, ABISELECT(80,52), "S1403C4.s1403c4f6");
    test_class_info(&lv, &cd_S1403C4);
    dp->~S1403C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C4(Test_S1403C4, "S1403C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1403C4C1Ev();
extern void _ZN7S1403C4D1Ev();
Name_Map name_map_S1403C4[] = {
  NSPAIR(_ZN7S1403C4C1Ev),
  NSPAIR(_ZN7S1403C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1403C4[];
extern void _ZN7S1403C4D1Ev();
extern void _ZN7S1403C4D0Ev();
extern void _ZN7S1403C42v4Ev();
extern void _ZN7S1403C42v5Ev();
extern void _ZN7S1403C42v6Ev();
extern void _ZN7S1403C42v7Ev();
extern void _ZN7S1403C42v8Ev();
extern void _ZN7S1403C42v9Ev();
extern void _ZN7S1403C43v10Ev();
extern void _ZN7S1403C43v11Ev();
extern void _ZN7S1403C43v12Ev();
extern void _ZN7S1403C43v13Ev();
extern void _ZN7S1403C43v14Ev();
extern void _ZN7S1403C43v15Ev();
extern void _ZN7S1403C43v16Ev();
extern void _ZN7S1403C43v17Ev();
extern void _ZN7S1403C43v18Ev();
extern void _ZN7S1403C43v19Ev();
extern void _ZN7S1403C43v20Ev();
extern void _ZN7S1403C43v21Ev();
extern void _ZN7S1403C43v22Ev();
extern void _ZN7S1403C43v23Ev();
extern void _ZN7S1403C43v24Ev();
extern void _ZN7S1403C43v25Ev();
extern void _ZN7S1403C43v26Ev();
extern void _ZN7S1403C43v27Ev();
extern void _ZN7S1403C43v28Ev();
extern void _ZN7S1403C43v29Ev();
extern void _ZN7S1403C43v30Ev();
extern void _ZN7S1403C43v31Ev();
extern void _ZN7S1403C43v32Ev();
extern void _ZN7S1403C43v33Ev();
extern void _ZN7S1403C43v34Ev();
extern void _ZN7S1403C43v35Ev();
extern void _ZN7S1403C43v36Ev();
extern void _ZN7S1403C43v37Ev();
extern void _ZN7S1403C43v38Ev();
extern void _ZN7S1403C43v39Ev();
extern void _ZN7S1403C43v40Ev();
extern void _ZN7S1403C43v41Ev();
extern void _ZN7S1403C43v42Ev();
extern void _ZN7S1403C43v43Ev();
extern void _ZN7S1403C43v44Ev();
extern void _ZN7S1403C43v45Ev();
extern void _ZN7S1403C43v46Ev();
extern void _ZN7S1403C43v47Ev();
extern void _ZN7S1403C43v48Ev();
extern void _ZN7S1403C43v49Ev();
extern void _ZN7S1403C43v50Ev();
extern void _ZN7S1403C43v51Ev();
extern void _ZN7S1403C43v52Ev();
extern void _ZN7S1403C43v53Ev();
extern void _ZN7S1403C43v54Ev();
extern void _ZN7S1403C43v55Ev();
extern void _ZN7S1403C43v56Ev();
extern void _ZN7S1403C43v57Ev();
extern void _ZN7S1403C43v58Ev();
extern void _ZN7S1403C43v59Ev();
extern void _ZN7S1403C43v60Ev();
extern void _ZN7S1403C43v61Ev();
extern void _ZN7S1403C43v62Ev();
extern void _ZN7S1403C43v63Ev();
extern void _ZN7S1403C43v64Ev();
extern void _ZN7S1403C43v65Ev();
extern void _ZN7S1403C43v66Ev();
extern void _ZN7S1403C43v67Ev();
static  VTBL_ENTRY vtc_S1403C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1403C4[0]),
  (VTBL_ENTRY)&_ZN7S1403C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1403C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1403C4[];
extern  VTBL_ENTRY _ZTV7S1403C4[];
Class_Descriptor cd_S1403C4 = {  "S1403C4", // class name
  0,0,//no base classes
  &(vtc_S1403C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1403C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1403C4),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  S1403C15_nt  {
  int s1403c15f0[3];
  void  mf1403c15(); // _ZN11S1403C15_nt9mf1403c15Ev
};
//SIG(-1 S1403C15_nt) C1{ m Fi[3]}


void  S1403C15_nt ::mf1403c15(){}

//skip512 S1403C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S1403C21()
{
  extern Class_Descriptor cd_S1403C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1403C21, buf);
    S1403C21 &lv = *(new (buf) S1403C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1403C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C21)");
    check_base_class_offset(lv, (S1538C8_nt*), 0, "S1403C21");
    test_class_info(&lv, &cd_S1403C21);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C21(Test_S1403C21, "S1403C21", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1403C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1403C21 = {  "S1403C21", // class name
  bases_S1403C21, 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  S1403C20_nt  : S1403C21 {
};
//SIG(-1 S1403C20_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S1403C20_nt

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1403C21;
static Base_Class bases_S1403C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1403C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1403C3  : S1403C4 {
  ::S1538C30 s1403c3f0;
  ::S1538C30 s1403c3f1;
  ::S1538C9_nt s1403c3f2;
  int s1403c3f3;
  char s1403c3f4[4];
  void *s1403c3f5[2];
  ::S1538C22 s1403c3f6;
  unsigned int s1403c3f7:1;
  unsigned int s1403c3f8:1;
  unsigned int s1403c3f9:1;
  unsigned int s1403c3f10:1;
  unsigned int s1403c3f11:1;
  unsigned int s1403c3f12:1;
  unsigned int s1403c3f13:1;
  unsigned int s1403c3f14:1;
  unsigned int s1403c3f15:1;
  unsigned int s1403c3f16:1;
  unsigned int s1403c3f17:1;
  unsigned int s1403c3f18:1;
  unsigned int s1403c3f19:1;
  unsigned int s1403c3f20:1;
  unsigned int s1403c3f21:1;
  unsigned int s1403c3f22:1;
  unsigned int s1403c3f23:1;
  unsigned int s1403c3f24:1;
  unsigned int s1403c3f25:1;
  unsigned int s1403c3f26:1;
  unsigned int s1403c3f27:1;
  unsigned int s1403c3f28:1;
  unsigned int s1403c3f29:1;
  unsigned int s1403c3f30:1;
  unsigned int s1403c3f31:1;
  unsigned int s1403c3f32:1;
  unsigned int s1403c3f33:1;
  unsigned int s1403c3f34:1;
  unsigned int s1403c3f35:1;
  unsigned int s1403c3f36:1;
  unsigned int s1403c3f37:1;
  unsigned int s1403c3f38:1;
  unsigned int s1403c3f39:1;
  unsigned int s1403c3f40:1;
  unsigned int s1403c3f41:1;
  unsigned int s1403c3f42:1;
  unsigned int s1403c3f43:1;
  unsigned int s1403c3f44:1;
  unsigned int s1403c3f45:1;
  unsigned int s1403c3f46:1;
  unsigned int s1403c3f47:1;
  unsigned int s1403c3f48:1;
  unsigned int s1403c3f49:1;
  unsigned int s1403c3f50:1;
  unsigned int s1403c3f51:1;
  unsigned int s1403c3f52:1;
  unsigned int s1403c3f53:1;
  unsigned int s1403c3f54:1;
  unsigned int s1403c3f55:1;
  unsigned int s1403c3f56:1;
  unsigned int s1403c3f57:1;
  unsigned int s1403c3f58:1;
  unsigned int s1403c3f59:1;
  unsigned int s1403c3f60:1;
  unsigned int s1403c3f61:1;
  unsigned int s1403c3f62:1;
  unsigned int s1403c3f63:1;
  unsigned int s1403c3f64:1;
  unsigned int s1403c3f65:1;
  unsigned int s1403c3f66:1;
  unsigned int s1403c3f67:1;
  unsigned int s1403c3f68:1;
  unsigned int s1403c3f69:1;
  unsigned int s1403c3f70:1;
  unsigned int s1403c3f71:1;
  unsigned int s1403c3f72:1;
  unsigned int s1403c3f73:1;
  unsigned int s1403c3f74:1;
  unsigned int s1403c3f75:1;
  unsigned int s1403c3f76:1;
  unsigned int s1403c3f77:1;
  unsigned int s1403c3f78:1;
  unsigned int s1403c3f79:1;
  unsigned int s1403c3f80:1;
  unsigned int s1403c3f81:1;
  unsigned int s1403c3f82:1;
  unsigned int s1403c3f83:1;
  int s1403c3f84[5];
  void *s1403c3f85[2];
  int s1403c3f86[3];
  ::S1538C5_nt s1403c3f87;
  ::S1538C5_nt s1403c3f88;
  ::S1538C5_nt s1403c3f89;
  ::S1538C18 s1403c3f90;
  ::S1538C18 s1403c3f91;
  int s1403c3f92;
  void *s1403c3f93[2];
  ::S1538C14_nt s1403c3f94;
  ::S1403C15_nt s1403c3f95;
  ::S1538C14_nt s1403c3f96;
  ::S1538C14_nt s1403c3f97;
  void *s1403c3f98;
  ::S1538C5_nt s1403c3f99;
  ::S1538C18 s1403c3f100;
  ::S1538C14_nt s1403c3f101;
  ::S1403C15_nt s1403c3f102;
  int s1403c3f103;
  ::S1538C14_nt s1403c3f104;
  ::S1538C14_nt s1403c3f105;
  void *s1403c3f106;
  int s1403c3f107;
  char s1403c3f108;
  ::S1403C15_nt s1403c3f109;
  ::S1403C15_nt s1403c3f110;
  void *s1403c3f111;
  int s1403c3f112;
  void *s1403c3f113;
  ::S1538C12 s1403c3f114;
  ::S1538C6_nt s1403c3f115;
  ::S1403C20_nt s1403c3f116;
  virtual  ~S1403C3(); // _ZN7S1403C3D1Ev
  virtual void  v68(); // _ZN7S1403C33v68Ev
  virtual void  v69(); // _ZN7S1403C33v69Ev
  virtual void  v70(); // _ZN7S1403C33v70Ev
  virtual void  v71(); // _ZN7S1403C33v71Ev
  virtual void  v72(); // _ZN7S1403C33v72Ev
  virtual void  v73(); // _ZN7S1403C33v73Ev
  virtual void  v74(); // _ZN7S1403C33v74Ev
  virtual void  v75(); // _ZN7S1403C33v75Ev
  virtual void  v76(); // _ZN7S1403C33v76Ev
  virtual void  v77(); // _ZN7S1403C33v77Ev
  virtual void  v78(); // _ZN7S1403C33v78Ev
  virtual void  v79(); // _ZN7S1403C33v79Ev
  virtual void  v80(); // _ZN7S1403C33v80Ev
  virtual void  v81(); // _ZN7S1403C33v81Ev
  virtual void  v82(); // _ZN7S1403C33v82Ev
  virtual void  v83(); // _ZN7S1403C33v83Ev
  virtual void  v84(); // _ZN7S1403C33v84Ev
  virtual void  v85(); // _ZN7S1403C33v85Ev
  virtual void  v86(); // _ZN7S1403C33v86Ev
  virtual void  v87(); // _ZN7S1403C33v87Ev
  virtual void  v88(); // _ZN7S1403C33v88Ev
  virtual void  v89(); // _ZN7S1403C33v89Ev
  virtual void  v90(); // _ZN7S1403C33v90Ev
  virtual void  v91(); // _ZN7S1403C33v91Ev
  virtual void  v92(); // _ZN7S1403C33v92Ev
  virtual void  v93(); // _ZN7S1403C33v93Ev
  virtual void  v94(); // _ZN7S1403C33v94Ev
  virtual void  v95(); // _ZN7S1403C33v95Ev
  virtual void  v96(); // _ZN7S1403C33v96Ev
  virtual void  v97(); // _ZN7S1403C33v97Ev
  virtual void  v98(); // _ZN7S1403C33v98Ev
  virtual void  v99(); // _ZN7S1403C33v99Ev
  virtual void  v100(); // _ZN7S1403C34v100Ev
  virtual void  v101(); // _ZN7S1403C34v101Ev
  virtual void  v102(); // _ZN7S1403C34v102Ev
  virtual void  v103(); // _ZN7S1403C34v103Ev
  virtual void  v104(); // _ZN7S1403C34v104Ev
  virtual void  v105(); // _ZN7S1403C34v105Ev
  virtual void  v106(); // _ZN7S1403C34v106Ev
  virtual void  v107(); // _ZN7S1403C34v107Ev
  virtual void  v108(); // _ZN7S1403C34v108Ev
  virtual void  v109(); // _ZN7S1403C34v109Ev
  virtual void  v110(); // _ZN7S1403C34v110Ev
  virtual void  v111(); // _ZN7S1403C34v111Ev
  virtual void  v112(); // _ZN7S1403C34v112Ev
  virtual void  v113(); // _ZN7S1403C34v113Ev
  virtual void  v114(); // _ZN7S1403C34v114Ev
  virtual void  v115(); // _ZN7S1403C34v115Ev
  virtual void  v116(); // _ZN7S1403C34v116Ev
  virtual void  v117(); // _ZN7S1403C34v117Ev
  virtual void  v118(); // _ZN7S1403C34v118Ev
  virtual void  v119(); // _ZN7S1403C34v119Ev
  virtual void  v120(); // _ZN7S1403C34v120Ev
  virtual void  v121(); // _ZN7S1403C34v121Ev
  virtual void  v122(); // _ZN7S1403C34v122Ev
  virtual void  v123(); // _ZN7S1403C34v123Ev
  virtual void  v124(); // _ZN7S1403C34v124Ev
  virtual void  v125(); // _ZN7S1403C34v125Ev
  virtual void  v126(); // _ZN7S1403C34v126Ev
  virtual void  v127(); // _ZN7S1403C34v127Ev
  virtual void  v128(); // _ZN7S1403C34v128Ev
  virtual void  v129(); // _ZN7S1403C34v129Ev
  virtual void  v130(); // _ZN7S1403C34v130Ev
  virtual void  v131(); // _ZN7S1403C34v131Ev
  virtual void  v132(); // _ZN7S1403C34v132Ev
  virtual void  v133(); // _ZN7S1403C34v133Ev
  virtual void  v134(); // _ZN7S1403C34v134Ev
  virtual void  v135(); // _ZN7S1403C34v135Ev
  virtual void  v136(); // _ZN7S1403C34v136Ev
  virtual void  v137(); // _ZN7S1403C34v137Ev
  virtual void  v138(); // _ZN7S1403C34v138Ev
  virtual void  v139(); // _ZN7S1403C34v139Ev
  virtual void  v140(); // _ZN7S1403C34v140Ev
  virtual void  v141(); // _ZN7S1403C34v141Ev
  virtual void  v142(); // _ZN7S1403C34v142Ev
  virtual void  v143(); // _ZN7S1403C34v143Ev
  virtual void  v144(); // _ZN7S1403C34v144Ev
  virtual void  v145(); // _ZN7S1403C34v145Ev
  virtual void  v146(); // _ZN7S1403C34v146Ev
  virtual void  v147(); // _ZN7S1403C34v147Ev
  virtual void  v148(); // _ZN7S1403C34v148Ev
  virtual void  v149(); // _ZN7S1403C34v149Ev
  virtual void  v150(); // _ZN7S1403C34v150Ev
  virtual void  v151(); // _ZN7S1403C34v151Ev
  virtual void  v152(); // _ZN7S1403C34v152Ev
  virtual void  v153(); // _ZN7S1403C34v153Ev
  virtual void  v154(); // _ZN7S1403C34v154Ev
  virtual void  v155(); // _ZN7S1403C34v155Ev
  virtual void  v156(); // _ZN7S1403C34v156Ev
  virtual void  v157(); // _ZN7S1403C34v157Ev
  virtual void  v158(); // _ZN7S1403C34v158Ev
  virtual void  v159(); // _ZN7S1403C34v159Ev
  virtual void  v160(); // _ZN7S1403C34v160Ev
  virtual void  v161(); // _ZN7S1403C34v161Ev
  virtual void  v162(); // _ZN7S1403C34v162Ev
  virtual void  v163(); // _ZN7S1403C34v163Ev
  virtual void  v164(); // _ZN7S1403C34v164Ev
  virtual void  v165(); // _ZN7S1403C34v165Ev
  virtual void  v166(); // _ZN7S1403C34v166Ev
  virtual void  v167(); // _ZN7S1403C34v167Ev
  virtual void  v168(); // _ZN7S1403C34v168Ev
  virtual void  v169(); // _ZN7S1403C34v169Ev
  virtual void  v170(); // _ZN7S1403C34v170Ev
  virtual void  v171(); // _ZN7S1403C34v171Ev
  virtual void  v172(); // _ZN7S1403C34v172Ev
  virtual void  v173(); // _ZN7S1403C34v173Ev
  virtual void  v174(); // _ZN7S1403C34v174Ev
  virtual void  v175(); // _ZN7S1403C34v175Ev
  virtual void  v176(); // _ZN7S1403C34v176Ev
  virtual void  v177(); // _ZN7S1403C34v177Ev
  virtual void  v178(); // _ZN7S1403C34v178Ev
  virtual void  v179(); // _ZN7S1403C34v179Ev
  virtual void  v180(); // _ZN7S1403C34v180Ev
  virtual void  v181(); // _ZN7S1403C34v181Ev
  virtual void  v182(); // _ZN7S1403C34v182Ev
  virtual void  v183(); // _ZN7S1403C34v183Ev
  virtual void  v184(); // _ZN7S1403C34v184Ev
  virtual void  v185(); // _ZN7S1403C34v185Ev
  virtual void  v186(); // _ZN7S1403C34v186Ev
  virtual void  v187(); // _ZN7S1403C34v187Ev
  virtual void  v188(); // _ZN7S1403C34v188Ev
  virtual void  v189(); // _ZN7S1403C34v189Ev
  virtual void  v190(); // _ZN7S1403C34v190Ev
  virtual void  v191(); // _ZN7S1403C34v191Ev
  virtual void  v192(); // _ZN7S1403C34v192Ev
  virtual void  v193(); // _ZN7S1403C34v193Ev
  virtual void  v194(); // _ZN7S1403C34v194Ev
  virtual void  v195(); // _ZN7S1403C34v195Ev
  virtual void  v196(); // _ZN7S1403C34v196Ev
  virtual void  v197(); // _ZN7S1403C34v197Ev
  virtual void  v198(); // _ZN7S1403C34v198Ev
  virtual void  v199(); // _ZN7S1403C34v199Ev
  virtual void  v200(); // _ZN7S1403C34v200Ev
  virtual void  v201(); // _ZN7S1403C34v201Ev
  virtual void  v202(); // _ZN7S1403C34v202Ev
  virtual void  v203(); // _ZN7S1403C34v203Ev
  virtual void  v204(); // _ZN7S1403C34v204Ev
  virtual void  v205(); // _ZN7S1403C34v205Ev
  virtual void  v206(); // _ZN7S1403C34v206Ev
  virtual void  v207(); // _ZN7S1403C34v207Ev
  virtual void  v208(); // _ZN7S1403C34v208Ev
  virtual void  v209(); // _ZN7S1403C34v209Ev
  virtual void  v210(); // _ZN7S1403C34v210Ev
  S1403C3(); // tgen
};
//SIG(-1 S1403C3) 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] FC8{ BC9{ BC6}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi: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 FC10{ BC11{ BC6}} FC10 Fi Fp[2] FC12{ m Fi[3]} FC13{ m Fi[3]} FC12 FC12 Fp FC3 FC10 FC12 FC13 Fi FC12 FC12 Fp Fi Fc FC13 FC13 Fp Fi Fp FC14{ BC15{ BC6}} FC16{ BC17{ BC6}} FC18{ BC19{ BC6}}}


 S1403C3 ::~S1403C3(){ note_dtor("S1403C3", this);}
void  S1403C3 ::v68(){vfunc_called(this, "_ZN7S1403C33v68Ev");}
void  S1403C3 ::v69(){vfunc_called(this, "_ZN7S1403C33v69Ev");}
void  S1403C3 ::v70(){vfunc_called(this, "_ZN7S1403C33v70Ev");}
void  S1403C3 ::v71(){vfunc_called(this, "_ZN7S1403C33v71Ev");}
void  S1403C3 ::v72(){vfunc_called(this, "_ZN7S1403C33v72Ev");}
void  S1403C3 ::v73(){vfunc_called(this, "_ZN7S1403C33v73Ev");}
void  S1403C3 ::v74(){vfunc_called(this, "_ZN7S1403C33v74Ev");}
void  S1403C3 ::v75(){vfunc_called(this, "_ZN7S1403C33v75Ev");}
void  S1403C3 ::v76(){vfunc_called(this, "_ZN7S1403C33v76Ev");}
void  S1403C3 ::v77(){vfunc_called(this, "_ZN7S1403C33v77Ev");}
void  S1403C3 ::v78(){vfunc_called(this, "_ZN7S1403C33v78Ev");}
void  S1403C3 ::v79(){vfunc_called(this, "_ZN7S1403C33v79Ev");}
void  S1403C3 ::v80(){vfunc_called(this, "_ZN7S1403C33v80Ev");}
void  S1403C3 ::v81(){vfunc_called(this, "_ZN7S1403C33v81Ev");}
void  S1403C3 ::v82(){vfunc_called(this, "_ZN7S1403C33v82Ev");}
void  S1403C3 ::v83(){vfunc_called(this, "_ZN7S1403C33v83Ev");}
void  S1403C3 ::v84(){vfunc_called(this, "_ZN7S1403C33v84Ev");}
void  S1403C3 ::v85(){vfunc_called(this, "_ZN7S1403C33v85Ev");}
void  S1403C3 ::v86(){vfunc_called(this, "_ZN7S1403C33v86Ev");}
void  S1403C3 ::v87(){vfunc_called(this, "_ZN7S1403C33v87Ev");}
void  S1403C3 ::v88(){vfunc_called(this, "_ZN7S1403C33v88Ev");}
void  S1403C3 ::v89(){vfunc_called(this, "_ZN7S1403C33v89Ev");}
void  S1403C3 ::v90(){vfunc_called(this, "_ZN7S1403C33v90Ev");}
void  S1403C3 ::v91(){vfunc_called(this, "_ZN7S1403C33v91Ev");}
void  S1403C3 ::v92(){vfunc_called(this, "_ZN7S1403C33v92Ev");}
void  S1403C3 ::v93(){vfunc_called(this, "_ZN7S1403C33v93Ev");}
void  S1403C3 ::v94(){vfunc_called(this, "_ZN7S1403C33v94Ev");}
void  S1403C3 ::v95(){vfunc_called(this, "_ZN7S1403C33v95Ev");}
void  S1403C3 ::v96(){vfunc_called(this, "_ZN7S1403C33v96Ev");}
void  S1403C3 ::v97(){vfunc_called(this, "_ZN7S1403C33v97Ev");}
void  S1403C3 ::v98(){vfunc_called(this, "_ZN7S1403C33v98Ev");}
void  S1403C3 ::v99(){vfunc_called(this, "_ZN7S1403C33v99Ev");}
void  S1403C3 ::v100(){vfunc_called(this, "_ZN7S1403C34v100Ev");}
void  S1403C3 ::v101(){vfunc_called(this, "_ZN7S1403C34v101Ev");}
void  S1403C3 ::v102(){vfunc_called(this, "_ZN7S1403C34v102Ev");}
void  S1403C3 ::v103(){vfunc_called(this, "_ZN7S1403C34v103Ev");}
void  S1403C3 ::v104(){vfunc_called(this, "_ZN7S1403C34v104Ev");}
void  S1403C3 ::v105(){vfunc_called(this, "_ZN7S1403C34v105Ev");}
void  S1403C3 ::v106(){vfunc_called(this, "_ZN7S1403C34v106Ev");}
void  S1403C3 ::v107(){vfunc_called(this, "_ZN7S1403C34v107Ev");}
void  S1403C3 ::v108(){vfunc_called(this, "_ZN7S1403C34v108Ev");}
void  S1403C3 ::v109(){vfunc_called(this, "_ZN7S1403C34v109Ev");}
void  S1403C3 ::v110(){vfunc_called(this, "_ZN7S1403C34v110Ev");}
void  S1403C3 ::v111(){vfunc_called(this, "_ZN7S1403C34v111Ev");}
void  S1403C3 ::v112(){vfunc_called(this, "_ZN7S1403C34v112Ev");}
void  S1403C3 ::v113(){vfunc_called(this, "_ZN7S1403C34v113Ev");}
void  S1403C3 ::v114(){vfunc_called(this, "_ZN7S1403C34v114Ev");}
void  S1403C3 ::v115(){vfunc_called(this, "_ZN7S1403C34v115Ev");}
void  S1403C3 ::v116(){vfunc_called(this, "_ZN7S1403C34v116Ev");}
void  S1403C3 ::v117(){vfunc_called(this, "_ZN7S1403C34v117Ev");}
void  S1403C3 ::v118(){vfunc_called(this, "_ZN7S1403C34v118Ev");}
void  S1403C3 ::v119(){vfunc_called(this, "_ZN7S1403C34v119Ev");}
void  S1403C3 ::v120(){vfunc_called(this, "_ZN7S1403C34v120Ev");}
void  S1403C3 ::v121(){vfunc_called(this, "_ZN7S1403C34v121Ev");}
void  S1403C3 ::v122(){vfunc_called(this, "_ZN7S1403C34v122Ev");}
void  S1403C3 ::v123(){vfunc_called(this, "_ZN7S1403C34v123Ev");}
void  S1403C3 ::v124(){vfunc_called(this, "_ZN7S1403C34v124Ev");}
void  S1403C3 ::v125(){vfunc_called(this, "_ZN7S1403C34v125Ev");}
void  S1403C3 ::v126(){vfunc_called(this, "_ZN7S1403C34v126Ev");}
void  S1403C3 ::v127(){vfunc_called(this, "_ZN7S1403C34v127Ev");}
void  S1403C3 ::v128(){vfunc_called(this, "_ZN7S1403C34v128Ev");}
void  S1403C3 ::v129(){vfunc_called(this, "_ZN7S1403C34v129Ev");}
void  S1403C3 ::v130(){vfunc_called(this, "_ZN7S1403C34v130Ev");}
void  S1403C3 ::v131(){vfunc_called(this, "_ZN7S1403C34v131Ev");}
void  S1403C3 ::v132(){vfunc_called(this, "_ZN7S1403C34v132Ev");}
void  S1403C3 ::v133(){vfunc_called(this, "_ZN7S1403C34v133Ev");}
void  S1403C3 ::v134(){vfunc_called(this, "_ZN7S1403C34v134Ev");}
void  S1403C3 ::v135(){vfunc_called(this, "_ZN7S1403C34v135Ev");}
void  S1403C3 ::v136(){vfunc_called(this, "_ZN7S1403C34v136Ev");}
void  S1403C3 ::v137(){vfunc_called(this, "_ZN7S1403C34v137Ev");}
void  S1403C3 ::v138(){vfunc_called(this, "_ZN7S1403C34v138Ev");}
void  S1403C3 ::v139(){vfunc_called(this, "_ZN7S1403C34v139Ev");}
void  S1403C3 ::v140(){vfunc_called(this, "_ZN7S1403C34v140Ev");}
void  S1403C3 ::v141(){vfunc_called(this, "_ZN7S1403C34v141Ev");}
void  S1403C3 ::v142(){vfunc_called(this, "_ZN7S1403C34v142Ev");}
void  S1403C3 ::v143(){vfunc_called(this, "_ZN7S1403C34v143Ev");}
void  S1403C3 ::v144(){vfunc_called(this, "_ZN7S1403C34v144Ev");}
void  S1403C3 ::v145(){vfunc_called(this, "_ZN7S1403C34v145Ev");}
void  S1403C3 ::v146(){vfunc_called(this, "_ZN7S1403C34v146Ev");}
void  S1403C3 ::v147(){vfunc_called(this, "_ZN7S1403C34v147Ev");}
void  S1403C3 ::v148(){vfunc_called(this, "_ZN7S1403C34v148Ev");}
void  S1403C3 ::v149(){vfunc_called(this, "_ZN7S1403C34v149Ev");}
void  S1403C3 ::v150(){vfunc_called(this, "_ZN7S1403C34v150Ev");}
void  S1403C3 ::v151(){vfunc_called(this, "_ZN7S1403C34v151Ev");}
void  S1403C3 ::v152(){vfunc_called(this, "_ZN7S1403C34v152Ev");}
void  S1403C3 ::v153(){vfunc_called(this, "_ZN7S1403C34v153Ev");}
void  S1403C3 ::v154(){vfunc_called(this, "_ZN7S1403C34v154Ev");}
void  S1403C3 ::v155(){vfunc_called(this, "_ZN7S1403C34v155Ev");}
void  S1403C3 ::v156(){vfunc_called(this, "_ZN7S1403C34v156Ev");}
void  S1403C3 ::v157(){vfunc_called(this, "_ZN7S1403C34v157Ev");}
void  S1403C3 ::v158(){vfunc_called(this, "_ZN7S1403C34v158Ev");}
void  S1403C3 ::v159(){vfunc_called(this, "_ZN7S1403C34v159Ev");}
void  S1403C3 ::v160(){vfunc_called(this, "_ZN7S1403C34v160Ev");}
void  S1403C3 ::v161(){vfunc_called(this, "_ZN7S1403C34v161Ev");}
void  S1403C3 ::v162(){vfunc_called(this, "_ZN7S1403C34v162Ev");}
void  S1403C3 ::v163(){vfunc_called(this, "_ZN7S1403C34v163Ev");}
void  S1403C3 ::v164(){vfunc_called(this, "_ZN7S1403C34v164Ev");}
void  S1403C3 ::v165(){vfunc_called(this, "_ZN7S1403C34v165Ev");}
void  S1403C3 ::v166(){vfunc_called(this, "_ZN7S1403C34v166Ev");}
void  S1403C3 ::v167(){vfunc_called(this, "_ZN7S1403C34v167Ev");}
void  S1403C3 ::v168(){vfunc_called(this, "_ZN7S1403C34v168Ev");}
void  S1403C3 ::v169(){vfunc_called(this, "_ZN7S1403C34v169Ev");}
void  S1403C3 ::v170(){vfunc_called(this, "_ZN7S1403C34v170Ev");}
void  S1403C3 ::v171(){vfunc_called(this, "_ZN7S1403C34v171Ev");}
void  S1403C3 ::v172(){vfunc_called(this, "_ZN7S1403C34v172Ev");}
void  S1403C3 ::v173(){vfunc_called(this, "_ZN7S1403C34v173Ev");}
void  S1403C3 ::v174(){vfunc_called(this, "_ZN7S1403C34v174Ev");}
void  S1403C3 ::v175(){vfunc_called(this, "_ZN7S1403C34v175Ev");}
void  S1403C3 ::v176(){vfunc_called(this, "_ZN7S1403C34v176Ev");}
void  S1403C3 ::v177(){vfunc_called(this, "_ZN7S1403C34v177Ev");}
void  S1403C3 ::v178(){vfunc_called(this, "_ZN7S1403C34v178Ev");}
void  S1403C3 ::v179(){vfunc_called(this, "_ZN7S1403C34v179Ev");}
void  S1403C3 ::v180(){vfunc_called(this, "_ZN7S1403C34v180Ev");}
void  S1403C3 ::v181(){vfunc_called(this, "_ZN7S1403C34v181Ev");}
void  S1403C3 ::v182(){vfunc_called(this, "_ZN7S1403C34v182Ev");}
void  S1403C3 ::v183(){vfunc_called(this, "_ZN7S1403C34v183Ev");}
void  S1403C3 ::v184(){vfunc_called(this, "_ZN7S1403C34v184Ev");}
void  S1403C3 ::v185(){vfunc_called(this, "_ZN7S1403C34v185Ev");}
void  S1403C3 ::v186(){vfunc_called(this, "_ZN7S1403C34v186Ev");}
void  S1403C3 ::v187(){vfunc_called(this, "_ZN7S1403C34v187Ev");}
void  S1403C3 ::v188(){vfunc_called(this, "_ZN7S1403C34v188Ev");}
void  S1403C3 ::v189(){vfunc_called(this, "_ZN7S1403C34v189Ev");}
void  S1403C3 ::v190(){vfunc_called(this, "_ZN7S1403C34v190Ev");}
void  S1403C3 ::v191(){vfunc_called(this, "_ZN7S1403C34v191Ev");}
void  S1403C3 ::v192(){vfunc_called(this, "_ZN7S1403C34v192Ev");}
void  S1403C3 ::v193(){vfunc_called(this, "_ZN7S1403C34v193Ev");}
void  S1403C3 ::v194(){vfunc_called(this, "_ZN7S1403C34v194Ev");}
void  S1403C3 ::v195(){vfunc_called(this, "_ZN7S1403C34v195Ev");}
void  S1403C3 ::v196(){vfunc_called(this, "_ZN7S1403C34v196Ev");}
void  S1403C3 ::v197(){vfunc_called(this, "_ZN7S1403C34v197Ev");}
void  S1403C3 ::v198(){vfunc_called(this, "_ZN7S1403C34v198Ev");}
void  S1403C3 ::v199(){vfunc_called(this, "_ZN7S1403C34v199Ev");}
void  S1403C3 ::v200(){vfunc_called(this, "_ZN7S1403C34v200Ev");}
void  S1403C3 ::v201(){vfunc_called(this, "_ZN7S1403C34v201Ev");}
void  S1403C3 ::v202(){vfunc_called(this, "_ZN7S1403C34v202Ev");}
void  S1403C3 ::v203(){vfunc_called(this, "_ZN7S1403C34v203Ev");}
void  S1403C3 ::v204(){vfunc_called(this, "_ZN7S1403C34v204Ev");}
void  S1403C3 ::v205(){vfunc_called(this, "_ZN7S1403C34v205Ev");}
void  S1403C3 ::v206(){vfunc_called(this, "_ZN7S1403C34v206Ev");}
void  S1403C3 ::v207(){vfunc_called(this, "_ZN7S1403C34v207Ev");}
void  S1403C3 ::v208(){vfunc_called(this, "_ZN7S1403C34v208Ev");}
void  S1403C3 ::v209(){vfunc_called(this, "_ZN7S1403C34v209Ev");}
void  S1403C3 ::v210(){vfunc_called(this, "_ZN7S1403C34v210Ev");}
S1403C3 ::S1403C3(){ note_ctor("S1403C3", this);} // tgen

static void Test_S1403C3()
{
  extern Class_Descriptor cd_S1403C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(72,110)];
    init_test(&cd_S1403C3, buf);
    S1403C3 *dp, &lv = *(dp=new (buf) S1403C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(568,436), "sizeof(S1403C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C3)");
    check_base_class_offset(lv, (S1403C4*), 0, "S1403C3");
    check_field_offset(lv, s1403c3f0, ABISELECT(96,60), "S1403C3.s1403c3f0");
    check_field_offset(lv, s1403c3f1, ABISELECT(112,72), "S1403C3.s1403c3f1");
    check_field_offset(lv, s1403c3f2, ABISELECT(128,84), "S1403C3.s1403c3f2");
    check_field_offset(lv, s1403c3f3, ABISELECT(132,88), "S1403C3.s1403c3f3");
    check_field_offset(lv, s1403c3f4, ABISELECT(136,92), "S1403C3.s1403c3f4");
    check_field_offset(lv, s1403c3f5, ABISELECT(144,96), "S1403C3.s1403c3f5");
    check_field_offset(lv, s1403c3f6, ABISELECT(160,104), "S1403C3.s1403c3f6");
    set_bf_and_test(lv, s1403c3f7, ABISELECT(176,116), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f8, ABISELECT(176,116), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f9, ABISELECT(176,116), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f10, ABISELECT(176,116), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f11, ABISELECT(176,116), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f12, ABISELECT(176,116), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f13, ABISELECT(176,116), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f14, ABISELECT(176,116), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f15, ABISELECT(177,117), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f16, ABISELECT(177,117), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f17, ABISELECT(177,117), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f18, ABISELECT(177,117), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f19, ABISELECT(177,117), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f20, ABISELECT(177,117), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f21, ABISELECT(177,117), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f22, ABISELECT(177,117), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f23, ABISELECT(178,118), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f24, ABISELECT(178,118), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f25, ABISELECT(178,118), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f26, ABISELECT(178,118), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f27, ABISELECT(178,118), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f28, ABISELECT(178,118), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f29, ABISELECT(178,118), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f30, ABISELECT(178,118), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f31, ABISELECT(179,119), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f32, ABISELECT(179,119), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f33, ABISELECT(179,119), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f34, ABISELECT(179,119), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f35, ABISELECT(179,119), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f36, ABISELECT(179,119), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f37, ABISELECT(179,119), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f38, ABISELECT(179,119), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f39, ABISELECT(180,120), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f40, ABISELECT(180,120), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f41, ABISELECT(180,120), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f42, ABISELECT(180,120), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f43, ABISELECT(180,120), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f44, ABISELECT(180,120), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f45, ABISELECT(180,120), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f46, ABISELECT(180,120), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f47, ABISELECT(181,121), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f48, ABISELECT(181,121), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f49, ABISELECT(181,121), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f50, ABISELECT(181,121), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f51, ABISELECT(181,121), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f52, ABISELECT(181,121), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f53, ABISELECT(181,121), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f54, ABISELECT(181,121), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f55, ABISELECT(182,122), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f56, ABISELECT(182,122), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f57, ABISELECT(182,122), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f58, ABISELECT(182,122), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f59, ABISELECT(182,122), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f60, ABISELECT(182,122), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f61, ABISELECT(182,122), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f62, ABISELECT(182,122), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f63, ABISELECT(183,123), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f64, ABISELECT(183,123), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f65, ABISELECT(183,123), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f66, ABISELECT(183,123), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f67, ABISELECT(183,123), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f68, ABISELECT(183,123), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f69, ABISELECT(183,123), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f70, ABISELECT(183,123), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f71, ABISELECT(184,124), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f72, ABISELECT(184,124), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f73, ABISELECT(184,124), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f74, ABISELECT(184,124), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f75, ABISELECT(184,124), 4, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f76, ABISELECT(184,124), 5, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f77, ABISELECT(184,124), 6, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f78, ABISELECT(184,124), 7, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f79, ABISELECT(185,125), 0, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f80, ABISELECT(185,125), 1, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f81, ABISELECT(185,125), 2, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f82, ABISELECT(185,125), 3, 1, 1, "S1403C3");
    set_bf_and_test(lv, s1403c3f83, ABISELECT(185,125), 4, 1, 1, "S1403C3");
    check_field_offset(lv, s1403c3f84, ABISELECT(188,128), "S1403C3.s1403c3f84");
    check_field_offset(lv, s1403c3f85, ABISELECT(208,148), "S1403C3.s1403c3f85");
    check_field_offset(lv, s1403c3f86, ABISELECT(224,156), "S1403C3.s1403c3f86");
    check_field_offset(lv, s1403c3f87, ABISELECT(236,168), "S1403C3.s1403c3f87");
    check_field_offset(lv, s1403c3f88, ABISELECT(244,176), "S1403C3.s1403c3f88");
    check_field_offset(lv, s1403c3f89, ABISELECT(252,184), "S1403C3.s1403c3f89");
    check_field_offset(lv, s1403c3f90, ABISELECT(264,192), "S1403C3.s1403c3f90");
    check_field_offset(lv, s1403c3f91, ABISELECT(280,204), "S1403C3.s1403c3f91");
    check_field_offset(lv, s1403c3f92, ABISELECT(296,216), "S1403C3.s1403c3f92");
    check_field_offset(lv, s1403c3f93, ABISELECT(304,220), "S1403C3.s1403c3f93");
    check_field_offset(lv, s1403c3f94, ABISELECT(320,228), "S1403C3.s1403c3f94");
    check_field_offset(lv, s1403c3f95, ABISELECT(332,240), "S1403C3.s1403c3f95");
    check_field_offset(lv, s1403c3f96, ABISELECT(344,252), "S1403C3.s1403c3f96");
    check_field_offset(lv, s1403c3f97, ABISELECT(356,264), "S1403C3.s1403c3f97");
    check_field_offset(lv, s1403c3f98, ABISELECT(368,276), "S1403C3.s1403c3f98");
    check_field_offset(lv, s1403c3f99, ABISELECT(376,280), "S1403C3.s1403c3f99");
    check_field_offset(lv, s1403c3f100, ABISELECT(384,288), "S1403C3.s1403c3f100");
    check_field_offset(lv, s1403c3f101, ABISELECT(400,300), "S1403C3.s1403c3f101");
    check_field_offset(lv, s1403c3f102, ABISELECT(412,312), "S1403C3.s1403c3f102");
    check_field_offset(lv, s1403c3f103, ABISELECT(424,324), "S1403C3.s1403c3f103");
    check_field_offset(lv, s1403c3f104, ABISELECT(428,328), "S1403C3.s1403c3f104");
    check_field_offset(lv, s1403c3f105, ABISELECT(440,340), "S1403C3.s1403c3f105");
    check_field_offset(lv, s1403c3f106, ABISELECT(456,352), "S1403C3.s1403c3f106");
    check_field_offset(lv, s1403c3f107, ABISELECT(464,356), "S1403C3.s1403c3f107");
    check_field_offset(lv, s1403c3f108, ABISELECT(468,360), "S1403C3.s1403c3f108");
    check_field_offset(lv, s1403c3f109, ABISELECT(472,364), "S1403C3.s1403c3f109");
    check_field_offset(lv, s1403c3f110, ABISELECT(484,376), "S1403C3.s1403c3f110");
    check_field_offset(lv, s1403c3f111, ABISELECT(496,388), "S1403C3.s1403c3f111");
    check_field_offset(lv, s1403c3f112, ABISELECT(504,392), "S1403C3.s1403c3f112");
    check_field_offset(lv, s1403c3f113, ABISELECT(512,396), "S1403C3.s1403c3f113");
    check_field_offset(lv, s1403c3f114, ABISELECT(520,400), "S1403C3.s1403c3f114");
    check_field_offset(lv, s1403c3f115, ABISELECT(536,412), "S1403C3.s1403c3f115");
    check_field_offset(lv, s1403c3f116, ABISELECT(552,424), "S1403C3.s1403c3f116");
    test_class_info(&lv, &cd_S1403C3);
    dp->~S1403C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C3(Test_S1403C3, "S1403C3", ABISELECT(568,436));

#else // __cplusplus

extern void _ZN7S1403C3C1Ev();
extern void _ZN7S1403C3D1Ev();
Name_Map name_map_S1403C3[] = {
  NSPAIR(_ZN7S1403C3C1Ev),
  NSPAIR(_ZN7S1403C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1403C4;
extern VTBL_ENTRY _ZTI7S1403C4[];
extern  VTBL_ENTRY _ZTV7S1403C4[];
static Base_Class bases_S1403C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1403C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1403C3[];
extern void _ZN7S1403C3D1Ev();
extern void _ZN7S1403C3D0Ev();
extern void _ZN7S1403C42v4Ev();
extern void _ZN7S1403C42v5Ev();
extern void _ZN7S1403C42v6Ev();
extern void _ZN7S1403C42v7Ev();
extern void _ZN7S1403C42v8Ev();
extern void _ZN7S1403C42v9Ev();
extern void _ZN7S1403C43v10Ev();
extern void _ZN7S1403C43v11Ev();
extern void _ZN7S1403C43v12Ev();
extern void _ZN7S1403C43v13Ev();
extern void _ZN7S1403C43v14Ev();
extern void _ZN7S1403C43v15Ev();
extern void _ZN7S1403C43v16Ev();
extern void _ZN7S1403C43v17Ev();
extern void _ZN7S1403C43v18Ev();
extern void _ZN7S1403C43v19Ev();
extern void _ZN7S1403C43v20Ev();
extern void _ZN7S1403C43v21Ev();
extern void _ZN7S1403C43v22Ev();
extern void _ZN7S1403C43v23Ev();
extern void _ZN7S1403C43v24Ev();
extern void _ZN7S1403C43v25Ev();
extern void _ZN7S1403C43v26Ev();
extern void _ZN7S1403C43v27Ev();
extern void _ZN7S1403C43v28Ev();
extern void _ZN7S1403C43v29Ev();
extern void _ZN7S1403C43v30Ev();
extern void _ZN7S1403C43v31Ev();
extern void _ZN7S1403C43v32Ev();
extern void _ZN7S1403C43v33Ev();
extern void _ZN7S1403C43v34Ev();
extern void _ZN7S1403C43v35Ev();
extern void _ZN7S1403C43v36Ev();
extern void _ZN7S1403C43v37Ev();
extern void _ZN7S1403C43v38Ev();
extern void _ZN7S1403C43v39Ev();
extern void _ZN7S1403C43v40Ev();
extern void _ZN7S1403C43v41Ev();
extern void _ZN7S1403C43v42Ev();
extern void _ZN7S1403C43v43Ev();
extern void _ZN7S1403C43v44Ev();
extern void _ZN7S1403C43v45Ev();
extern void _ZN7S1403C43v46Ev();
extern void _ZN7S1403C43v47Ev();
extern void _ZN7S1403C43v48Ev();
extern void _ZN7S1403C43v49Ev();
extern void _ZN7S1403C43v50Ev();
extern void _ZN7S1403C43v51Ev();
extern void _ZN7S1403C43v52Ev();
extern void _ZN7S1403C43v53Ev();
extern void _ZN7S1403C43v54Ev();
extern void _ZN7S1403C43v55Ev();
extern void _ZN7S1403C43v56Ev();
extern void _ZN7S1403C43v57Ev();
extern void _ZN7S1403C43v58Ev();
extern void _ZN7S1403C43v59Ev();
extern void _ZN7S1403C43v60Ev();
extern void _ZN7S1403C43v61Ev();
extern void _ZN7S1403C43v62Ev();
extern void _ZN7S1403C43v63Ev();
extern void _ZN7S1403C43v64Ev();
extern void _ZN7S1403C43v65Ev();
extern void _ZN7S1403C43v66Ev();
extern void _ZN7S1403C43v67Ev();
extern void _ZN7S1403C33v68Ev();
extern void _ZN7S1403C33v69Ev();
extern void _ZN7S1403C33v70Ev();
extern void _ZN7S1403C33v71Ev();
extern void _ZN7S1403C33v72Ev();
extern void _ZN7S1403C33v73Ev();
extern void _ZN7S1403C33v74Ev();
extern void _ZN7S1403C33v75Ev();
extern void _ZN7S1403C33v76Ev();
extern void _ZN7S1403C33v77Ev();
extern void _ZN7S1403C33v78Ev();
extern void _ZN7S1403C33v79Ev();
extern void _ZN7S1403C33v80Ev();
extern void _ZN7S1403C33v81Ev();
extern void _ZN7S1403C33v82Ev();
extern void _ZN7S1403C33v83Ev();
extern void _ZN7S1403C33v84Ev();
extern void _ZN7S1403C33v85Ev();
extern void _ZN7S1403C33v86Ev();
extern void _ZN7S1403C33v87Ev();
extern void _ZN7S1403C33v88Ev();
extern void _ZN7S1403C33v89Ev();
extern void _ZN7S1403C33v90Ev();
extern void _ZN7S1403C33v91Ev();
extern void _ZN7S1403C33v92Ev();
extern void _ZN7S1403C33v93Ev();
extern void _ZN7S1403C33v94Ev();
extern void _ZN7S1403C33v95Ev();
extern void _ZN7S1403C33v96Ev();
extern void _ZN7S1403C33v97Ev();
extern void _ZN7S1403C33v98Ev();
extern void _ZN7S1403C33v99Ev();
extern void _ZN7S1403C34v100Ev();
extern void _ZN7S1403C34v101Ev();
extern void _ZN7S1403C34v102Ev();
extern void _ZN7S1403C34v103Ev();
extern void _ZN7S1403C34v104Ev();
extern void _ZN7S1403C34v105Ev();
extern void _ZN7S1403C34v106Ev();
extern void _ZN7S1403C34v107Ev();
extern void _ZN7S1403C34v108Ev();
extern void _ZN7S1403C34v109Ev();
extern void _ZN7S1403C34v110Ev();
extern void _ZN7S1403C34v111Ev();
extern void _ZN7S1403C34v112Ev();
extern void _ZN7S1403C34v113Ev();
extern void _ZN7S1403C34v114Ev();
extern void _ZN7S1403C34v115Ev();
extern void _ZN7S1403C34v116Ev();
extern void _ZN7S1403C34v117Ev();
extern void _ZN7S1403C34v118Ev();
extern void _ZN7S1403C34v119Ev();
extern void _ZN7S1403C34v120Ev();
extern void _ZN7S1403C34v121Ev();
extern void _ZN7S1403C34v122Ev();
extern void _ZN7S1403C34v123Ev();
extern void _ZN7S1403C34v124Ev();
extern void _ZN7S1403C34v125Ev();
extern void _ZN7S1403C34v126Ev();
extern void _ZN7S1403C34v127Ev();
extern void _ZN7S1403C34v128Ev();
extern void _ZN7S1403C34v129Ev();
extern void _ZN7S1403C34v130Ev();
extern void _ZN7S1403C34v131Ev();
extern void _ZN7S1403C34v132Ev();
extern void _ZN7S1403C34v133Ev();
extern void _ZN7S1403C34v134Ev();
extern void _ZN7S1403C34v135Ev();
extern void _ZN7S1403C34v136Ev();
extern void _ZN7S1403C34v137Ev();
extern void _ZN7S1403C34v138Ev();
extern void _ZN7S1403C34v139Ev();
extern void _ZN7S1403C34v140Ev();
extern void _ZN7S1403C34v141Ev();
extern void _ZN7S1403C34v142Ev();
extern void _ZN7S1403C34v143Ev();
extern void _ZN7S1403C34v144Ev();
extern void _ZN7S1403C34v145Ev();
extern void _ZN7S1403C34v146Ev();
extern void _ZN7S1403C34v147Ev();
extern void _ZN7S1403C34v148Ev();
extern void _ZN7S1403C34v149Ev();
extern void _ZN7S1403C34v150Ev();
extern void _ZN7S1403C34v151Ev();
extern void _ZN7S1403C34v152Ev();
extern void _ZN7S1403C34v153Ev();
extern void _ZN7S1403C34v154Ev();
extern void _ZN7S1403C34v155Ev();
extern void _ZN7S1403C34v156Ev();
extern void _ZN7S1403C34v157Ev();
extern void _ZN7S1403C34v158Ev();
extern void _ZN7S1403C34v159Ev();
extern void _ZN7S1403C34v160Ev();
extern void _ZN7S1403C34v161Ev();
extern void _ZN7S1403C34v162Ev();
extern void _ZN7S1403C34v163Ev();
extern void _ZN7S1403C34v164Ev();
extern void _ZN7S1403C34v165Ev();
extern void _ZN7S1403C34v166Ev();
extern void _ZN7S1403C34v167Ev();
extern void _ZN7S1403C34v168Ev();
extern void _ZN7S1403C34v169Ev();
extern void _ZN7S1403C34v170Ev();
extern void _ZN7S1403C34v171Ev();
extern void _ZN7S1403C34v172Ev();
extern void _ZN7S1403C34v173Ev();
extern void _ZN7S1403C34v174Ev();
extern void _ZN7S1403C34v175Ev();
extern void _ZN7S1403C34v176Ev();
extern void _ZN7S1403C34v177Ev();
extern void _ZN7S1403C34v178Ev();
extern void _ZN7S1403C34v179Ev();
extern void _ZN7S1403C34v180Ev();
extern void _ZN7S1403C34v181Ev();
extern void _ZN7S1403C34v182Ev();
extern void _ZN7S1403C34v183Ev();
extern void _ZN7S1403C34v184Ev();
extern void _ZN7S1403C34v185Ev();
extern void _ZN7S1403C34v186Ev();
extern void _ZN7S1403C34v187Ev();
extern void _ZN7S1403C34v188Ev();
extern void _ZN7S1403C34v189Ev();
extern void _ZN7S1403C34v190Ev();
extern void _ZN7S1403C34v191Ev();
extern void _ZN7S1403C34v192Ev();
extern void _ZN7S1403C34v193Ev();
extern void _ZN7S1403C34v194Ev();
extern void _ZN7S1403C34v195Ev();
extern void _ZN7S1403C34v196Ev();
extern void _ZN7S1403C34v197Ev();
extern void _ZN7S1403C34v198Ev();
extern void _ZN7S1403C34v199Ev();
extern void _ZN7S1403C34v200Ev();
extern void _ZN7S1403C34v201Ev();
extern void _ZN7S1403C34v202Ev();
extern void _ZN7S1403C34v203Ev();
extern void _ZN7S1403C34v204Ev();
extern void _ZN7S1403C34v205Ev();
extern void _ZN7S1403C34v206Ev();
extern void _ZN7S1403C34v207Ev();
extern void _ZN7S1403C34v208Ev();
extern void _ZN7S1403C34v209Ev();
extern void _ZN7S1403C34v210Ev();
static  VTBL_ENTRY vtc_S1403C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1403C3[0]),
  (VTBL_ENTRY)&_ZN7S1403C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1403C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v133Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v134Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v135Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v136Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v137Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v138Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v139Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v140Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v141Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v142Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v143Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v144Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v145Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v146Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v147Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v148Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v149Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v150Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v151Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v152Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v153Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v154Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v155Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v156Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v157Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v158Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v159Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v160Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v161Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v162Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v163Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v164Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v165Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v166Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v167Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v168Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v169Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v170Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v171Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v172Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v173Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v174Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v175Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v176Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v177Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v178Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v179Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v180Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v181Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v182Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v183Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v184Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v185Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v186Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v187Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v188Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v189Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v190Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v191Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v192Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v193Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v194Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v195Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v196Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v197Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v198Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v199Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v200Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v201Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v202Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v203Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v204Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v205Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v206Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v207Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v208Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v209Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v210Ev,
};
extern VTBL_ENTRY _ZTI7S1403C3[];
extern  VTBL_ENTRY _ZTV7S1403C3[];
Class_Descriptor cd_S1403C3 = {  "S1403C3", // class name
  bases_S1403C3, 1,
  &(vtc_S1403C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI7S1403C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1403C3),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  S1403C26  : S1538C8_nt {
};
//SIG(-1 S1403C26) C1{ BC2{ m Fp Fi[2]}}



static void Test_S1403C26()
{
  extern Class_Descriptor cd_S1403C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1403C26, buf);
    S1403C26 &lv = *(new (buf) S1403C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1403C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C26)");
    check_base_class_offset(lv, (S1538C8_nt*), 0, "S1403C26");
    test_class_info(&lv, &cd_S1403C26);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C26(Test_S1403C26, "S1403C26", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
static Base_Class bases_S1403C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1403C26 = {  "S1403C26", // class name
  bases_S1403C26, 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  S1403C25  : S1403C26 {
};
//SIG(-1 S1403C25) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1403C25()
{
  extern Class_Descriptor cd_S1403C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1403C25, buf);
    S1403C25 &lv = *(new (buf) S1403C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1403C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C25)");
    check_base_class_offset(lv, (S1538C8_nt*)(S1403C26*), 0, "S1403C25");
    check_base_class_offset(lv, (S1403C26*), 0, "S1403C25");
    test_class_info(&lv, &cd_S1403C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C25(Test_S1403C25, "S1403C25", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1538C8_nt;
extern Class_Descriptor cd_S1403C26;
static Base_Class bases_S1403C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1403C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1403C25 = {  "S1403C25", // class name
  bases_S1403C25, 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  S1403C27_nt  {
  int s1403c27f0[4];
  void  mf1403c27(); // _ZN11S1403C27_nt9mf1403c27Ev
};
//SIG(-1 S1403C27_nt) C1{ m Fi[4]}


void  S1403C27_nt ::mf1403c27(){}

//skip512 S1403C27_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1403C2  : S1403C3 {
  void *s1403c2f0;
  int s1403c2f1;
  unsigned int s1403c2f2:1;
  unsigned int s1403c2f3:1;
  unsigned int s1403c2f4:1;
  unsigned int s1403c2f5:1;
  void *s1403c2f6[3];
  ::S1538C14_nt s1403c2f7;
  int s1403c2f8[2];
  void *s1403c2f9;
  ::S1403C20_nt s1403c2f10;
  ::S1538C14_nt s1403c2f11;
  int s1403c2f12;
  ::S1538C24_nt s1403c2f13;
  void *s1403c2f14;
  ::S1538C5_nt s1403c2f15;
  ::S1538C14_nt s1403c2f16;
  ::S1403C15_nt s1403c2f17;
  ::S1538C14_nt s1403c2f18;
  ::S1403C15_nt s1403c2f19;
  void *s1403c2f20[5];
  int s1403c2f21[2];
  void *s1403c2f22;
  ::S1403C25 s1403c2f23;
  void *s1403c2f24[2];
  int s1403c2f25[6];
  ::S1403C27_nt s1403c2f26;
  ::S1403C27_nt s1403c2f27;
  ::S1403C27_nt s1403c2f28;
  void *s1403c2f29;
  virtual  ~S1403C2(); // _ZN7S1403C2D1Ev
  virtual void  v211(); // _ZN7S1403C24v211Ev
  virtual void  v212(); // _ZN7S1403C24v212Ev
  virtual void  v213(); // _ZN7S1403C24v213Ev
  virtual void  v214(); // _ZN7S1403C24v214Ev
  virtual void  v215(); // _ZN7S1403C24v215Ev
  virtual void  v216(); // _ZN7S1403C24v216Ev
  virtual void  v217(); // _ZN7S1403C24v217Ev
  virtual void  v218(); // _ZN7S1403C24v218Ev
  virtual void  v219(); // _ZN7S1403C24v219Ev
  S1403C2(); // tgen
};
//SIG(-1 S1403C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75 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 v215 v216 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC9{ BC10{ BC7}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi: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 FC11{ BC12{ BC7}} FC11 Fi Fp[2] FC13{ m Fi[3]} FC14{ m Fi[3]} FC13 FC13 Fp FC4 FC11 FC13 FC14 Fi FC13 FC13 Fp Fi Fc FC14 FC14 Fp Fi Fp FC15{ BC16{ BC7}} FC17{ BC18{ BC7}} FC19{ BC20{ BC7}}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp Fi Fi:1 Fi:1 Fi:1 Fi:1 Fp[3] FC13 Fi[2] Fp FC19 FC13 Fi FC21{ m Fi[4]} Fp FC4 FC13 FC14 FC13 FC14 Fp[5] Fi[2] Fp FC22{ BC23{ BC7}} Fp[2] Fi[6] FC24{ m Fi[4]} FC24 FC24 Fp}


 S1403C2 ::~S1403C2(){ note_dtor("S1403C2", this);}
void  S1403C2 ::v211(){vfunc_called(this, "_ZN7S1403C24v211Ev");}
void  S1403C2 ::v212(){vfunc_called(this, "_ZN7S1403C24v212Ev");}
void  S1403C2 ::v213(){vfunc_called(this, "_ZN7S1403C24v213Ev");}
void  S1403C2 ::v214(){vfunc_called(this, "_ZN7S1403C24v214Ev");}
void  S1403C2 ::v215(){vfunc_called(this, "_ZN7S1403C24v215Ev");}
void  S1403C2 ::v216(){vfunc_called(this, "_ZN7S1403C24v216Ev");}
void  S1403C2 ::v217(){vfunc_called(this, "_ZN7S1403C24v217Ev");}
void  S1403C2 ::v218(){vfunc_called(this, "_ZN7S1403C24v218Ev");}
void  S1403C2 ::v219(){vfunc_called(this, "_ZN7S1403C24v219Ev");}
S1403C2 ::S1403C2(){ note_ctor("S1403C2", this);} // tgen

static void Test_S1403C2()
{
  extern Class_Descriptor cd_S1403C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,180)];
    init_test(&cd_S1403C2, buf);
    S1403C2 *dp, &lv = *(dp=new (buf) S1403C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,716), "sizeof(S1403C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C2)");
    check_base_class_offset(lv, (S1403C4*)(S1403C3*), 0, "S1403C2");
    check_base_class_offset(lv, (S1403C3*), 0, "S1403C2");
    check_field_offset(lv, s1403c2f0, ABISELECT(568,436), "S1403C2.s1403c2f0");
    check_field_offset(lv, s1403c2f1, ABISELECT(576,440), "S1403C2.s1403c2f1");
    set_bf_and_test(lv, s1403c2f2, ABISELECT(580,444), 0, 1, 1, "S1403C2");
    set_bf_and_test(lv, s1403c2f3, ABISELECT(580,444), 1, 1, 1, "S1403C2");
    set_bf_and_test(lv, s1403c2f4, ABISELECT(580,444), 2, 1, 1, "S1403C2");
    set_bf_and_test(lv, s1403c2f5, ABISELECT(580,444), 3, 1, 1, "S1403C2");
    check_field_offset(lv, s1403c2f6, ABISELECT(584,448), "S1403C2.s1403c2f6");
    check_field_offset(lv, s1403c2f7, ABISELECT(608,460), "S1403C2.s1403c2f7");
    check_field_offset(lv, s1403c2f8, ABISELECT(620,472), "S1403C2.s1403c2f8");
    check_field_offset(lv, s1403c2f9, ABISELECT(632,480), "S1403C2.s1403c2f9");
    check_field_offset(lv, s1403c2f10, ABISELECT(640,484), "S1403C2.s1403c2f10");
    check_field_offset(lv, s1403c2f11, ABISELECT(656,496), "S1403C2.s1403c2f11");
    check_field_offset(lv, s1403c2f12, ABISELECT(668,508), "S1403C2.s1403c2f12");
    check_field_offset(lv, s1403c2f13, ABISELECT(672,512), "S1403C2.s1403c2f13");
    check_field_offset(lv, s1403c2f14, ABISELECT(688,528), "S1403C2.s1403c2f14");
    check_field_offset(lv, s1403c2f15, ABISELECT(696,532), "S1403C2.s1403c2f15");
    check_field_offset(lv, s1403c2f16, ABISELECT(704,540), "S1403C2.s1403c2f16");
    check_field_offset(lv, s1403c2f17, ABISELECT(716,552), "S1403C2.s1403c2f17");
    check_field_offset(lv, s1403c2f18, ABISELECT(728,564), "S1403C2.s1403c2f18");
    check_field_offset(lv, s1403c2f19, ABISELECT(740,576), "S1403C2.s1403c2f19");
    check_field_offset(lv, s1403c2f20, ABISELECT(752,588), "S1403C2.s1403c2f20");
    check_field_offset(lv, s1403c2f21, ABISELECT(792,608), "S1403C2.s1403c2f21");
    check_field_offset(lv, s1403c2f22, ABISELECT(800,616), "S1403C2.s1403c2f22");
    check_field_offset(lv, s1403c2f23, ABISELECT(808,620), "S1403C2.s1403c2f23");
    check_field_offset(lv, s1403c2f24, ABISELECT(824,632), "S1403C2.s1403c2f24");
    check_field_offset(lv, s1403c2f25, ABISELECT(840,640), "S1403C2.s1403c2f25");
    check_field_offset(lv, s1403c2f26, ABISELECT(864,664), "S1403C2.s1403c2f26");
    check_field_offset(lv, s1403c2f27, ABISELECT(880,680), "S1403C2.s1403c2f27");
    check_field_offset(lv, s1403c2f28, ABISELECT(896,696), "S1403C2.s1403c2f28");
    check_field_offset(lv, s1403c2f29, ABISELECT(912,712), "S1403C2.s1403c2f29");
    test_class_info(&lv, &cd_S1403C2);
    dp->~S1403C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C2(Test_S1403C2, "S1403C2", ABISELECT(920,716));

#else // __cplusplus

extern void _ZN7S1403C2C1Ev();
extern void _ZN7S1403C2D1Ev();
Name_Map name_map_S1403C2[] = {
  NSPAIR(_ZN7S1403C2C1Ev),
  NSPAIR(_ZN7S1403C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1403C4;
extern VTBL_ENTRY _ZTI7S1403C4[];
extern  VTBL_ENTRY _ZTV7S1403C4[];
extern Class_Descriptor cd_S1403C3;
extern VTBL_ENTRY _ZTI7S1403C3[];
extern  VTBL_ENTRY _ZTV7S1403C3[];
static Base_Class bases_S1403C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1403C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S1403C2[];
extern void _ZN7S1403C2D1Ev();
extern void _ZN7S1403C2D0Ev();
extern void _ZN7S1403C42v4Ev();
extern void _ZN7S1403C42v5Ev();
extern void _ZN7S1403C42v6Ev();
extern void _ZN7S1403C42v7Ev();
extern void _ZN7S1403C42v8Ev();
extern void _ZN7S1403C42v9Ev();
extern void _ZN7S1403C43v10Ev();
extern void _ZN7S1403C43v11Ev();
extern void _ZN7S1403C43v12Ev();
extern void _ZN7S1403C43v13Ev();
extern void _ZN7S1403C43v14Ev();
extern void _ZN7S1403C43v15Ev();
extern void _ZN7S1403C43v16Ev();
extern void _ZN7S1403C43v17Ev();
extern void _ZN7S1403C43v18Ev();
extern void _ZN7S1403C43v19Ev();
extern void _ZN7S1403C43v20Ev();
extern void _ZN7S1403C43v21Ev();
extern void _ZN7S1403C43v22Ev();
extern void _ZN7S1403C43v23Ev();
extern void _ZN7S1403C43v24Ev();
extern void _ZN7S1403C43v25Ev();
extern void _ZN7S1403C43v26Ev();
extern void _ZN7S1403C43v27Ev();
extern void _ZN7S1403C43v28Ev();
extern void _ZN7S1403C43v29Ev();
extern void _ZN7S1403C43v30Ev();
extern void _ZN7S1403C43v31Ev();
extern void _ZN7S1403C43v32Ev();
extern void _ZN7S1403C43v33Ev();
extern void _ZN7S1403C43v34Ev();
extern void _ZN7S1403C43v35Ev();
extern void _ZN7S1403C43v36Ev();
extern void _ZN7S1403C43v37Ev();
extern void _ZN7S1403C43v38Ev();
extern void _ZN7S1403C43v39Ev();
extern void _ZN7S1403C43v40Ev();
extern void _ZN7S1403C43v41Ev();
extern void _ZN7S1403C43v42Ev();
extern void _ZN7S1403C43v43Ev();
extern void _ZN7S1403C43v44Ev();
extern void _ZN7S1403C43v45Ev();
extern void _ZN7S1403C43v46Ev();
extern void _ZN7S1403C43v47Ev();
extern void _ZN7S1403C43v48Ev();
extern void _ZN7S1403C43v49Ev();
extern void _ZN7S1403C43v50Ev();
extern void _ZN7S1403C43v51Ev();
extern void _ZN7S1403C43v52Ev();
extern void _ZN7S1403C43v53Ev();
extern void _ZN7S1403C43v54Ev();
extern void _ZN7S1403C43v55Ev();
extern void _ZN7S1403C43v56Ev();
extern void _ZN7S1403C43v57Ev();
extern void _ZN7S1403C43v58Ev();
extern void _ZN7S1403C43v59Ev();
extern void _ZN7S1403C43v60Ev();
extern void _ZN7S1403C43v61Ev();
extern void _ZN7S1403C43v62Ev();
extern void _ZN7S1403C43v63Ev();
extern void _ZN7S1403C43v64Ev();
extern void _ZN7S1403C43v65Ev();
extern void _ZN7S1403C43v66Ev();
extern void _ZN7S1403C43v67Ev();
extern void _ZN7S1403C33v68Ev();
extern void _ZN7S1403C33v69Ev();
extern void _ZN7S1403C33v70Ev();
extern void _ZN7S1403C33v71Ev();
extern void _ZN7S1403C33v72Ev();
extern void _ZN7S1403C33v73Ev();
extern void _ZN7S1403C33v74Ev();
extern void _ZN7S1403C33v75Ev();
extern void _ZN7S1403C33v76Ev();
extern void _ZN7S1403C33v77Ev();
extern void _ZN7S1403C33v78Ev();
extern void _ZN7S1403C33v79Ev();
extern void _ZN7S1403C33v80Ev();
extern void _ZN7S1403C33v81Ev();
extern void _ZN7S1403C33v82Ev();
extern void _ZN7S1403C33v83Ev();
extern void _ZN7S1403C33v84Ev();
extern void _ZN7S1403C33v85Ev();
extern void _ZN7S1403C33v86Ev();
extern void _ZN7S1403C33v87Ev();
extern void _ZN7S1403C33v88Ev();
extern void _ZN7S1403C33v89Ev();
extern void _ZN7S1403C33v90Ev();
extern void _ZN7S1403C33v91Ev();
extern void _ZN7S1403C33v92Ev();
extern void _ZN7S1403C33v93Ev();
extern void _ZN7S1403C33v94Ev();
extern void _ZN7S1403C33v95Ev();
extern void _ZN7S1403C33v96Ev();
extern void _ZN7S1403C33v97Ev();
extern void _ZN7S1403C33v98Ev();
extern void _ZN7S1403C33v99Ev();
extern void _ZN7S1403C34v100Ev();
extern void _ZN7S1403C34v101Ev();
extern void _ZN7S1403C34v102Ev();
extern void _ZN7S1403C34v103Ev();
extern void _ZN7S1403C34v104Ev();
extern void _ZN7S1403C34v105Ev();
extern void _ZN7S1403C34v106Ev();
extern void _ZN7S1403C34v107Ev();
extern void _ZN7S1403C34v108Ev();
extern void _ZN7S1403C34v109Ev();
extern void _ZN7S1403C34v110Ev();
extern void _ZN7S1403C34v111Ev();
extern void _ZN7S1403C34v112Ev();
extern void _ZN7S1403C34v113Ev();
extern void _ZN7S1403C34v114Ev();
extern void _ZN7S1403C34v115Ev();
extern void _ZN7S1403C34v116Ev();
extern void _ZN7S1403C34v117Ev();
extern void _ZN7S1403C34v118Ev();
extern void _ZN7S1403C34v119Ev();
extern void _ZN7S1403C34v120Ev();
extern void _ZN7S1403C34v121Ev();
extern void _ZN7S1403C34v122Ev();
extern void _ZN7S1403C34v123Ev();
extern void _ZN7S1403C34v124Ev();
extern void _ZN7S1403C34v125Ev();
extern void _ZN7S1403C34v126Ev();
extern void _ZN7S1403C34v127Ev();
extern void _ZN7S1403C34v128Ev();
extern void _ZN7S1403C34v129Ev();
extern void _ZN7S1403C34v130Ev();
extern void _ZN7S1403C34v131Ev();
extern void _ZN7S1403C34v132Ev();
extern void _ZN7S1403C34v133Ev();
extern void _ZN7S1403C34v134Ev();
extern void _ZN7S1403C34v135Ev();
extern void _ZN7S1403C34v136Ev();
extern void _ZN7S1403C34v137Ev();
extern void _ZN7S1403C34v138Ev();
extern void _ZN7S1403C34v139Ev();
extern void _ZN7S1403C34v140Ev();
extern void _ZN7S1403C34v141Ev();
extern void _ZN7S1403C34v142Ev();
extern void _ZN7S1403C34v143Ev();
extern void _ZN7S1403C34v144Ev();
extern void _ZN7S1403C34v145Ev();
extern void _ZN7S1403C34v146Ev();
extern void _ZN7S1403C34v147Ev();
extern void _ZN7S1403C34v148Ev();
extern void _ZN7S1403C34v149Ev();
extern void _ZN7S1403C34v150Ev();
extern void _ZN7S1403C34v151Ev();
extern void _ZN7S1403C34v152Ev();
extern void _ZN7S1403C34v153Ev();
extern void _ZN7S1403C34v154Ev();
extern void _ZN7S1403C34v155Ev();
extern void _ZN7S1403C34v156Ev();
extern void _ZN7S1403C34v157Ev();
extern void _ZN7S1403C34v158Ev();
extern void _ZN7S1403C34v159Ev();
extern void _ZN7S1403C34v160Ev();
extern void _ZN7S1403C34v161Ev();
extern void _ZN7S1403C34v162Ev();
extern void _ZN7S1403C34v163Ev();
extern void _ZN7S1403C34v164Ev();
extern void _ZN7S1403C34v165Ev();
extern void _ZN7S1403C34v166Ev();
extern void _ZN7S1403C34v167Ev();
extern void _ZN7S1403C34v168Ev();
extern void _ZN7S1403C34v169Ev();
extern void _ZN7S1403C34v170Ev();
extern void _ZN7S1403C34v171Ev();
extern void _ZN7S1403C34v172Ev();
extern void _ZN7S1403C34v173Ev();
extern void _ZN7S1403C34v174Ev();
extern void _ZN7S1403C34v175Ev();
extern void _ZN7S1403C34v176Ev();
extern void _ZN7S1403C34v177Ev();
extern void _ZN7S1403C34v178Ev();
extern void _ZN7S1403C34v179Ev();
extern void _ZN7S1403C34v180Ev();
extern void _ZN7S1403C34v181Ev();
extern void _ZN7S1403C34v182Ev();
extern void _ZN7S1403C34v183Ev();
extern void _ZN7S1403C34v184Ev();
extern void _ZN7S1403C34v185Ev();
extern void _ZN7S1403C34v186Ev();
extern void _ZN7S1403C34v187Ev();
extern void _ZN7S1403C34v188Ev();
extern void _ZN7S1403C34v189Ev();
extern void _ZN7S1403C34v190Ev();
extern void _ZN7S1403C34v191Ev();
extern void _ZN7S1403C34v192Ev();
extern void _ZN7S1403C34v193Ev();
extern void _ZN7S1403C34v194Ev();
extern void _ZN7S1403C34v195Ev();
extern void _ZN7S1403C34v196Ev();
extern void _ZN7S1403C34v197Ev();
extern void _ZN7S1403C34v198Ev();
extern void _ZN7S1403C34v199Ev();
extern void _ZN7S1403C34v200Ev();
extern void _ZN7S1403C34v201Ev();
extern void _ZN7S1403C34v202Ev();
extern void _ZN7S1403C34v203Ev();
extern void _ZN7S1403C34v204Ev();
extern void _ZN7S1403C34v205Ev();
extern void _ZN7S1403C34v206Ev();
extern void _ZN7S1403C34v207Ev();
extern void _ZN7S1403C34v208Ev();
extern void _ZN7S1403C34v209Ev();
extern void _ZN7S1403C34v210Ev();
extern void _ZN7S1403C24v211Ev();
extern void _ZN7S1403C24v212Ev();
extern void _ZN7S1403C24v213Ev();
extern void _ZN7S1403C24v214Ev();
extern void _ZN7S1403C24v215Ev();
extern void _ZN7S1403C24v216Ev();
extern void _ZN7S1403C24v217Ev();
extern void _ZN7S1403C24v218Ev();
extern void _ZN7S1403C24v219Ev();
static  VTBL_ENTRY vtc_S1403C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1403C2[0]),
  (VTBL_ENTRY)&_ZN7S1403C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1403C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v133Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v134Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v135Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v136Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v137Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v138Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v139Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v140Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v141Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v142Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v143Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v144Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v145Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v146Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v147Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v148Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v149Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v150Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v151Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v152Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v153Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v154Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v155Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v156Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v157Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v158Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v159Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v160Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v161Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v162Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v163Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v164Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v165Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v166Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v167Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v168Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v169Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v170Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v171Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v172Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v173Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v174Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v175Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v176Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v177Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v178Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v179Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v180Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v181Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v182Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v183Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v184Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v185Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v186Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v187Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v188Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v189Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v190Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v191Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v192Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v193Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v194Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v195Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v196Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v197Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v198Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v199Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v200Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v201Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v202Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v203Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v204Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v205Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v206Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v207Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v208Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v209Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v210Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v211Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v212Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v213Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v214Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v215Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v216Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v217Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v218Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v219Ev,
};
extern VTBL_ENTRY _ZTI7S1403C2[];
extern  VTBL_ENTRY _ZTV7S1403C2[];
Class_Descriptor cd_S1403C2 = {  "S1403C2", // class name
  bases_S1403C2, 2,
  &(vtc_S1403C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,716), // object size
  NSPAIRA(_ZTI7S1403C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1403C2),220, //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  S1403C1  : S1403C2 {
  void *s1403c1f0;
  unsigned int s1403c1f1:1;
  unsigned int s1403c1f2:1;
  unsigned int s1403c1f3:1;
  unsigned int s1403c1f4:1;
  unsigned int s1403c1f5:1;
  void *s1403c1f6;
  ::S1403C25 s1403c1f7;
  ::S1538C14_nt s1403c1f8;
  ::S1538C14_nt s1403c1f9;
  void *s1403c1f10[2];
  int s1403c1f11;
  virtual  ~S1403C1(); // _ZN7S1403C1D1Ev
  virtual void  v1(); // _ZN7S1403C12v1Ev
  virtual void  v2(); // _ZN7S1403C12v2Ev
  virtual void  v3(); // _ZN7S1403C12v3Ev
  S1403C1(); // tgen
};
//SIG(1 S1403C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v68 v69 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 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC6 FC9{ m Fi} Fi Fc[4] Fp[2] FC10{ BC11{ BC8}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi: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 FC12{ BC13{ BC8}} FC12 Fi Fp[2] FC14{ m Fi[3]} FC15{ m Fi[3]} FC14 FC14 Fp FC5 FC12 FC14 FC15 Fi FC14 FC14 Fp Fi Fc FC15 FC15 Fp Fi Fp FC16{ BC17{ BC8}} FC18{ BC19{ BC8}} FC20{ BC21{ BC8}}} vd v211 v212 v213 v214 v215 v216 v217 v218 v219 Fp Fi Fi:1 Fi:1 Fi:1 Fi:1 Fp[3] FC14 Fi[2] Fp FC20 FC14 Fi FC22{ m Fi[4]} Fp FC5 FC14 FC15 FC14 FC15 Fp[5] Fi[2] Fp FC23{ BC24{ BC8}} Fp[2] Fi[6] FC25{ m Fi[4]} FC25 FC25 Fp} vd v1 v2 v3 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fp FC23 FC14 FC14 Fp[2] Fi}


 S1403C1 ::~S1403C1(){ note_dtor("S1403C1", this);}
void  S1403C1 ::v1(){vfunc_called(this, "_ZN7S1403C12v1Ev");}
void  S1403C1 ::v2(){vfunc_called(this, "_ZN7S1403C12v2Ev");}
void  S1403C1 ::v3(){vfunc_called(this, "_ZN7S1403C12v3Ev");}
S1403C1 ::S1403C1(){ note_ctor("S1403C1", this);} // tgen

static void Test_S1403C1()
{
  extern Class_Descriptor cd_S1403C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,195)];
    init_test(&cd_S1403C1, buf);
    S1403C1 *dp, &lv = *(dp=new (buf) S1403C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,776), "sizeof(S1403C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1403C1)");
    check_base_class_offset(lv, (S1403C4*)(S1403C3*)(S1403C2*), 0, "S1403C1");
    check_base_class_offset(lv, (S1403C3*)(S1403C2*), 0, "S1403C1");
    check_base_class_offset(lv, (S1403C2*), 0, "S1403C1");
    check_field_offset(lv, s1403c1f0, ABISELECT(920,716), "S1403C1.s1403c1f0");
    set_bf_and_test(lv, s1403c1f1, ABISELECT(928,720), 0, 1, 1, "S1403C1");
    set_bf_and_test(lv, s1403c1f2, ABISELECT(928,720), 1, 1, 1, "S1403C1");
    set_bf_and_test(lv, s1403c1f3, ABISELECT(928,720), 2, 1, 1, "S1403C1");
    set_bf_and_test(lv, s1403c1f4, ABISELECT(928,720), 3, 1, 1, "S1403C1");
    set_bf_and_test(lv, s1403c1f5, ABISELECT(928,720), 4, 1, 1, "S1403C1");
    check_field_offset(lv, s1403c1f6, ABISELECT(936,724), "S1403C1.s1403c1f6");
    check_field_offset(lv, s1403c1f7, ABISELECT(944,728), "S1403C1.s1403c1f7");
    check_field_offset(lv, s1403c1f8, ABISELECT(960,740), "S1403C1.s1403c1f8");
    check_field_offset(lv, s1403c1f9, ABISELECT(972,752), "S1403C1.s1403c1f9");
    check_field_offset(lv, s1403c1f10, ABISELECT(984,764), "S1403C1.s1403c1f10");
    check_field_offset(lv, s1403c1f11, ABISELECT(1000,772), "S1403C1.s1403c1f11");
    test_class_info(&lv, &cd_S1403C1);
    dp->~S1403C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1403C1(Test_S1403C1, "S1403C1", ABISELECT(1008,776));

#else // __cplusplus

extern void _ZN7S1403C1C1Ev();
extern void _ZN7S1403C1D1Ev();
Name_Map name_map_S1403C1[] = {
  NSPAIR(_ZN7S1403C1C1Ev),
  NSPAIR(_ZN7S1403C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1403C4;
extern VTBL_ENTRY _ZTI7S1403C4[];
extern  VTBL_ENTRY _ZTV7S1403C4[];
extern Class_Descriptor cd_S1403C3;
extern VTBL_ENTRY _ZTI7S1403C3[];
extern  VTBL_ENTRY _ZTV7S1403C3[];
extern Class_Descriptor cd_S1403C2;
extern VTBL_ENTRY _ZTI7S1403C2[];
extern  VTBL_ENTRY _ZTV7S1403C2[];
static Base_Class bases_S1403C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1403C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1403C1[];
extern void _ZN7S1403C1D1Ev();
extern void _ZN7S1403C1D0Ev();
extern void _ZN7S1403C42v4Ev();
extern void _ZN7S1403C42v5Ev();
extern void _ZN7S1403C42v6Ev();
extern void _ZN7S1403C42v7Ev();
extern void _ZN7S1403C42v8Ev();
extern void _ZN7S1403C42v9Ev();
extern void _ZN7S1403C43v10Ev();
extern void _ZN7S1403C43v11Ev();
extern void _ZN7S1403C43v12Ev();
extern void _ZN7S1403C43v13Ev();
extern void _ZN7S1403C43v14Ev();
extern void _ZN7S1403C43v15Ev();
extern void _ZN7S1403C43v16Ev();
extern void _ZN7S1403C43v17Ev();
extern void _ZN7S1403C43v18Ev();
extern void _ZN7S1403C43v19Ev();
extern void _ZN7S1403C43v20Ev();
extern void _ZN7S1403C43v21Ev();
extern void _ZN7S1403C43v22Ev();
extern void _ZN7S1403C43v23Ev();
extern void _ZN7S1403C43v24Ev();
extern void _ZN7S1403C43v25Ev();
extern void _ZN7S1403C43v26Ev();
extern void _ZN7S1403C43v27Ev();
extern void _ZN7S1403C43v28Ev();
extern void _ZN7S1403C43v29Ev();
extern void _ZN7S1403C43v30Ev();
extern void _ZN7S1403C43v31Ev();
extern void _ZN7S1403C43v32Ev();
extern void _ZN7S1403C43v33Ev();
extern void _ZN7S1403C43v34Ev();
extern void _ZN7S1403C43v35Ev();
extern void _ZN7S1403C43v36Ev();
extern void _ZN7S1403C43v37Ev();
extern void _ZN7S1403C43v38Ev();
extern void _ZN7S1403C43v39Ev();
extern void _ZN7S1403C43v40Ev();
extern void _ZN7S1403C43v41Ev();
extern void _ZN7S1403C43v42Ev();
extern void _ZN7S1403C43v43Ev();
extern void _ZN7S1403C43v44Ev();
extern void _ZN7S1403C43v45Ev();
extern void _ZN7S1403C43v46Ev();
extern void _ZN7S1403C43v47Ev();
extern void _ZN7S1403C43v48Ev();
extern void _ZN7S1403C43v49Ev();
extern void _ZN7S1403C43v50Ev();
extern void _ZN7S1403C43v51Ev();
extern void _ZN7S1403C43v52Ev();
extern void _ZN7S1403C43v53Ev();
extern void _ZN7S1403C43v54Ev();
extern void _ZN7S1403C43v55Ev();
extern void _ZN7S1403C43v56Ev();
extern void _ZN7S1403C43v57Ev();
extern void _ZN7S1403C43v58Ev();
extern void _ZN7S1403C43v59Ev();
extern void _ZN7S1403C43v60Ev();
extern void _ZN7S1403C43v61Ev();
extern void _ZN7S1403C43v62Ev();
extern void _ZN7S1403C43v63Ev();
extern void _ZN7S1403C43v64Ev();
extern void _ZN7S1403C43v65Ev();
extern void _ZN7S1403C43v66Ev();
extern void _ZN7S1403C43v67Ev();
extern void _ZN7S1403C33v68Ev();
extern void _ZN7S1403C33v69Ev();
extern void _ZN7S1403C33v70Ev();
extern void _ZN7S1403C33v71Ev();
extern void _ZN7S1403C33v72Ev();
extern void _ZN7S1403C33v73Ev();
extern void _ZN7S1403C33v74Ev();
extern void _ZN7S1403C33v75Ev();
extern void _ZN7S1403C33v76Ev();
extern void _ZN7S1403C33v77Ev();
extern void _ZN7S1403C33v78Ev();
extern void _ZN7S1403C33v79Ev();
extern void _ZN7S1403C33v80Ev();
extern void _ZN7S1403C33v81Ev();
extern void _ZN7S1403C33v82Ev();
extern void _ZN7S1403C33v83Ev();
extern void _ZN7S1403C33v84Ev();
extern void _ZN7S1403C33v85Ev();
extern void _ZN7S1403C33v86Ev();
extern void _ZN7S1403C33v87Ev();
extern void _ZN7S1403C33v88Ev();
extern void _ZN7S1403C33v89Ev();
extern void _ZN7S1403C33v90Ev();
extern void _ZN7S1403C33v91Ev();
extern void _ZN7S1403C33v92Ev();
extern void _ZN7S1403C33v93Ev();
extern void _ZN7S1403C33v94Ev();
extern void _ZN7S1403C33v95Ev();
extern void _ZN7S1403C33v96Ev();
extern void _ZN7S1403C33v97Ev();
extern void _ZN7S1403C33v98Ev();
extern void _ZN7S1403C33v99Ev();
extern void _ZN7S1403C34v100Ev();
extern void _ZN7S1403C34v101Ev();
extern void _ZN7S1403C34v102Ev();
extern void _ZN7S1403C34v103Ev();
extern void _ZN7S1403C34v104Ev();
extern void _ZN7S1403C34v105Ev();
extern void _ZN7S1403C34v106Ev();
extern void _ZN7S1403C34v107Ev();
extern void _ZN7S1403C34v108Ev();
extern void _ZN7S1403C34v109Ev();
extern void _ZN7S1403C34v110Ev();
extern void _ZN7S1403C34v111Ev();
extern void _ZN7S1403C34v112Ev();
extern void _ZN7S1403C34v113Ev();
extern void _ZN7S1403C34v114Ev();
extern void _ZN7S1403C34v115Ev();
extern void _ZN7S1403C34v116Ev();
extern void _ZN7S1403C34v117Ev();
extern void _ZN7S1403C34v118Ev();
extern void _ZN7S1403C34v119Ev();
extern void _ZN7S1403C34v120Ev();
extern void _ZN7S1403C34v121Ev();
extern void _ZN7S1403C34v122Ev();
extern void _ZN7S1403C34v123Ev();
extern void _ZN7S1403C34v124Ev();
extern void _ZN7S1403C34v125Ev();
extern void _ZN7S1403C34v126Ev();
extern void _ZN7S1403C34v127Ev();
extern void _ZN7S1403C34v128Ev();
extern void _ZN7S1403C34v129Ev();
extern void _ZN7S1403C34v130Ev();
extern void _ZN7S1403C34v131Ev();
extern void _ZN7S1403C34v132Ev();
extern void _ZN7S1403C34v133Ev();
extern void _ZN7S1403C34v134Ev();
extern void _ZN7S1403C34v135Ev();
extern void _ZN7S1403C34v136Ev();
extern void _ZN7S1403C34v137Ev();
extern void _ZN7S1403C34v138Ev();
extern void _ZN7S1403C34v139Ev();
extern void _ZN7S1403C34v140Ev();
extern void _ZN7S1403C34v141Ev();
extern void _ZN7S1403C34v142Ev();
extern void _ZN7S1403C34v143Ev();
extern void _ZN7S1403C34v144Ev();
extern void _ZN7S1403C34v145Ev();
extern void _ZN7S1403C34v146Ev();
extern void _ZN7S1403C34v147Ev();
extern void _ZN7S1403C34v148Ev();
extern void _ZN7S1403C34v149Ev();
extern void _ZN7S1403C34v150Ev();
extern void _ZN7S1403C34v151Ev();
extern void _ZN7S1403C34v152Ev();
extern void _ZN7S1403C34v153Ev();
extern void _ZN7S1403C34v154Ev();
extern void _ZN7S1403C34v155Ev();
extern void _ZN7S1403C34v156Ev();
extern void _ZN7S1403C34v157Ev();
extern void _ZN7S1403C34v158Ev();
extern void _ZN7S1403C34v159Ev();
extern void _ZN7S1403C34v160Ev();
extern void _ZN7S1403C34v161Ev();
extern void _ZN7S1403C34v162Ev();
extern void _ZN7S1403C34v163Ev();
extern void _ZN7S1403C34v164Ev();
extern void _ZN7S1403C34v165Ev();
extern void _ZN7S1403C34v166Ev();
extern void _ZN7S1403C34v167Ev();
extern void _ZN7S1403C34v168Ev();
extern void _ZN7S1403C34v169Ev();
extern void _ZN7S1403C34v170Ev();
extern void _ZN7S1403C34v171Ev();
extern void _ZN7S1403C34v172Ev();
extern void _ZN7S1403C34v173Ev();
extern void _ZN7S1403C34v174Ev();
extern void _ZN7S1403C34v175Ev();
extern void _ZN7S1403C34v176Ev();
extern void _ZN7S1403C34v177Ev();
extern void _ZN7S1403C34v178Ev();
extern void _ZN7S1403C34v179Ev();
extern void _ZN7S1403C34v180Ev();
extern void _ZN7S1403C34v181Ev();
extern void _ZN7S1403C34v182Ev();
extern void _ZN7S1403C34v183Ev();
extern void _ZN7S1403C34v184Ev();
extern void _ZN7S1403C34v185Ev();
extern void _ZN7S1403C34v186Ev();
extern void _ZN7S1403C34v187Ev();
extern void _ZN7S1403C34v188Ev();
extern void _ZN7S1403C34v189Ev();
extern void _ZN7S1403C34v190Ev();
extern void _ZN7S1403C34v191Ev();
extern void _ZN7S1403C34v192Ev();
extern void _ZN7S1403C34v193Ev();
extern void _ZN7S1403C34v194Ev();
extern void _ZN7S1403C34v195Ev();
extern void _ZN7S1403C34v196Ev();
extern void _ZN7S1403C34v197Ev();
extern void _ZN7S1403C34v198Ev();
extern void _ZN7S1403C34v199Ev();
extern void _ZN7S1403C34v200Ev();
extern void _ZN7S1403C34v201Ev();
extern void _ZN7S1403C34v202Ev();
extern void _ZN7S1403C34v203Ev();
extern void _ZN7S1403C34v204Ev();
extern void _ZN7S1403C34v205Ev();
extern void _ZN7S1403C34v206Ev();
extern void _ZN7S1403C34v207Ev();
extern void _ZN7S1403C34v208Ev();
extern void _ZN7S1403C34v209Ev();
extern void _ZN7S1403C34v210Ev();
extern void _ZN7S1403C24v211Ev();
extern void _ZN7S1403C24v212Ev();
extern void _ZN7S1403C24v213Ev();
extern void _ZN7S1403C24v214Ev();
extern void _ZN7S1403C24v215Ev();
extern void _ZN7S1403C24v216Ev();
extern void _ZN7S1403C24v217Ev();
extern void _ZN7S1403C24v218Ev();
extern void _ZN7S1403C24v219Ev();
extern void _ZN7S1403C12v1Ev();
extern void _ZN7S1403C12v2Ev();
extern void _ZN7S1403C12v3Ev();
static  VTBL_ENTRY vtc_S1403C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1403C1[0]),
  (VTBL_ENTRY)&_ZN7S1403C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1403C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1403C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1403C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1403C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v133Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v134Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v135Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v136Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v137Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v138Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v139Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v140Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v141Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v142Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v143Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v144Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v145Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v146Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v147Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v148Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v149Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v150Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v151Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v152Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v153Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v154Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v155Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v156Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v157Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v158Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v159Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v160Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v161Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v162Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v163Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v164Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v165Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v166Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v167Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v168Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v169Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v170Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v171Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v172Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v173Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v174Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v175Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v176Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v177Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v178Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v179Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v180Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v181Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v182Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v183Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v184Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v185Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v186Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v187Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v188Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v189Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v190Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v191Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v192Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v193Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v194Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v195Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v196Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v197Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v198Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v199Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v200Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v201Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v202Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v203Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v204Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v205Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v206Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v207Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v208Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v209Ev,
  (VTBL_ENTRY)&_ZN7S1403C34v210Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v211Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v212Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v213Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v214Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v215Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v216Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v217Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v218Ev,
  (VTBL_ENTRY)&_ZN7S1403C24v219Ev,
  (VTBL_ENTRY)&_ZN7S1403C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1403C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1403C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1403C1[];
extern  VTBL_ENTRY _ZTV7S1403C1[];
Class_Descriptor cd_S1403C1 = {  "S1403C1", // class name
  bases_S1403C1, 3,
  &(vtc_S1403C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,776), // object size
  NSPAIRA(_ZTI7S1403C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1403C1),223, //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  S590C5  {
  int s590c5f0;
  __tsi64 s590c5f1;
  void *s590c5f2[4];
  int s590c5f3[2];
  void *s590c5f4;
  ::S1538C5_nt s590c5f5;
  void *s590c5f6[2];
  virtual  ~S590C5(); // _ZN6S590C5D1Ev
  virtual void  v4(); // _ZN6S590C52v4Ev
  virtual void  v5(); // _ZN6S590C52v5Ev
  virtual void  v6(); // _ZN6S590C52v6Ev
  virtual void  v7(); // _ZN6S590C52v7Ev
  virtual void  v8(); // _ZN6S590C52v8Ev
  virtual void  v9(); // _ZN6S590C52v9Ev
  virtual void  v10(); // _ZN6S590C53v10Ev
  virtual void  v11(); // _ZN6S590C53v11Ev
  virtual void  v12(); // _ZN6S590C53v12Ev
  virtual void  v13(); // _ZN6S590C53v13Ev
  virtual void  v14(); // _ZN6S590C53v14Ev
  virtual void  v15(); // _ZN6S590C53v15Ev
  virtual void  v16(); // _ZN6S590C53v16Ev
  virtual void  v17(); // _ZN6S590C53v17Ev
  virtual void  v18(); // _ZN6S590C53v18Ev
  virtual void  v19(); // _ZN6S590C53v19Ev
  virtual void  v20(); // _ZN6S590C53v20Ev
  virtual void  v21(); // _ZN6S590C53v21Ev
  virtual void  v22(); // _ZN6S590C53v22Ev
  virtual void  v23(); // _ZN6S590C53v23Ev
  virtual void  v24(); // _ZN6S590C53v24Ev
  virtual void  v25(); // _ZN6S590C53v25Ev
  virtual void  v26(); // _ZN6S590C53v26Ev
  virtual void  v27(); // _ZN6S590C53v27Ev
  virtual void  v28(); // _ZN6S590C53v28Ev
  virtual void  v29(); // _ZN6S590C53v29Ev
  virtual void  v30(); // _ZN6S590C53v30Ev
  virtual void  v31(); // _ZN6S590C53v31Ev
  virtual void  v32(); // _ZN6S590C53v32Ev
  virtual void  v33(); // _ZN6S590C53v33Ev
  virtual void  v34(); // _ZN6S590C53v34Ev
  virtual void  v35(); // _ZN6S590C53v35Ev
  virtual void  v36(); // _ZN6S590C53v36Ev
  virtual void  v37(); // _ZN6S590C53v37Ev
  virtual void  v38(); // _ZN6S590C53v38Ev
  virtual void  v39(); // _ZN6S590C53v39Ev
  virtual void  v40(); // _ZN6S590C53v40Ev
  virtual void  v41(); // _ZN6S590C53v41Ev
  virtual void  v42(); // _ZN6S590C53v42Ev
  virtual void  v43(); // _ZN6S590C53v43Ev
  virtual void  v44(); // _ZN6S590C53v44Ev
  virtual void  v45(); // _ZN6S590C53v45Ev
  virtual void  v46(); // _ZN6S590C53v46Ev
  virtual void  v47(); // _ZN6S590C53v47Ev
  virtual void  v48(); // _ZN6S590C53v48Ev
  virtual void  v49(); // _ZN6S590C53v49Ev
  virtual void  v50(); // _ZN6S590C53v50Ev
  virtual void  v51(); // _ZN6S590C53v51Ev
  virtual void  v52(); // _ZN6S590C53v52Ev
  virtual void  v53(); // _ZN6S590C53v53Ev
  virtual void  v54(); // _ZN6S590C53v54Ev
  virtual void  v55(); // _ZN6S590C53v55Ev
  virtual void  v56(); // _ZN6S590C53v56Ev
  virtual void  v57(); // _ZN6S590C53v57Ev
  virtual void  v58(); // _ZN6S590C53v58Ev
  virtual void  v59(); // _ZN6S590C53v59Ev
  virtual void  v60(); // _ZN6S590C53v60Ev
  virtual void  v61(); // _ZN6S590C53v61Ev
  virtual void  v62(); // _ZN6S590C53v62Ev
  virtual void  v63(); // _ZN6S590C53v63Ev
  virtual void  v64(); // _ZN6S590C53v64Ev
  virtual void  v65(); // _ZN6S590C53v65Ev
  virtual void  v66(); // _ZN6S590C53v66Ev
  virtual void  v67(); // _ZN6S590C53v67Ev
  S590C5(); // tgen
};
//SIG(-1 S590C5) 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]}


 S590C5 ::~S590C5(){ note_dtor("S590C5", this);}
void  S590C5 ::v4(){vfunc_called(this, "_ZN6S590C52v4Ev");}
void  S590C5 ::v5(){vfunc_called(this, "_ZN6S590C52v5Ev");}
void  S590C5 ::v6(){vfunc_called(this, "_ZN6S590C52v6Ev");}
void  S590C5 ::v7(){vfunc_called(this, "_ZN6S590C52v7Ev");}
void  S590C5 ::v8(){vfunc_called(this, "_ZN6S590C52v8Ev");}
void  S590C5 ::v9(){vfunc_called(this, "_ZN6S590C52v9Ev");}
void  S590C5 ::v10(){vfunc_called(this, "_ZN6S590C53v10Ev");}
void  S590C5 ::v11(){vfunc_called(this, "_ZN6S590C53v11Ev");}
void  S590C5 ::v12(){vfunc_called(this, "_ZN6S590C53v12Ev");}
void  S590C5 ::v13(){vfunc_called(this, "_ZN6S590C53v13Ev");}
void  S590C5 ::v14(){vfunc_called(this, "_ZN6S590C53v14Ev");}
void  S590C5 ::v15(){vfunc_called(this, "_ZN6S590C53v15Ev");}
void  S590C5 ::v16(){vfunc_called(this, "_ZN6S590C53v16Ev");}
void  S590C5 ::v17(){vfunc_called(this, "_ZN6S590C53v17Ev");}
void  S590C5 ::v18(){vfunc_called(this, "_ZN6S590C53v18Ev");}
void  S590C5 ::v19(){vfunc_called(this, "_ZN6S590C53v19Ev");}
void  S590C5 ::v20(){vfunc_called(this, "_ZN6S590C53v20Ev");}
void  S590C5 ::v21(){vfunc_called(this, "_ZN6S590C53v21Ev");}
void  S590C5 ::v22(){vfunc_called(this, "_ZN6S590C53v22Ev");}
void  S590C5 ::v23(){vfunc_called(this, "_ZN6S590C53v23Ev");}
void  S590C5 ::v24(){vfunc_called(this, "_ZN6S590C53v24Ev");}
void  S590C5 ::v25(){vfunc_called(this, "_ZN6S590C53v25Ev");}
void  S590C5 ::v26(){vfunc_called(this, "_ZN6S590C53v26Ev");}
void  S590C5 ::v27(){vfunc_called(this, "_ZN6S590C53v27Ev");}
void  S590C5 ::v28(){vfunc_called(this, "_ZN6S590C53v28Ev");}
void  S590C5 ::v29(){vfunc_called(this, "_ZN6S590C53v29Ev");}
void  S590C5 ::v30(){vfunc_called(this, "_ZN6S590C53v30Ev");}
void  S590C5 ::v31(){vfunc_called(this, "_ZN6S590C53v31Ev");}
void  S590C5 ::v32(){vfunc_called(this, "_ZN6S590C53v32Ev");}
void  S590C5 ::v33(){vfunc_called(this, "_ZN6S590C53v33Ev");}
void  S590C5 ::v34(){vfunc_called(this, "_ZN6S590C53v34Ev");}
void  S590C5 ::v35(){vfunc_called(this, "_ZN6S590C53v35Ev");}
void  S590C5 ::v36(){vfunc_called(this, "_ZN6S590C53v36Ev");}
void  S590C5 ::v37(){vfunc_called(this, "_ZN6S590C53v37Ev");}
void  S590C5 ::v38(){vfunc_called(this, "_ZN6S590C53v38Ev");}
void  S590C5 ::v39(){vfunc_called(this, "_ZN6S590C53v39Ev");}
void  S590C5 ::v40(){vfunc_called(this, "_ZN6S590C53v40Ev");}
void  S590C5 ::v41(){vfunc_called(this, "_ZN6S590C53v41Ev");}
void  S590C5 ::v42(){vfunc_called(this, "_ZN6S590C53v42Ev");}
void  S590C5 ::v43(){vfunc_called(this, "_ZN6S590C53v43Ev");}
void  S590C5 ::v44(){vfunc_called(this, "_ZN6S590C53v44Ev");}
void  S590C5 ::v45(){vfunc_called(this, "_ZN6S590C53v45Ev");}
void  S590C5 ::v46(){vfunc_called(this, "_ZN6S590C53v46Ev");}
void  S590C5 ::v47(){vfunc_called(this, "_ZN6S590C53v47Ev");}
void  S590C5 ::v48(){vfunc_called(this, "_ZN6S590C53v48Ev");}
void  S590C5 ::v49(){vfunc_called(this, "_ZN6S590C53v49Ev");}
void  S590C5 ::v50(){vfunc_called(this, "_ZN6S590C53v50Ev");}
void  S590C5 ::v51(){vfunc_called(this, "_ZN6S590C53v51Ev");}
void  S590C5 ::v52(){vfunc_called(this, "_ZN6S590C53v52Ev");}
void  S590C5 ::v53(){vfunc_called(this, "_ZN6S590C53v53Ev");}
void  S590C5 ::v54(){vfunc_called(this, "_ZN6S590C53v54Ev");}
void  S590C5 ::v55(){vfunc_called(this, "_ZN6S590C53v55Ev");}
void  S590C5 ::v56(){vfunc_called(this, "_ZN6S590C53v56Ev");}
void  S590C5 ::v57(){vfunc_called(this, "_ZN6S590C53v57Ev");}
void  S590C5 ::v58(){vfunc_called(this, "_ZN6S590C53v58Ev");}
void  S590C5 ::v59(){vfunc_called(this, "_ZN6S590C53v59Ev");}
void  S590C5 ::v60(){vfunc_called(this, "_ZN6S590C53v60Ev");}
void  S590C5 ::v61(){vfunc_called(this, "_ZN6S590C53v61Ev");}
void  S590C5 ::v62(){vfunc_called(this, "_ZN6S590C53v62Ev");}
void  S590C5 ::v63(){vfunc_called(this, "_ZN6S590C53v63Ev");}
void  S590C5 ::v64(){vfunc_called(this, "_ZN6S590C53v64Ev");}
void  S590C5 ::v65(){vfunc_called(this, "_ZN6S590C53v65Ev");}
void  S590C5 ::v66(){vfunc_called(this, "_ZN6S590C53v66Ev");}
void  S590C5 ::v67(){vfunc_called(this, "_ZN6S590C53v67Ev");}
S590C5 ::S590C5(){ note_ctor("S590C5", this);} // tgen

static void Test_S590C5()
{
  extern Class_Descriptor cd_S590C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S590C5, buf);
    S590C5 *dp, &lv = *(dp=new (buf) S590C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S590C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S590C5)");
    check_field_offset(lv, s590c5f0, ABISELECT(8,4), "S590C5.s590c5f0");
    check_field_offset(lv, s590c5f1, ABISELECT(16,8), "S590C5.s590c5f1");
    check_field_offset(lv, s590c5f2, ABISELECT(24,16), "S590C5.s590c5f2");
    check_field_offset(lv, s590c5f3, ABISELECT(56,32), "S590C5.s590c5f3");
    check_field_offset(lv, s590c5f4, ABISELECT(64,40), "S590C5.s590c5f4");
    check_field_offset(lv, s590c5f5, ABISELECT(72,44), "S590C5.s590c5f5");
    check_field_offset(lv, s590c5f6, ABISELECT(80,52), "S590C5.s590c5f6");
    test_class_info(&lv, &cd_S590C5);
    dp->~S590C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS590C5(Test_S590C5, "S590C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S590C5C1Ev();
extern void _ZN6S590C5D1Ev();
Name_Map name_map_S590C5[] = {
  NSPAIR(_ZN6S590C5C1Ev),
  NSPAIR(_ZN6S590C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S590C5[];
extern void _ZN6S590C5D1Ev();
extern void _ZN6S590C5D0Ev();
extern void _ZN6S590C52v4Ev();
extern void _ZN6S590C52v5Ev();
extern void _ZN6S590C52v6Ev();
extern void _ZN6S590C52v7Ev();
extern void _ZN6S590C52v8Ev();
extern void _ZN6S590C52v9Ev();
extern void _ZN6S590C53v10Ev();
extern void _ZN6S590C53v11Ev();
extern void _ZN6S590C53v12Ev();
extern void _ZN6S590C53v13Ev();
extern void _ZN6S590C53v14Ev();
extern void _ZN6S590C53v15Ev();
extern void _ZN6S590C53v16Ev();
extern void _ZN6S590C53v17Ev();
extern void _ZN6S590C53v18Ev();
extern void _ZN6S590C53v19Ev();
extern void _ZN6S590C53v20Ev();
extern void _ZN6S590C53v21Ev();
extern void _ZN6S590C53v22Ev();
extern void _ZN6S590C53v23Ev();
extern void _ZN6S590C53v24Ev();
extern void _ZN6S590C53v25Ev();
extern void _ZN6S590C53v26Ev();
extern void _ZN6S590C53v27Ev();
extern void _ZN6S590C53v28Ev();
extern void _ZN6S590C53v29Ev();
extern void _ZN6S590C53v30Ev();
extern void _ZN6S590C53v31Ev();
extern void _ZN6S590C53v32Ev();
extern void _ZN6S590C53v33Ev();
extern void _ZN6S590C53v34Ev();
extern void _ZN6S590C53v35Ev();
extern void _ZN6S590C53v36Ev();
extern void _ZN6S590C53v37Ev();
extern void _ZN6S590C53v38Ev();
extern void _ZN6S590C53v39Ev();
extern void _ZN6S590C53v40Ev();
extern void _ZN6S590C53v41Ev();
extern void _ZN6S590C53v42Ev();
extern void _ZN6S590C53v43Ev();
extern void _ZN6S590C53v44Ev();
extern void _ZN6S590C53v45Ev();
extern void _ZN6S590C53v46Ev();
extern void _ZN6S590C53v47Ev();
extern void _ZN6S590C53v48Ev();
extern void _ZN6S590C53v49Ev();
extern void _ZN6S590C53v50Ev();
extern void _ZN6S590C53v51Ev();
extern void _ZN6S590C53v52Ev();
extern void _ZN6S590C53v53Ev();
extern void _ZN6S590C53v54Ev();
extern void _ZN6S590C53v55Ev();
extern void _ZN6S590C53v56Ev();
extern void _ZN6S590C53v57Ev();
extern void _ZN6S590C53v58Ev();
extern void _ZN6S590C53v59Ev();
extern void _ZN6S590C53v60Ev();
extern void _ZN6S590C53v61Ev();
extern void _ZN6S590C53v62Ev();
extern void _ZN6S590C53v63Ev();
extern void _ZN6S590C53v64Ev();
extern void _ZN6S590C53v65Ev();
extern void _ZN6S590C53v66Ev();
extern void _ZN6S590C53v67Ev();
static  VTBL_ENTRY vtc_S590C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S590C5[0]),
  (VTBL_ENTRY)&_ZN6S590C5D1Ev,
  (VTBL_ENTRY)&_ZN6S590C5D0Ev,
  (VTBL_ENTRY)&_ZN6S590C52v4Ev,
  (VTBL_ENTRY)&_ZN6S590C52v5Ev,
  (VTBL_ENTRY)&_ZN6S590C52v6Ev,
  (VTBL_ENTRY)&_ZN6S590C52v7Ev,
  (VTBL_ENTRY)&_ZN6S590C52v8Ev,
  (VTBL_ENTRY)&_ZN6S590C52v9Ev,
  (VTBL_ENTRY)&_ZN6S590C53v10Ev,
  (VTBL_ENTRY)&_ZN6S590C53v11Ev,
  (VTBL_ENTRY)&_ZN6S590C53v12Ev,
  (VTBL_ENTRY)&_ZN6S590C53v13Ev,
  (VTBL_ENTRY)&_ZN6S590C53v14Ev,
  (VTBL_ENTRY)&_ZN6S590C53v15Ev,
  (VTBL_ENTRY)&_ZN6S590C53v16Ev,
  (VTBL_ENTRY)&_ZN6S590C53v17Ev,
  (VTBL_ENTRY)&_ZN6S590C53v18Ev,
  (VTBL_ENTRY)&_ZN6S590C53v19Ev,
  (VTBL_ENTRY)&_ZN6S590C53v20Ev,
  (VTBL_ENTRY)&_ZN6S590C53v21Ev,
  (VTBL_ENTRY)&_ZN6S590C53v22Ev,
  (VTBL_ENTRY)&_ZN6S590C53v23Ev,
  (VTBL_ENTRY)&_ZN6S590C53v24Ev,
  (VTBL_ENTRY)&_ZN6S590C53v25Ev,
  (VTBL_ENTRY)&_ZN6S590C53v26Ev,
  (VTBL_ENTRY)&_ZN6S590C53v27Ev,
  (VTBL_ENTRY)&_ZN6S590C53v28Ev,
  (VTBL_ENTRY)&_ZN6S590C53v29Ev,
  (VTBL_ENTRY)&_ZN6S590C53v30Ev,
  (VTBL_ENTRY)&_ZN6S590C53v31Ev,
  (VTBL_ENTRY)&_ZN6S590C53v32Ev,
  (VTBL_ENTRY)&_ZN6S590C53v33Ev,
  (VTBL_ENTRY)&_ZN6S590C53v34Ev,
  (VTBL_ENTRY)&_ZN6S590C53v35Ev,
  (VTBL_ENTRY)&_ZN6S590C53v36Ev,
  (VTBL_ENTRY)&_ZN6S590C53v37Ev,
  (VTBL_ENTRY)&_ZN6S590C53v38Ev,
  (VTBL_ENTRY)&_ZN6S590C53v39Ev,
  (VTBL_ENTRY)&_ZN6S590C53v40Ev,
  (VTBL_ENTRY)&_ZN6S590C53v41Ev,
  (VTBL_ENTRY)&_ZN6S590C53v42Ev,
  (VTBL_ENTRY)&_ZN6S590C53v43Ev,
  (VTBL_ENTRY)&_ZN6S590C53v44Ev,
  (VTBL_ENTRY)&_ZN6S590C53v45Ev,
  (VTBL_ENTRY)&_ZN6S590C53v46Ev,
  (VTBL_ENTRY)&_ZN6S590C53v47Ev,
  (VTBL_ENTRY)&_ZN6S590C53v48Ev,
  (VTBL_ENTRY)&_ZN6S590C53v49Ev,
  (VTBL_ENTRY)&_ZN6S590C53v50Ev,
  (VTBL_ENTRY)&_ZN6S590C53v51Ev,
  (VTBL_ENTRY)&_ZN6S590C53v52Ev,
  (VTBL_ENTRY)&_ZN6S590C53v53Ev,
  (VTBL_ENTRY)&_ZN6S590C53v54Ev,
  (VTBL_ENTRY)&_ZN6S590C53v55Ev,
  (VTBL_ENTRY)&_ZN6S590C53v56Ev,
  (VTBL_ENTRY)&_ZN6S590C53v57Ev,
  (VTBL_ENTRY)&_ZN6S590C53v58Ev,
  (VTBL_ENTRY)&_ZN6S590C53v59Ev,
  (VTBL_ENTRY)&_ZN6S590C53v60Ev,
  (VTBL_ENTRY)&_ZN6S590C53v61Ev,
  (VTBL_ENTRY)&_ZN6S590C53v62Ev,
  (VTBL_ENTRY)&_ZN6S590C53v63Ev,
  (VTBL_ENTRY)&_ZN6S590C53v64Ev,
  (VTBL_ENTRY)&_ZN6S590C53v65Ev,
  (VTBL_ENTRY)&_ZN6S590C53v66Ev,
  (VTBL_ENTRY)&_ZN6S590C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S590C5[];
extern  VTBL_ENTRY _ZTV6S590C5[];
Class_Descriptor cd_S590C5 = {  "S590C5", // class name
  0,0,//no base classes
  &(vtc_S590C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S590C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S590C5),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  S590C4_nt  : S590C5 {
  int s590c4f0[2];
  void *s590c4f1;
  int s590c4f2[2];
  ::S1538C29_nt s590c4f3;
  ::S1538C29_nt s590c4f4;
  ::S1538C28_nt s590c4f5;
  ::S1538C29_nt s590c4f6;
  unsigned int s590c4f7:1;
  unsigned int s590c4f8:1;
  unsigned int s590c4f9:1;
  unsigned int s590c4f10:1;
  unsigned int s590c4f11:1;
  int s590c4f12[2];
  virtual  ~S590C4_nt(); // _ZN9S590C4_ntD1Ev
  virtual void  v68(); // _ZN9S590C4_nt3v68Ev
  virtual void  v69(); // _ZN9S590C4_nt3v69Ev
  virtual void  v70(); // _ZN9S590C4_nt3v70Ev
  virtual void  v71(); // _ZN9S590C4_nt3v71Ev
  virtual void  v72(); // _ZN9S590C4_nt3v72Ev
  virtual void  v73(); // _ZN9S590C4_nt3v73Ev
  virtual void  v74(); // _ZN9S590C4_nt3v74Ev
  virtual void  v75(); // _ZN9S590C4_nt3v75Ev
  virtual void  v76(); // _ZN9S590C4_nt3v76Ev
  virtual void  v77(); // _ZN9S590C4_nt3v77Ev
  virtual void  v78(); // _ZN9S590C4_nt3v78Ev
  virtual void  v79(); // _ZN9S590C4_nt3v79Ev
  virtual void  v80(); // _ZN9S590C4_nt3v80Ev
  virtual void  v81(); // _ZN9S590C4_nt3v81Ev
  virtual void  v82(); // _ZN9S590C4_nt3v82Ev
  virtual void  v83(); // _ZN9S590C4_nt3v83Ev
  virtual void  v84(); // _ZN9S590C4_nt3v84Ev
  virtual void  v85(); // _ZN9S590C4_nt3v85Ev
  virtual void  v86(); // _ZN9S590C4_nt3v86Ev
  virtual void  v87(); // _ZN9S590C4_nt3v87Ev
  virtual void  v88(); // _ZN9S590C4_nt3v88Ev
  virtual void  v89(); // _ZN9S590C4_nt3v89Ev
  S590C4_nt(); // tgen
};
//SIG(-1 S590C4_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]}


 S590C4_nt ::~S590C4_nt(){ note_dtor("S590C4_nt", this);}
void  S590C4_nt ::v68(){vfunc_called(this, "_ZN9S590C4_nt3v68Ev");}
void  S590C4_nt ::v69(){vfunc_called(this, "_ZN9S590C4_nt3v69Ev");}
void  S590C4_nt ::v70(){vfunc_called(this, "_ZN9S590C4_nt3v70Ev");}
void  S590C4_nt ::v71(){vfunc_called(this, "_ZN9S590C4_nt3v71Ev");}
void  S590C4_nt ::v72(){vfunc_called(this, "_ZN9S590C4_nt3v72Ev");}
void  S590C4_nt ::v73(){vfunc_called(this, "_ZN9S590C4_nt3v73Ev");}
void  S590C4_nt ::v74(){vfunc_called(this, "_ZN9S590C4_nt3v74Ev");}
void  S590C4_nt ::v75(){vfunc_called(this, "_ZN9S590C4_nt3v75Ev");}
void  S590C4_nt ::v76(){vfunc_called(this, "_ZN9S590C4_nt3v76Ev");}
void  S590C4_nt ::v77(){vfunc_called(this, "_ZN9S590C4_nt3v77Ev");}
void  S590C4_nt ::v78(){vfunc_called(this, "_ZN9S590C4_nt3v78Ev");}
void  S590C4_nt ::v79(){vfunc_called(this, "_ZN9S590C4_nt3v79Ev");}
void  S590C4_nt ::v80(){vfunc_called(this, "_ZN9S590C4_nt3v80Ev");}
void  S590C4_nt ::v81(){vfunc_called(this, "_ZN9S590C4_nt3v81Ev");}
void  S590C4_nt ::v82(){vfunc_called(this, "_ZN9S590C4_nt3v82Ev");}
void  S590C4_nt ::v83(){vfunc_called(this, "_ZN9S590C4_nt3v83Ev");}
void  S590C4_nt ::v84(){vfunc_called(this, "_ZN9S590C4_nt3v84Ev");}
void  S590C4_nt ::v85(){vfunc_called(this, "_ZN9S590C4_nt3v85Ev");}
void  S590C4_nt ::v86(){vfunc_called(this, "_ZN9S590C4_nt3v86Ev");}
void  S590C4_nt ::v87(){vfunc_called(this, "_ZN9S590C4_nt3v87Ev");}
void  S590C4_nt ::v88(){vfunc_called(this, "_ZN9S590C4_nt3v88Ev");}
void  S590C4_nt ::v89(){vfunc_called(this, "_ZN9S590C4_nt3v89Ev");}
S590C4_nt ::S590C4_nt(){ note_ctor("S590C4_nt", this);} // tgen

//skip512 S590C4_nt

#else // __cplusplus

extern void _ZN9S590C4_ntC1Ev();
extern void _ZN9S590C4_ntD1Ev();
Name_Map name_map_S590C4_nt[] = {
  NSPAIR(_ZN9S590C4_ntC1Ev),
  NSPAIR(_ZN9S590C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S590C5;
extern VTBL_ENTRY _ZTI6S590C5[];
extern  VTBL_ENTRY _ZTV6S590C5[];
static Base_Class bases_S590C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S590C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S590C4_nt[];
extern void _ZN9S590C4_ntD1Ev();
extern void _ZN9S590C4_ntD0Ev();
extern void _ZN6S590C52v4Ev();
extern void _ZN6S590C52v5Ev();
extern void _ZN6S590C52v6Ev();
extern void _ZN6S590C52v7Ev();
extern void _ZN6S590C52v8Ev();
extern void _ZN6S590C52v9Ev();
extern void _ZN6S590C53v10Ev();
extern void _ZN6S590C53v11Ev();
extern void _ZN6S590C53v12Ev();
extern void _ZN6S590C53v13Ev();
extern void _ZN6S590C53v14Ev();
extern void _ZN6S590C53v15Ev();
extern void _ZN6S590C53v16Ev();
extern void _ZN6S590C53v17Ev();
extern void _ZN6S590C53v18Ev();
extern void _ZN6S590C53v19Ev();
extern void _ZN6S590C53v20Ev();
extern void _ZN6S590C53v21Ev();
extern void _ZN6S590C53v22Ev();
extern void _ZN6S590C53v23Ev();
extern void _ZN6S590C53v24Ev();
extern void _ZN6S590C53v25Ev();
extern void _ZN6S590C53v26Ev();
extern void _ZN6S590C53v27Ev();
extern void _ZN6S590C53v28Ev();
extern void _ZN6S590C53v29Ev();
extern void _ZN6S590C53v30Ev();
extern void _ZN6S590C53v31Ev();
extern void _ZN6S590C53v32Ev();
extern void _ZN6S590C53v33Ev();
extern void _ZN6S590C53v34Ev();
extern void _ZN6S590C53v35Ev();
extern void _ZN6S590C53v36Ev();
extern void _ZN6S590C53v37Ev();
extern void _ZN6S590C53v38Ev();
extern void _ZN6S590C53v39Ev();
extern void _ZN6S590C53v40Ev();
extern void _ZN6S590C53v41Ev();
extern void _ZN6S590C53v42Ev();
extern void _ZN6S590C53v43Ev();
extern void _ZN6S590C53v44Ev();
extern void _ZN6S590C53v45Ev();
extern void _ZN6S590C53v46Ev();
extern void _ZN6S590C53v47Ev();
extern void _ZN6S590C53v48Ev();
extern void _ZN6S590C53v49Ev();
extern void _ZN6S590C53v50Ev();
extern void _ZN6S590C53v51Ev();
extern void _ZN6S590C53v52Ev();
extern void _ZN6S590C53v53Ev();
extern void _ZN6S590C53v54Ev();
extern void _ZN6S590C53v55Ev();
extern void _ZN6S590C53v56Ev();
extern void _ZN6S590C53v57Ev();
extern void _ZN6S590C53v58Ev();
extern void _ZN6S590C53v59Ev();
extern void _ZN6S590C53v60Ev();
extern void _ZN6S590C53v61Ev();
extern void _ZN6S590C53v62Ev();
extern void _ZN6S590C53v63Ev();
extern void _ZN6S590C53v64Ev();
extern void _ZN6S590C53v65Ev();
extern void _ZN6S590C53v66Ev();
extern void _ZN6S590C53v67Ev();
extern void _ZN9S590C4_nt3v68Ev();
extern void _ZN9S590C4_nt3v69Ev();
extern void _ZN9S590C4_nt3v70Ev();
extern void _ZN9S590C4_nt3v71Ev();
extern void _ZN9S590C4_nt3v72Ev();
extern void _ZN9S590C4_nt3v73Ev();
extern void _ZN9S590C4_nt3v74Ev();
extern void _ZN9S590C4_nt3v75Ev();
extern void _ZN9S590C4_nt3v76Ev();
extern void _ZN9S590C4_nt3v77Ev();
extern void _ZN9S590C4_nt3v78Ev();
extern void _ZN9S590C4_nt3v79Ev();
extern void _ZN9S590C4_nt3v80Ev();
extern void _ZN9S590C4_nt3v81Ev();
extern void _ZN9S590C4_nt3v82Ev();
extern void _ZN9S590C4_nt3v83Ev();
extern void _ZN9S590C4_nt3v84Ev();
extern void _ZN9S590C4_nt3v85Ev();
extern void _ZN9S590C4_nt3v86Ev();
extern void _ZN9S590C4_nt3v87Ev();
extern void _ZN9S590C4_nt3v88Ev();
extern void _ZN9S590C4_nt3v89Ev();
static  VTBL_ENTRY vtc_S590C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S590C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S590C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S590C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S590C52v4Ev,
  (VTBL_ENTRY)&_ZN6S590C52v5Ev,
  (VTBL_ENTRY)&_ZN6S590C52v6Ev,
  (VTBL_ENTRY)&_ZN6S590C52v7Ev,
  (VTBL_ENTRY)&_ZN6S590C52v8Ev,
  (VTBL_ENTRY)&_ZN6S590C52v9Ev,
  (VTBL_ENTRY)&_ZN6S590C53v10Ev,
  (VTBL_ENTRY)&_ZN6S590C53v11Ev,
  (VTBL_ENTRY)&_ZN6S590C53v12Ev,
  (VTBL_ENTRY)&_ZN6S590C53v13Ev,
  (VTBL_ENTRY)&_ZN6S590C53v14Ev,
  (VTBL_ENTRY)&_ZN6S590C53v15Ev,
  (VTBL_ENTRY)&_ZN6S590C53v16Ev,
  (VTBL_ENTRY)&_ZN6S590C53v17Ev,
  (VTBL_ENTRY)&_ZN6S590C53v18Ev,
  (VTBL_ENTRY)&_ZN6S590C53v19Ev,
  (VTBL_ENTRY)&_ZN6S590C53v20Ev,
  (VTBL_ENTRY)&_ZN6S590C53v21Ev,
  (VTBL_ENTRY)&_ZN6S590C53v22Ev,
  (VTBL_ENTRY)&_ZN6S590C53v23Ev,
  (VTBL_ENTRY)&_ZN6S590C53v24Ev,
  (VTBL_ENTRY)&_ZN6S590C53v25Ev,
  (VTBL_ENTRY)&_ZN6S590C53v26Ev,
  (VTBL_ENTRY)&_ZN6S590C53v27Ev,
  (VTBL_ENTRY)&_ZN6S590C53v28Ev,
  (VTBL_ENTRY)&_ZN6S590C53v29Ev,
  (VTBL_ENTRY)&_ZN6S590C53v30Ev,
  (VTBL_ENTRY)&_ZN6S590C53v31Ev,
  (VTBL_ENTRY)&_ZN6S590C53v32Ev,
  (VTBL_ENTRY)&_ZN6S590C53v33Ev,
  (VTBL_ENTRY)&_ZN6S590C53v34Ev,
  (VTBL_ENTRY)&_ZN6S590C53v35Ev,
  (VTBL_ENTRY)&_ZN6S590C53v36Ev,
  (VTBL_ENTRY)&_ZN6S590C53v37Ev,
  (VTBL_ENTRY)&_ZN6S590C53v38Ev,
  (VTBL_ENTRY)&_ZN6S590C53v39Ev,
  (VTBL_ENTRY)&_ZN6S590C53v40Ev,
  (VTBL_ENTRY)&_ZN6S590C53v41Ev,
  (VTBL_ENTRY)&_ZN6S590C53v42Ev,
  (VTBL_ENTRY)&_ZN6S590C53v43Ev,
  (VTBL_ENTRY)&_ZN6S590C53v44Ev,
  (VTBL_ENTRY)&_ZN6S590C53v45Ev,
  (VTBL_ENTRY)&_ZN6S590C53v46Ev,
  (VTBL_ENTRY)&_ZN6S590C53v47Ev,
  (VTBL_ENTRY)&_ZN6S590C53v48Ev,
  (VTBL_ENTRY)&_ZN6S590C53v49Ev,
  (VTBL_ENTRY)&_ZN6S590C53v50Ev,
  (VTBL_ENTRY)&_ZN6S590C53v51Ev,
  (VTBL_ENTRY)&_ZN6S590C53v52Ev,
  (VTBL_ENTRY)&_ZN6S590C53v53Ev,
  (VTBL_ENTRY)&_ZN6S590C53v54Ev,
  (VTBL_ENTRY)&_ZN6S590C53v55Ev,
  (VTBL_ENTRY)&_ZN6S590C53v56Ev,
  (VTBL_ENTRY)&_ZN6S590C53v57Ev,
  (VTBL_ENTRY)&_ZN6S590C53v58Ev,
  (VTBL_ENTRY)&_ZN6S590C53v59Ev,
  (VTBL_ENTRY)&_ZN6S590C53v60Ev,
  (VTBL_ENTRY)&_ZN6S590C53v61Ev,
  (VTBL_ENTRY)&_ZN6S590C53v62Ev,
  (VTBL_ENTRY)&_ZN6S590C53v63Ev,
  (VTBL_ENTRY)&_ZN6S590C53v64Ev,
  (VTBL_ENTRY)&_ZN6S590C53v65Ev,
  (VTBL_ENTRY)&_ZN6S590C53v66Ev,
  (VTBL_ENTRY)&_ZN6S590C53v67Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI9S590C4_nt[];
VTBL_ENTRY *P__ZTI9S590C4_nt = _ZTI9S590C4_nt; 
extern  VTBL_ENTRY _ZTV9S590C4_nt[];
Class_Descriptor cd_S590C4_nt = {  "S590C4_nt", // class name
  bases_S590C4_nt, 1,
  &(vtc_S590C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S590C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S590C4_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  S590C3_nt  : S590C4_nt {
  unsigned int s590c3f0:1;
  unsigned int s590c3f1:1;
  unsigned int s590c3f2:1;
  ::S1538C30 s590c3f3;
  ::S1538C22 s590c3f4;
  ::S1538C18 s590c3f5;
  ::S1538C12 s590c3f6;
  int s590c3f7[3];
  virtual  ~S590C3_nt(); // _ZN9S590C3_ntD1Ev
  virtual void  v90(); // _ZN9S590C3_nt3v90Ev
  virtual void  v91(); // _ZN9S590C3_nt3v91Ev
  virtual void  v92(); // _ZN9S590C3_nt3v92Ev
  virtual void  v93(); // _ZN9S590C3_nt3v93Ev
  virtual void  v94(); // _ZN9S590C3_nt3v94Ev
  virtual void  v95(); // _ZN9S590C3_nt3v95Ev
  virtual void  v96(); // _ZN9S590C3_nt3v96Ev
  virtual void  v97(); // _ZN9S590C3_nt3v97Ev
  virtual void  v98(); // _ZN9S590C3_nt3v98Ev
  virtual void  v99(); // _ZN9S590C3_nt3v99Ev
  virtual void  v100(); // _ZN9S590C3_nt4v100Ev
  virtual void  v101(); // _ZN9S590C3_nt4v101Ev
  virtual void  v102(); // _ZN9S590C3_nt4v102Ev
  virtual void  v103(); // _ZN9S590C3_nt4v103Ev
  virtual void  v104(); // _ZN9S590C3_nt4v104Ev
  virtual void  v105(); // _ZN9S590C3_nt4v105Ev
  virtual void  v106(); // _ZN9S590C3_nt4v106Ev
  virtual void  v107(); // _ZN9S590C3_nt4v107Ev
  virtual void  v108(); // _ZN9S590C3_nt4v108Ev
  virtual void  v109(); // _ZN9S590C3_nt4v109Ev
  S590C3_nt(); // tgen
};
//SIG(-1 S590C3_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 FC6 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} Fi[3]}


 S590C3_nt ::~S590C3_nt(){ note_dtor("S590C3_nt", this);}
void  S590C3_nt ::v90(){vfunc_called(this, "_ZN9S590C3_nt3v90Ev");}
void  S590C3_nt ::v91(){vfunc_called(this, "_ZN9S590C3_nt3v91Ev");}
void  S590C3_nt ::v92(){vfunc_called(this, "_ZN9S590C3_nt3v92Ev");}
void  S590C3_nt ::v93(){vfunc_called(this, "_ZN9S590C3_nt3v93Ev");}
void  S590C3_nt ::v94(){vfunc_called(this, "_ZN9S590C3_nt3v94Ev");}
void  S590C3_nt ::v95(){vfunc_called(this, "_ZN9S590C3_nt3v95Ev");}
void  S590C3_nt ::v96(){vfunc_called(this, "_ZN9S590C3_nt3v96Ev");}
void  S590C3_nt ::v97(){vfunc_called(this, "_ZN9S590C3_nt3v97Ev");}
void  S590C3_nt ::v98(){vfunc_called(this, "_ZN9S590C3_nt3v98Ev");}
void  S590C3_nt ::v99(){vfunc_called(this, "_ZN9S590C3_nt3v99Ev");}
void  S590C3_nt ::v100(){vfunc_called(this, "_ZN9S590C3_nt4v100Ev");}
void  S590C3_nt ::v101(){vfunc_called(this, "_ZN9S590C3_nt4v101Ev");}
void  S590C3_nt ::v102(){vfunc_called(this, "_ZN9S590C3_nt4v102Ev");}
void  S590C3_nt ::v103(){vfunc_called(this, "_ZN9S590C3_nt4v103Ev");}
void  S590C3_nt ::v104(){vfunc_called(this, "_ZN9S590C3_nt4v104Ev");}
void  S590C3_nt ::v105(){vfunc_called(this, "_ZN9S590C3_nt4v105Ev");}
void  S590C3_nt ::v106(){vfunc_called(this, "_ZN9S590C3_nt4v106Ev");}
void  S590C3_nt ::v107(){vfunc_called(this, "_ZN9S590C3_nt4v107Ev");}
void  S590C3_nt ::v108(){vfunc_called(this, "_ZN9S590C3_nt4v108Ev");}
void  S590C3_nt ::v109(){vfunc_called(this, "_ZN9S590C3_nt4v109Ev");}
S590C3_nt ::S590C3_nt(){ note_ctor("S590C3_nt", this);} // tgen

//skip512 S590C3_nt

#else // __cplusplus

extern void _ZN9S590C3_ntC1Ev();
extern void _ZN9S590C3_ntD1Ev();
Name_Map name_map_S590C3_nt[] = {
  NSPAIR(_ZN9S590C3_ntC1Ev),
  NSPAIR(_ZN9S590C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S590C5;
extern VTBL_ENTRY _ZTI6S590C5[];
extern  VTBL_ENTRY _ZTV6S590C5[];
extern Class_Descriptor cd_S590C4_nt;
extern VTBL_ENTRY _ZTI9S590C4_nt[];
extern  VTBL_ENTRY _ZTV9S590C4_nt[];
static Base_Class bases_S590C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S590C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S590C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI9S590C3_nt[];
extern void _ZN9S590C3_ntD1Ev();
extern void _ZN9S590C3_ntD0Ev();
extern void _ZN6S590C52v4Ev();
extern void _ZN6S590C52v5Ev();
extern void _ZN6S590C52v6Ev();
extern void _ZN6S590C52v7Ev();
extern void _ZN6S590C52v8Ev();
extern void _ZN6S590C52v9Ev();
extern void _ZN6S590C53v10Ev();
extern void _ZN6S590C53v11Ev();
extern void _ZN6S590C53v12Ev();
extern void _ZN6S590C53v13Ev();
extern void _ZN6S590C53v14Ev();
extern void _ZN6S590C53v15Ev();
extern void _ZN6S590C53v16Ev();
extern void _ZN6S590C53v17Ev();
extern void _ZN6S590C53v18Ev();
extern void _ZN6S590C53v19Ev();
extern void _ZN6S590C53v20Ev();
extern void _ZN6S590C53v21Ev();
extern void _ZN6S590C53v22Ev();
extern void _ZN6S590C53v23Ev();
extern void _ZN6S590C53v24Ev();
extern void _ZN6S590C53v25Ev();
extern void _ZN6S590C53v26Ev();
extern void _ZN6S590C53v27Ev();
extern void _ZN6S590C53v28Ev();
extern void _ZN6S590C53v29Ev();
extern void _ZN6S590C53v30Ev();
extern void _ZN6S590C53v31Ev();
extern void _ZN6S590C53v32Ev();
extern void _ZN6S590C53v33Ev();
extern void _ZN6S590C53v34Ev();
extern void _ZN6S590C53v35Ev();
extern void _ZN6S590C53v36Ev();
extern void _ZN6S590C53v37Ev();
extern void _ZN6S590C53v38Ev();
extern void _ZN6S590C53v39Ev();
extern void _ZN6S590C53v40Ev();
extern void _ZN6S590C53v41Ev();
extern void _ZN6S590C53v42Ev();
extern void _ZN6S590C53v43Ev();
extern void _ZN6S590C53v44Ev();
extern void _ZN6S590C53v45Ev();
extern void _ZN6S590C53v46Ev();
extern void _ZN6S590C53v47Ev();
extern void _ZN6S590C53v48Ev();
extern void _ZN6S590C53v49Ev();
extern void _ZN6S590C53v50Ev();
extern void _ZN6S590C53v51Ev();
extern void _ZN6S590C53v52Ev();
extern void _ZN6S590C53v53Ev();
extern void _ZN6S590C53v54Ev();
extern void _ZN6S590C53v55Ev();
extern void _ZN6S590C53v56Ev();
extern void _ZN6S590C53v57Ev();
extern void _ZN6S590C53v58Ev();
extern void _ZN6S590C53v59Ev();
extern void _ZN6S590C53v60Ev();
extern void _ZN6S590C53v61Ev();
extern void _ZN6S590C53v62Ev();
extern void _ZN6S590C53v63Ev();
extern void _ZN6S590C53v64Ev();
extern void _ZN6S590C53v65Ev();
extern void _ZN6S590C53v66Ev();
extern void _ZN6S590C53v67Ev();
extern void _ZN9S590C4_nt3v68Ev();
extern void _ZN9S590C4_nt3v69Ev();
extern void _ZN9S590C4_nt3v70Ev();
extern void _ZN9S590C4_nt3v71Ev();
extern void _ZN9S590C4_nt3v72Ev();
extern void _ZN9S590C4_nt3v73Ev();
extern void _ZN9S590C4_nt3v74Ev();
extern void _ZN9S590C4_nt3v75Ev();
extern void _ZN9S590C4_nt3v76Ev();
extern void _ZN9S590C4_nt3v77Ev();
extern void _ZN9S590C4_nt3v78Ev();
extern void _ZN9S590C4_nt3v79Ev();
extern void _ZN9S590C4_nt3v80Ev();
extern void _ZN9S590C4_nt3v81Ev();
extern void _ZN9S590C4_nt3v82Ev();
extern void _ZN9S590C4_nt3v83Ev();
extern void _ZN9S590C4_nt3v84Ev();
extern void _ZN9S590C4_nt3v85Ev();
extern void _ZN9S590C4_nt3v86Ev();
extern void _ZN9S590C4_nt3v87Ev();
extern void _ZN9S590C4_nt3v88Ev();
extern void _ZN9S590C4_nt3v89Ev();
extern void _ZN9S590C3_nt3v90Ev();
extern void _ZN9S590C3_nt3v91Ev();
extern void _ZN9S590C3_nt3v92Ev();
extern void _ZN9S590C3_nt3v93Ev();
extern void _ZN9S590C3_nt3v94Ev();
extern void _ZN9S590C3_nt3v95Ev();
extern void _ZN9S590C3_nt3v96Ev();
extern void _ZN9S590C3_nt3v97Ev();
extern void _ZN9S590C3_nt3v98Ev();
extern void _ZN9S590C3_nt3v99Ev();
extern void _ZN9S590C3_nt4v100Ev();
extern void _ZN9S590C3_nt4v101Ev();
extern void _ZN9S590C3_nt4v102Ev();
extern void _ZN9S590C3_nt4v103Ev();
extern void _ZN9S590C3_nt4v104Ev();
extern void _ZN9S590C3_nt4v105Ev();
extern void _ZN9S590C3_nt4v106Ev();
extern void _ZN9S590C3_nt4v107Ev();
extern void _ZN9S590C3_nt4v108Ev();
extern void _ZN9S590C3_nt4v109Ev();
static  VTBL_ENTRY vtc_S590C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S590C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S590C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S590C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S590C52v4Ev,
  (VTBL_ENTRY)&_ZN6S590C52v5Ev,
  (VTBL_ENTRY)&_ZN6S590C52v6Ev,
  (VTBL_ENTRY)&_ZN6S590C52v7Ev,
  (VTBL_ENTRY)&_ZN6S590C52v8Ev,
  (VTBL_ENTRY)&_ZN6S590C52v9Ev,
  (VTBL_ENTRY)&_ZN6S590C53v10Ev,
  (VTBL_ENTRY)&_ZN6S590C53v11Ev,
  (VTBL_ENTRY)&_ZN6S590C53v12Ev,
  (VTBL_ENTRY)&_ZN6S590C53v13Ev,
  (VTBL_ENTRY)&_ZN6S590C53v14Ev,
  (VTBL_ENTRY)&_ZN6S590C53v15Ev,
  (VTBL_ENTRY)&_ZN6S590C53v16Ev,
  (VTBL_ENTRY)&_ZN6S590C53v17Ev,
  (VTBL_ENTRY)&_ZN6S590C53v18Ev,
  (VTBL_ENTRY)&_ZN6S590C53v19Ev,
  (VTBL_ENTRY)&_ZN6S590C53v20Ev,
  (VTBL_ENTRY)&_ZN6S590C53v21Ev,
  (VTBL_ENTRY)&_ZN6S590C53v22Ev,
  (VTBL_ENTRY)&_ZN6S590C53v23Ev,
  (VTBL_ENTRY)&_ZN6S590C53v24Ev,
  (VTBL_ENTRY)&_ZN6S590C53v25Ev,
  (VTBL_ENTRY)&_ZN6S590C53v26Ev,
  (VTBL_ENTRY)&_ZN6S590C53v27Ev,
  (VTBL_ENTRY)&_ZN6S590C53v28Ev,
  (VTBL_ENTRY)&_ZN6S590C53v29Ev,
  (VTBL_ENTRY)&_ZN6S590C53v30Ev,
  (VTBL_ENTRY)&_ZN6S590C53v31Ev,
  (VTBL_ENTRY)&_ZN6S590C53v32Ev,
  (VTBL_ENTRY)&_ZN6S590C53v33Ev,
  (VTBL_ENTRY)&_ZN6S590C53v34Ev,
  (VTBL_ENTRY)&_ZN6S590C53v35Ev,
  (VTBL_ENTRY)&_ZN6S590C53v36Ev,
  (VTBL_ENTRY)&_ZN6S590C53v37Ev,
  (VTBL_ENTRY)&_ZN6S590C53v38Ev,
  (VTBL_ENTRY)&_ZN6S590C53v39Ev,
  (VTBL_ENTRY)&_ZN6S590C53v40Ev,
  (VTBL_ENTRY)&_ZN6S590C53v41Ev,
  (VTBL_ENTRY)&_ZN6S590C53v42Ev,
  (VTBL_ENTRY)&_ZN6S590C53v43Ev,
  (VTBL_ENTRY)&_ZN6S590C53v44Ev,
  (VTBL_ENTRY)&_ZN6S590C53v45Ev,
  (VTBL_ENTRY)&_ZN6S590C53v46Ev,
  (VTBL_ENTRY)&_ZN6S590C53v47Ev,
  (VTBL_ENTRY)&_ZN6S590C53v48Ev,
  (VTBL_ENTRY)&_ZN6S590C53v49Ev,
  (VTBL_ENTRY)&_ZN6S590C53v50Ev,
  (VTBL_ENTRY)&_ZN6S590C53v51Ev,
  (VTBL_ENTRY)&_ZN6S590C53v52Ev,
  (VTBL_ENTRY)&_ZN6S590C53v53Ev,
  (VTBL_ENTRY)&_ZN6S590C53v54Ev,
  (VTBL_ENTRY)&_ZN6S590C53v55Ev,
  (VTBL_ENTRY)&_ZN6S590C53v56Ev,
  (VTBL_ENTRY)&_ZN6S590C53v57Ev,
  (VTBL_ENTRY)&_ZN6S590C53v58Ev,
  (VTBL_ENTRY)&_ZN6S590C53v59Ev,
  (VTBL_ENTRY)&_ZN6S590C53v60Ev,
  (VTBL_ENTRY)&_ZN6S590C53v61Ev,
  (VTBL_ENTRY)&_ZN6S590C53v62Ev,
  (VTBL_ENTRY)&_ZN6S590C53v63Ev,
  (VTBL_ENTRY)&_ZN6S590C53v64Ev,
  (VTBL_ENTRY)&_ZN6S590C53v65Ev,
  (VTBL_ENTRY)&_ZN6S590C53v66Ev,
  (VTBL_ENTRY)&_ZN6S590C53v67Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI9S590C3_nt[];
VTBL_ENTRY *P__ZTI9S590C3_nt = _ZTI9S590C3_nt; 
extern  VTBL_ENTRY _ZTV9S590C3_nt[];
Class_Descriptor cd_S590C3_nt = {  "S590C3_nt", // class name
  bases_S590C3_nt, 2,
  &(vtc_S590C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S590C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S590C3_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  S590C2_nt  : S590C3_nt {
  void *s590c2f0[2];
  int s590c2f1[4];
  unsigned int s590c2f2:1;
  unsigned int s590c2f3:1;
  unsigned int s590c2f4:1;
  char s590c2f5;
  int s590c2f6;
  unsigned int s590c2f7:1;
  ::S1538C6_nt s590c2f8;
  virtual  ~S590C2_nt(); // _ZN9S590C2_ntD1Ev
  virtual void  v110(); // _ZN9S590C2_nt4v110Ev
  virtual void  v111(); // _ZN9S590C2_nt4v111Ev
  virtual void  v112(); // _ZN9S590C2_nt4v112Ev
  virtual void  v113(); // _ZN9S590C2_nt4v113Ev
  virtual void  v114(); // _ZN9S590C2_nt4v114Ev
  virtual void  v115(); // _ZN9S590C2_nt4v115Ev
  virtual void  v116(); // _ZN9S590C2_nt4v116Ev
  virtual void  v117(); // _ZN9S590C2_nt4v117Ev
  virtual void  v118(); // _ZN9S590C2_nt4v118Ev
  virtual void  v119(); // _ZN9S590C2_nt4v119Ev
  virtual void  v120(); // _ZN9S590C2_nt4v120Ev
  virtual void  v121(); // _ZN9S590C2_nt4v121Ev
  virtual void  v122(); // _ZN9S590C2_nt4v122Ev
  virtual void  v123(); // _ZN9S590C2_nt4v123Ev
  S590C2_nt(); // tgen
};
//SIG(-1 S590C2_nt) C1{ BC2{ BC3{ BC4{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 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 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 Fi:1 Fi:1 Fi:1 FC7 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} Fi[3]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2] Fi[4] Fi:1 Fi:1 Fi:1 Fc Fi Fi:1 FC17{ BC18{ BC9}}}


 S590C2_nt ::~S590C2_nt(){ note_dtor("S590C2_nt", this);}
void  S590C2_nt ::v110(){vfunc_called(this, "_ZN9S590C2_nt4v110Ev");}
void  S590C2_nt ::v111(){vfunc_called(this, "_ZN9S590C2_nt4v111Ev");}
void  S590C2_nt ::v112(){vfunc_called(this, "_ZN9S590C2_nt4v112Ev");}
void  S590C2_nt ::v113(){vfunc_called(this, "_ZN9S590C2_nt4v113Ev");}
void  S590C2_nt ::v114(){vfunc_called(this, "_ZN9S590C2_nt4v114Ev");}
void  S590C2_nt ::v115(){vfunc_called(this, "_ZN9S590C2_nt4v115Ev");}
void  S590C2_nt ::v116(){vfunc_called(this, "_ZN9S590C2_nt4v116Ev");}
void  S590C2_nt ::v117(){vfunc_called(this, "_ZN9S590C2_nt4v117Ev");}
void  S590C2_nt ::v118(){vfunc_called(this, "_ZN9S590C2_nt4v118Ev");}
void  S590C2_nt ::v119(){vfunc_called(this, "_ZN9S590C2_nt4v119Ev");}
void  S590C2_nt ::v120(){vfunc_called(this, "_ZN9S590C2_nt4v120Ev");}
void  S590C2_nt ::v121(){vfunc_called(this, "_ZN9S590C2_nt4v121Ev");}
void  S590C2_nt ::v122(){vfunc_called(this, "_ZN9S590C2_nt4v122Ev");}
void  S590C2_nt ::v123(){vfunc_called(this, "_ZN9S590C2_nt4v123Ev");}
S590C2_nt ::S590C2_nt(){ note_ctor("S590C2_nt", this);} // tgen

//skip512 S590C2_nt

#else // __cplusplus

extern void _ZN9S590C2_ntC1Ev();
extern void _ZN9S590C2_ntD1Ev();
Name_Map name_map_S590C2_nt[] = {
  NSPAIR(_ZN9S590C2_ntC1Ev),
  NSPAIR(_ZN9S590C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S590C5;
extern VTBL_ENTRY _ZTI6S590C5[];
extern  VTBL_ENTRY _ZTV6S590C5[];
extern Class_Descriptor cd_S590C4_nt;
extern VTBL_ENTRY _ZTI9S590C4_nt[];
extern  VTBL_ENTRY _ZTV9S590C4_nt[];
extern Class_Descriptor cd_S590C3_nt;
extern VTBL_ENTRY _ZTI9S590C3_nt[];
extern  VTBL_ENTRY _ZTV9S590C3_nt[];
static Base_Class bases_S590C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S590C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S590C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S590C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S590C2_nt[];
extern void _ZN9S590C2_ntD1Ev();
extern void _ZN9S590C2_ntD0Ev();
extern void _ZN6S590C52v4Ev();
extern void _ZN6S590C52v5Ev();
extern void _ZN6S590C52v6Ev();
extern void _ZN6S590C52v7Ev();
extern void _ZN6S590C52v8Ev();
extern void _ZN6S590C52v9Ev();
extern void _ZN6S590C53v10Ev();
extern void _ZN6S590C53v11Ev();
extern void _ZN6S590C53v12Ev();
extern void _ZN6S590C53v13Ev();
extern void _ZN6S590C53v14Ev();
extern void _ZN6S590C53v15Ev();
extern void _ZN6S590C53v16Ev();
extern void _ZN6S590C53v17Ev();
extern void _ZN6S590C53v18Ev();
extern void _ZN6S590C53v19Ev();
extern void _ZN6S590C53v20Ev();
extern void _ZN6S590C53v21Ev();
extern void _ZN6S590C53v22Ev();
extern void _ZN6S590C53v23Ev();
extern void _ZN6S590C53v24Ev();
extern void _ZN6S590C53v25Ev();
extern void _ZN6S590C53v26Ev();
extern void _ZN6S590C53v27Ev();
extern void _ZN6S590C53v28Ev();
extern void _ZN6S590C53v29Ev();
extern void _ZN6S590C53v30Ev();
extern void _ZN6S590C53v31Ev();
extern void _ZN6S590C53v32Ev();
extern void _ZN6S590C53v33Ev();
extern void _ZN6S590C53v34Ev();
extern void _ZN6S590C53v35Ev();
extern void _ZN6S590C53v36Ev();
extern void _ZN6S590C53v37Ev();
extern void _ZN6S590C53v38Ev();
extern void _ZN6S590C53v39Ev();
extern void _ZN6S590C53v40Ev();
extern void _ZN6S590C53v41Ev();
extern void _ZN6S590C53v42Ev();
extern void _ZN6S590C53v43Ev();
extern void _ZN6S590C53v44Ev();
extern void _ZN6S590C53v45Ev();
extern void _ZN6S590C53v46Ev();
extern void _ZN6S590C53v47Ev();
extern void _ZN6S590C53v48Ev();
extern void _ZN6S590C53v49Ev();
extern void _ZN6S590C53v50Ev();
extern void _ZN6S590C53v51Ev();
extern void _ZN6S590C53v52Ev();
extern void _ZN6S590C53v53Ev();
extern void _ZN6S590C53v54Ev();
extern void _ZN6S590C53v55Ev();
extern void _ZN6S590C53v56Ev();
extern void _ZN6S590C53v57Ev();
extern void _ZN6S590C53v58Ev();
extern void _ZN6S590C53v59Ev();
extern void _ZN6S590C53v60Ev();
extern void _ZN6S590C53v61Ev();
extern void _ZN6S590C53v62Ev();
extern void _ZN6S590C53v63Ev();
extern void _ZN6S590C53v64Ev();
extern void _ZN6S590C53v65Ev();
extern void _ZN6S590C53v66Ev();
extern void _ZN6S590C53v67Ev();
extern void _ZN9S590C4_nt3v68Ev();
extern void _ZN9S590C4_nt3v69Ev();
extern void _ZN9S590C4_nt3v70Ev();
extern void _ZN9S590C4_nt3v71Ev();
extern void _ZN9S590C4_nt3v72Ev();
extern void _ZN9S590C4_nt3v73Ev();
extern void _ZN9S590C4_nt3v74Ev();
extern void _ZN9S590C4_nt3v75Ev();
extern void _ZN9S590C4_nt3v76Ev();
extern void _ZN9S590C4_nt3v77Ev();
extern void _ZN9S590C4_nt3v78Ev();
extern void _ZN9S590C4_nt3v79Ev();
extern void _ZN9S590C4_nt3v80Ev();
extern void _ZN9S590C4_nt3v81Ev();
extern void _ZN9S590C4_nt3v82Ev();
extern void _ZN9S590C4_nt3v83Ev();
extern void _ZN9S590C4_nt3v84Ev();
extern void _ZN9S590C4_nt3v85Ev();
extern void _ZN9S590C4_nt3v86Ev();
extern void _ZN9S590C4_nt3v87Ev();
extern void _ZN9S590C4_nt3v88Ev();
extern void _ZN9S590C4_nt3v89Ev();
extern void _ZN9S590C3_nt3v90Ev();
extern void _ZN9S590C3_nt3v91Ev();
extern void _ZN9S590C3_nt3v92Ev();
extern void _ZN9S590C3_nt3v93Ev();
extern void _ZN9S590C3_nt3v94Ev();
extern void _ZN9S590C3_nt3v95Ev();
extern void _ZN9S590C3_nt3v96Ev();
extern void _ZN9S590C3_nt3v97Ev();
extern void _ZN9S590C3_nt3v98Ev();
extern void _ZN9S590C3_nt3v99Ev();
extern void _ZN9S590C3_nt4v100Ev();
extern void _ZN9S590C3_nt4v101Ev();
extern void _ZN9S590C3_nt4v102Ev();
extern void _ZN9S590C3_nt4v103Ev();
extern void _ZN9S590C3_nt4v104Ev();
extern void _ZN9S590C3_nt4v105Ev();
extern void _ZN9S590C3_nt4v106Ev();
extern void _ZN9S590C3_nt4v107Ev();
extern void _ZN9S590C3_nt4v108Ev();
extern void _ZN9S590C3_nt4v109Ev();
extern void _ZN9S590C2_nt4v110Ev();
extern void _ZN9S590C2_nt4v111Ev();
extern void _ZN9S590C2_nt4v112Ev();
extern void _ZN9S590C2_nt4v113Ev();
extern void _ZN9S590C2_nt4v114Ev();
extern void _ZN9S590C2_nt4v115Ev();
extern void _ZN9S590C2_nt4v116Ev();
extern void _ZN9S590C2_nt4v117Ev();
extern void _ZN9S590C2_nt4v118Ev();
extern void _ZN9S590C2_nt4v119Ev();
extern void _ZN9S590C2_nt4v120Ev();
extern void _ZN9S590C2_nt4v121Ev();
extern void _ZN9S590C2_nt4v122Ev();
extern void _ZN9S590C2_nt4v123Ev();
static  VTBL_ENTRY vtc_S590C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S590C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S590C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S590C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S590C52v4Ev,
  (VTBL_ENTRY)&_ZN6S590C52v5Ev,
  (VTBL_ENTRY)&_ZN6S590C52v6Ev,
  (VTBL_ENTRY)&_ZN6S590C52v7Ev,
  (VTBL_ENTRY)&_ZN6S590C52v8Ev,
  (VTBL_ENTRY)&_ZN6S590C52v9Ev,
  (VTBL_ENTRY)&_ZN6S590C53v10Ev,
  (VTBL_ENTRY)&_ZN6S590C53v11Ev,
  (VTBL_ENTRY)&_ZN6S590C53v12Ev,
  (VTBL_ENTRY)&_ZN6S590C53v13Ev,
  (VTBL_ENTRY)&_ZN6S590C53v14Ev,
  (VTBL_ENTRY)&_ZN6S590C53v15Ev,
  (VTBL_ENTRY)&_ZN6S590C53v16Ev,
  (VTBL_ENTRY)&_ZN6S590C53v17Ev,
  (VTBL_ENTRY)&_ZN6S590C53v18Ev,
  (VTBL_ENTRY)&_ZN6S590C53v19Ev,
  (VTBL_ENTRY)&_ZN6S590C53v20Ev,
  (VTBL_ENTRY)&_ZN6S590C53v21Ev,
  (VTBL_ENTRY)&_ZN6S590C53v22Ev,
  (VTBL_ENTRY)&_ZN6S590C53v23Ev,
  (VTBL_ENTRY)&_ZN6S590C53v24Ev,
  (VTBL_ENTRY)&_ZN6S590C53v25Ev,
  (VTBL_ENTRY)&_ZN6S590C53v26Ev,
  (VTBL_ENTRY)&_ZN6S590C53v27Ev,
  (VTBL_ENTRY)&_ZN6S590C53v28Ev,
  (VTBL_ENTRY)&_ZN6S590C53v29Ev,
  (VTBL_ENTRY)&_ZN6S590C53v30Ev,
  (VTBL_ENTRY)&_ZN6S590C53v31Ev,
  (VTBL_ENTRY)&_ZN6S590C53v32Ev,
  (VTBL_ENTRY)&_ZN6S590C53v33Ev,
  (VTBL_ENTRY)&_ZN6S590C53v34Ev,
  (VTBL_ENTRY)&_ZN6S590C53v35Ev,
  (VTBL_ENTRY)&_ZN6S590C53v36Ev,
  (VTBL_ENTRY)&_ZN6S590C53v37Ev,
  (VTBL_ENTRY)&_ZN6S590C53v38Ev,
  (VTBL_ENTRY)&_ZN6S590C53v39Ev,
  (VTBL_ENTRY)&_ZN6S590C53v40Ev,
  (VTBL_ENTRY)&_ZN6S590C53v41Ev,
  (VTBL_ENTRY)&_ZN6S590C53v42Ev,
  (VTBL_ENTRY)&_ZN6S590C53v43Ev,
  (VTBL_ENTRY)&_ZN6S590C53v44Ev,
  (VTBL_ENTRY)&_ZN6S590C53v45Ev,
  (VTBL_ENTRY)&_ZN6S590C53v46Ev,
  (VTBL_ENTRY)&_ZN6S590C53v47Ev,
  (VTBL_ENTRY)&_ZN6S590C53v48Ev,
  (VTBL_ENTRY)&_ZN6S590C53v49Ev,
  (VTBL_ENTRY)&_ZN6S590C53v50Ev,
  (VTBL_ENTRY)&_ZN6S590C53v51Ev,
  (VTBL_ENTRY)&_ZN6S590C53v52Ev,
  (VTBL_ENTRY)&_ZN6S590C53v53Ev,
  (VTBL_ENTRY)&_ZN6S590C53v54Ev,
  (VTBL_ENTRY)&_ZN6S590C53v55Ev,
  (VTBL_ENTRY)&_ZN6S590C53v56Ev,
  (VTBL_ENTRY)&_ZN6S590C53v57Ev,
  (VTBL_ENTRY)&_ZN6S590C53v58Ev,
  (VTBL_ENTRY)&_ZN6S590C53v59Ev,
  (VTBL_ENTRY)&_ZN6S590C53v60Ev,
  (VTBL_ENTRY)&_ZN6S590C53v61Ev,
  (VTBL_ENTRY)&_ZN6S590C53v62Ev,
  (VTBL_ENTRY)&_ZN6S590C53v63Ev,
  (VTBL_ENTRY)&_ZN6S590C53v64Ev,
  (VTBL_ENTRY)&_ZN6S590C53v65Ev,
  (VTBL_ENTRY)&_ZN6S590C53v66Ev,
  (VTBL_ENTRY)&_ZN6S590C53v67Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v123Ev,
};
extern VTBL_ENTRY _ZTI9S590C2_nt[];
VTBL_ENTRY *P__ZTI9S590C2_nt = _ZTI9S590C2_nt; 
extern  VTBL_ENTRY _ZTV9S590C2_nt[];
Class_Descriptor cd_S590C2_nt = {  "S590C2_nt", // class name
  bases_S590C2_nt, 3,
  &(vtc_S590C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(336,244), // object size
  NSPAIRA(_ZTI9S590C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S590C2_nt),124, //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  S590C1  : S590C2_nt {
  unsigned int s590c1f0:1;
  int s590c1f1;
  ::S1538C29_nt s590c1f2;
  void *s590c1f3;
  virtual  ~S590C1(); // _ZN6S590C1D1Ev
  virtual void  v1(); // _ZN6S590C12v1Ev
  virtual void  v2(); // _ZN6S590C12v2Ev
  virtual void  v3(); // _ZN6S590C12v3Ev
  S590C1(); // tgen
};
//SIG(1 S590C1) 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 FC8 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} Fi[3]} vd v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 Fp[2] Fi[4] Fi:1 Fi:1 Fi:1 Fc Fi Fi:1 FC18{ BC19{ BC10}}} vd v1 v2 v3 Fi:1 Fi FC7 Fp}


 S590C1 ::~S590C1(){ note_dtor("S590C1", this);}
void  S590C1 ::v1(){vfunc_called(this, "_ZN6S590C12v1Ev");}
void  S590C1 ::v2(){vfunc_called(this, "_ZN6S590C12v2Ev");}
void  S590C1 ::v3(){vfunc_called(this, "_ZN6S590C12v3Ev");}
S590C1 ::S590C1(){ note_ctor("S590C1", this);} // tgen

static void Test_S590C1()
{
  extern Class_Descriptor cd_S590C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,68)];
    init_test(&cd_S590C1, buf);
    S590C1 *dp, &lv = *(dp=new (buf) S590C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,268), "sizeof(S590C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S590C1)");
    check_base_class_offset(lv, (S590C5*)(S590C4_nt*)(S590C3_nt*)(S590C2_nt*), 0, "S590C1");
    check_base_class_offset(lv, (S590C4_nt*)(S590C3_nt*)(S590C2_nt*), 0, "S590C1");
    check_base_class_offset(lv, (S590C3_nt*)(S590C2_nt*), 0, "S590C1");
    check_base_class_offset(lv, (S590C2_nt*), 0, "S590C1");
    set_bf_and_test(lv, s590c1f0, ABISELECT(336,244), 0, 1, 1, "S590C1");
    check_field_offset(lv, s590c1f1, ABISELECT(340,248), "S590C1.s590c1f1");
    check_field_offset(lv, s590c1f2, ABISELECT(344,252), "S590C1.s590c1f2");
    check_field_offset(lv, s590c1f3, ABISELECT(360,264), "S590C1.s590c1f3");
    test_class_info(&lv, &cd_S590C1);
    dp->~S590C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS590C1(Test_S590C1, "S590C1", ABISELECT(368,268));

#else // __cplusplus

extern void _ZN6S590C1C1Ev();
extern void _ZN6S590C1D1Ev();
Name_Map name_map_S590C1[] = {
  NSPAIR(_ZN6S590C1C1Ev),
  NSPAIR(_ZN6S590C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S590C5;
extern VTBL_ENTRY _ZTI6S590C5[];
extern  VTBL_ENTRY _ZTV6S590C5[];
extern Class_Descriptor cd_S590C4_nt;
extern VTBL_ENTRY _ZTI9S590C4_nt[];
extern  VTBL_ENTRY _ZTV9S590C4_nt[];
extern Class_Descriptor cd_S590C3_nt;
extern VTBL_ENTRY _ZTI9S590C3_nt[];
extern  VTBL_ENTRY _ZTV9S590C3_nt[];
extern Class_Descriptor cd_S590C2_nt;
extern VTBL_ENTRY _ZTI9S590C2_nt[];
extern  VTBL_ENTRY _ZTV9S590C2_nt[];
static Base_Class bases_S590C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S590C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S590C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S590C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S590C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S590C1[];
extern void _ZN6S590C1D1Ev();
extern void _ZN6S590C1D0Ev();
extern void _ZN6S590C52v4Ev();
extern void _ZN6S590C52v5Ev();
extern void _ZN6S590C52v6Ev();
extern void _ZN6S590C52v7Ev();
extern void _ZN6S590C52v8Ev();
extern void _ZN6S590C52v9Ev();
extern void _ZN6S590C53v10Ev();
extern void _ZN6S590C53v11Ev();
extern void _ZN6S590C53v12Ev();
extern void _ZN6S590C53v13Ev();
extern void _ZN6S590C53v14Ev();
extern void _ZN6S590C53v15Ev();
extern void _ZN6S590C53v16Ev();
extern void _ZN6S590C53v17Ev();
extern void _ZN6S590C53v18Ev();
extern void _ZN6S590C53v19Ev();
extern void _ZN6S590C53v20Ev();
extern void _ZN6S590C53v21Ev();
extern void _ZN6S590C53v22Ev();
extern void _ZN6S590C53v23Ev();
extern void _ZN6S590C53v24Ev();
extern void _ZN6S590C53v25Ev();
extern void _ZN6S590C53v26Ev();
extern void _ZN6S590C53v27Ev();
extern void _ZN6S590C53v28Ev();
extern void _ZN6S590C53v29Ev();
extern void _ZN6S590C53v30Ev();
extern void _ZN6S590C53v31Ev();
extern void _ZN6S590C53v32Ev();
extern void _ZN6S590C53v33Ev();
extern void _ZN6S590C53v34Ev();
extern void _ZN6S590C53v35Ev();
extern void _ZN6S590C53v36Ev();
extern void _ZN6S590C53v37Ev();
extern void _ZN6S590C53v38Ev();
extern void _ZN6S590C53v39Ev();
extern void _ZN6S590C53v40Ev();
extern void _ZN6S590C53v41Ev();
extern void _ZN6S590C53v42Ev();
extern void _ZN6S590C53v43Ev();
extern void _ZN6S590C53v44Ev();
extern void _ZN6S590C53v45Ev();
extern void _ZN6S590C53v46Ev();
extern void _ZN6S590C53v47Ev();
extern void _ZN6S590C53v48Ev();
extern void _ZN6S590C53v49Ev();
extern void _ZN6S590C53v50Ev();
extern void _ZN6S590C53v51Ev();
extern void _ZN6S590C53v52Ev();
extern void _ZN6S590C53v53Ev();
extern void _ZN6S590C53v54Ev();
extern void _ZN6S590C53v55Ev();
extern void _ZN6S590C53v56Ev();
extern void _ZN6S590C53v57Ev();
extern void _ZN6S590C53v58Ev();
extern void _ZN6S590C53v59Ev();
extern void _ZN6S590C53v60Ev();
extern void _ZN6S590C53v61Ev();
extern void _ZN6S590C53v62Ev();
extern void _ZN6S590C53v63Ev();
extern void _ZN6S590C53v64Ev();
extern void _ZN6S590C53v65Ev();
extern void _ZN6S590C53v66Ev();
extern void _ZN6S590C53v67Ev();
extern void _ZN9S590C4_nt3v68Ev();
extern void _ZN9S590C4_nt3v69Ev();
extern void _ZN9S590C4_nt3v70Ev();
extern void _ZN9S590C4_nt3v71Ev();
extern void _ZN9S590C4_nt3v72Ev();
extern void _ZN9S590C4_nt3v73Ev();
extern void _ZN9S590C4_nt3v74Ev();
extern void _ZN9S590C4_nt3v75Ev();
extern void _ZN9S590C4_nt3v76Ev();
extern void _ZN9S590C4_nt3v77Ev();
extern void _ZN9S590C4_nt3v78Ev();
extern void _ZN9S590C4_nt3v79Ev();
extern void _ZN9S590C4_nt3v80Ev();
extern void _ZN9S590C4_nt3v81Ev();
extern void _ZN9S590C4_nt3v82Ev();
extern void _ZN9S590C4_nt3v83Ev();
extern void _ZN9S590C4_nt3v84Ev();
extern void _ZN9S590C4_nt3v85Ev();
extern void _ZN9S590C4_nt3v86Ev();
extern void _ZN9S590C4_nt3v87Ev();
extern void _ZN9S590C4_nt3v88Ev();
extern void _ZN9S590C4_nt3v89Ev();
extern void _ZN9S590C3_nt3v90Ev();
extern void _ZN9S590C3_nt3v91Ev();
extern void _ZN9S590C3_nt3v92Ev();
extern void _ZN9S590C3_nt3v93Ev();
extern void _ZN9S590C3_nt3v94Ev();
extern void _ZN9S590C3_nt3v95Ev();
extern void _ZN9S590C3_nt3v96Ev();
extern void _ZN9S590C3_nt3v97Ev();
extern void _ZN9S590C3_nt3v98Ev();
extern void _ZN9S590C3_nt3v99Ev();
extern void _ZN9S590C3_nt4v100Ev();
extern void _ZN9S590C3_nt4v101Ev();
extern void _ZN9S590C3_nt4v102Ev();
extern void _ZN9S590C3_nt4v103Ev();
extern void _ZN9S590C3_nt4v104Ev();
extern void _ZN9S590C3_nt4v105Ev();
extern void _ZN9S590C3_nt4v106Ev();
extern void _ZN9S590C3_nt4v107Ev();
extern void _ZN9S590C3_nt4v108Ev();
extern void _ZN9S590C3_nt4v109Ev();
extern void _ZN9S590C2_nt4v110Ev();
extern void _ZN9S590C2_nt4v111Ev();
extern void _ZN9S590C2_nt4v112Ev();
extern void _ZN9S590C2_nt4v113Ev();
extern void _ZN9S590C2_nt4v114Ev();
extern void _ZN9S590C2_nt4v115Ev();
extern void _ZN9S590C2_nt4v116Ev();
extern void _ZN9S590C2_nt4v117Ev();
extern void _ZN9S590C2_nt4v118Ev();
extern void _ZN9S590C2_nt4v119Ev();
extern void _ZN9S590C2_nt4v120Ev();
extern void _ZN9S590C2_nt4v121Ev();
extern void _ZN9S590C2_nt4v122Ev();
extern void _ZN9S590C2_nt4v123Ev();
extern void _ZN6S590C12v1Ev();
extern void _ZN6S590C12v2Ev();
extern void _ZN6S590C12v3Ev();
static  VTBL_ENTRY vtc_S590C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S590C1[0]),
  (VTBL_ENTRY)&_ZN6S590C1D1Ev,
  (VTBL_ENTRY)&_ZN6S590C1D0Ev,
  (VTBL_ENTRY)&_ZN6S590C52v4Ev,
  (VTBL_ENTRY)&_ZN6S590C52v5Ev,
  (VTBL_ENTRY)&_ZN6S590C52v6Ev,
  (VTBL_ENTRY)&_ZN6S590C52v7Ev,
  (VTBL_ENTRY)&_ZN6S590C52v8Ev,
  (VTBL_ENTRY)&_ZN6S590C52v9Ev,
  (VTBL_ENTRY)&_ZN6S590C53v10Ev,
  (VTBL_ENTRY)&_ZN6S590C53v11Ev,
  (VTBL_ENTRY)&_ZN6S590C53v12Ev,
  (VTBL_ENTRY)&_ZN6S590C53v13Ev,
  (VTBL_ENTRY)&_ZN6S590C53v14Ev,
  (VTBL_ENTRY)&_ZN6S590C53v15Ev,
  (VTBL_ENTRY)&_ZN6S590C53v16Ev,
  (VTBL_ENTRY)&_ZN6S590C53v17Ev,
  (VTBL_ENTRY)&_ZN6S590C53v18Ev,
  (VTBL_ENTRY)&_ZN6S590C53v19Ev,
  (VTBL_ENTRY)&_ZN6S590C53v20Ev,
  (VTBL_ENTRY)&_ZN6S590C53v21Ev,
  (VTBL_ENTRY)&_ZN6S590C53v22Ev,
  (VTBL_ENTRY)&_ZN6S590C53v23Ev,
  (VTBL_ENTRY)&_ZN6S590C53v24Ev,
  (VTBL_ENTRY)&_ZN6S590C53v25Ev,
  (VTBL_ENTRY)&_ZN6S590C53v26Ev,
  (VTBL_ENTRY)&_ZN6S590C53v27Ev,
  (VTBL_ENTRY)&_ZN6S590C53v28Ev,
  (VTBL_ENTRY)&_ZN6S590C53v29Ev,
  (VTBL_ENTRY)&_ZN6S590C53v30Ev,
  (VTBL_ENTRY)&_ZN6S590C53v31Ev,
  (VTBL_ENTRY)&_ZN6S590C53v32Ev,
  (VTBL_ENTRY)&_ZN6S590C53v33Ev,
  (VTBL_ENTRY)&_ZN6S590C53v34Ev,
  (VTBL_ENTRY)&_ZN6S590C53v35Ev,
  (VTBL_ENTRY)&_ZN6S590C53v36Ev,
  (VTBL_ENTRY)&_ZN6S590C53v37Ev,
  (VTBL_ENTRY)&_ZN6S590C53v38Ev,
  (VTBL_ENTRY)&_ZN6S590C53v39Ev,
  (VTBL_ENTRY)&_ZN6S590C53v40Ev,
  (VTBL_ENTRY)&_ZN6S590C53v41Ev,
  (VTBL_ENTRY)&_ZN6S590C53v42Ev,
  (VTBL_ENTRY)&_ZN6S590C53v43Ev,
  (VTBL_ENTRY)&_ZN6S590C53v44Ev,
  (VTBL_ENTRY)&_ZN6S590C53v45Ev,
  (VTBL_ENTRY)&_ZN6S590C53v46Ev,
  (VTBL_ENTRY)&_ZN6S590C53v47Ev,
  (VTBL_ENTRY)&_ZN6S590C53v48Ev,
  (VTBL_ENTRY)&_ZN6S590C53v49Ev,
  (VTBL_ENTRY)&_ZN6S590C53v50Ev,
  (VTBL_ENTRY)&_ZN6S590C53v51Ev,
  (VTBL_ENTRY)&_ZN6S590C53v52Ev,
  (VTBL_ENTRY)&_ZN6S590C53v53Ev,
  (VTBL_ENTRY)&_ZN6S590C53v54Ev,
  (VTBL_ENTRY)&_ZN6S590C53v55Ev,
  (VTBL_ENTRY)&_ZN6S590C53v56Ev,
  (VTBL_ENTRY)&_ZN6S590C53v57Ev,
  (VTBL_ENTRY)&_ZN6S590C53v58Ev,
  (VTBL_ENTRY)&_ZN6S590C53v59Ev,
  (VTBL_ENTRY)&_ZN6S590C53v60Ev,
  (VTBL_ENTRY)&_ZN6S590C53v61Ev,
  (VTBL_ENTRY)&_ZN6S590C53v62Ev,
  (VTBL_ENTRY)&_ZN6S590C53v63Ev,
  (VTBL_ENTRY)&_ZN6S590C53v64Ev,
  (VTBL_ENTRY)&_ZN6S590C53v65Ev,
  (VTBL_ENTRY)&_ZN6S590C53v66Ev,
  (VTBL_ENTRY)&_ZN6S590C53v67Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S590C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S590C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN9S590C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN6S590C12v1Ev,
  (VTBL_ENTRY)&_ZN6S590C12v2Ev,
  (VTBL_ENTRY)&_ZN6S590C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S590C1[];
extern  VTBL_ENTRY _ZTV6S590C1[];
Class_Descriptor cd_S590C1 = {  "S590C1", // class name
  bases_S590C1, 4,
  &(vtc_S590C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,268), // object size
  NSPAIRA(_ZTI6S590C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S590C1),127, //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  S198C6  {
  int s198c6f0;
  __tsi64 s198c6f1;
  void *s198c6f2[4];
  int s198c6f3[2];
  void *s198c6f4;
  ::S1538C5_nt s198c6f5;
  void *s198c6f6[2];
  virtual  ~S198C6(); // _ZN6S198C6D1Ev
  virtual void  v4(); // _ZN6S198C62v4Ev
  virtual void  v5(); // _ZN6S198C62v5Ev
  virtual void  v6(); // _ZN6S198C62v6Ev
  virtual void  v7(); // _ZN6S198C62v7Ev
  virtual void  v8(); // _ZN6S198C62v8Ev
  virtual void  v9(); // _ZN6S198C62v9Ev
  virtual void  v10(); // _ZN6S198C63v10Ev
  virtual void  v11(); // _ZN6S198C63v11Ev
  virtual void  v12(); // _ZN6S198C63v12Ev
  virtual void  v13(); // _ZN6S198C63v13Ev
  virtual void  v14(); // _ZN6S198C63v14Ev
  virtual void  v15(); // _ZN6S198C63v15Ev
  virtual void  v16(); // _ZN6S198C63v16Ev
  virtual void  v17(); // _ZN6S198C63v17Ev
  virtual void  v18(); // _ZN6S198C63v18Ev
  virtual void  v19(); // _ZN6S198C63v19Ev
  virtual void  v20(); // _ZN6S198C63v20Ev
  virtual void  v21(); // _ZN6S198C63v21Ev
  virtual void  v22(); // _ZN6S198C63v22Ev
  virtual void  v23(); // _ZN6S198C63v23Ev
  virtual void  v24(); // _ZN6S198C63v24Ev
  virtual void  v25(); // _ZN6S198C63v25Ev
  virtual void  v26(); // _ZN6S198C63v26Ev
  virtual void  v27(); // _ZN6S198C63v27Ev
  virtual void  v28(); // _ZN6S198C63v28Ev
  virtual void  v29(); // _ZN6S198C63v29Ev
  virtual void  v30(); // _ZN6S198C63v30Ev
  virtual void  v31(); // _ZN6S198C63v31Ev
  virtual void  v32(); // _ZN6S198C63v32Ev
  virtual void  v33(); // _ZN6S198C63v33Ev
  virtual void  v34(); // _ZN6S198C63v34Ev
  virtual void  v35(); // _ZN6S198C63v35Ev
  virtual void  v36(); // _ZN6S198C63v36Ev
  virtual void  v37(); // _ZN6S198C63v37Ev
  virtual void  v38(); // _ZN6S198C63v38Ev
  virtual void  v39(); // _ZN6S198C63v39Ev
  virtual void  v40(); // _ZN6S198C63v40Ev
  virtual void  v41(); // _ZN6S198C63v41Ev
  virtual void  v42(); // _ZN6S198C63v42Ev
  virtual void  v43(); // _ZN6S198C63v43Ev
  virtual void  v44(); // _ZN6S198C63v44Ev
  virtual void  v45(); // _ZN6S198C63v45Ev
  virtual void  v46(); // _ZN6S198C63v46Ev
  virtual void  v47(); // _ZN6S198C63v47Ev
  virtual void  v48(); // _ZN6S198C63v48Ev
  virtual void  v49(); // _ZN6S198C63v49Ev
  virtual void  v50(); // _ZN6S198C63v50Ev
  virtual void  v51(); // _ZN6S198C63v51Ev
  virtual void  v52(); // _ZN6S198C63v52Ev
  virtual void  v53(); // _ZN6S198C63v53Ev
  virtual void  v54(); // _ZN6S198C63v54Ev
  virtual void  v55(); // _ZN6S198C63v55Ev
  virtual void  v56(); // _ZN6S198C63v56Ev
  virtual void  v57(); // _ZN6S198C63v57Ev
  virtual void  v58(); // _ZN6S198C63v58Ev
  virtual void  v59(); // _ZN6S198C63v59Ev
  virtual void  v60(); // _ZN6S198C63v60Ev
  virtual void  v61(); // _ZN6S198C63v61Ev
  virtual void  v62(); // _ZN6S198C63v62Ev
  virtual void  v63(); // _ZN6S198C63v63Ev
  virtual void  v64(); // _ZN6S198C63v64Ev
  virtual void  v65(); // _ZN6S198C63v65Ev
  virtual void  v66(); // _ZN6S198C63v66Ev
  virtual void  v67(); // _ZN6S198C63v67Ev
  S198C6(); // tgen
};
//SIG(-1 S198C6) 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]}


 S198C6 ::~S198C6(){ note_dtor("S198C6", this);}
void  S198C6 ::v4(){vfunc_called(this, "_ZN6S198C62v4Ev");}
void  S198C6 ::v5(){vfunc_called(this, "_ZN6S198C62v5Ev");}
void  S198C6 ::v6(){vfunc_called(this, "_ZN6S198C62v6Ev");}
void  S198C6 ::v7(){vfunc_called(this, "_ZN6S198C62v7Ev");}
void  S198C6 ::v8(){vfunc_called(this, "_ZN6S198C62v8Ev");}
void  S198C6 ::v9(){vfunc_called(this, "_ZN6S198C62v9Ev");}
void  S198C6 ::v10(){vfunc_called(this, "_ZN6S198C63v10Ev");}
void  S198C6 ::v11(){vfunc_called(this, "_ZN6S198C63v11Ev");}
void  S198C6 ::v12(){vfunc_called(this, "_ZN6S198C63v12Ev");}
void  S198C6 ::v13(){vfunc_called(this, "_ZN6S198C63v13Ev");}
void  S198C6 ::v14(){vfunc_called(this, "_ZN6S198C63v14Ev");}
void  S198C6 ::v15(){vfunc_called(this, "_ZN6S198C63v15Ev");}
void  S198C6 ::v16(){vfunc_called(this, "_ZN6S198C63v16Ev");}
void  S198C6 ::v17(){vfunc_called(this, "_ZN6S198C63v17Ev");}
void  S198C6 ::v18(){vfunc_called(this, "_ZN6S198C63v18Ev");}
void  S198C6 ::v19(){vfunc_called(this, "_ZN6S198C63v19Ev");}
void  S198C6 ::v20(){vfunc_called(this, "_ZN6S198C63v20Ev");}
void  S198C6 ::v21(){vfunc_called(this, "_ZN6S198C63v21Ev");}
void  S198C6 ::v22(){vfunc_called(this, "_ZN6S198C63v22Ev");}
void  S198C6 ::v23(){vfunc_called(this, "_ZN6S198C63v23Ev");}
void  S198C6 ::v24(){vfunc_called(this, "_ZN6S198C63v24Ev");}
void  S198C6 ::v25(){vfunc_called(this, "_ZN6S198C63v25Ev");}
void  S198C6 ::v26(){vfunc_called(this, "_ZN6S198C63v26Ev");}
void  S198C6 ::v27(){vfunc_called(this, "_ZN6S198C63v27Ev");}
void  S198C6 ::v28(){vfunc_called(this, "_ZN6S198C63v28Ev");}
void  S198C6 ::v29(){vfunc_called(this, "_ZN6S198C63v29Ev");}
void  S198C6 ::v30(){vfunc_called(this, "_ZN6S198C63v30Ev");}
void  S198C6 ::v31(){vfunc_called(this, "_ZN6S198C63v31Ev");}
void  S198C6 ::v32(){vfunc_called(this, "_ZN6S198C63v32Ev");}
void  S198C6 ::v33(){vfunc_called(this, "_ZN6S198C63v33Ev");}
void  S198C6 ::v34(){vfunc_called(this, "_ZN6S198C63v34Ev");}
void  S198C6 ::v35(){vfunc_called(this, "_ZN6S198C63v35Ev");}
void  S198C6 ::v36(){vfunc_called(this, "_ZN6S198C63v36Ev");}
void  S198C6 ::v37(){vfunc_called(this, "_ZN6S198C63v37Ev");}
void  S198C6 ::v38(){vfunc_called(this, "_ZN6S198C63v38Ev");}
void  S198C6 ::v39(){vfunc_called(this, "_ZN6S198C63v39Ev");}
void  S198C6 ::v40(){vfunc_called(this, "_ZN6S198C63v40Ev");}
void  S198C6 ::v41(){vfunc_called(this, "_ZN6S198C63v41Ev");}
void  S198C6 ::v42(){vfunc_called(this, "_ZN6S198C63v42Ev");}
void  S198C6 ::v43(){vfunc_called(this, "_ZN6S198C63v43Ev");}
void  S198C6 ::v44(){vfunc_called(this, "_ZN6S198C63v44Ev");}
void  S198C6 ::v45(){vfunc_called(this, "_ZN6S198C63v45Ev");}
void  S198C6 ::v46(){vfunc_called(this, "_ZN6S198C63v46Ev");}
void  S198C6 ::v47(){vfunc_called(this, "_ZN6S198C63v47Ev");}
void  S198C6 ::v48(){vfunc_called(this, "_ZN6S198C63v48Ev");}
void  S198C6 ::v49(){vfunc_called(this, "_ZN6S198C63v49Ev");}
void  S198C6 ::v50(){vfunc_called(this, "_ZN6S198C63v50Ev");}
void  S198C6 ::v51(){vfunc_called(this, "_ZN6S198C63v51Ev");}
void  S198C6 ::v52(){vfunc_called(this, "_ZN6S198C63v52Ev");}
void  S198C6 ::v53(){vfunc_called(this, "_ZN6S198C63v53Ev");}
void  S198C6 ::v54(){vfunc_called(this, "_ZN6S198C63v54Ev");}
void  S198C6 ::v55(){vfunc_called(this, "_ZN6S198C63v55Ev");}
void  S198C6 ::v56(){vfunc_called(this, "_ZN6S198C63v56Ev");}
void  S198C6 ::v57(){vfunc_called(this, "_ZN6S198C63v57Ev");}
void  S198C6 ::v58(){vfunc_called(this, "_ZN6S198C63v58Ev");}
void  S198C6 ::v59(){vfunc_called(this, "_ZN6S198C63v59Ev");}
void  S198C6 ::v60(){vfunc_called(this, "_ZN6S198C63v60Ev");}
void  S198C6 ::v61(){vfunc_called(this, "_ZN6S198C63v61Ev");}
void  S198C6 ::v62(){vfunc_called(this, "_ZN6S198C63v62Ev");}
void  S198C6 ::v63(){vfunc_called(this, "_ZN6S198C63v63Ev");}
void  S198C6 ::v64(){vfunc_called(this, "_ZN6S198C63v64Ev");}
void  S198C6 ::v65(){vfunc_called(this, "_ZN6S198C63v65Ev");}
void  S198C6 ::v66(){vfunc_called(this, "_ZN6S198C63v66Ev");}
void  S198C6 ::v67(){vfunc_called(this, "_ZN6S198C63v67Ev");}
S198C6 ::S198C6(){ note_ctor("S198C6", this);} // tgen

static void Test_S198C6()
{
  extern Class_Descriptor cd_S198C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S198C6, buf);
    S198C6 *dp, &lv = *(dp=new (buf) S198C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S198C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S198C6)");
    check_field_offset(lv, s198c6f0, ABISELECT(8,4), "S198C6.s198c6f0");
    check_field_offset(lv, s198c6f1, ABISELECT(16,8), "S198C6.s198c6f1");
    check_field_offset(lv, s198c6f2, ABISELECT(24,16), "S198C6.s198c6f2");
    check_field_offset(lv, s198c6f3, ABISELECT(56,32), "S198C6.s198c6f3");
    check_field_offset(lv, s198c6f4, ABISELECT(64,40), "S198C6.s198c6f4");
    check_field_offset(lv, s198c6f5, ABISELECT(72,44), "S198C6.s198c6f5");
    check_field_offset(lv, s198c6f6, ABISELECT(80,52), "S198C6.s198c6f6");
    test_class_info(&lv, &cd_S198C6);
    dp->~S198C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS198C6(Test_S198C6, "S198C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S198C6C1Ev();
extern void _ZN6S198C6D1Ev();
Name_Map name_map_S198C6[] = {
  NSPAIR(_ZN6S198C6C1Ev),
  NSPAIR(_ZN6S198C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S198C6[];
extern void _ZN6S198C6D1Ev();
extern void _ZN6S198C6D0Ev();
extern void _ZN6S198C62v4Ev();
extern void _ZN6S198C62v5Ev();
extern void _ZN6S198C62v6Ev();
extern void _ZN6S198C62v7Ev();
extern void _ZN6S198C62v8Ev();
extern void _ZN6S198C62v9Ev();
extern void _ZN6S198C63v10Ev();
extern void _ZN6S198C63v11Ev();
extern void _ZN6S198C63v12Ev();
extern void _ZN6S198C63v13Ev();
extern void _ZN6S198C63v14Ev();
extern void _ZN6S198C63v15Ev();
extern void _ZN6S198C63v16Ev();
extern void _ZN6S198C63v17Ev();
extern void _ZN6S198C63v18Ev();
extern void _ZN6S198C63v19Ev();
extern void _ZN6S198C63v20Ev();
extern void _ZN6S198C63v21Ev();
extern void _ZN6S198C63v22Ev();
extern void _ZN6S198C63v23Ev();
extern void _ZN6S198C63v24Ev();
extern void _ZN6S198C63v25Ev();
extern void _ZN6S198C63v26Ev();
extern void _ZN6S198C63v27Ev();
extern void _ZN6S198C63v28Ev();
extern void _ZN6S198C63v29Ev();
extern void _ZN6S198C63v30Ev();
extern void _ZN6S198C63v31Ev();
extern void _ZN6S198C63v32Ev();
extern void _ZN6S198C63v33Ev();
extern void _ZN6S198C63v34Ev();
extern void _ZN6S198C63v35Ev();
extern void _ZN6S198C63v36Ev();
extern void _ZN6S198C63v37Ev();
extern void _ZN6S198C63v38Ev();
extern void _ZN6S198C63v39Ev();
extern void _ZN6S198C63v40Ev();
extern void _ZN6S198C63v41Ev();
extern void _ZN6S198C63v42Ev();
extern void _ZN6S198C63v43Ev();
extern void _ZN6S198C63v44Ev();
extern void _ZN6S198C63v45Ev();
extern void _ZN6S198C63v46Ev();
extern void _ZN6S198C63v47Ev();
extern void _ZN6S198C63v48Ev();
extern void _ZN6S198C63v49Ev();
extern void _ZN6S198C63v50Ev();
extern void _ZN6S198C63v51Ev();
extern void _ZN6S198C63v52Ev();
extern void _ZN6S198C63v53Ev();
extern void _ZN6S198C63v54Ev();
extern void _ZN6S198C63v55Ev();
extern void _ZN6S198C63v56Ev();
extern void _ZN6S198C63v57Ev();
extern void _ZN6S198C63v58Ev();
extern void _ZN6S198C63v59Ev();
extern void _ZN6S198C63v60Ev();
extern void _ZN6S198C63v61Ev();
extern void _ZN6S198C63v62Ev();
extern void _ZN6S198C63v63Ev();
extern void _ZN6S198C63v64Ev();
extern void _ZN6S198C63v65Ev();
extern void _ZN6S198C63v66Ev();
extern void _ZN6S198C63v67Ev();
static  VTBL_ENTRY vtc_S198C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S198C6[0]),
  (VTBL_ENTRY)&_ZN6S198C6D1Ev,
  (VTBL_ENTRY)&_ZN6S198C6D0Ev,
  (VTBL_ENTRY)&_ZN6S198C62v4Ev,
  (VTBL_ENTRY)&_ZN6S198C62v5Ev,
  (VTBL_ENTRY)&_ZN6S198C62v6Ev,
  (VTBL_ENTRY)&_ZN6S198C62v7Ev,
  (VTBL_ENTRY)&_ZN6S198C62v8Ev,
  (VTBL_ENTRY)&_ZN6S198C62v9Ev,
  (VTBL_ENTRY)&_ZN6S198C63v10Ev,
  (VTBL_ENTRY)&_ZN6S198C63v11Ev,
  (VTBL_ENTRY)&_ZN6S198C63v12Ev,
  (VTBL_ENTRY)&_ZN6S198C63v13Ev,
  (VTBL_ENTRY)&_ZN6S198C63v14Ev,
  (VTBL_ENTRY)&_ZN6S198C63v15Ev,
  (VTBL_ENTRY)&_ZN6S198C63v16Ev,
  (VTBL_ENTRY)&_ZN6S198C63v17Ev,
  (VTBL_ENTRY)&_ZN6S198C63v18Ev,
  (VTBL_ENTRY)&_ZN6S198C63v19Ev,
  (VTBL_ENTRY)&_ZN6S198C63v20Ev,
  (VTBL_ENTRY)&_ZN6S198C63v21Ev,
  (VTBL_ENTRY)&_ZN6S198C63v22Ev,
  (VTBL_ENTRY)&_ZN6S198C63v23Ev,
  (VTBL_ENTRY)&_ZN6S198C63v24Ev,
  (VTBL_ENTRY)&_ZN6S198C63v25Ev,
  (VTBL_ENTRY)&_ZN6S198C63v26Ev,
  (VTBL_ENTRY)&_ZN6S198C63v27Ev,
  (VTBL_ENTRY)&_ZN6S198C63v28Ev,
  (VTBL_ENTRY)&_ZN6S198C63v29Ev,
  (VTBL_ENTRY)&_ZN6S198C63v30Ev,
  (VTBL_ENTRY)&_ZN6S198C63v31Ev,
  (VTBL_ENTRY)&_ZN6S198C63v32Ev,
  (VTBL_ENTRY)&_ZN6S198C63v33Ev,
  (VTBL_ENTRY)&_ZN6S198C63v34Ev,
  (VTBL_ENTRY)&_ZN6S198C63v35Ev,
  (VTBL_ENTRY)&_ZN6S198C63v36Ev,
  (VTBL_ENTRY)&_ZN6S198C63v37Ev,
  (VTBL_ENTRY)&_ZN6S198C63v38Ev,
  (VTBL_ENTRY)&_ZN6S198C63v39Ev,
  (VTBL_ENTRY)&_ZN6S198C63v40Ev,
  (VTBL_ENTRY)&_ZN6S198C63v41Ev,
  (VTBL_ENTRY)&_ZN6S198C63v42Ev,
  (VTBL_ENTRY)&_ZN6S198C63v43Ev,
  (VTBL_ENTRY)&_ZN6S198C63v44Ev,
  (VTBL_ENTRY)&_ZN6S198C63v45Ev,
  (VTBL_ENTRY)&_ZN6S198C63v46Ev,
  (VTBL_ENTRY)&_ZN6S198C63v47Ev,
  (VTBL_ENTRY)&_ZN6S198C63v48Ev,
  (VTBL_ENTRY)&_ZN6S198C63v49Ev,
  (VTBL_ENTRY)&_ZN6S198C63v50Ev,
  (VTBL_ENTRY)&_ZN6S198C63v51Ev,
  (VTBL_ENTRY)&_ZN6S198C63v52Ev,
  (VTBL_ENTRY)&_ZN6S198C63v53Ev,
  (VTBL_ENTRY)&_ZN6S198C63v54Ev,
  (VTBL_ENTRY)&_ZN6S198C63v55Ev,
  (VTBL_ENTRY)&_ZN6S198C63v56Ev,
  (VTBL_ENTRY)&_ZN6S198C63v57Ev,
  (VTBL_ENTRY)&_ZN6S198C63v58Ev,
  (VTBL_ENTRY)&_ZN6S198C63v59Ev,
  (VTBL_ENTRY)&_ZN6S198C63v60Ev,
  (VTBL_ENTRY)&_ZN6S198C63v61Ev,
  (VTBL_ENTRY)&_ZN6S198C63v62Ev,
  (VTBL_ENTRY)&_ZN6S198C63v63Ev,
  (VTBL_ENTRY)&_ZN6S198C63v64Ev,
  (VTBL_ENTRY)&_ZN6S198C63v65Ev,
  (VTBL_ENTRY)&_ZN6S198C63v66Ev,
  (VTBL_ENTRY)&_ZN6S198C63v67Ev,
};
extern VTBL_ENTRY _ZTI6S198C6[];
extern  VTBL_ENTRY _ZTV6S198C6[];
Class_Descriptor cd_S198C6 = {  "S198C6", // class name
  0,0,//no base classes
  &(vtc_S198C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S198C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S198C6),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  S198C5  : S198C6 {
  int s198c5f0[2];
  void *s198c5f1;
  int s198c5f2[2];
  ::S1538C29_nt s198c5f3;
  ::S1538C29_nt s198c5f4;
  ::S1538C28_nt s198c5f5;
  ::S1538C29_nt s198c5f6;
  unsigned int s198c5f7:1;
  unsigned int s198c5f8:1;
  unsigned int s198c5f9:1;
  unsigned int s198c5f10:1;
  unsigned int s198c5f11:1;
  int s198c5f12[2];
  virtual  ~S198C5(); // _ZN6S198C5D1Ev
  virtual void  v68(); // _ZN6S198C53v68Ev
  virtual void  v69(); // _ZN6S198C53v69Ev
  virtual void  v70(); // _ZN6S198C53v70Ev
  virtual void  v71(); // _ZN6S198C53v71Ev
  virtual void  v72(); // _ZN6S198C53v72Ev
  virtual void  v73(); // _ZN6S198C53v73Ev
  virtual void  v74(); // _ZN6S198C53v74Ev
  virtual void  v75(); // _ZN6S198C53v75Ev
  virtual void  v76(); // _ZN6S198C53v76Ev
  virtual void  v77(); // _ZN6S198C53v77Ev
  virtual void  v78(); // _ZN6S198C53v78Ev
  virtual void  v79(); // _ZN6S198C53v79Ev
  virtual void  v80(); // _ZN6S198C53v80Ev
  virtual void  v81(); // _ZN6S198C53v81Ev
  virtual void  v82(); // _ZN6S198C53v82Ev
  virtual void  v83(); // _ZN6S198C53v83Ev
  virtual void  v84(); // _ZN6S198C53v84Ev
  virtual void  v85(); // _ZN6S198C53v85Ev
  virtual void  v86(); // _ZN6S198C53v86Ev
  virtual void  v87(); // _ZN6S198C53v87Ev
  virtual void  v88(); // _ZN6S198C53v88Ev
  virtual void  v89(); // _ZN6S198C53v89Ev
  S198C5(); // tgen
};
//SIG(-1 S198C5) 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]}


 S198C5 ::~S198C5(){ note_dtor("S198C5", this);}
void  S198C5 ::v68(){vfunc_called(this, "_ZN6S198C53v68Ev");}
void  S198C5 ::v69(){vfunc_called(this, "_ZN6S198C53v69Ev");}
void  S198C5 ::v70(){vfunc_called(this, "_ZN6S198C53v70Ev");}
void  S198C5 ::v71(){vfunc_called(this, "_ZN6S198C53v71Ev");}
void  S198C5 ::v72(){vfunc_called(this, "_ZN6S198C53v72Ev");}
void  S198C5 ::v73(){vfunc_called(this, "_ZN6S198C53v73Ev");}
void  S198C5 ::v74(){vfunc_called(this, "_ZN6S198C53v74Ev");}
void  S198C5 ::v75(){vfunc_called(this, "_ZN6S198C53v75Ev");}
void  S198C5 ::v76(){vfunc_called(this, "_ZN6S198C53v76Ev");}
void  S198C5 ::v77(){vfunc_called(this, "_ZN6S198C53v77Ev");}
void  S198C5 ::v78(){vfunc_called(this, "_ZN6S198C53v78Ev");}
void  S198C5 ::v79(){vfunc_called(this, "_ZN6S198C53v79Ev");}
void  S198C5 ::v80(){vfunc_called(this, "_ZN6S198C53v80Ev");}
void  S198C5 ::v81(){vfunc_called(this, "_ZN6S198C53v81Ev");}
void  S198C5 ::v82(){vfunc_called(this, "_ZN6S198C53v82Ev");}
void  S198C5 ::v83(){vfunc_called(this, "_ZN6S198C53v83Ev");}
void  S198C5 ::v84(){vfunc_called(this, "_ZN6S198C53v84Ev");}
void  S198C5 ::v85(){vfunc_called(this, "_ZN6S198C53v85Ev");}
void  S198C5 ::v86(){vfunc_called(this, "_ZN6S198C53v86Ev");}
void  S198C5 ::v87(){vfunc_called(this, "_ZN6S198C53v87Ev");}
void  S198C5 ::v88(){vfunc_called(this, "_ZN6S198C53v88Ev");}
void  S198C5 ::v89(){vfunc_called(this, "_ZN6S198C53v89Ev");}
S198C5 ::S198C5(){ note_ctor("S198C5", this);} // tgen

static void Test_S198C5()
{
  extern Class_Descriptor cd_S198C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S198C5, buf);
    S198C5 *dp, &lv = *(dp=new (buf) S198C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S198C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S198C5)");
    check_base_class_offset(lv, (S198C6*), 0, "S198C5");
    check_field_offset(lv, s198c5f0, ABISELECT(96,60), "S198C5.s198c5f0");
    check_field_offset(lv, s198c5f1, ABISELECT(104,68), "S198C5.s198c5f1");
    check_field_offset(lv, s198c5f2, ABISELECT(112,72), "S198C5.s198c5f2");
    check_field_offset(lv, s198c5f3, ABISELECT(120,80), "S198C5.s198c5f3");
    check_field_offset(lv, s198c5f4, ABISELECT(136,92), "S198C5.s198c5f4");
    check_field_offset(lv, s198c5f5, ABISELECT(152,104), "S198C5.s198c5f5");
    check_field_offset(lv, s198c5f6, ABISELECT(160,108), "S198C5.s198c5f6");
    set_bf_and_test(lv, s198c5f7, ABISELECT(176,120), 0, 1, 1, "S198C5");
    set_bf_and_test(lv, s198c5f8, ABISELECT(176,120), 1, 1, 1, "S198C5");
    set_bf_and_test(lv, s198c5f9, ABISELECT(176,120), 2, 1, 1, "S198C5");
    set_bf_and_test(lv, s198c5f10, ABISELECT(176,120), 3, 1, 1, "S198C5");
    set_bf_and_test(lv, s198c5f11, ABISELECT(176,120), 4, 1, 1, "S198C5");
    check_field_offset(lv, s198c5f12, ABISELECT(180,124), "S198C5.s198c5f12");
    test_class_info(&lv, &cd_S198C5);
    dp->~S198C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS198C5(Test_S198C5, "S198C5", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN6S198C5C1Ev();
extern void _ZN6S198C5D1Ev();
Name_Map name_map_S198C5[] = {
  NSPAIR(_ZN6S198C5C1Ev),
  NSPAIR(_ZN6S198C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S198C6;
extern VTBL_ENTRY _ZTI6S198C6[];
extern  VTBL_ENTRY _ZTV6S198C6[];
static Base_Class bases_S198C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S198C5[];
extern void _ZN6S198C5D1Ev();
extern void _ZN6S198C5D0Ev();
extern void _ZN6S198C62v4Ev();
extern void _ZN6S198C62v5Ev();
extern void _ZN6S198C62v6Ev();
extern void _ZN6S198C62v7Ev();
extern void _ZN6S198C62v8Ev();
extern void _ZN6S198C62v9Ev();
extern void _ZN6S198C63v10Ev();
extern void _ZN6S198C63v11Ev();
extern void _ZN6S198C63v12Ev();
extern void _ZN6S198C63v13Ev();
extern void _ZN6S198C63v14Ev();
extern void _ZN6S198C63v15Ev();
extern void _ZN6S198C63v16Ev();
extern void _ZN6S198C63v17Ev();
extern void _ZN6S198C63v18Ev();
extern void _ZN6S198C63v19Ev();
extern void _ZN6S198C63v20Ev();
extern void _ZN6S198C63v21Ev();
extern void _ZN6S198C63v22Ev();
extern void _ZN6S198C63v23Ev();
extern void _ZN6S198C63v24Ev();
extern void _ZN6S198C63v25Ev();
extern void _ZN6S198C63v26Ev();
extern void _ZN6S198C63v27Ev();
extern void _ZN6S198C63v28Ev();
extern void _ZN6S198C63v29Ev();
extern void _ZN6S198C63v30Ev();
extern void _ZN6S198C63v31Ev();
extern void _ZN6S198C63v32Ev();
extern void _ZN6S198C63v33Ev();
extern void _ZN6S198C63v34Ev();
extern void _ZN6S198C63v35Ev();
extern void _ZN6S198C63v36Ev();
extern void _ZN6S198C63v37Ev();
extern void _ZN6S198C63v38Ev();
extern void _ZN6S198C63v39Ev();
extern void _ZN6S198C63v40Ev();
extern void _ZN6S198C63v41Ev();
extern void _ZN6S198C63v42Ev();
extern void _ZN6S198C63v43Ev();
extern void _ZN6S198C63v44Ev();
extern void _ZN6S198C63v45Ev();
extern void _ZN6S198C63v46Ev();
extern void _ZN6S198C63v47Ev();
extern void _ZN6S198C63v48Ev();
extern void _ZN6S198C63v49Ev();
extern void _ZN6S198C63v50Ev();
extern void _ZN6S198C63v51Ev();
extern void _ZN6S198C63v52Ev();
extern void _ZN6S198C63v53Ev();
extern void _ZN6S198C63v54Ev();
extern void _ZN6S198C63v55Ev();
extern void _ZN6S198C63v56Ev();
extern void _ZN6S198C63v57Ev();
extern void _ZN6S198C63v58Ev();
extern void _ZN6S198C63v59Ev();
extern void _ZN6S198C63v60Ev();
extern void _ZN6S198C63v61Ev();
extern void _ZN6S198C63v62Ev();
extern void _ZN6S198C63v63Ev();
extern void _ZN6S198C63v64Ev();
extern void _ZN6S198C63v65Ev();
extern void _ZN6S198C63v66Ev();
extern void _ZN6S198C63v67Ev();
extern void _ZN6S198C53v68Ev();
extern void _ZN6S198C53v69Ev();
extern void _ZN6S198C53v70Ev();
extern void _ZN6S198C53v71Ev();
extern void _ZN6S198C53v72Ev();
extern void _ZN6S198C53v73Ev();
extern void _ZN6S198C53v74Ev();
extern void _ZN6S198C53v75Ev();
extern void _ZN6S198C53v76Ev();
extern void _ZN6S198C53v77Ev();
extern void _ZN6S198C53v78Ev();
extern void _ZN6S198C53v79Ev();
extern void _ZN6S198C53v80Ev();
extern void _ZN6S198C53v81Ev();
extern void _ZN6S198C53v82Ev();
extern void _ZN6S198C53v83Ev();
extern void _ZN6S198C53v84Ev();
extern void _ZN6S198C53v85Ev();
extern void _ZN6S198C53v86Ev();
extern void _ZN6S198C53v87Ev();
extern void _ZN6S198C53v88Ev();
extern void _ZN6S198C53v89Ev();
static  VTBL_ENTRY vtc_S198C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S198C5[0]),
  (VTBL_ENTRY)&_ZN6S198C5D1Ev,
  (VTBL_ENTRY)&_ZN6S198C5D0Ev,
  (VTBL_ENTRY)&_ZN6S198C62v4Ev,
  (VTBL_ENTRY)&_ZN6S198C62v5Ev,
  (VTBL_ENTRY)&_ZN6S198C62v6Ev,
  (VTBL_ENTRY)&_ZN6S198C62v7Ev,
  (VTBL_ENTRY)&_ZN6S198C62v8Ev,
  (VTBL_ENTRY)&_ZN6S198C62v9Ev,
  (VTBL_ENTRY)&_ZN6S198C63v10Ev,
  (VTBL_ENTRY)&_ZN6S198C63v11Ev,
  (VTBL_ENTRY)&_ZN6S198C63v12Ev,
  (VTBL_ENTRY)&_ZN6S198C63v13Ev,
  (VTBL_ENTRY)&_ZN6S198C63v14Ev,
  (VTBL_ENTRY)&_ZN6S198C63v15Ev,
  (VTBL_ENTRY)&_ZN6S198C63v16Ev,
  (VTBL_ENTRY)&_ZN6S198C63v17Ev,
  (VTBL_ENTRY)&_ZN6S198C63v18Ev,
  (VTBL_ENTRY)&_ZN6S198C63v19Ev,
  (VTBL_ENTRY)&_ZN6S198C63v20Ev,
  (VTBL_ENTRY)&_ZN6S198C63v21Ev,
  (VTBL_ENTRY)&_ZN6S198C63v22Ev,
  (VTBL_ENTRY)&_ZN6S198C63v23Ev,
  (VTBL_ENTRY)&_ZN6S198C63v24Ev,
  (VTBL_ENTRY)&_ZN6S198C63v25Ev,
  (VTBL_ENTRY)&_ZN6S198C63v26Ev,
  (VTBL_ENTRY)&_ZN6S198C63v27Ev,
  (VTBL_ENTRY)&_ZN6S198C63v28Ev,
  (VTBL_ENTRY)&_ZN6S198C63v29Ev,
  (VTBL_ENTRY)&_ZN6S198C63v30Ev,
  (VTBL_ENTRY)&_ZN6S198C63v31Ev,
  (VTBL_ENTRY)&_ZN6S198C63v32Ev,
  (VTBL_ENTRY)&_ZN6S198C63v33Ev,
  (VTBL_ENTRY)&_ZN6S198C63v34Ev,
  (VTBL_ENTRY)&_ZN6S198C63v35Ev,
  (VTBL_ENTRY)&_ZN6S198C63v36Ev,
  (VTBL_ENTRY)&_ZN6S198C63v37Ev,
  (VTBL_ENTRY)&_ZN6S198C63v38Ev,
  (VTBL_ENTRY)&_ZN6S198C63v39Ev,
  (VTBL_ENTRY)&_ZN6S198C63v40Ev,
  (VTBL_ENTRY)&_ZN6S198C63v41Ev,
  (VTBL_ENTRY)&_ZN6S198C63v42Ev,
  (VTBL_ENTRY)&_ZN6S198C63v43Ev,
  (VTBL_ENTRY)&_ZN6S198C63v44Ev,
  (VTBL_ENTRY)&_ZN6S198C63v45Ev,
  (VTBL_ENTRY)&_ZN6S198C63v46Ev,
  (VTBL_ENTRY)&_ZN6S198C63v47Ev,
  (VTBL_ENTRY)&_ZN6S198C63v48Ev,
  (VTBL_ENTRY)&_ZN6S198C63v49Ev,
  (VTBL_ENTRY)&_ZN6S198C63v50Ev,
  (VTBL_ENTRY)&_ZN6S198C63v51Ev,
  (VTBL_ENTRY)&_ZN6S198C63v52Ev,
  (VTBL_ENTRY)&_ZN6S198C63v53Ev,
  (VTBL_ENTRY)&_ZN6S198C63v54Ev,
  (VTBL_ENTRY)&_ZN6S198C63v55Ev,
  (VTBL_ENTRY)&_ZN6S198C63v56Ev,
  (VTBL_ENTRY)&_ZN6S198C63v57Ev,
  (VTBL_ENTRY)&_ZN6S198C63v58Ev,
  (VTBL_ENTRY)&_ZN6S198C63v59Ev,
  (VTBL_ENTRY)&_ZN6S198C63v60Ev,
  (VTBL_ENTRY)&_ZN6S198C63v61Ev,
  (VTBL_ENTRY)&_ZN6S198C63v62Ev,
  (VTBL_ENTRY)&_ZN6S198C63v63Ev,
  (VTBL_ENTRY)&_ZN6S198C63v64Ev,
  (VTBL_ENTRY)&_ZN6S198C63v65Ev,
  (VTBL_ENTRY)&_ZN6S198C63v66Ev,
  (VTBL_ENTRY)&_ZN6S198C63v67Ev,
  (VTBL_ENTRY)&_ZN6S198C53v68Ev,
  (VTBL_ENTRY)&_ZN6S198C53v69Ev,
  (VTBL_ENTRY)&_ZN6S198C53v70Ev,
  (VTBL_ENTRY)&_ZN6S198C53v71Ev,
  (VTBL_ENTRY)&_ZN6S198C53v72Ev,
  (VTBL_ENTRY)&_ZN6S198C53v73Ev,
  (VTBL_ENTRY)&_ZN6S198C53v74Ev,
  (VTBL_ENTRY)&_ZN6S198C53v75Ev,
  (VTBL_ENTRY)&_ZN6S198C53v76Ev,
  (VTBL_ENTRY)&_ZN6S198C53v77Ev,
  (VTBL_ENTRY)&_ZN6S198C53v78Ev,
  (VTBL_ENTRY)&_ZN6S198C53v79Ev,
  (VTBL_ENTRY)&_ZN6S198C53v80Ev,
  (VTBL_ENTRY)&_ZN6S198C53v81Ev,
  (VTBL_ENTRY)&_ZN6S198C53v82Ev,
  (VTBL_ENTRY)&_ZN6S198C53v83Ev,
  (VTBL_ENTRY)&_ZN6S198C53v84Ev,
  (VTBL_ENTRY)&_ZN6S198C53v85Ev,
  (VTBL_ENTRY)&_ZN6S198C53v86Ev,
  (VTBL_ENTRY)&_ZN6S198C53v87Ev,
  (VTBL_ENTRY)&_ZN6S198C53v88Ev,
  (VTBL_ENTRY)&_ZN6S198C53v89Ev,
};
extern VTBL_ENTRY _ZTI6S198C5[];
extern  VTBL_ENTRY _ZTV6S198C5[];
Class_Descriptor cd_S198C5 = {  "S198C5", // class name
  bases_S198C5, 1,
  &(vtc_S198C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI6S198C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S198C5),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  S198C4  : S198C5 {
  unsigned int s198c4f0:1;
  unsigned int s198c4f1:1;
  unsigned int s198c4f2:1;
  ::S1538C30 s198c4f3;
  ::S1538C22 s198c4f4;
  ::S1538C18 s198c4f5;
  ::S1538C12 s198c4f6;
  int s198c4f7[3];
  virtual  ~S198C4(); // _ZN6S198C4D1Ev
  virtual void  v90(); // _ZN6S198C43v90Ev
  virtual void  v91(); // _ZN6S198C43v91Ev
  virtual void  v92(); // _ZN6S198C43v92Ev
  virtual void  v93(); // _ZN6S198C43v93Ev
  virtual void  v94(); // _ZN6S198C43v94Ev
  virtual void  v95(); // _ZN6S198C43v95Ev
  virtual void  v96(); // _ZN6S198C43v96Ev
  virtual void  v97(); // _ZN6S198C43v97Ev
  virtual void  v98(); // _ZN6S198C43v98Ev
  virtual void  v99(); // _ZN6S198C43v99Ev
  virtual void  v100(); // _ZN6S198C44v100Ev
  virtual void  v101(); // _ZN6S198C44v101Ev
  virtual void  v102(); // _ZN6S198C44v102Ev
  virtual void  v103(); // _ZN6S198C44v103Ev
  virtual void  v104(); // _ZN6S198C44v104Ev
  virtual void  v105(); // _ZN6S198C44v105Ev
  virtual void  v106(); // _ZN6S198C44v106Ev
  virtual void  v107(); // _ZN6S198C44v107Ev
  virtual void  v108(); // _ZN6S198C44v108Ev
  virtual void  v109(); // _ZN6S198C44v109Ev
  S198C4(); // tgen
};
//SIG(-1 S198C4) 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 FC6 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} Fi[3]}


 S198C4 ::~S198C4(){ note_dtor("S198C4", this);}
void  S198C4 ::v90(){vfunc_called(this, "_ZN6S198C43v90Ev");}
void  S198C4 ::v91(){vfunc_called(this, "_ZN6S198C43v91Ev");}
void  S198C4 ::v92(){vfunc_called(this, "_ZN6S198C43v92Ev");}
void  S198C4 ::v93(){vfunc_called(this, "_ZN6S198C43v93Ev");}
void  S198C4 ::v94(){vfunc_called(this, "_ZN6S198C43v94Ev");}
void  S198C4 ::v95(){vfunc_called(this, "_ZN6S198C43v95Ev");}
void  S198C4 ::v96(){vfunc_called(this, "_ZN6S198C43v96Ev");}
void  S198C4 ::v97(){vfunc_called(this, "_ZN6S198C43v97Ev");}
void  S198C4 ::v98(){vfunc_called(this, "_ZN6S198C43v98Ev");}
void  S198C4 ::v99(){vfunc_called(this, "_ZN6S198C43v99Ev");}
void  S198C4 ::v100(){vfunc_called(this, "_ZN6S198C44v100Ev");}
void  S198C4 ::v101(){vfunc_called(this, "_ZN6S198C44v101Ev");}
void  S198C4 ::v102(){vfunc_called(this, "_ZN6S198C44v102Ev");}
void  S198C4 ::v103(){vfunc_called(this, "_ZN6S198C44v103Ev");}
void  S198C4 ::v104(){vfunc_called(this, "_ZN6S198C44v104Ev");}
void  S198C4 ::v105(){vfunc_called(this, "_ZN6S198C44v105Ev");}
void  S198C4 ::v106(){vfunc_called(this, "_ZN6S198C44v106Ev");}
void  S198C4 ::v107(){vfunc_called(this, "_ZN6S198C44v107Ev");}
void  S198C4 ::v108(){vfunc_called(this, "_ZN6S198C44v108Ev");}
void  S198C4 ::v109(){vfunc_called(this, "_ZN6S198C44v109Ev");}
S198C4 ::S198C4(){ note_ctor("S198C4", this);} // tgen

static void Test_S198C4()
{
  extern Class_Descriptor cd_S198C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S198C4, buf);
    S198C4 *dp, &lv = *(dp=new (buf) S198C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S198C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S198C4)");
    check_base_class_offset(lv, (S198C6*)(S198C5*), 0, "S198C4");
    check_base_class_offset(lv, (S198C5*), 0, "S198C4");
    set_bf_and_test(lv, s198c4f0, ABISELECT(188,132), 0, 1, 1, "S198C4");
    set_bf_and_test(lv, s198c4f1, ABISELECT(188,132), 1, 1, 1, "S198C4");
    set_bf_and_test(lv, s198c4f2, ABISELECT(188,132), 2, 1, 1, "S198C4");
    check_field_offset(lv, s198c4f3, ABISELECT(192,136), "S198C4.s198c4f3");
    check_field_offset(lv, s198c4f4, ABISELECT(208,148), "S198C4.s198c4f4");
    check_field_offset(lv, s198c4f5, ABISELECT(224,160), "S198C4.s198c4f5");
    check_field_offset(lv, s198c4f6, ABISELECT(240,172), "S198C4.s198c4f6");
    check_field_offset(lv, s198c4f7, ABISELECT(256,184), "S198C4.s198c4f7");
    test_class_info(&lv, &cd_S198C4);
    dp->~S198C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS198C4(Test_S198C4, "S198C4", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN6S198C4C1Ev();
extern void _ZN6S198C4D1Ev();
Name_Map name_map_S198C4[] = {
  NSPAIR(_ZN6S198C4C1Ev),
  NSPAIR(_ZN6S198C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S198C6;
extern VTBL_ENTRY _ZTI6S198C6[];
extern  VTBL_ENTRY _ZTV6S198C6[];
extern Class_Descriptor cd_S198C5;
extern VTBL_ENTRY _ZTI6S198C5[];
extern  VTBL_ENTRY _ZTV6S198C5[];
static Base_Class bases_S198C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S198C4[];
extern void _ZN6S198C4D1Ev();
extern void _ZN6S198C4D0Ev();
extern void _ZN6S198C62v4Ev();
extern void _ZN6S198C62v5Ev();
extern void _ZN6S198C62v6Ev();
extern void _ZN6S198C62v7Ev();
extern void _ZN6S198C62v8Ev();
extern void _ZN6S198C62v9Ev();
extern void _ZN6S198C63v10Ev();
extern void _ZN6S198C63v11Ev();
extern void _ZN6S198C63v12Ev();
extern void _ZN6S198C63v13Ev();
extern void _ZN6S198C63v14Ev();
extern void _ZN6S198C63v15Ev();
extern void _ZN6S198C63v16Ev();
extern void _ZN6S198C63v17Ev();
extern void _ZN6S198C63v18Ev();
extern void _ZN6S198C63v19Ev();
extern void _ZN6S198C63v20Ev();
extern void _ZN6S198C63v21Ev();
extern void _ZN6S198C63v22Ev();
extern void _ZN6S198C63v23Ev();
extern void _ZN6S198C63v24Ev();
extern void _ZN6S198C63v25Ev();
extern void _ZN6S198C63v26Ev();
extern void _ZN6S198C63v27Ev();
extern void _ZN6S198C63v28Ev();
extern void _ZN6S198C63v29Ev();
extern void _ZN6S198C63v30Ev();
extern void _ZN6S198C63v31Ev();
extern void _ZN6S198C63v32Ev();
extern void _ZN6S198C63v33Ev();
extern void _ZN6S198C63v34Ev();
extern void _ZN6S198C63v35Ev();
extern void _ZN6S198C63v36Ev();
extern void _ZN6S198C63v37Ev();
extern void _ZN6S198C63v38Ev();
extern void _ZN6S198C63v39Ev();
extern void _ZN6S198C63v40Ev();
extern void _ZN6S198C63v41Ev();
extern void _ZN6S198C63v42Ev();
extern void _ZN6S198C63v43Ev();
extern void _ZN6S198C63v44Ev();
extern void _ZN6S198C63v45Ev();
extern void _ZN6S198C63v46Ev();
extern void _ZN6S198C63v47Ev();
extern void _ZN6S198C63v48Ev();
extern void _ZN6S198C63v49Ev();
extern void _ZN6S198C63v50Ev();
extern void _ZN6S198C63v51Ev();
extern void _ZN6S198C63v52Ev();
extern void _ZN6S198C63v53Ev();
extern void _ZN6S198C63v54Ev();
extern void _ZN6S198C63v55Ev();
extern void _ZN6S198C63v56Ev();
extern void _ZN6S198C63v57Ev();
extern void _ZN6S198C63v58Ev();
extern void _ZN6S198C63v59Ev();
extern void _ZN6S198C63v60Ev();
extern void _ZN6S198C63v61Ev();
extern void _ZN6S198C63v62Ev();
extern void _ZN6S198C63v63Ev();
extern void _ZN6S198C63v64Ev();
extern void _ZN6S198C63v65Ev();
extern void _ZN6S198C63v66Ev();
extern void _ZN6S198C63v67Ev();
extern void _ZN6S198C53v68Ev();
extern void _ZN6S198C53v69Ev();
extern void _ZN6S198C53v70Ev();
extern void _ZN6S198C53v71Ev();
extern void _ZN6S198C53v72Ev();
extern void _ZN6S198C53v73Ev();
extern void _ZN6S198C53v74Ev();
extern void _ZN6S198C53v75Ev();
extern void _ZN6S198C53v76Ev();
extern void _ZN6S198C53v77Ev();
extern void _ZN6S198C53v78Ev();
extern void _ZN6S198C53v79Ev();
extern void _ZN6S198C53v80Ev();
extern void _ZN6S198C53v81Ev();
extern void _ZN6S198C53v82Ev();
extern void _ZN6S198C53v83Ev();
extern void _ZN6S198C53v84Ev();
extern void _ZN6S198C53v85Ev();
extern void _ZN6S198C53v86Ev();
extern void _ZN6S198C53v87Ev();
extern void _ZN6S198C53v88Ev();
extern void _ZN6S198C53v89Ev();
extern void _ZN6S198C43v90Ev();
extern void _ZN6S198C43v91Ev();
extern void _ZN6S198C43v92Ev();
extern void _ZN6S198C43v93Ev();
extern void _ZN6S198C43v94Ev();
extern void _ZN6S198C43v95Ev();
extern void _ZN6S198C43v96Ev();
extern void _ZN6S198C43v97Ev();
extern void _ZN6S198C43v98Ev();
extern void _ZN6S198C43v99Ev();
extern void _ZN6S198C44v100Ev();
extern void _ZN6S198C44v101Ev();
extern void _ZN6S198C44v102Ev();
extern void _ZN6S198C44v103Ev();
extern void _ZN6S198C44v104Ev();
extern void _ZN6S198C44v105Ev();
extern void _ZN6S198C44v106Ev();
extern void _ZN6S198C44v107Ev();
extern void _ZN6S198C44v108Ev();
extern void _ZN6S198C44v109Ev();
static  VTBL_ENTRY vtc_S198C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S198C4[0]),
  (VTBL_ENTRY)&_ZN6S198C4D1Ev,
  (VTBL_ENTRY)&_ZN6S198C4D0Ev,
  (VTBL_ENTRY)&_ZN6S198C62v4Ev,
  (VTBL_ENTRY)&_ZN6S198C62v5Ev,
  (VTBL_ENTRY)&_ZN6S198C62v6Ev,
  (VTBL_ENTRY)&_ZN6S198C62v7Ev,
  (VTBL_ENTRY)&_ZN6S198C62v8Ev,
  (VTBL_ENTRY)&_ZN6S198C62v9Ev,
  (VTBL_ENTRY)&_ZN6S198C63v10Ev,
  (VTBL_ENTRY)&_ZN6S198C63v11Ev,
  (VTBL_ENTRY)&_ZN6S198C63v12Ev,
  (VTBL_ENTRY)&_ZN6S198C63v13Ev,
  (VTBL_ENTRY)&_ZN6S198C63v14Ev,
  (VTBL_ENTRY)&_ZN6S198C63v15Ev,
  (VTBL_ENTRY)&_ZN6S198C63v16Ev,
  (VTBL_ENTRY)&_ZN6S198C63v17Ev,
  (VTBL_ENTRY)&_ZN6S198C63v18Ev,
  (VTBL_ENTRY)&_ZN6S198C63v19Ev,
  (VTBL_ENTRY)&_ZN6S198C63v20Ev,
  (VTBL_ENTRY)&_ZN6S198C63v21Ev,
  (VTBL_ENTRY)&_ZN6S198C63v22Ev,
  (VTBL_ENTRY)&_ZN6S198C63v23Ev,
  (VTBL_ENTRY)&_ZN6S198C63v24Ev,
  (VTBL_ENTRY)&_ZN6S198C63v25Ev,
  (VTBL_ENTRY)&_ZN6S198C63v26Ev,
  (VTBL_ENTRY)&_ZN6S198C63v27Ev,
  (VTBL_ENTRY)&_ZN6S198C63v28Ev,
  (VTBL_ENTRY)&_ZN6S198C63v29Ev,
  (VTBL_ENTRY)&_ZN6S198C63v30Ev,
  (VTBL_ENTRY)&_ZN6S198C63v31Ev,
  (VTBL_ENTRY)&_ZN6S198C63v32Ev,
  (VTBL_ENTRY)&_ZN6S198C63v33Ev,
  (VTBL_ENTRY)&_ZN6S198C63v34Ev,
  (VTBL_ENTRY)&_ZN6S198C63v35Ev,
  (VTBL_ENTRY)&_ZN6S198C63v36Ev,
  (VTBL_ENTRY)&_ZN6S198C63v37Ev,
  (VTBL_ENTRY)&_ZN6S198C63v38Ev,
  (VTBL_ENTRY)&_ZN6S198C63v39Ev,
  (VTBL_ENTRY)&_ZN6S198C63v40Ev,
  (VTBL_ENTRY)&_ZN6S198C63v41Ev,
  (VTBL_ENTRY)&_ZN6S198C63v42Ev,
  (VTBL_ENTRY)&_ZN6S198C63v43Ev,
  (VTBL_ENTRY)&_ZN6S198C63v44Ev,
  (VTBL_ENTRY)&_ZN6S198C63v45Ev,
  (VTBL_ENTRY)&_ZN6S198C63v46Ev,
  (VTBL_ENTRY)&_ZN6S198C63v47Ev,
  (VTBL_ENTRY)&_ZN6S198C63v48Ev,
  (VTBL_ENTRY)&_ZN6S198C63v49Ev,
  (VTBL_ENTRY)&_ZN6S198C63v50Ev,
  (VTBL_ENTRY)&_ZN6S198C63v51Ev,
  (VTBL_ENTRY)&_ZN6S198C63v52Ev,
  (VTBL_ENTRY)&_ZN6S198C63v53Ev,
  (VTBL_ENTRY)&_ZN6S198C63v54Ev,
  (VTBL_ENTRY)&_ZN6S198C63v55Ev,
  (VTBL_ENTRY)&_ZN6S198C63v56Ev,
  (VTBL_ENTRY)&_ZN6S198C63v57Ev,
  (VTBL_ENTRY)&_ZN6S198C63v58Ev,
  (VTBL_ENTRY)&_ZN6S198C63v59Ev,
  (VTBL_ENTRY)&_ZN6S198C63v60Ev,
  (VTBL_ENTRY)&_ZN6S198C63v61Ev,
  (VTBL_ENTRY)&_ZN6S198C63v62Ev,
  (VTBL_ENTRY)&_ZN6S198C63v63Ev,
  (VTBL_ENTRY)&_ZN6S198C63v64Ev,
  (VTBL_ENTRY)&_ZN6S198C63v65Ev,
  (VTBL_ENTRY)&_ZN6S198C63v66Ev,
  (VTBL_ENTRY)&_ZN6S198C63v67Ev,
  (VTBL_ENTRY)&_ZN6S198C53v68Ev,
  (VTBL_ENTRY)&_ZN6S198C53v69Ev,
  (VTBL_ENTRY)&_ZN6S198C53v70Ev,
  (VTBL_ENTRY)&_ZN6S198C53v71Ev,
  (VTBL_ENTRY)&_ZN6S198C53v72Ev,
  (VTBL_ENTRY)&_ZN6S198C53v73Ev,
  (VTBL_ENTRY)&_ZN6S198C53v74Ev,
  (VTBL_ENTRY)&_ZN6S198C53v75Ev,
  (VTBL_ENTRY)&_ZN6S198C53v76Ev,
  (VTBL_ENTRY)&_ZN6S198C53v77Ev,
  (VTBL_ENTRY)&_ZN6S198C53v78Ev,
  (VTBL_ENTRY)&_ZN6S198C53v79Ev,
  (VTBL_ENTRY)&_ZN6S198C53v80Ev,
  (VTBL_ENTRY)&_ZN6S198C53v81Ev,
  (VTBL_ENTRY)&_ZN6S198C53v82Ev,
  (VTBL_ENTRY)&_ZN6S198C53v83Ev,
  (VTBL_ENTRY)&_ZN6S198C53v84Ev,
  (VTBL_ENTRY)&_ZN6S198C53v85Ev,
  (VTBL_ENTRY)&_ZN6S198C53v86Ev,
  (VTBL_ENTRY)&_ZN6S198C53v87Ev,
  (VTBL_ENTRY)&_ZN6S198C53v88Ev,
  (VTBL_ENTRY)&_ZN6S198C53v89Ev,
  (VTBL_ENTRY)&_ZN6S198C43v90Ev,
  (VTBL_ENTRY)&_ZN6S198C43v91Ev,
  (VTBL_ENTRY)&_ZN6S198C43v92Ev,
  (VTBL_ENTRY)&_ZN6S198C43v93Ev,
  (VTBL_ENTRY)&_ZN6S198C43v94Ev,
  (VTBL_ENTRY)&_ZN6S198C43v95Ev,
  (VTBL_ENTRY)&_ZN6S198C43v96Ev,
  (VTBL_ENTRY)&_ZN6S198C43v97Ev,
  (VTBL_ENTRY)&_ZN6S198C43v98Ev,
  (VTBL_ENTRY)&_ZN6S198C43v99Ev,
  (VTBL_ENTRY)&_ZN6S198C44v100Ev,
  (VTBL_ENTRY)&_ZN6S198C44v101Ev,
  (VTBL_ENTRY)&_ZN6S198C44v102Ev,
  (VTBL_ENTRY)&_ZN6S198C44v103Ev,
  (VTBL_ENTRY)&_ZN6S198C44v104Ev,
  (VTBL_ENTRY)&_ZN6S198C44v105Ev,
  (VTBL_ENTRY)&_ZN6S198C44v106Ev,
  (VTBL_ENTRY)&_ZN6S198C44v107Ev,
  (VTBL_ENTRY)&_ZN6S198C44v108Ev,
  (VTBL_ENTRY)&_ZN6S198C44v109Ev,
};
extern VTBL_ENTRY _ZTI6S198C4[];
extern  VTBL_ENTRY _ZTV6S198C4[];
Class_Descriptor cd_S198C4 = {  "S198C4", // class name
  bases_S198C4, 2,
  &(vtc_S198C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI6S198C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S198C4),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  S198C3_nt  : S198C4 {
  ::S1538C5_nt s198c3f0;
  unsigned int s198c3f1:1;
  ::S1538C6_nt s198c3f2;
  virtual  ~S198C3_nt(); // _ZN9S198C3_ntD1Ev
  virtual void  v110(); // _ZN9S198C3_nt4v110Ev
  virtual void  v111(); // _ZN9S198C3_nt4v111Ev
  virtual void  v112(); // _ZN9S198C3_nt4v112Ev
  virtual void  v113(); // _ZN9S198C3_nt4v113Ev
  S198C3_nt(); // tgen
};
//SIG(-1 S198C3_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 FC7 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} Fi[3]} vd v1 v2 v3 v4 FC5 Fi:1 FC17{ BC18{ BC9}}}


 S198C3_nt ::~S198C3_nt(){ note_dtor("S198C3_nt", this);}
void  S198C3_nt ::v110(){vfunc_called(this, "_ZN9S198C3_nt4v110Ev");}
void  S198C3_nt ::v111(){vfunc_called(this, "_ZN9S198C3_nt4v111Ev");}
void  S198C3_nt ::v112(){vfunc_called(this, "_ZN9S198C3_nt4v112Ev");}
void  S198C3_nt ::v113(){vfunc_called(this, "_ZN9S198C3_nt4v113Ev");}
S198C3_nt ::S198C3_nt(){ note_ctor("S198C3_nt", this);} // tgen

//skip512 S198C3_nt

#else // __cplusplus

extern void _ZN9S198C3_ntC1Ev();
extern void _ZN9S198C3_ntD1Ev();
Name_Map name_map_S198C3_nt[] = {
  NSPAIR(_ZN9S198C3_ntC1Ev),
  NSPAIR(_ZN9S198C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S198C6;
extern VTBL_ENTRY _ZTI6S198C6[];
extern  VTBL_ENTRY _ZTV6S198C6[];
extern Class_Descriptor cd_S198C5;
extern VTBL_ENTRY _ZTI6S198C5[];
extern  VTBL_ENTRY _ZTV6S198C5[];
extern Class_Descriptor cd_S198C4;
extern VTBL_ENTRY _ZTI6S198C4[];
extern  VTBL_ENTRY _ZTV6S198C4[];
static Base_Class bases_S198C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S198C3_nt[];
extern void _ZN9S198C3_ntD1Ev();
extern void _ZN9S198C3_ntD0Ev();
extern void _ZN6S198C62v4Ev();
extern void _ZN6S198C62v5Ev();
extern void _ZN6S198C62v6Ev();
extern void _ZN6S198C62v7Ev();
extern void _ZN6S198C62v8Ev();
extern void _ZN6S198C62v9Ev();
extern void _ZN6S198C63v10Ev();
extern void _ZN6S198C63v11Ev();
extern void _ZN6S198C63v12Ev();
extern void _ZN6S198C63v13Ev();
extern void _ZN6S198C63v14Ev();
extern void _ZN6S198C63v15Ev();
extern void _ZN6S198C63v16Ev();
extern void _ZN6S198C63v17Ev();
extern void _ZN6S198C63v18Ev();
extern void _ZN6S198C63v19Ev();
extern void _ZN6S198C63v20Ev();
extern void _ZN6S198C63v21Ev();
extern void _ZN6S198C63v22Ev();
extern void _ZN6S198C63v23Ev();
extern void _ZN6S198C63v24Ev();
extern void _ZN6S198C63v25Ev();
extern void _ZN6S198C63v26Ev();
extern void _ZN6S198C63v27Ev();
extern void _ZN6S198C63v28Ev();
extern void _ZN6S198C63v29Ev();
extern void _ZN6S198C63v30Ev();
extern void _ZN6S198C63v31Ev();
extern void _ZN6S198C63v32Ev();
extern void _ZN6S198C63v33Ev();
extern void _ZN6S198C63v34Ev();
extern void _ZN6S198C63v35Ev();
extern void _ZN6S198C63v36Ev();
extern void _ZN6S198C63v37Ev();
extern void _ZN6S198C63v38Ev();
extern void _ZN6S198C63v39Ev();
extern void _ZN6S198C63v40Ev();
extern void _ZN6S198C63v41Ev();
extern void _ZN6S198C63v42Ev();
extern void _ZN6S198C63v43Ev();
extern void _ZN6S198C63v44Ev();
extern void _ZN6S198C63v45Ev();
extern void _ZN6S198C63v46Ev();
extern void _ZN6S198C63v47Ev();
extern void _ZN6S198C63v48Ev();
extern void _ZN6S198C63v49Ev();
extern void _ZN6S198C63v50Ev();
extern void _ZN6S198C63v51Ev();
extern void _ZN6S198C63v52Ev();
extern void _ZN6S198C63v53Ev();
extern void _ZN6S198C63v54Ev();
extern void _ZN6S198C63v55Ev();
extern void _ZN6S198C63v56Ev();
extern void _ZN6S198C63v57Ev();
extern void _ZN6S198C63v58Ev();
extern void _ZN6S198C63v59Ev();
extern void _ZN6S198C63v60Ev();
extern void _ZN6S198C63v61Ev();
extern void _ZN6S198C63v62Ev();
extern void _ZN6S198C63v63Ev();
extern void _ZN6S198C63v64Ev();
extern void _ZN6S198C63v65Ev();
extern void _ZN6S198C63v66Ev();
extern void _ZN6S198C63v67Ev();
extern void _ZN6S198C53v68Ev();
extern void _ZN6S198C53v69Ev();
extern void _ZN6S198C53v70Ev();
extern void _ZN6S198C53v71Ev();
extern void _ZN6S198C53v72Ev();
extern void _ZN6S198C53v73Ev();
extern void _ZN6S198C53v74Ev();
extern void _ZN6S198C53v75Ev();
extern void _ZN6S198C53v76Ev();
extern void _ZN6S198C53v77Ev();
extern void _ZN6S198C53v78Ev();
extern void _ZN6S198C53v79Ev();
extern void _ZN6S198C53v80Ev();
extern void _ZN6S198C53v81Ev();
extern void _ZN6S198C53v82Ev();
extern void _ZN6S198C53v83Ev();
extern void _ZN6S198C53v84Ev();
extern void _ZN6S198C53v85Ev();
extern void _ZN6S198C53v86Ev();
extern void _ZN6S198C53v87Ev();
extern void _ZN6S198C53v88Ev();
extern void _ZN6S198C53v89Ev();
extern void _ZN6S198C43v90Ev();
extern void _ZN6S198C43v91Ev();
extern void _ZN6S198C43v92Ev();
extern void _ZN6S198C43v93Ev();
extern void _ZN6S198C43v94Ev();
extern void _ZN6S198C43v95Ev();
extern void _ZN6S198C43v96Ev();
extern void _ZN6S198C43v97Ev();
extern void _ZN6S198C43v98Ev();
extern void _ZN6S198C43v99Ev();
extern void _ZN6S198C44v100Ev();
extern void _ZN6S198C44v101Ev();
extern void _ZN6S198C44v102Ev();
extern void _ZN6S198C44v103Ev();
extern void _ZN6S198C44v104Ev();
extern void _ZN6S198C44v105Ev();
extern void _ZN6S198C44v106Ev();
extern void _ZN6S198C44v107Ev();
extern void _ZN6S198C44v108Ev();
extern void _ZN6S198C44v109Ev();
extern void _ZN9S198C3_nt4v110Ev();
extern void _ZN9S198C3_nt4v111Ev();
extern void _ZN9S198C3_nt4v112Ev();
extern void _ZN9S198C3_nt4v113Ev();
static  VTBL_ENTRY vtc_S198C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S198C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S198C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S198C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S198C62v4Ev,
  (VTBL_ENTRY)&_ZN6S198C62v5Ev,
  (VTBL_ENTRY)&_ZN6S198C62v6Ev,
  (VTBL_ENTRY)&_ZN6S198C62v7Ev,
  (VTBL_ENTRY)&_ZN6S198C62v8Ev,
  (VTBL_ENTRY)&_ZN6S198C62v9Ev,
  (VTBL_ENTRY)&_ZN6S198C63v10Ev,
  (VTBL_ENTRY)&_ZN6S198C63v11Ev,
  (VTBL_ENTRY)&_ZN6S198C63v12Ev,
  (VTBL_ENTRY)&_ZN6S198C63v13Ev,
  (VTBL_ENTRY)&_ZN6S198C63v14Ev,
  (VTBL_ENTRY)&_ZN6S198C63v15Ev,
  (VTBL_ENTRY)&_ZN6S198C63v16Ev,
  (VTBL_ENTRY)&_ZN6S198C63v17Ev,
  (VTBL_ENTRY)&_ZN6S198C63v18Ev,
  (VTBL_ENTRY)&_ZN6S198C63v19Ev,
  (VTBL_ENTRY)&_ZN6S198C63v20Ev,
  (VTBL_ENTRY)&_ZN6S198C63v21Ev,
  (VTBL_ENTRY)&_ZN6S198C63v22Ev,
  (VTBL_ENTRY)&_ZN6S198C63v23Ev,
  (VTBL_ENTRY)&_ZN6S198C63v24Ev,
  (VTBL_ENTRY)&_ZN6S198C63v25Ev,
  (VTBL_ENTRY)&_ZN6S198C63v26Ev,
  (VTBL_ENTRY)&_ZN6S198C63v27Ev,
  (VTBL_ENTRY)&_ZN6S198C63v28Ev,
  (VTBL_ENTRY)&_ZN6S198C63v29Ev,
  (VTBL_ENTRY)&_ZN6S198C63v30Ev,
  (VTBL_ENTRY)&_ZN6S198C63v31Ev,
  (VTBL_ENTRY)&_ZN6S198C63v32Ev,
  (VTBL_ENTRY)&_ZN6S198C63v33Ev,
  (VTBL_ENTRY)&_ZN6S198C63v34Ev,
  (VTBL_ENTRY)&_ZN6S198C63v35Ev,
  (VTBL_ENTRY)&_ZN6S198C63v36Ev,
  (VTBL_ENTRY)&_ZN6S198C63v37Ev,
  (VTBL_ENTRY)&_ZN6S198C63v38Ev,
  (VTBL_ENTRY)&_ZN6S198C63v39Ev,
  (VTBL_ENTRY)&_ZN6S198C63v40Ev,
  (VTBL_ENTRY)&_ZN6S198C63v41Ev,
  (VTBL_ENTRY)&_ZN6S198C63v42Ev,
  (VTBL_ENTRY)&_ZN6S198C63v43Ev,
  (VTBL_ENTRY)&_ZN6S198C63v44Ev,
  (VTBL_ENTRY)&_ZN6S198C63v45Ev,
  (VTBL_ENTRY)&_ZN6S198C63v46Ev,
  (VTBL_ENTRY)&_ZN6S198C63v47Ev,
  (VTBL_ENTRY)&_ZN6S198C63v48Ev,
  (VTBL_ENTRY)&_ZN6S198C63v49Ev,
  (VTBL_ENTRY)&_ZN6S198C63v50Ev,
  (VTBL_ENTRY)&_ZN6S198C63v51Ev,
  (VTBL_ENTRY)&_ZN6S198C63v52Ev,
  (VTBL_ENTRY)&_ZN6S198C63v53Ev,
  (VTBL_ENTRY)&_ZN6S198C63v54Ev,
  (VTBL_ENTRY)&_ZN6S198C63v55Ev,
  (VTBL_ENTRY)&_ZN6S198C63v56Ev,
  (VTBL_ENTRY)&_ZN6S198C63v57Ev,
  (VTBL_ENTRY)&_ZN6S198C63v58Ev,
  (VTBL_ENTRY)&_ZN6S198C63v59Ev,
  (VTBL_ENTRY)&_ZN6S198C63v60Ev,
  (VTBL_ENTRY)&_ZN6S198C63v61Ev,
  (VTBL_ENTRY)&_ZN6S198C63v62Ev,
  (VTBL_ENTRY)&_ZN6S198C63v63Ev,
  (VTBL_ENTRY)&_ZN6S198C63v64Ev,
  (VTBL_ENTRY)&_ZN6S198C63v65Ev,
  (VTBL_ENTRY)&_ZN6S198C63v66Ev,
  (VTBL_ENTRY)&_ZN6S198C63v67Ev,
  (VTBL_ENTRY)&_ZN6S198C53v68Ev,
  (VTBL_ENTRY)&_ZN6S198C53v69Ev,
  (VTBL_ENTRY)&_ZN6S198C53v70Ev,
  (VTBL_ENTRY)&_ZN6S198C53v71Ev,
  (VTBL_ENTRY)&_ZN6S198C53v72Ev,
  (VTBL_ENTRY)&_ZN6S198C53v73Ev,
  (VTBL_ENTRY)&_ZN6S198C53v74Ev,
  (VTBL_ENTRY)&_ZN6S198C53v75Ev,
  (VTBL_ENTRY)&_ZN6S198C53v76Ev,
  (VTBL_ENTRY)&_ZN6S198C53v77Ev,
  (VTBL_ENTRY)&_ZN6S198C53v78Ev,
  (VTBL_ENTRY)&_ZN6S198C53v79Ev,
  (VTBL_ENTRY)&_ZN6S198C53v80Ev,
  (VTBL_ENTRY)&_ZN6S198C53v81Ev,
  (VTBL_ENTRY)&_ZN6S198C53v82Ev,
  (VTBL_ENTRY)&_ZN6S198C53v83Ev,
  (VTBL_ENTRY)&_ZN6S198C53v84Ev,
  (VTBL_ENTRY)&_ZN6S198C53v85Ev,
  (VTBL_ENTRY)&_ZN6S198C53v86Ev,
  (VTBL_ENTRY)&_ZN6S198C53v87Ev,
  (VTBL_ENTRY)&_ZN6S198C53v88Ev,
  (VTBL_ENTRY)&_ZN6S198C53v89Ev,
  (VTBL_ENTRY)&_ZN6S198C43v90Ev,
  (VTBL_ENTRY)&_ZN6S198C43v91Ev,
  (VTBL_ENTRY)&_ZN6S198C43v92Ev,
  (VTBL_ENTRY)&_ZN6S198C43v93Ev,
  (VTBL_ENTRY)&_ZN6S198C43v94Ev,
  (VTBL_ENTRY)&_ZN6S198C43v95Ev,
  (VTBL_ENTRY)&_ZN6S198C43v96Ev,
  (VTBL_ENTRY)&_ZN6S198C43v97Ev,
  (VTBL_ENTRY)&_ZN6S198C43v98Ev,
  (VTBL_ENTRY)&_ZN6S198C43v99Ev,
  (VTBL_ENTRY)&_ZN6S198C44v100Ev,
  (VTBL_ENTRY)&_ZN6S198C44v101Ev,
  (VTBL_ENTRY)&_ZN6S198C44v102Ev,
  (VTBL_ENTRY)&_ZN6S198C44v103Ev,
  (VTBL_ENTRY)&_ZN6S198C44v104Ev,
  (VTBL_ENTRY)&_ZN6S198C44v105Ev,
  (VTBL_ENTRY)&_ZN6S198C44v106Ev,
  (VTBL_ENTRY)&_ZN6S198C44v107Ev,
  (VTBL_ENTRY)&_ZN6S198C44v108Ev,
  (VTBL_ENTRY)&_ZN6S198C44v109Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S198C3_nt[];
VTBL_ENTRY *P__ZTI9S198C3_nt = _ZTI9S198C3_nt; 
extern  VTBL_ENTRY _ZTV9S198C3_nt[];
Class_Descriptor cd_S198C3_nt = {  "S198C3_nt", // class name
  bases_S198C3_nt, 3,
  &(vtc_S198C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S198C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S198C3_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  S198C2  : S198C3_nt {
  int s198c2f0[2];
  unsigned int s198c2f1:1;
  unsigned int s198c2f2:1;
  ::S1403C25 s198c2f3;
  virtual  ~S198C2(); // _ZN6S198C2D1Ev
  virtual void  v114(); // _ZN6S198C24v114Ev
  virtual void  v115(); // _ZN6S198C24v115Ev
  virtual void  v116(); // _ZN6S198C24v116Ev
  virtual void  v117(); // _ZN6S198C24v117Ev
  virtual void  v118(); // _ZN6S198C24v118Ev
  virtual void  v119(); // _ZN6S198C24v119Ev
  S198C2(); // tgen
};
//SIG(-1 S198C2) C1{ BC2{ BC3{ BC4{ BC5{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 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 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 Fi:1 Fi:1 Fi:1 FC8 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} Fi[3]} vd v113 v114 v115 v116 FC6 Fi:1 FC18{ BC19{ BC10}}} vd v1 v2 v3 v4 v5 v6 Fi[2] Fi:1 Fi:1 FC20{ BC21{ BC10}}}


 S198C2 ::~S198C2(){ note_dtor("S198C2", this);}
void  S198C2 ::v114(){vfunc_called(this, "_ZN6S198C24v114Ev");}
void  S198C2 ::v115(){vfunc_called(this, "_ZN6S198C24v115Ev");}
void  S198C2 ::v116(){vfunc_called(this, "_ZN6S198C24v116Ev");}
void  S198C2 ::v117(){vfunc_called(this, "_ZN6S198C24v117Ev");}
void  S198C2 ::v118(){vfunc_called(this, "_ZN6S198C24v118Ev");}
void  S198C2 ::v119(){vfunc_called(this, "_ZN6S198C24v119Ev");}
S198C2 ::S198C2(){ note_ctor("S198C2", this);} // tgen

static void Test_S198C2()
{
  extern Class_Descriptor cd_S198C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,62)];
    init_test(&cd_S198C2, buf);
    S198C2 *dp, &lv = *(dp=new (buf) S198C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,244), "sizeof(S198C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S198C2)");
    check_base_class_offset(lv, (S198C6*)(S198C5*)(S198C4*)(S198C3_nt*), 0, "S198C2");
    check_base_class_offset(lv, (S198C5*)(S198C4*)(S198C3_nt*), 0, "S198C2");
    check_base_class_offset(lv, (S198C4*)(S198C3_nt*), 0, "S198C2");
    check_base_class_offset(lv, (S198C3_nt*), 0, "S198C2");
    check_field_offset(lv, s198c2f0, ABISELECT(296,220), "S198C2.s198c2f0");
    set_bf_and_test(lv, s198c2f1, ABISELECT(304,228), 0, 1, 1, "S198C2");
    set_bf_and_test(lv, s198c2f2, ABISELECT(304,228), 1, 1, 1, "S198C2");
    check_field_offset(lv, s198c2f3, ABISELECT(312,232), "S198C2.s198c2f3");
    test_class_info(&lv, &cd_S198C2);
    dp->~S198C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS198C2(Test_S198C2, "S198C2", ABISELECT(328,244));

#else // __cplusplus

extern void _ZN6S198C2C1Ev();
extern void _ZN6S198C2D1Ev();
Name_Map name_map_S198C2[] = {
  NSPAIR(_ZN6S198C2C1Ev),
  NSPAIR(_ZN6S198C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S198C6;
extern VTBL_ENTRY _ZTI6S198C6[];
extern  VTBL_ENTRY _ZTV6S198C6[];
extern Class_Descriptor cd_S198C5;
extern VTBL_ENTRY _ZTI6S198C5[];
extern  VTBL_ENTRY _ZTV6S198C5[];
extern Class_Descriptor cd_S198C4;
extern VTBL_ENTRY _ZTI6S198C4[];
extern  VTBL_ENTRY _ZTV6S198C4[];
extern Class_Descriptor cd_S198C3_nt;
extern VTBL_ENTRY _ZTI9S198C3_nt[];
extern  VTBL_ENTRY _ZTV9S198C3_nt[];
static Base_Class bases_S198C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S198C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S198C2[];
extern void _ZN6S198C2D1Ev();
extern void _ZN6S198C2D0Ev();
extern void _ZN6S198C62v4Ev();
extern void _ZN6S198C62v5Ev();
extern void _ZN6S198C62v6Ev();
extern void _ZN6S198C62v7Ev();
extern void _ZN6S198C62v8Ev();
extern void _ZN6S198C62v9Ev();
extern void _ZN6S198C63v10Ev();
extern void _ZN6S198C63v11Ev();
extern void _ZN6S198C63v12Ev();
extern void _ZN6S198C63v13Ev();
extern void _ZN6S198C63v14Ev();
extern void _ZN6S198C63v15Ev();
extern void _ZN6S198C63v16Ev();
extern void _ZN6S198C63v17Ev();
extern void _ZN6S198C63v18Ev();
extern void _ZN6S198C63v19Ev();
extern void _ZN6S198C63v20Ev();
extern void _ZN6S198C63v21Ev();
extern void _ZN6S198C63v22Ev();
extern void _ZN6S198C63v23Ev();
extern void _ZN6S198C63v24Ev();
extern void _ZN6S198C63v25Ev();
extern void _ZN6S198C63v26Ev();
extern void _ZN6S198C63v27Ev();
extern void _ZN6S198C63v28Ev();
extern void _ZN6S198C63v29Ev();
extern void _ZN6S198C63v30Ev();
extern void _ZN6S198C63v31Ev();
extern void _ZN6S198C63v32Ev();
extern void _ZN6S198C63v33Ev();
extern void _ZN6S198C63v34Ev();
extern void _ZN6S198C63v35Ev();
extern void _ZN6S198C63v36Ev();
extern void _ZN6S198C63v37Ev();
extern void _ZN6S198C63v38Ev();
extern void _ZN6S198C63v39Ev();
extern void _ZN6S198C63v40Ev();
extern void _ZN6S198C63v41Ev();
extern void _ZN6S198C63v42Ev();
extern void _ZN6S198C63v43Ev();
extern void _ZN6S198C63v44Ev();
extern void _ZN6S198C63v45Ev();
extern void _ZN6S198C63v46Ev();
extern void _ZN6S198C63v47Ev();
extern void _ZN6S198C63v48Ev();
extern void _ZN6S198C63v49Ev();
extern void _ZN6S198C63v50Ev();
extern void _ZN6S198C63v51Ev();
extern void _ZN6S198C63v52Ev();
extern void _ZN6S198C63v53Ev();
extern void _ZN6S198C63v54Ev();
extern void _ZN6S198C63v55Ev();
extern void _ZN6S198C63v56Ev();
extern void _ZN6S198C63v57Ev();
extern void _ZN6S198C63v58Ev();
extern void _ZN6S198C63v59Ev();
extern void _ZN6S198C63v60Ev();
extern void _ZN6S198C63v61Ev();
extern void _ZN6S198C63v62Ev();
extern void _ZN6S198C63v63Ev();
extern void _ZN6S198C63v64Ev();
extern void _ZN6S198C63v65Ev();
extern void _ZN6S198C63v66Ev();
extern void _ZN6S198C63v67Ev();
extern void _ZN6S198C53v68Ev();
extern void _ZN6S198C53v69Ev();
extern void _ZN6S198C53v70Ev();
extern void _ZN6S198C53v71Ev();
extern void _ZN6S198C53v72Ev();
extern void _ZN6S198C53v73Ev();
extern void _ZN6S198C53v74Ev();
extern void _ZN6S198C53v75Ev();
extern void _ZN6S198C53v76Ev();
extern void _ZN6S198C53v77Ev();
extern void _ZN6S198C53v78Ev();
extern void _ZN6S198C53v79Ev();
extern void _ZN6S198C53v80Ev();
extern void _ZN6S198C53v81Ev();
extern void _ZN6S198C53v82Ev();
extern void _ZN6S198C53v83Ev();
extern void _ZN6S198C53v84Ev();
extern void _ZN6S198C53v85Ev();
extern void _ZN6S198C53v86Ev();
extern void _ZN6S198C53v87Ev();
extern void _ZN6S198C53v88Ev();
extern void _ZN6S198C53v89Ev();
extern void _ZN6S198C43v90Ev();
extern void _ZN6S198C43v91Ev();
extern void _ZN6S198C43v92Ev();
extern void _ZN6S198C43v93Ev();
extern void _ZN6S198C43v94Ev();
extern void _ZN6S198C43v95Ev();
extern void _ZN6S198C43v96Ev();
extern void _ZN6S198C43v97Ev();
extern void _ZN6S198C43v98Ev();
extern void _ZN6S198C43v99Ev();
extern void _ZN6S198C44v100Ev();
extern void _ZN6S198C44v101Ev();
extern void _ZN6S198C44v102Ev();
extern void _ZN6S198C44v103Ev();
extern void _ZN6S198C44v104Ev();
extern void _ZN6S198C44v105Ev();
extern void _ZN6S198C44v106Ev();
extern void _ZN6S198C44v107Ev();
extern void _ZN6S198C44v108Ev();
extern void _ZN6S198C44v109Ev();
extern void _ZN9S198C3_nt4v110Ev();
extern void _ZN9S198C3_nt4v111Ev();
extern void _ZN9S198C3_nt4v112Ev();
extern void _ZN9S198C3_nt4v113Ev();
extern void _ZN6S198C24v114Ev();
extern void _ZN6S198C24v115Ev();
extern void _ZN6S198C24v116Ev();
extern void _ZN6S198C24v117Ev();
extern void _ZN6S198C24v118Ev();
extern void _ZN6S198C24v119Ev();
static  VTBL_ENTRY vtc_S198C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S198C2[0]),
  (VTBL_ENTRY)&_ZN6S198C2D1Ev,
  (VTBL_ENTRY)&_ZN6S198C2D0Ev,
  (VTBL_ENTRY)&_ZN6S198C62v4Ev,
  (VTBL_ENTRY)&_ZN6S198C62v5Ev,
  (VTBL_ENTRY)&_ZN6S198C62v6Ev,
  (VTBL_ENTRY)&_ZN6S198C62v7Ev,
  (VTBL_ENTRY)&_ZN6S198C62v8Ev,
  (VTBL_ENTRY)&_ZN6S198C62v9Ev,
  (VTBL_ENTRY)&_ZN6S198C63v10Ev,
  (VTBL_ENTRY)&_ZN6S198C63v11Ev,
  (VTBL_ENTRY)&_ZN6S198C63v12Ev,
  (VTBL_ENTRY)&_ZN6S198C63v13Ev,
  (VTBL_ENTRY)&_ZN6S198C63v14Ev,
  (VTBL_ENTRY)&_ZN6S198C63v15Ev,
  (VTBL_ENTRY)&_ZN6S198C63v16Ev,
  (VTBL_ENTRY)&_ZN6S198C63v17Ev,
  (VTBL_ENTRY)&_ZN6S198C63v18Ev,
  (VTBL_ENTRY)&_ZN6S198C63v19Ev,
  (VTBL_ENTRY)&_ZN6S198C63v20Ev,
  (VTBL_ENTRY)&_ZN6S198C63v21Ev,
  (VTBL_ENTRY)&_ZN6S198C63v22Ev,
  (VTBL_ENTRY)&_ZN6S198C63v23Ev,
  (VTBL_ENTRY)&_ZN6S198C63v24Ev,
  (VTBL_ENTRY)&_ZN6S198C63v25Ev,
  (VTBL_ENTRY)&_ZN6S198C63v26Ev,
  (VTBL_ENTRY)&_ZN6S198C63v27Ev,
  (VTBL_ENTRY)&_ZN6S198C63v28Ev,
  (VTBL_ENTRY)&_ZN6S198C63v29Ev,
  (VTBL_ENTRY)&_ZN6S198C63v30Ev,
  (VTBL_ENTRY)&_ZN6S198C63v31Ev,
  (VTBL_ENTRY)&_ZN6S198C63v32Ev,
  (VTBL_ENTRY)&_ZN6S198C63v33Ev,
  (VTBL_ENTRY)&_ZN6S198C63v34Ev,
  (VTBL_ENTRY)&_ZN6S198C63v35Ev,
  (VTBL_ENTRY)&_ZN6S198C63v36Ev,
  (VTBL_ENTRY)&_ZN6S198C63v37Ev,
  (VTBL_ENTRY)&_ZN6S198C63v38Ev,
  (VTBL_ENTRY)&_ZN6S198C63v39Ev,
  (VTBL_ENTRY)&_ZN6S198C63v40Ev,
  (VTBL_ENTRY)&_ZN6S198C63v41Ev,
  (VTBL_ENTRY)&_ZN6S198C63v42Ev,
  (VTBL_ENTRY)&_ZN6S198C63v43Ev,
  (VTBL_ENTRY)&_ZN6S198C63v44Ev,
  (VTBL_ENTRY)&_ZN6S198C63v45Ev,
  (VTBL_ENTRY)&_ZN6S198C63v46Ev,
  (VTBL_ENTRY)&_ZN6S198C63v47Ev,
  (VTBL_ENTRY)&_ZN6S198C63v48Ev,
  (VTBL_ENTRY)&_ZN6S198C63v49Ev,
  (VTBL_ENTRY)&_ZN6S198C63v50Ev,
  (VTBL_ENTRY)&_ZN6S198C63v51Ev,
  (VTBL_ENTRY)&_ZN6S198C63v52Ev,
  (VTBL_ENTRY)&_ZN6S198C63v53Ev,
  (VTBL_ENTRY)&_ZN6S198C63v54Ev,
  (VTBL_ENTRY)&_ZN6S198C63v55Ev,
  (VTBL_ENTRY)&_ZN6S198C63v56Ev,
  (VTBL_ENTRY)&_ZN6S198C63v57Ev,
  (VTBL_ENTRY)&_ZN6S198C63v58Ev,
  (VTBL_ENTRY)&_ZN6S198C63v59Ev,
  (VTBL_ENTRY)&_ZN6S198C63v60Ev,
  (VTBL_ENTRY)&_ZN6S198C63v61Ev,
  (VTBL_ENTRY)&_ZN6S198C63v62Ev,
  (VTBL_ENTRY)&_ZN6S198C63v63Ev,
  (VTBL_ENTRY)&_ZN6S198C63v64Ev,
  (VTBL_ENTRY)&_ZN6S198C63v65Ev,
  (VTBL_ENTRY)&_ZN6S198C63v66Ev,
  (VTBL_ENTRY)&_ZN6S198C63v67Ev,
  (VTBL_ENTRY)&_ZN6S198C53v68Ev,
  (VTBL_ENTRY)&_ZN6S198C53v69Ev,
  (VTBL_ENTRY)&_ZN6S198C53v70Ev,
  (VTBL_ENTRY)&_ZN6S198C53v71Ev,
  (VTBL_ENTRY)&_ZN6S198C53v72Ev,
  (VTBL_ENTRY)&_ZN6S198C53v73Ev,
  (VTBL_ENTRY)&_ZN6S198C53v74Ev,
  (VTBL_ENTRY)&_ZN6S198C53v75Ev,
  (VTBL_ENTRY)&_ZN6S198C53v76Ev,
  (VTBL_ENTRY)&_ZN6S198C53v77Ev,
  (VTBL_ENTRY)&_ZN6S198C53v78Ev,
  (VTBL_ENTRY)&_ZN6S198C53v79Ev,
  (VTBL_ENTRY)&_ZN6S198C53v80Ev,
  (VTBL_ENTRY)&_ZN6S198C53v81Ev,
  (VTBL_ENTRY)&_ZN6S198C53v82Ev,
  (VTBL_ENTRY)&_ZN6S198C53v83Ev,
  (VTBL_ENTRY)&_ZN6S198C53v84Ev,
  (VTBL_ENTRY)&_ZN6S198C53v85Ev,
  (VTBL_ENTRY)&_ZN6S198C53v86Ev,
  (VTBL_ENTRY)&_ZN6S198C53v87Ev,
  (VTBL_ENTRY)&_ZN6S198C53v88Ev,
  (VTBL_ENTRY)&_ZN6S198C53v89Ev,
  (VTBL_ENTRY)&_ZN6S198C43v90Ev,
  (VTBL_ENTRY)&_ZN6S198C43v91Ev,
  (VTBL_ENTRY)&_ZN6S198C43v92Ev,
  (VTBL_ENTRY)&_ZN6S198C43v93Ev,
  (VTBL_ENTRY)&_ZN6S198C43v94Ev,
  (VTBL_ENTRY)&_ZN6S198C43v95Ev,
  (VTBL_ENTRY)&_ZN6S198C43v96Ev,
  (VTBL_ENTRY)&_ZN6S198C43v97Ev,
  (VTBL_ENTRY)&_ZN6S198C43v98Ev,
  (VTBL_ENTRY)&_ZN6S198C43v99Ev,
  (VTBL_ENTRY)&_ZN6S198C44v100Ev,
  (VTBL_ENTRY)&_ZN6S198C44v101Ev,
  (VTBL_ENTRY)&_ZN6S198C44v102Ev,
  (VTBL_ENTRY)&_ZN6S198C44v103Ev,
  (VTBL_ENTRY)&_ZN6S198C44v104Ev,
  (VTBL_ENTRY)&_ZN6S198C44v105Ev,
  (VTBL_ENTRY)&_ZN6S198C44v106Ev,
  (VTBL_ENTRY)&_ZN6S198C44v107Ev,
  (VTBL_ENTRY)&_ZN6S198C44v108Ev,
  (VTBL_ENTRY)&_ZN6S198C44v109Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN6S198C24v114Ev,
  (VTBL_ENTRY)&_ZN6S198C24v115Ev,
  (VTBL_ENTRY)&_ZN6S198C24v116Ev,
  (VTBL_ENTRY)&_ZN6S198C24v117Ev,
  (VTBL_ENTRY)&_ZN6S198C24v118Ev,
  (VTBL_ENTRY)&_ZN6S198C24v119Ev,
};
extern VTBL_ENTRY _ZTI6S198C2[];
extern  VTBL_ENTRY _ZTV6S198C2[];
Class_Descriptor cd_S198C2 = {  "S198C2", // class name
  bases_S198C2, 4,
  &(vtc_S198C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,244), // object size
  NSPAIRA(_ZTI6S198C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S198C2),120, //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  S198C1  : S198C2 {
  virtual  ~S198C1(); // _ZN6S198C1D1Ev
  virtual void  v1(); // _ZN6S198C12v1Ev
  virtual void  v2(); // _ZN6S198C12v2Ev
  virtual void  v3(); // _ZN6S198C12v3Ev
  S198C1(); // tgen
};
//SIG(1 S198C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} FC8 FC12{ m} FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC9 FC13{ BC14{ BC11}} FC15{ BC16{ BC11}} FC17{ BC18{ BC11}} Fi[3]} vd v110 v111 v112 v113 FC7 Fi:1 FC19{ BC20{ BC11}}} vd v114 v115 v116 v117 v118 v119 Fi[2] Fi:1 Fi:1 FC21{ BC22{ BC11}}} vd v1 v2 v3}


 S198C1 ::~S198C1(){ note_dtor("S198C1", this);}
void  S198C1 ::v1(){vfunc_called(this, "_ZN6S198C12v1Ev");}
void  S198C1 ::v2(){vfunc_called(this, "_ZN6S198C12v2Ev");}
void  S198C1 ::v3(){vfunc_called(this, "_ZN6S198C12v3Ev");}
S198C1 ::S198C1(){ note_ctor("S198C1", this);} // tgen

static void Test_S198C1()
{
  extern Class_Descriptor cd_S198C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,62)];
    init_test(&cd_S198C1, buf);
    S198C1 *dp, &lv = *(dp=new (buf) S198C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,244), "sizeof(S198C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S198C1)");
    check_base_class_offset(lv, (S198C6*)(S198C5*)(S198C4*)(S198C3_nt*)(S198C2*), 0, "S198C1");
    check_base_class_offset(lv, (S198C5*)(S198C4*)(S198C3_nt*)(S198C2*), 0, "S198C1");
    check_base_class_offset(lv, (S198C4*)(S198C3_nt*)(S198C2*), 0, "S198C1");
    check_base_class_offset(lv, (S198C3_nt*)(S198C2*), 0, "S198C1");
    check_base_class_offset(lv, (S198C2*), 0, "S198C1");
    test_class_info(&lv, &cd_S198C1);
    dp->~S198C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS198C1(Test_S198C1, "S198C1", ABISELECT(328,244));

#else // __cplusplus

extern void _ZN6S198C1C1Ev();
extern void _ZN6S198C1D1Ev();
Name_Map name_map_S198C1[] = {
  NSPAIR(_ZN6S198C1C1Ev),
  NSPAIR(_ZN6S198C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S198C6;
extern VTBL_ENTRY _ZTI6S198C6[];
extern  VTBL_ENTRY _ZTV6S198C6[];
extern Class_Descriptor cd_S198C5;
extern VTBL_ENTRY _ZTI6S198C5[];
extern  VTBL_ENTRY _ZTV6S198C5[];
extern Class_Descriptor cd_S198C4;
extern VTBL_ENTRY _ZTI6S198C4[];
extern  VTBL_ENTRY _ZTV6S198C4[];
extern Class_Descriptor cd_S198C3_nt;
extern VTBL_ENTRY _ZTI9S198C3_nt[];
extern  VTBL_ENTRY _ZTV9S198C3_nt[];
extern Class_Descriptor cd_S198C2;
extern VTBL_ENTRY _ZTI6S198C2[];
extern  VTBL_ENTRY _ZTV6S198C2[];
static Base_Class bases_S198C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S198C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S198C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S198C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S198C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S198C1[];
extern void _ZN6S198C1D1Ev();
extern void _ZN6S198C1D0Ev();
extern void _ZN6S198C62v4Ev();
extern void _ZN6S198C62v5Ev();
extern void _ZN6S198C62v6Ev();
extern void _ZN6S198C62v7Ev();
extern void _ZN6S198C62v8Ev();
extern void _ZN6S198C62v9Ev();
extern void _ZN6S198C63v10Ev();
extern void _ZN6S198C63v11Ev();
extern void _ZN6S198C63v12Ev();
extern void _ZN6S198C63v13Ev();
extern void _ZN6S198C63v14Ev();
extern void _ZN6S198C63v15Ev();
extern void _ZN6S198C63v16Ev();
extern void _ZN6S198C63v17Ev();
extern void _ZN6S198C63v18Ev();
extern void _ZN6S198C63v19Ev();
extern void _ZN6S198C63v20Ev();
extern void _ZN6S198C63v21Ev();
extern void _ZN6S198C63v22Ev();
extern void _ZN6S198C63v23Ev();
extern void _ZN6S198C63v24Ev();
extern void _ZN6S198C63v25Ev();
extern void _ZN6S198C63v26Ev();
extern void _ZN6S198C63v27Ev();
extern void _ZN6S198C63v28Ev();
extern void _ZN6S198C63v29Ev();
extern void _ZN6S198C63v30Ev();
extern void _ZN6S198C63v31Ev();
extern void _ZN6S198C63v32Ev();
extern void _ZN6S198C63v33Ev();
extern void _ZN6S198C63v34Ev();
extern void _ZN6S198C63v35Ev();
extern void _ZN6S198C63v36Ev();
extern void _ZN6S198C63v37Ev();
extern void _ZN6S198C63v38Ev();
extern void _ZN6S198C63v39Ev();
extern void _ZN6S198C63v40Ev();
extern void _ZN6S198C63v41Ev();
extern void _ZN6S198C63v42Ev();
extern void _ZN6S198C63v43Ev();
extern void _ZN6S198C63v44Ev();
extern void _ZN6S198C63v45Ev();
extern void _ZN6S198C63v46Ev();
extern void _ZN6S198C63v47Ev();
extern void _ZN6S198C63v48Ev();
extern void _ZN6S198C63v49Ev();
extern void _ZN6S198C63v50Ev();
extern void _ZN6S198C63v51Ev();
extern void _ZN6S198C63v52Ev();
extern void _ZN6S198C63v53Ev();
extern void _ZN6S198C63v54Ev();
extern void _ZN6S198C63v55Ev();
extern void _ZN6S198C63v56Ev();
extern void _ZN6S198C63v57Ev();
extern void _ZN6S198C63v58Ev();
extern void _ZN6S198C63v59Ev();
extern void _ZN6S198C63v60Ev();
extern void _ZN6S198C63v61Ev();
extern void _ZN6S198C63v62Ev();
extern void _ZN6S198C63v63Ev();
extern void _ZN6S198C63v64Ev();
extern void _ZN6S198C63v65Ev();
extern void _ZN6S198C63v66Ev();
extern void _ZN6S198C63v67Ev();
extern void _ZN6S198C53v68Ev();
extern void _ZN6S198C53v69Ev();
extern void _ZN6S198C53v70Ev();
extern void _ZN6S198C53v71Ev();
extern void _ZN6S198C53v72Ev();
extern void _ZN6S198C53v73Ev();
extern void _ZN6S198C53v74Ev();
extern void _ZN6S198C53v75Ev();
extern void _ZN6S198C53v76Ev();
extern void _ZN6S198C53v77Ev();
extern void _ZN6S198C53v78Ev();
extern void _ZN6S198C53v79Ev();
extern void _ZN6S198C53v80Ev();
extern void _ZN6S198C53v81Ev();
extern void _ZN6S198C53v82Ev();
extern void _ZN6S198C53v83Ev();
extern void _ZN6S198C53v84Ev();
extern void _ZN6S198C53v85Ev();
extern void _ZN6S198C53v86Ev();
extern void _ZN6S198C53v87Ev();
extern void _ZN6S198C53v88Ev();
extern void _ZN6S198C53v89Ev();
extern void _ZN6S198C43v90Ev();
extern void _ZN6S198C43v91Ev();
extern void _ZN6S198C43v92Ev();
extern void _ZN6S198C43v93Ev();
extern void _ZN6S198C43v94Ev();
extern void _ZN6S198C43v95Ev();
extern void _ZN6S198C43v96Ev();
extern void _ZN6S198C43v97Ev();
extern void _ZN6S198C43v98Ev();
extern void _ZN6S198C43v99Ev();
extern void _ZN6S198C44v100Ev();
extern void _ZN6S198C44v101Ev();
extern void _ZN6S198C44v102Ev();
extern void _ZN6S198C44v103Ev();
extern void _ZN6S198C44v104Ev();
extern void _ZN6S198C44v105Ev();
extern void _ZN6S198C44v106Ev();
extern void _ZN6S198C44v107Ev();
extern void _ZN6S198C44v108Ev();
extern void _ZN6S198C44v109Ev();
extern void _ZN9S198C3_nt4v110Ev();
extern void _ZN9S198C3_nt4v111Ev();
extern void _ZN9S198C3_nt4v112Ev();
extern void _ZN9S198C3_nt4v113Ev();
extern void _ZN6S198C24v114Ev();
extern void _ZN6S198C24v115Ev();
extern void _ZN6S198C24v116Ev();
extern void _ZN6S198C24v117Ev();
extern void _ZN6S198C24v118Ev();
extern void _ZN6S198C24v119Ev();
extern void _ZN6S198C12v1Ev();
extern void _ZN6S198C12v2Ev();
extern void _ZN6S198C12v3Ev();
static  VTBL_ENTRY vtc_S198C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S198C1[0]),
  (VTBL_ENTRY)&_ZN6S198C1D1Ev,
  (VTBL_ENTRY)&_ZN6S198C1D0Ev,
  (VTBL_ENTRY)&_ZN6S198C62v4Ev,
  (VTBL_ENTRY)&_ZN6S198C62v5Ev,
  (VTBL_ENTRY)&_ZN6S198C62v6Ev,
  (VTBL_ENTRY)&_ZN6S198C62v7Ev,
  (VTBL_ENTRY)&_ZN6S198C62v8Ev,
  (VTBL_ENTRY)&_ZN6S198C62v9Ev,
  (VTBL_ENTRY)&_ZN6S198C63v10Ev,
  (VTBL_ENTRY)&_ZN6S198C63v11Ev,
  (VTBL_ENTRY)&_ZN6S198C63v12Ev,
  (VTBL_ENTRY)&_ZN6S198C63v13Ev,
  (VTBL_ENTRY)&_ZN6S198C63v14Ev,
  (VTBL_ENTRY)&_ZN6S198C63v15Ev,
  (VTBL_ENTRY)&_ZN6S198C63v16Ev,
  (VTBL_ENTRY)&_ZN6S198C63v17Ev,
  (VTBL_ENTRY)&_ZN6S198C63v18Ev,
  (VTBL_ENTRY)&_ZN6S198C63v19Ev,
  (VTBL_ENTRY)&_ZN6S198C63v20Ev,
  (VTBL_ENTRY)&_ZN6S198C63v21Ev,
  (VTBL_ENTRY)&_ZN6S198C63v22Ev,
  (VTBL_ENTRY)&_ZN6S198C63v23Ev,
  (VTBL_ENTRY)&_ZN6S198C63v24Ev,
  (VTBL_ENTRY)&_ZN6S198C63v25Ev,
  (VTBL_ENTRY)&_ZN6S198C63v26Ev,
  (VTBL_ENTRY)&_ZN6S198C63v27Ev,
  (VTBL_ENTRY)&_ZN6S198C63v28Ev,
  (VTBL_ENTRY)&_ZN6S198C63v29Ev,
  (VTBL_ENTRY)&_ZN6S198C63v30Ev,
  (VTBL_ENTRY)&_ZN6S198C63v31Ev,
  (VTBL_ENTRY)&_ZN6S198C63v32Ev,
  (VTBL_ENTRY)&_ZN6S198C63v33Ev,
  (VTBL_ENTRY)&_ZN6S198C63v34Ev,
  (VTBL_ENTRY)&_ZN6S198C63v35Ev,
  (VTBL_ENTRY)&_ZN6S198C63v36Ev,
  (VTBL_ENTRY)&_ZN6S198C63v37Ev,
  (VTBL_ENTRY)&_ZN6S198C63v38Ev,
  (VTBL_ENTRY)&_ZN6S198C63v39Ev,
  (VTBL_ENTRY)&_ZN6S198C63v40Ev,
  (VTBL_ENTRY)&_ZN6S198C63v41Ev,
  (VTBL_ENTRY)&_ZN6S198C63v42Ev,
  (VTBL_ENTRY)&_ZN6S198C63v43Ev,
  (VTBL_ENTRY)&_ZN6S198C63v44Ev,
  (VTBL_ENTRY)&_ZN6S198C63v45Ev,
  (VTBL_ENTRY)&_ZN6S198C63v46Ev,
  (VTBL_ENTRY)&_ZN6S198C63v47Ev,
  (VTBL_ENTRY)&_ZN6S198C63v48Ev,
  (VTBL_ENTRY)&_ZN6S198C63v49Ev,
  (VTBL_ENTRY)&_ZN6S198C63v50Ev,
  (VTBL_ENTRY)&_ZN6S198C63v51Ev,
  (VTBL_ENTRY)&_ZN6S198C63v52Ev,
  (VTBL_ENTRY)&_ZN6S198C63v53Ev,
  (VTBL_ENTRY)&_ZN6S198C63v54Ev,
  (VTBL_ENTRY)&_ZN6S198C63v55Ev,
  (VTBL_ENTRY)&_ZN6S198C63v56Ev,
  (VTBL_ENTRY)&_ZN6S198C63v57Ev,
  (VTBL_ENTRY)&_ZN6S198C63v58Ev,
  (VTBL_ENTRY)&_ZN6S198C63v59Ev,
  (VTBL_ENTRY)&_ZN6S198C63v60Ev,
  (VTBL_ENTRY)&_ZN6S198C63v61Ev,
  (VTBL_ENTRY)&_ZN6S198C63v62Ev,
  (VTBL_ENTRY)&_ZN6S198C63v63Ev,
  (VTBL_ENTRY)&_ZN6S198C63v64Ev,
  (VTBL_ENTRY)&_ZN6S198C63v65Ev,
  (VTBL_ENTRY)&_ZN6S198C63v66Ev,
  (VTBL_ENTRY)&_ZN6S198C63v67Ev,
  (VTBL_ENTRY)&_ZN6S198C53v68Ev,
  (VTBL_ENTRY)&_ZN6S198C53v69Ev,
  (VTBL_ENTRY)&_ZN6S198C53v70Ev,
  (VTBL_ENTRY)&_ZN6S198C53v71Ev,
  (VTBL_ENTRY)&_ZN6S198C53v72Ev,
  (VTBL_ENTRY)&_ZN6S198C53v73Ev,
  (VTBL_ENTRY)&_ZN6S198C53v74Ev,
  (VTBL_ENTRY)&_ZN6S198C53v75Ev,
  (VTBL_ENTRY)&_ZN6S198C53v76Ev,
  (VTBL_ENTRY)&_ZN6S198C53v77Ev,
  (VTBL_ENTRY)&_ZN6S198C53v78Ev,
  (VTBL_ENTRY)&_ZN6S198C53v79Ev,
  (VTBL_ENTRY)&_ZN6S198C53v80Ev,
  (VTBL_ENTRY)&_ZN6S198C53v81Ev,
  (VTBL_ENTRY)&_ZN6S198C53v82Ev,
  (VTBL_ENTRY)&_ZN6S198C53v83Ev,
  (VTBL_ENTRY)&_ZN6S198C53v84Ev,
  (VTBL_ENTRY)&_ZN6S198C53v85Ev,
  (VTBL_ENTRY)&_ZN6S198C53v86Ev,
  (VTBL_ENTRY)&_ZN6S198C53v87Ev,
  (VTBL_ENTRY)&_ZN6S198C53v88Ev,
  (VTBL_ENTRY)&_ZN6S198C53v89Ev,
  (VTBL_ENTRY)&_ZN6S198C43v90Ev,
  (VTBL_ENTRY)&_ZN6S198C43v91Ev,
  (VTBL_ENTRY)&_ZN6S198C43v92Ev,
  (VTBL_ENTRY)&_ZN6S198C43v93Ev,
  (VTBL_ENTRY)&_ZN6S198C43v94Ev,
  (VTBL_ENTRY)&_ZN6S198C43v95Ev,
  (VTBL_ENTRY)&_ZN6S198C43v96Ev,
  (VTBL_ENTRY)&_ZN6S198C43v97Ev,
  (VTBL_ENTRY)&_ZN6S198C43v98Ev,
  (VTBL_ENTRY)&_ZN6S198C43v99Ev,
  (VTBL_ENTRY)&_ZN6S198C44v100Ev,
  (VTBL_ENTRY)&_ZN6S198C44v101Ev,
  (VTBL_ENTRY)&_ZN6S198C44v102Ev,
  (VTBL_ENTRY)&_ZN6S198C44v103Ev,
  (VTBL_ENTRY)&_ZN6S198C44v104Ev,
  (VTBL_ENTRY)&_ZN6S198C44v105Ev,
  (VTBL_ENTRY)&_ZN6S198C44v106Ev,
  (VTBL_ENTRY)&_ZN6S198C44v107Ev,
  (VTBL_ENTRY)&_ZN6S198C44v108Ev,
  (VTBL_ENTRY)&_ZN6S198C44v109Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S198C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN6S198C24v114Ev,
  (VTBL_ENTRY)&_ZN6S198C24v115Ev,
  (VTBL_ENTRY)&_ZN6S198C24v116Ev,
  (VTBL_ENTRY)&_ZN6S198C24v117Ev,
  (VTBL_ENTRY)&_ZN6S198C24v118Ev,
  (VTBL_ENTRY)&_ZN6S198C24v119Ev,
  (VTBL_ENTRY)&_ZN6S198C12v1Ev,
  (VTBL_ENTRY)&_ZN6S198C12v2Ev,
  (VTBL_ENTRY)&_ZN6S198C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S198C1[];
extern  VTBL_ENTRY _ZTV6S198C1[];
Class_Descriptor cd_S198C1 = {  "S198C1", // class name
  bases_S198C1, 5,
  &(vtc_S198C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,244), // object size
  NSPAIRA(_ZTI6S198C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S198C1),123, //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  S13320C5  {
  int s13320c5f0;
  char s13320c5f1;
  char s13320c5f2[3];
  char s13320c5f3[244];
};
//SIG(-1 S13320C5) C1{ Fi Fc[248]}



static void Test_S13320C5()
{
  {
    init_simple_test("S13320C5");
    S13320C5 lv;
    check2(sizeof(lv), 252, "sizeof(S13320C5)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C5)");
    check_field_offset(lv, s13320c5f0, 0, "S13320C5.s13320c5f0");
    check_field_offset(lv, s13320c5f1, 4, "S13320C5.s13320c5f1");
    check_field_offset(lv, s13320c5f2, 5, "S13320C5.s13320c5f2");
    check_field_offset(lv, s13320c5f3, 8, "S13320C5.s13320c5f3");
  }
}
static Arrange_To_Call_Me vS13320C5(Test_S13320C5, "S13320C5", 252);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C4  {
  ::S13320C5 s13320c4f0;
  int s13320c4f1;
  int s13320c4f2;
};
//SIG(-1 S13320C4) C1{ FC2{ Fi Fc[248]} Fi[2]}



static void Test_S13320C4()
{
  {
    init_simple_test("S13320C4");
    S13320C4 lv;
    check2(sizeof(lv), 260, "sizeof(S13320C4)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C4)");
    check_field_offset(lv, s13320c4f0, 0, "S13320C4.s13320c4f0");
    check_field_offset(lv, s13320c4f1, 252, "S13320C4.s13320c4f1");
    check_field_offset(lv, s13320c4f2, 256, "S13320C4.s13320c4f2");
  }
}
static Arrange_To_Call_Me vS13320C4(Test_S13320C4, "S13320C4", 260);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C7  {
  int s13320c7f0;
  int s13320c7f1;
  char s13320c7f2;
  char s13320c7f3;
  char s13320c7f4;
  char s13320c7f5;
  short s13320c7f6;
  char s13320c7f7[2];
  char s13320c7f8[255];
  char s13320c7f9;
};
//SIG(-1 S13320C7) C1{ Fi[2] Fc[4] Fs Fc[258]}



static void Test_S13320C7()
{
  {
    init_simple_test("S13320C7");
    S13320C7 lv;
    check2(sizeof(lv), 272, "sizeof(S13320C7)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C7)");
    check_field_offset(lv, s13320c7f0, 0, "S13320C7.s13320c7f0");
    check_field_offset(lv, s13320c7f1, 4, "S13320C7.s13320c7f1");
    check_field_offset(lv, s13320c7f2, 8, "S13320C7.s13320c7f2");
    check_field_offset(lv, s13320c7f3, 9, "S13320C7.s13320c7f3");
    check_field_offset(lv, s13320c7f4, 10, "S13320C7.s13320c7f4");
    check_field_offset(lv, s13320c7f5, 11, "S13320C7.s13320c7f5");
    check_field_offset(lv, s13320c7f6, 12, "S13320C7.s13320c7f6");
    check_field_offset(lv, s13320c7f7, 14, "S13320C7.s13320c7f7");
    check_field_offset(lv, s13320c7f8, 16, "S13320C7.s13320c7f8");
    check_field_offset(lv, s13320c7f9, 271, "S13320C7.s13320c7f9");
  }
}
static Arrange_To_Call_Me vS13320C7(Test_S13320C7, "S13320C7", 272);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C8  {
  int s13320c8f0;
  char s13320c8f1;
  char s13320c8f2[3];
};
//SIG(-1 S13320C8) C1{ Fi Fc[4]}



static void Test_S13320C8()
{
  {
    init_simple_test("S13320C8");
    S13320C8 lv;
    check2(sizeof(lv), 8, "sizeof(S13320C8)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C8)");
    check_field_offset(lv, s13320c8f0, 0, "S13320C8.s13320c8f0");
    check_field_offset(lv, s13320c8f1, 4, "S13320C8.s13320c8f1");
    check_field_offset(lv, s13320c8f2, 5, "S13320C8.s13320c8f2");
  }
}
static Arrange_To_Call_Me vS13320C8(Test_S13320C8, "S13320C8", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C6  {
  ::S13320C7 s13320c6f0;
  ::S13320C8 s13320c6f1;
  int s13320c6f2;
};
//SIG(-1 S13320C6) C1{ FC2{ Fi[2] Fc[4] Fs Fc[258]} FC3{ Fi Fc[4]} Fi}



static void Test_S13320C6()
{
  {
    init_simple_test("S13320C6");
    S13320C6 lv;
    check2(sizeof(lv), 284, "sizeof(S13320C6)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C6)");
    check_field_offset(lv, s13320c6f0, 0, "S13320C6.s13320c6f0");
    check_field_offset(lv, s13320c6f1, 272, "S13320C6.s13320c6f1");
    check_field_offset(lv, s13320c6f2, 280, "S13320C6.s13320c6f2");
  }
}
static Arrange_To_Call_Me vS13320C6(Test_S13320C6, "S13320C6", 284);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C3  {
  ::S13320C4 s13320c3f0;
  ::S13320C6 s13320c3f1;
};
//SIG(1 S13320C3) C1{ FC2{ FC3{ Fi Fc[248]} Fi[2]} FC4{ FC5{ Fi[2] Fc[4] Fs Fc[258]} FC6{ Fi Fc[4]} Fi}}



static void Test_S13320C3()
{
  {
    init_simple_test("S13320C3");
    S13320C3 lv;
    check2(sizeof(lv), 544, "sizeof(S13320C3)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C3)");
    check_field_offset(lv, s13320c3f0, 0, "S13320C3.s13320c3f0");
    check_field_offset(lv, s13320c3f1, 260, "S13320C3.s13320c3f1");
  }
}
static Arrange_To_Call_Me vS13320C3(Test_S13320C3, "S13320C3", 544);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C11  {
  ::S13320C7 s13320c11f0;
  ::S13320C8 s13320c11f1;
};
//SIG(-1 S13320C11) C1{ FC2{ Fi[2] Fc[4] Fs Fc[258]} FC3{ Fi Fc[4]}}



static void Test_S13320C11()
{
  {
    init_simple_test("S13320C11");
    S13320C11 lv;
    check2(sizeof(lv), 280, "sizeof(S13320C11)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C11)");
    check_field_offset(lv, s13320c11f0, 0, "S13320C11.s13320c11f0");
    check_field_offset(lv, s13320c11f1, 272, "S13320C11.s13320c11f1");
  }
}
static Arrange_To_Call_Me vS13320C11(Test_S13320C11, "S13320C11", 280);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C9  {
  ::S13320C4 s13320c9f0;
  ::S13320C11 s13320c9f1;
};
//SIG(1 S13320C9) C1{ FC2{ FC3{ Fi Fc[248]} Fi[2]} FC4{ FC5{ Fi[2] Fc[4] Fs Fc[258]} FC6{ Fi Fc[4]}}}



static void Test_S13320C9()
{
  {
    init_simple_test("S13320C9");
    S13320C9 lv;
    check2(sizeof(lv), 540, "sizeof(S13320C9)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C9)");
    check_field_offset(lv, s13320c9f0, 0, "S13320C9.s13320c9f0");
    check_field_offset(lv, s13320c9f1, 260, "S13320C9.s13320c9f1");
  }
}
static Arrange_To_Call_Me vS13320C9(Test_S13320C9, "S13320C9", 540);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C14  {
  char s13320c14f0;
  char s13320c14f1;
  char s13320c14f2[2];
};
//SIG(-1 S13320C14) C1{ Fc[4]}



static void Test_S13320C14()
{
  {
    init_simple_test("S13320C14");
    S13320C14 lv;
    check2(sizeof(lv), 4, "sizeof(S13320C14)");
    check2(__alignof__(lv), 1, "__alignof__(S13320C14)");
    check_field_offset(lv, s13320c14f0, 0, "S13320C14.s13320c14f0");
    check_field_offset(lv, s13320c14f1, 1, "S13320C14.s13320c14f1");
    check_field_offset(lv, s13320c14f2, 2, "S13320C14.s13320c14f2");
  }
}
static Arrange_To_Call_Me vS13320C14(Test_S13320C14, "S13320C14", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C13  {
  ::S13320C5 s13320c13f0;
  int s13320c13f1;
  int s13320c13f2;
  ::S13320C14 s13320c13f3;
  int s13320c13f4;
  int s13320c13f5;
};
//SIG(-1 S13320C13) C1{ FC2{ Fi Fc[248]} Fi[2] FC3{ Fc[4]} Fi[2]}



static void Test_S13320C13()
{
  {
    init_simple_test("S13320C13");
    S13320C13 lv;
    check2(sizeof(lv), 272, "sizeof(S13320C13)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C13)");
    check_field_offset(lv, s13320c13f0, 0, "S13320C13.s13320c13f0");
    check_field_offset(lv, s13320c13f1, 252, "S13320C13.s13320c13f1");
    check_field_offset(lv, s13320c13f2, 256, "S13320C13.s13320c13f2");
    check_field_offset(lv, s13320c13f3, 260, "S13320C13.s13320c13f3");
    check_field_offset(lv, s13320c13f4, 264, "S13320C13.s13320c13f4");
    check_field_offset(lv, s13320c13f5, 268, "S13320C13.s13320c13f5");
  }
}
static Arrange_To_Call_Me vS13320C13(Test_S13320C13, "S13320C13", 272);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C15  {
  ::S13320C7 s13320c15f0;
  ::S13320C5 s13320c15f1;
};
//SIG(-1 S13320C15) C1{ FC2{ Fi[2] Fc[4] Fs Fc[258]} FC3{ Fi Fc[248]}}



static void Test_S13320C15()
{
  {
    init_simple_test("S13320C15");
    S13320C15 lv;
    check2(sizeof(lv), 524, "sizeof(S13320C15)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C15)");
    check_field_offset(lv, s13320c15f0, 0, "S13320C15.s13320c15f0");
    check_field_offset(lv, s13320c15f1, 272, "S13320C15.s13320c15f1");
  }
}
static Arrange_To_Call_Me vS13320C15(Test_S13320C15, "S13320C15", 524);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C12  {
  ::S13320C13 s13320c12f0;
  ::S13320C15 s13320c12f1;
};
//SIG(1 S13320C12) C1{ FC2{ FC3{ Fi Fc[248]} Fi[2] FC4{ Fc[4]} Fi[2]} FC5{ FC6{ Fi[2] Fc[4] Fs Fc[258]} FC3}}



static void Test_S13320C12()
{
  {
    init_simple_test("S13320C12");
    S13320C12 lv;
    check2(sizeof(lv), 796, "sizeof(S13320C12)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C12)");
    check_field_offset(lv, s13320c12f0, 0, "S13320C12.s13320c12f0");
    check_field_offset(lv, s13320c12f1, 272, "S13320C12.s13320c12f1");
  }
}
static Arrange_To_Call_Me vS13320C12(Test_S13320C12, "S13320C12", 796);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C19  {
  char s13320c19f0;
  char s13320c19f1[254];
  char s13320c19f2;
};
//SIG(-1 S13320C19) C1{ Fc[256]}



static void Test_S13320C19()
{
  {
    init_simple_test("S13320C19");
    S13320C19 lv;
    check2(sizeof(lv), 256, "sizeof(S13320C19)");
    check2(__alignof__(lv), 1, "__alignof__(S13320C19)");
    check_field_offset(lv, s13320c19f0, 0, "S13320C19.s13320c19f0");
    check_field_offset(lv, s13320c19f1, 1, "S13320C19.s13320c19f1");
    check_field_offset(lv, s13320c19f2, 255, "S13320C19.s13320c19f2");
  }
}
static Arrange_To_Call_Me vS13320C19(Test_S13320C19, "S13320C19", 256);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C18  {
  int s13320c18f0;
  ::S13320C19 s13320c18f1;
};
//SIG(-1 S13320C18) C1{ Fi FC2{ Fc[256]}}



static void Test_S13320C18()
{
  {
    init_simple_test("S13320C18");
    S13320C18 lv;
    check2(sizeof(lv), 260, "sizeof(S13320C18)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C18)");
    check_field_offset(lv, s13320c18f0, 0, "S13320C18.s13320c18f0");
    check_field_offset(lv, s13320c18f1, 4, "S13320C18.s13320c18f1");
  }
}
static Arrange_To_Call_Me vS13320C18(Test_S13320C18, "S13320C18", 260);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C21  {
  short s13320c21f0;
  short s13320c21f1;
  int s13320c21f2[8];
};
//SIG(-1 S13320C21) C1{ Fs[2] Fi[8]}



static void Test_S13320C21()
{
  {
    init_simple_test("S13320C21");
    S13320C21 lv;
    check2(sizeof(lv), 36, "sizeof(S13320C21)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C21)");
    check_field_offset(lv, s13320c21f0, 0, "S13320C21.s13320c21f0");
    check_field_offset(lv, s13320c21f1, 2, "S13320C21.s13320c21f1");
    check_field_offset(lv, s13320c21f2, 4, "S13320C21.s13320c21f2");
  }
}
static Arrange_To_Call_Me vS13320C21(Test_S13320C21, "S13320C21", 36);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C23  {
  char s13320c23f0;
  char s13320c23f1[255];
};
//SIG(1 S13320C23) C1{ Fc[256]}



static void Test_S13320C23()
{
  {
    init_simple_test("S13320C23");
    S13320C23 lv;
    check2(sizeof(lv), 256, "sizeof(S13320C23)");
    check2(__alignof__(lv), 1, "__alignof__(S13320C23)");
    check_field_offset(lv, s13320c23f0, 0, "S13320C23.s13320c23f0");
    check_field_offset(lv, s13320c23f1, 1, "S13320C23.s13320c23f1");
  }
}
static Arrange_To_Call_Me vS13320C23(Test_S13320C23, "S13320C23", 256);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C22  {
  int s13320c22f0;
  ::S13320C23 s13320c22f1[8];
};
//SIG(-1 S13320C22) C1{ Fi FC2{ Fc[256]}[8]}



static void Test_S13320C22()
{
  {
    init_simple_test("S13320C22");
    S13320C22 lv;
    check2(sizeof(lv), 2052, "sizeof(S13320C22)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C22)");
    check_field_offset(lv, s13320c22f0, 0, "S13320C22.s13320c22f0");
    check_field_offset(lv, s13320c22f1, 4, "S13320C22.s13320c22f1");
  }
}
static Arrange_To_Call_Me vS13320C22(Test_S13320C22, "S13320C22", 2052);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C20  {
  ::S13320C21 s13320c20f0;
  ::S13320C22 s13320c20f1;
  ::S13320C5 s13320c20f2;
  ::S13320C5 s13320c20f3;
  ::S13320C7 s13320c20f4;
  char s13320c20f5;
  char s13320c20f6[3];
};
//SIG(-1 S13320C20) C1{ FC2{ Fs[2] Fi[8]} FC3{ Fi FC4{ Fc[256]}[8]} FC5{ Fi Fc[248]} FC5 FC6{ Fi[2] Fc[4] Fs Fc[258]} Fc[4]}



static void Test_S13320C20()
{
  {
    init_simple_test("S13320C20");
    S13320C20 lv;
    check2(sizeof(lv), 2868, "sizeof(S13320C20)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C20)");
    check_field_offset(lv, s13320c20f0, 0, "S13320C20.s13320c20f0");
    check_field_offset(lv, s13320c20f1, 36, "S13320C20.s13320c20f1");
    check_field_offset(lv, s13320c20f2, 2088, "S13320C20.s13320c20f2");
    check_field_offset(lv, s13320c20f3, 2340, "S13320C20.s13320c20f3");
    check_field_offset(lv, s13320c20f4, 2592, "S13320C20.s13320c20f4");
    check_field_offset(lv, s13320c20f5, 2864, "S13320C20.s13320c20f5");
    check_field_offset(lv, s13320c20f6, 2865, "S13320C20.s13320c20f6");
  }
}
static Arrange_To_Call_Me vS13320C20(Test_S13320C20, "S13320C20", 2868);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C17  {
  ::S13320C18 s13320c17f0;
  ::S13320C20 s13320c17f1;
};
//SIG(1 S13320C17) C1{ FC2{ Fi FC3{ Fc[256]}} FC4{ FC5{ Fs[2] Fi[8]} FC6{ Fi FC7{ Fc[256]}[8]} FC8{ Fi Fc[248]} FC8 FC9{ Fi[2] Fc[4] Fs Fc[258]} Fc[4]}}



static void Test_S13320C17()
{
  {
    init_simple_test("S13320C17");
    S13320C17 lv;
    check2(sizeof(lv), 3128, "sizeof(S13320C17)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C17)");
    check_field_offset(lv, s13320c17f0, 0, "S13320C17.s13320c17f0");
    check_field_offset(lv, s13320c17f1, 260, "S13320C17.s13320c17f1");
  }
}
static Arrange_To_Call_Me vS13320C17(Test_S13320C17, "S13320C17", 3128);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C27  {
  char s13320c27f0;
  char s13320c27f1;
  char s13320c27f2[254];
};
//SIG(1 S13320C27) C1{ Fc[256]}



static void Test_S13320C27()
{
  {
    init_simple_test("S13320C27");
    S13320C27 lv;
    check2(sizeof(lv), 256, "sizeof(S13320C27)");
    check2(__alignof__(lv), 1, "__alignof__(S13320C27)");
    check_field_offset(lv, s13320c27f0, 0, "S13320C27.s13320c27f0");
    check_field_offset(lv, s13320c27f1, 1, "S13320C27.s13320c27f1");
    check_field_offset(lv, s13320c27f2, 2, "S13320C27.s13320c27f2");
  }
}
static Arrange_To_Call_Me vS13320C27(Test_S13320C27, "S13320C27", 256);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C26  {
  char s13320c26f0;
  char s13320c26f1[3];
  ::S13320C27 s13320c26f2[30];
};
//SIG(-1 S13320C26) C1{ Fc[4] FC2{ Fc[256]}[30]}



static void Test_S13320C26()
{
  {
    init_simple_test("S13320C26");
    S13320C26 lv;
    check2(sizeof(lv), 7684, "sizeof(S13320C26)");
    check2(__alignof__(lv), 1, "__alignof__(S13320C26)");
    check_field_offset(lv, s13320c26f0, 0, "S13320C26.s13320c26f0");
    check_field_offset(lv, s13320c26f1, 1, "S13320C26.s13320c26f1");
    check_field_offset(lv, s13320c26f2, 4, "S13320C26.s13320c26f2");
  }
}
static Arrange_To_Call_Me vS13320C26(Test_S13320C26, "S13320C26", 7684);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C25  {
  int s13320c25f0;
  int s13320c25f1;
  ::S13320C26 s13320c25f2;
  int s13320c25f3;
};
//SIG(-1 S13320C25) C1{ Fi[2] FC2{ Fc[4] FC3{ Fc[256]}[30]} Fi}



static void Test_S13320C25()
{
  {
    init_simple_test("S13320C25");
    S13320C25 lv;
    check2(sizeof(lv), 7696, "sizeof(S13320C25)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C25)");
    check_field_offset(lv, s13320c25f0, 0, "S13320C25.s13320c25f0");
    check_field_offset(lv, s13320c25f1, 4, "S13320C25.s13320c25f1");
    check_field_offset(lv, s13320c25f2, 8, "S13320C25.s13320c25f2");
    check_field_offset(lv, s13320c25f3, 7692, "S13320C25.s13320c25f3");
  }
}
static Arrange_To_Call_Me vS13320C25(Test_S13320C25, "S13320C25", 7696);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C29  {
  char s13320c29f0;
  char s13320c29f1[3];
  int s13320c29f2[8];
};
//SIG(-1 S13320C29) C1{ Fc[4] Fi[8]}



static void Test_S13320C29()
{
  {
    init_simple_test("S13320C29");
    S13320C29 lv;
    check2(sizeof(lv), 36, "sizeof(S13320C29)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C29)");
    check_field_offset(lv, s13320c29f0, 0, "S13320C29.s13320c29f0");
    check_field_offset(lv, s13320c29f1, 1, "S13320C29.s13320c29f1");
    check_field_offset(lv, s13320c29f2, 4, "S13320C29.s13320c29f2");
  }
}
static Arrange_To_Call_Me vS13320C29(Test_S13320C29, "S13320C29", 36);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C30  {
  int s13320c30f0;
  char s13320c30f1;
  char s13320c30f2[3];
  ::S13320C7 s13320c30f3[30];
};
//SIG(-1 S13320C30) C1{ Fi Fc[4] FC2{ Fi[2] Fc[4] Fs Fc[258]}[30]}



static void Test_S13320C30()
{
  {
    init_simple_test("S13320C30");
    S13320C30 lv;
    check2(sizeof(lv), 8168, "sizeof(S13320C30)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C30)");
    check_field_offset(lv, s13320c30f0, 0, "S13320C30.s13320c30f0");
    check_field_offset(lv, s13320c30f1, 4, "S13320C30.s13320c30f1");
    check_field_offset(lv, s13320c30f2, 5, "S13320C30.s13320c30f2");
    check_field_offset(lv, s13320c30f3, 8, "S13320C30.s13320c30f3");
  }
}
static Arrange_To_Call_Me vS13320C30(Test_S13320C30, "S13320C30", 8168);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C28  {
  ::S13320C5 s13320c28f0;
  char s13320c28f1;
  char s13320c28f2[3];
  ::S13320C29 s13320c28f3;
  ::S13320C7 s13320c28f4;
  ::S13320C30 s13320c28f5;
  ::S13320C5 s13320c28f6;
};
//SIG(-1 S13320C28) C1{ FC2{ Fi Fc[248]} Fc[4] FC3{ Fc[4] Fi[8]} FC4{ Fi[2] Fc[4] Fs Fc[258]} FC5{ Fi Fc[4] FC4[30]} FC2}



static void Test_S13320C28()
{
  {
    init_simple_test("S13320C28");
    S13320C28 lv;
    check2(sizeof(lv), 8984, "sizeof(S13320C28)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C28)");
    check_field_offset(lv, s13320c28f0, 0, "S13320C28.s13320c28f0");
    check_field_offset(lv, s13320c28f1, 252, "S13320C28.s13320c28f1");
    check_field_offset(lv, s13320c28f2, 253, "S13320C28.s13320c28f2");
    check_field_offset(lv, s13320c28f3, 256, "S13320C28.s13320c28f3");
    check_field_offset(lv, s13320c28f4, 292, "S13320C28.s13320c28f4");
    check_field_offset(lv, s13320c28f5, 564, "S13320C28.s13320c28f5");
    check_field_offset(lv, s13320c28f6, 8732, "S13320C28.s13320c28f6");
  }
}
static Arrange_To_Call_Me vS13320C28(Test_S13320C28, "S13320C28", 8984);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C24  {
  ::S13320C25 s13320c24f0;
  ::S13320C28 s13320c24f1;
};
//SIG(1 S13320C24) C1{ FC2{ Fi[2] FC3{ Fc[4] FC4{ Fc[256]}[30]} Fi} FC5{ FC6{ Fi Fc[248]} Fc[4] FC7{ Fc[4] Fi[8]} FC8{ Fi[2] Fc[4] Fs Fc[258]} FC9{ Fi Fc[4] FC8[30]} FC6}}



static void Test_S13320C24()
{
  {
    init_simple_test("S13320C24");
    S13320C24 lv;
    check2(sizeof(lv), 16680, "sizeof(S13320C24)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C24)");
    check_field_offset(lv, s13320c24f0, 0, "S13320C24.s13320c24f0");
    check_field_offset(lv, s13320c24f1, 7696, "S13320C24.s13320c24f1");
  }
}
static Arrange_To_Call_Me vS13320C24(Test_S13320C24, "S13320C24", 16680);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C33  {
  char s13320c33f0;
  char s13320c33f1[3];
  char s13320c33f2[255];
  char s13320c33f3;
};
//SIG(-1 S13320C33) C1{ Fc[260]}



static void Test_S13320C33()
{
  {
    init_simple_test("S13320C33");
    S13320C33 lv;
    check2(sizeof(lv), 260, "sizeof(S13320C33)");
    check2(__alignof__(lv), 1, "__alignof__(S13320C33)");
    check_field_offset(lv, s13320c33f0, 0, "S13320C33.s13320c33f0");
    check_field_offset(lv, s13320c33f1, 1, "S13320C33.s13320c33f1");
    check_field_offset(lv, s13320c33f2, 4, "S13320C33.s13320c33f2");
    check_field_offset(lv, s13320c33f3, 259, "S13320C33.s13320c33f3");
  }
}
static Arrange_To_Call_Me vS13320C33(Test_S13320C33, "S13320C33", 260);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C32  {
  int s13320c32f0;
  int s13320c32f1;
  ::S13320C33 s13320c32f2;
};
//SIG(-1 S13320C32) C1{ Fi[2] FC2{ Fc[260]}}



static void Test_S13320C32()
{
  {
    init_simple_test("S13320C32");
    S13320C32 lv;
    check2(sizeof(lv), 268, "sizeof(S13320C32)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C32)");
    check_field_offset(lv, s13320c32f0, 0, "S13320C32.s13320c32f0");
    check_field_offset(lv, s13320c32f1, 4, "S13320C32.s13320c32f1");
    check_field_offset(lv, s13320c32f2, 8, "S13320C32.s13320c32f2");
  }
}
static Arrange_To_Call_Me vS13320C32(Test_S13320C32, "S13320C32", 268);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C35  {
  int s13320c35f0;
  int s13320c35f1;
  char s13320c35f2;
  char s13320c35f3[200];
  char s13320c35f4[3];
};
//SIG(-1 S13320C35) C1{ Fi[2] Fc[204]}



static void Test_S13320C35()
{
  {
    init_simple_test("S13320C35");
    S13320C35 lv;
    check2(sizeof(lv), 212, "sizeof(S13320C35)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C35)");
    check_field_offset(lv, s13320c35f0, 0, "S13320C35.s13320c35f0");
    check_field_offset(lv, s13320c35f1, 4, "S13320C35.s13320c35f1");
    check_field_offset(lv, s13320c35f2, 8, "S13320C35.s13320c35f2");
    check_field_offset(lv, s13320c35f3, 9, "S13320C35.s13320c35f3");
    check_field_offset(lv, s13320c35f4, 209, "S13320C35.s13320c35f4");
  }
}
static Arrange_To_Call_Me vS13320C35(Test_S13320C35, "S13320C35", 212);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C34  {
  ::S13320C35 s13320c34f0;
  ::S13320C5 s13320c34f1;
  ::S13320C7 s13320c34f2;
  ::S13320C5 s13320c34f3;
};
//SIG(-1 S13320C34) C1{ FC2{ Fi[2] Fc[204]} FC3{ Fi Fc[248]} FC4{ Fi[2] Fc[4] Fs Fc[258]} FC3}



static void Test_S13320C34()
{
  {
    init_simple_test("S13320C34");
    S13320C34 lv;
    check2(sizeof(lv), 988, "sizeof(S13320C34)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C34)");
    check_field_offset(lv, s13320c34f0, 0, "S13320C34.s13320c34f0");
    check_field_offset(lv, s13320c34f1, 212, "S13320C34.s13320c34f1");
    check_field_offset(lv, s13320c34f2, 464, "S13320C34.s13320c34f2");
    check_field_offset(lv, s13320c34f3, 736, "S13320C34.s13320c34f3");
  }
}
static Arrange_To_Call_Me vS13320C34(Test_S13320C34, "S13320C34", 988);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C31  {
  ::S13320C32 s13320c31f0;
  ::S13320C34 s13320c31f1;
};
//SIG(1 S13320C31) C1{ FC2{ Fi[2] FC3{ Fc[260]}} FC4{ FC5{ Fi[2] Fc[204]} FC6{ Fi Fc[248]} FC7{ Fi[2] Fc[4] Fs Fc[258]} FC6}}



static void Test_S13320C31()
{
  {
    init_simple_test("S13320C31");
    S13320C31 lv;
    check2(sizeof(lv), 1256, "sizeof(S13320C31)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C31)");
    check_field_offset(lv, s13320c31f0, 0, "S13320C31.s13320c31f0");
    check_field_offset(lv, s13320c31f1, 268, "S13320C31.s13320c31f1");
  }
}
static Arrange_To_Call_Me vS13320C31(Test_S13320C31, "S13320C31", 1256);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C37  {
  ::S13320C35 s13320c37f0;
};
//SIG(-1 S13320C37) C1{ FC2{ Fi[2] Fc[204]}}



static void Test_S13320C37()
{
  {
    init_simple_test("S13320C37");
    S13320C37 lv;
    check2(sizeof(lv), 212, "sizeof(S13320C37)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C37)");
    check_field_offset(lv, s13320c37f0, 0, "S13320C37.s13320c37f0");
  }
}
static Arrange_To_Call_Me vS13320C37(Test_S13320C37, "S13320C37", 212);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C38  {
  ::S13320C5 s13320c38f0;
  ::S13320C7 s13320c38f1;
};
//SIG(-1 S13320C38) C1{ FC2{ Fi Fc[248]} FC3{ Fi[2] Fc[4] Fs Fc[258]}}



static void Test_S13320C38()
{
  {
    init_simple_test("S13320C38");
    S13320C38 lv;
    check2(sizeof(lv), 524, "sizeof(S13320C38)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C38)");
    check_field_offset(lv, s13320c38f0, 0, "S13320C38.s13320c38f0");
    check_field_offset(lv, s13320c38f1, 252, "S13320C38.s13320c38f1");
  }
}
static Arrange_To_Call_Me vS13320C38(Test_S13320C38, "S13320C38", 524);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C36  {
  ::S13320C37 s13320c36f0;
  ::S13320C38 s13320c36f1;
};
//SIG(1 S13320C36) C1{ FC2{ FC3{ Fi[2] Fc[204]}} FC4{ FC5{ Fi Fc[248]} FC6{ Fi[2] Fc[4] Fs Fc[258]}}}



static void Test_S13320C36()
{
  {
    init_simple_test("S13320C36");
    S13320C36 lv;
    check2(sizeof(lv), 736, "sizeof(S13320C36)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C36)");
    check_field_offset(lv, s13320c36f0, 0, "S13320C36.s13320c36f0");
    check_field_offset(lv, s13320c36f1, 212, "S13320C36.s13320c36f1");
  }
}
static Arrange_To_Call_Me vS13320C36(Test_S13320C36, "S13320C36", 736);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C41  {
  int s13320c41f0;
  int s13320c41f1;
  char s13320c41f2;
  char s13320c41f3[3];
  char s13320c41f4[184];
};
//SIG(-1 S13320C41) C1{ Fi[2] Fc[188]}



static void Test_S13320C41()
{
  {
    init_simple_test("S13320C41");
    S13320C41 lv;
    check2(sizeof(lv), 196, "sizeof(S13320C41)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C41)");
    check_field_offset(lv, s13320c41f0, 0, "S13320C41.s13320c41f0");
    check_field_offset(lv, s13320c41f1, 4, "S13320C41.s13320c41f1");
    check_field_offset(lv, s13320c41f2, 8, "S13320C41.s13320c41f2");
    check_field_offset(lv, s13320c41f3, 9, "S13320C41.s13320c41f3");
    check_field_offset(lv, s13320c41f4, 12, "S13320C41.s13320c41f4");
  }
}
static Arrange_To_Call_Me vS13320C41(Test_S13320C41, "S13320C41", 196);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C40  {
  ::S13320C41 s13320c40f0;
};
//SIG(-1 S13320C40) C1{ FC2{ Fi[2] Fc[188]}}



static void Test_S13320C40()
{
  {
    init_simple_test("S13320C40");
    S13320C40 lv;
    check2(sizeof(lv), 196, "sizeof(S13320C40)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C40)");
    check_field_offset(lv, s13320c40f0, 0, "S13320C40.s13320c40f0");
  }
}
static Arrange_To_Call_Me vS13320C40(Test_S13320C40, "S13320C40", 196);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C39  {
  ::S13320C40 s13320c39f0;
  ::S13320C38 s13320c39f1;
};
//SIG(1 S13320C39) C1{ FC2{ FC3{ Fi[2] Fc[188]}} FC4{ FC5{ Fi Fc[248]} FC6{ Fi[2] Fc[4] Fs Fc[258]}}}



static void Test_S13320C39()
{
  {
    init_simple_test("S13320C39");
    S13320C39 lv;
    check2(sizeof(lv), 720, "sizeof(S13320C39)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C39)");
    check_field_offset(lv, s13320c39f0, 0, "S13320C39.s13320c39f0");
    check_field_offset(lv, s13320c39f1, 196, "S13320C39.s13320c39f1");
  }
}
static Arrange_To_Call_Me vS13320C39(Test_S13320C39, "S13320C39", 720);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C44  {
  int s13320c44f0;
  int s13320c44f1;
  ::S13320C26 s13320c44f2;
};
//SIG(-1 S13320C44) C1{ Fi[2] FC2{ Fc[4] FC3{ Fc[256]}[30]}}



static void Test_S13320C44()
{
  {
    init_simple_test("S13320C44");
    S13320C44 lv;
    check2(sizeof(lv), 7692, "sizeof(S13320C44)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C44)");
    check_field_offset(lv, s13320c44f0, 0, "S13320C44.s13320c44f0");
    check_field_offset(lv, s13320c44f1, 4, "S13320C44.s13320c44f1");
    check_field_offset(lv, s13320c44f2, 8, "S13320C44.s13320c44f2");
  }
}
static Arrange_To_Call_Me vS13320C44(Test_S13320C44, "S13320C44", 7692);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C45  {
  ::S13320C5 s13320c45f0;
  char s13320c45f1;
  char s13320c45f2[3];
  ::S13320C29 s13320c45f3;
  ::S13320C7 s13320c45f4;
  ::S13320C30 s13320c45f5;
};
//SIG(-1 S13320C45) C1{ FC2{ Fi Fc[248]} Fc[4] FC3{ Fc[4] Fi[8]} FC4{ Fi[2] Fc[4] Fs Fc[258]} FC5{ Fi Fc[4] FC4[30]}}



static void Test_S13320C45()
{
  {
    init_simple_test("S13320C45");
    S13320C45 lv;
    check2(sizeof(lv), 8732, "sizeof(S13320C45)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C45)");
    check_field_offset(lv, s13320c45f0, 0, "S13320C45.s13320c45f0");
    check_field_offset(lv, s13320c45f1, 252, "S13320C45.s13320c45f1");
    check_field_offset(lv, s13320c45f2, 253, "S13320C45.s13320c45f2");
    check_field_offset(lv, s13320c45f3, 256, "S13320C45.s13320c45f3");
    check_field_offset(lv, s13320c45f4, 292, "S13320C45.s13320c45f4");
    check_field_offset(lv, s13320c45f5, 564, "S13320C45.s13320c45f5");
  }
}
static Arrange_To_Call_Me vS13320C45(Test_S13320C45, "S13320C45", 8732);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C43  {
  ::S13320C44 s13320c43f0;
  ::S13320C45 s13320c43f1;
};
//SIG(1 S13320C43) C1{ FC2{ Fi[2] FC3{ Fc[4] FC4{ Fc[256]}[30]}} FC5{ FC6{ Fi Fc[248]} Fc[4] FC7{ Fc[4] Fi[8]} FC8{ Fi[2] Fc[4] Fs Fc[258]} FC9{ Fi Fc[4] FC8[30]}}}



static void Test_S13320C43()
{
  {
    init_simple_test("S13320C43");
    S13320C43 lv;
    check2(sizeof(lv), 16424, "sizeof(S13320C43)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C43)");
    check_field_offset(lv, s13320c43f0, 0, "S13320C43.s13320c43f0");
    check_field_offset(lv, s13320c43f1, 7692, "S13320C43.s13320c43f1");
  }
}
static Arrange_To_Call_Me vS13320C43(Test_S13320C43, "S13320C43", 16424);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C47  {
  ::S13320C5 s13320c47f0;
};
//SIG(-1 S13320C47) C1{ FC2{ Fi Fc[248]}}



static void Test_S13320C47()
{
  {
    init_simple_test("S13320C47");
    S13320C47 lv;
    check2(sizeof(lv), 252, "sizeof(S13320C47)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C47)");
    check_field_offset(lv, s13320c47f0, 0, "S13320C47.s13320c47f0");
  }
}
static Arrange_To_Call_Me vS13320C47(Test_S13320C47, "S13320C47", 252);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C48  {
  ::S13320C7 s13320c48f0;
};
//SIG(-1 S13320C48) C1{ FC2{ Fi[2] Fc[4] Fs Fc[258]}}



static void Test_S13320C48()
{
  {
    init_simple_test("S13320C48");
    S13320C48 lv;
    check2(sizeof(lv), 272, "sizeof(S13320C48)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C48)");
    check_field_offset(lv, s13320c48f0, 0, "S13320C48.s13320c48f0");
  }
}
static Arrange_To_Call_Me vS13320C48(Test_S13320C48, "S13320C48", 272);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C46  {
  ::S13320C47 s13320c46f0;
  ::S13320C48 s13320c46f1;
};
//SIG(1 S13320C46) C1{ FC2{ FC3{ Fi Fc[248]}} FC4{ FC5{ Fi[2] Fc[4] Fs Fc[258]}}}



static void Test_S13320C46()
{
  {
    init_simple_test("S13320C46");
    S13320C46 lv;
    check2(sizeof(lv), 524, "sizeof(S13320C46)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C46)");
    check_field_offset(lv, s13320c46f0, 0, "S13320C46.s13320c46f0");
    check_field_offset(lv, s13320c46f1, 252, "S13320C46.s13320c46f1");
  }
}
static Arrange_To_Call_Me vS13320C46(Test_S13320C46, "S13320C46", 524);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C50_nt  {
  int s13320c50f0;
};
//SIG(-1 S13320C50_nt) C1{ Fi}



//skip512 S13320C50_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S13320C51_nt  {
  short s13320c51f0;
  short s13320c51f1;
};
//SIG(-1 S13320C51_nt) C1{ Fs[2]}



//skip512 S13320C51_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13320C49  {
  ::S13320C50_nt s13320c49f0;
  ::S13320C51_nt s13320c49f1;
};
//SIG(1 S13320C49) C1{ FC2{ Fi} FC3{ Fs[2]}}



static void Test_S13320C49()
{
  {
    init_simple_test("S13320C49");
    S13320C49 lv;
    check2(sizeof(lv), 8, "sizeof(S13320C49)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C49)");
    check_field_offset(lv, s13320c49f0, 0, "S13320C49.s13320c49f0");
    check_field_offset(lv, s13320c49f1, 4, "S13320C49.s13320c49f1");
  }
}
static Arrange_To_Call_Me vS13320C49(Test_S13320C49, "S13320C49", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S13320C2  {
  ::S13320C3 s13320c2f0;
  ::S13320C9 s13320c2f1;
  ::S13320C12 s13320c2f2;
  ::S13320C17 s13320c2f3;
  ::S13320C24 s13320c2f4;
  ::S13320C31 s13320c2f5;
  ::S13320C36 s13320c2f6;
  ::S13320C39 s13320c2f7;
  ::S13320C43 s13320c2f8;
  ::S13320C46 s13320c2f9;
  ::S13320C49 s13320c2f10;
};
//SIG(1 S13320C2) U1{ FC2{ FC3{ FC4{ Fi Fc Fc[3] Fc[244]} Fi Fi} FC5{ FC6{ Fi Fi Fc Fc Fc Fc Fs Fc[2] Fc[255] Fc} FC7{ Fi Fc Fc[3]} Fi}} FC8{ FC3 FC9{ FC6 FC7}} FC10{ FC11{ FC4 Fi Fi FC12{ Fc Fc Fc[2]} Fi Fi} FC13{ FC6 FC4}} FC14{ FC15{ Fi FC16{ Fc Fc[254] Fc}} FC17{ FC18{ Fs Fs Fi[8]} FC19{ Fi FC20{ Fc Fc[255]}[8]} FC4 FC4 FC6 Fc Fc[3]}} FC21{ FC22{ Fi Fi FC23{ Fc Fc[3] FC24{ Fc Fc Fc[254]}[30]} Fi} FC25{ FC4 Fc Fc[3] FC26{ Fc Fc[3] Fi[8]} FC6 FC27{ Fi Fc Fc[3] FC6[30]} FC4}} FC28{ FC29{ Fi Fi FC30{ Fc Fc[3] Fc[255] Fc}} FC31{ FC32{ Fi Fi Fc Fc[200] Fc[3]} FC4 FC6 FC4}} FC33{ FC34{ FC32} FC35{ FC4 FC6}} FC36{ FC37{ FC38{ Fi Fi Fc Fc[3] Fc[184]}} FC35} FC39{ FC40{ Fi Fi FC23} FC41{ FC4 Fc Fc[3] FC26 FC6 FC27}} FC42{ FC43{ FC4} FC44{ FC6}} FC45{ FC46{ Fi} FC47{ Fs Fs}}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S13320C1  {
  int s13320c1f0[3];
  char s13320c1f1[4];
  ::S13320C2 s13320c1f2;
};
//SIG(1 S13320C1) C1{ Fi[3] Fc[4] FU2{ FC3{ FC4{ FC5{ Fi Fc Fc[3] Fc[244]} Fi Fi} FC6{ FC7{ Fi Fi Fc Fc Fc Fc Fs Fc[2] Fc[255] Fc} FC8{ Fi Fc Fc[3]} Fi}} FC9{ FC4 FC10{ FC7 FC8}} FC11{ FC12{ FC5 Fi Fi FC13{ Fc Fc Fc[2]} Fi Fi} FC14{ FC7 FC5}} FC15{ FC16{ Fi FC17{ Fc Fc[254] Fc}} FC18{ FC19{ Fs Fs Fi[8]} FC20{ Fi FC21{ Fc Fc[255]}[8]} FC5 FC5 FC7 Fc Fc[3]}} FC22{ FC23{ Fi Fi FC24{ Fc Fc[3] FC25{ Fc Fc Fc[254]}[30]} Fi} FC26{ FC5 Fc Fc[3] FC27{ Fc Fc[3] Fi[8]} FC7 FC28{ Fi Fc Fc[3] FC7[30]} FC5}} FC29{ FC30{ Fi Fi FC31{ Fc Fc[3] Fc[255] Fc}} FC32{ FC33{ Fi Fi Fc Fc[200] Fc[3]} FC5 FC7 FC5}} FC34{ FC35{ FC33} FC36{ FC5 FC7}} FC37{ FC38{ FC39{ Fi Fi Fc Fc[3] Fc[184]}} FC36} FC40{ FC41{ Fi Fi FC24} FC42{ FC5 Fc Fc[3] FC27 FC7 FC28}} FC43{ FC44{ FC5} FC45{ FC7}} FC46{ FC47{ Fi} FC48{ Fs Fs}}}}



static void Test_S13320C1()
{
  {
    init_simple_test("S13320C1");
    S13320C1 lv;
    check2(sizeof(lv), 16696, "sizeof(S13320C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13320C1)");
    check_field_offset(lv, s13320c1f0, 0, "S13320C1.s13320c1f0");
    check_field_offset(lv, s13320c1f1, 12, "S13320C1.s13320c1f1");
    check_field_offset(lv, s13320c1f2, 16, "S13320C1.s13320c1f2");
  }
}
static Arrange_To_Call_Me vS13320C1(Test_S13320C1, "S13320C1", 16696);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C8  {
  __tsi64 s7223c8f0[9];
  void *s7223c8f1;
  long double s7223c8f2;
  void *s7223c8f3;
  char s7223c8f4;
  short s7223c8f5[6];
  void *s7223c8f6;
  char s7223c8f7:4;
  void *s7223c8f8;
  virtual void  v1(); // _ZN7S7223C82v1Ev
  virtual void  v2(); // _ZN7S7223C82v2Ev
  ~S7223C8(); // tgen
  S7223C8(); // tgen
};
//SIG(-1 S7223C8) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S7223C8 ::v1(){vfunc_called(this, "_ZN7S7223C82v1Ev");}
void  S7223C8 ::v2(){vfunc_called(this, "_ZN7S7223C82v2Ev");}
S7223C8 ::~S7223C8(){ note_dtor("S7223C8", this);} // tgen
S7223C8 ::S7223C8(){ note_ctor("S7223C8", this);} // tgen

static void Test_S7223C8()
{
  extern Class_Descriptor cd_S7223C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S7223C8, buf);
    S7223C8 *dp, &lv = *(dp=new (buf) S7223C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7223C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C8)");
    check_field_offset(lv, s7223c8f0, ABISELECT(8,4), "S7223C8.s7223c8f0");
    check_field_offset(lv, s7223c8f1, ABISELECT(80,76), "S7223C8.s7223c8f1");
    check_field_offset(lv, s7223c8f2, ABISELECT(96,80), "S7223C8.s7223c8f2");
    check_field_offset(lv, s7223c8f3, ABISELECT(112,92), "S7223C8.s7223c8f3");
    check_field_offset(lv, s7223c8f4, ABISELECT(120,96), "S7223C8.s7223c8f4");
    check_field_offset(lv, s7223c8f5, ABISELECT(122,98), "S7223C8.s7223c8f5");
    check_field_offset(lv, s7223c8f6, ABISELECT(136,112), "S7223C8.s7223c8f6");
    set_bf_and_test(lv, s7223c8f7, ABISELECT(144,116), 0, 4, 1, "S7223C8");
    set_bf_and_test(lv, s7223c8f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S7223C8");
    check_field_offset(lv, s7223c8f8, ABISELECT(152,120), "S7223C8.s7223c8f8");
    test_class_info(&lv, &cd_S7223C8);
    dp->~S7223C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C8(Test_S7223C8, "S7223C8", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN7S7223C8C1Ev();
extern void _ZN7S7223C8D1Ev();
Name_Map name_map_S7223C8[] = {
  NSPAIR(_ZN7S7223C8C1Ev),
  NSPAIR(_ZN7S7223C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7223C8[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY vtc_S7223C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C8[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
Class_Descriptor cd_S7223C8 = {  "S7223C8", // class name
  0,0,//no base classes
  &(vtc_S7223C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI7S7223C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7223C8),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  S7223C7  : virtual S1538C9_nt , S7223C8 {
  int s7223c7f0;
  short s7223c7f1[2];
  __tsi64 s7223c7f2;
  ~S7223C7(); // tgen
  S7223C7(); // tgen
};
//SIG(-1 S7223C7) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S7223C7()
{
  extern Class_Descriptor cd_S7223C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S7223C7, buf);
    S7223C7 *dp, &lv = *(dp=new (buf) S7223C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S7223C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S7223C7");
    check_base_class_offset(lv, (S7223C8*), 0, "S7223C7");
    check_field_offset(lv, s7223c7f0, ABISELECT(160,124), "S7223C7.s7223c7f0");
    check_field_offset(lv, s7223c7f1, ABISELECT(164,128), "S7223C7.s7223c7f1");
    check_field_offset(lv, s7223c7f2, ABISELECT(168,132), "S7223C7.s7223c7f2");
    test_class_info(&lv, &cd_S7223C7);
    dp->~S7223C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C7(Test_S7223C7, "S7223C7", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S7223C7C1Ev();
extern void _ZN7S7223C7D1Ev();
Name_Map name_map_S7223C7[] = {
  NSPAIR(_ZN7S7223C7C1Ev),
  NSPAIR(_ZN7S7223C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
static Base_Class bases_S7223C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7223C7[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY vtc_S7223C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7223C7[];
static  VTT_ENTRY vtt_S7223C7[] = {
  {&(_ZTV7S7223C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
Class_Descriptor cd_S7223C7 = {  "S7223C7", // class name
  bases_S7223C7, 2,
  &(vtc_S7223C7[0]), // expected_vtbl_contents
  &(vtt_S7223C7[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S7223C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7223C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7223C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C5  : virtual S1538C9_nt , virtual S7223C7 , virtual S7223C8 {
  __tsi64 s7223c5f0[8];
  void *s7223c5f1[7];
  short s7223c5f2;
  virtual void  v3(); // _ZN7S7223C52v3Ev
  ~S7223C5(); // tgen
  S7223C5(); // tgen
};
//SIG(-1 S7223C5) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S7223C5()
{
  extern Class_Descriptor cd_S7223C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S7223C5, buf);
    S7223C5 *dp, &lv = *(dp=new (buf) S7223C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S7223C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C5)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S7223C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(132,100), "S7223C5");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(144,104), "S7223C5");
    check_base_class_offset(lv, (S7223C7*), ABISELECT(144,104), "S7223C5");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*), ABISELECT(320,244), "S7223C5");
    check_field_offset(lv, s7223c5f0, ABISELECT(8,4), "S7223C5.s7223c5f0");
    check_field_offset(lv, s7223c5f1, ABISELECT(72,68), "S7223C5.s7223c5f1");
    check_field_offset(lv, s7223c5f2, ABISELECT(128,96), "S7223C5.s7223c5f2");
    test_class_info(&lv, &cd_S7223C5);
    dp->~S7223C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C5(Test_S7223C5, "S7223C5", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN7S7223C5C1Ev();
extern void _ZN7S7223C5D1Ev();
Name_Map name_map_S7223C5[] = {
  NSPAIR(_ZN7S7223C5C1Ev),
  NSPAIR(_ZN7S7223C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
static Base_Class bases_S7223C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C8,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C8,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7223C5[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY vtc_S7223C5[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7223C5[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C5[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C5[] = {
  {&(_ZTV7S7223C5[5]),  5,19},
  {&(_ZTV7S7223C5[11]),  11,19},
  {&(_ZTV7S7223C5[17]),  17,19},
  {&(_tg__ZTV7S7223C7__7S7223C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
Class_Descriptor cd_S7223C5 = {  "S7223C5", // class name
  bases_S7223C5, 4,
  &(vtc_S7223C5[0]), // expected_vtbl_contents
  &(vtt_S7223C5[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI7S7223C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7223C5),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7223C5),4, //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  S7223C9_nt  {
};
//SIG(-1 S7223C9_nt) C1{}



//skip512 S7223C9_nt

#else // __cplusplus

Class_Descriptor cd_S7223C9_nt = {  "S7223C9_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  S7223C4  : S7223C5 {
  __tsi64 s7223c4f0;
  ::S7223C7 s7223c4f1;
  short s7223c4f2;
  char s7223c4f3;
  int s7223c4f4[2];
  void *s7223c4f5;
  ::S7223C9_nt s7223c4f6;
  int s7223c4f7;
  __tsi64 s7223c4f8;
  virtual void  v4(); // _ZN7S7223C42v4Ev
  ~S7223C4(); // tgen
  S7223C4(); // tgen
};
//SIG(-1 S7223C4) C1{ BC2{ VBC3{ m Fi} VBC4{ VBC3 BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 v4 FL[8] Fp[7] Fs} v1 FL FC4 Fs Fc Fi[2] Fp FC6{} Fi FL}


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

static void Test_S7223C4()
{
  extern Class_Descriptor cd_S7223C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,139)];
    init_test(&cd_S7223C4, buf);
    S7223C4 *dp, &lv = *(dp=new (buf) S7223C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,552), "sizeof(S7223C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C4)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*), ABISELECT(376,284), "S7223C4");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(376,284), "S7223C4");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(384,288), "S7223C4");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*), ABISELECT(384,288), "S7223C4");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*), ABISELECT(560,428), "S7223C4");
    check_base_class_offset(lv, (S7223C5*), 0, "S7223C4");
    check_field_offset(lv, s7223c4f0, ABISELECT(136,100), "S7223C4.s7223c4f0");
    check_field_offset(lv, s7223c4f1, ABISELECT(144,108), "S7223C4.s7223c4f1");
    check_field_offset(lv, s7223c4f2, ABISELECT(336,252), "S7223C4.s7223c4f2");
    check_field_offset(lv, s7223c4f3, ABISELECT(338,254), "S7223C4.s7223c4f3");
    check_field_offset(lv, s7223c4f4, ABISELECT(340,256), "S7223C4.s7223c4f4");
    check_field_offset(lv, s7223c4f5, ABISELECT(352,264), "S7223C4.s7223c4f5");
    check_field_offset(lv, s7223c4f6, ABISELECT(360,268), "S7223C4.s7223c4f6");
    check_field_offset(lv, s7223c4f7, ABISELECT(364,272), "S7223C4.s7223c4f7");
    check_field_offset(lv, s7223c4f8, ABISELECT(368,276), "S7223C4.s7223c4f8");
    test_class_info(&lv, &cd_S7223C4);
    dp->~S7223C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C4(Test_S7223C4, "S7223C4", ABISELECT(720,552));

#else // __cplusplus

extern void _ZN7S7223C4C1Ev();
extern void _ZN7S7223C4D1Ev();
Name_Map name_map_S7223C4[] = {
  NSPAIR(_ZN7S7223C4C1Ev),
  NSPAIR(_ZN7S7223C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
static Base_Class bases_S7223C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(384,288), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(560,428), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7223C4[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY vtc_S7223C4[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7223C4[];
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C5__7S7223C4[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C5__7S7223C4[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C5__7S7223C4[] = {
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C4[] = {
  {&(_ZTV7S7223C4[5]),  5,20},
  {&(_tg__ZTV7S7223C5__7S7223C4[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C5__7S7223C4[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C5__7S7223C4[4]),  4,6},
  {&(_ZTV7S7223C4[12]),  12,20},
  {&(_ZTV7S7223C4[18]),  18,20},
  {&(_tg__ZTV7S7223C7__7S7223C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
Class_Descriptor cd_S7223C4 = {  "S7223C4", // class name
  bases_S7223C4, 5,
  &(vtc_S7223C4[0]), // expected_vtbl_contents
  &(vtt_S7223C4[0]), // expected_vtt_contents
  ABISELECT(720,552), // object size
  NSPAIRA(_ZTI7S7223C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7223C4),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7223C4),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S7223C13  {
  void *s7223c13f0[9];
  void *s7223c13f1;
  void *s7223c13f2[7];
  __tsi64 s7223c13f3;
  __tsi64 s7223c13f4;
  char s7223c13f5;
  int s7223c13f6;
  char s7223c13f7;
  void *s7223c13f8;
  __tsi64 s7223c13f9;
  void  mf7223c13(); // _ZN8S7223C139mf7223c13Ev
};
//SIG(1 S7223C13) U1{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7223C12  : S1538C9_nt , virtual S7223C8 , virtual S7223C7 , S7223C5 {
  ::S7223C13 s7223c12f0;
  __tsi64 s7223c12f1:10;
  int s7223c12f2[9];
  int s7223c12f3;
  virtual void  v5(); // _ZN8S7223C122v5Ev
  virtual void  v6(); // _ZN8S7223C122v6Ev
  ~S7223C12(); // tgen
  S7223C12(); // tgen
};
//SIG(-1 S7223C12) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi}


void  S7223C12 ::v5(){vfunc_called(this, "_ZN8S7223C122v5Ev");}
void  S7223C12 ::v6(){vfunc_called(this, "_ZN8S7223C122v6Ev");}
S7223C12 ::~S7223C12(){ note_dtor("S7223C12", this);} // tgen
S7223C12 ::S7223C12(){ note_ctor("S7223C12", this);} // tgen

static void Test_S7223C12()
{
  extern Class_Descriptor cd_S7223C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S7223C12, buf);
    S7223C12 *dp, &lv = *(dp=new (buf) S7223C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S7223C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C12)");
    /*is_ambiguous_... S7223C12::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S7223C12");
    /*is_ambiguous_... S7223C12::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*), ABISELECT(256,184), "S7223C12");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*), ABISELECT(256,184), "S7223C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(592,448), "S7223C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*), ABISELECT(592,448), "S7223C12");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(416,308), "S7223C12");
    check_base_class_offset(lv, (S7223C7*), ABISELECT(416,308), "S7223C12");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*), ABISELECT(416,308), "S7223C12");
    check_base_class_offset(lv, (S7223C5*), 0, "S7223C12");
    check_field_offset(lv, s7223c12f0, ABISELECT(136,104), "S7223C12.s7223c12f0");
    set_bf_and_test(lv, s7223c12f1, ABISELECT(208,140), 0, 10, 1, "S7223C12");
    set_bf_and_test(lv, s7223c12f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S7223C12");
    check_field_offset(lv, s7223c12f2, ABISELECT(212,144), "S7223C12.s7223c12f2");
    check_field_offset(lv, s7223c12f3, ABISELECT(248,180), "S7223C12.s7223c12f3");
    test_class_info(&lv, &cd_S7223C12);
    dp->~S7223C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C12(Test_S7223C12, "S7223C12", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S7223C12C1Ev();
extern void _ZN8S7223C12D1Ev();
Name_Map name_map_S7223C12[] = {
  NSPAIR(_ZN8S7223C12C1Ev),
  NSPAIR(_ZN8S7223C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
static Base_Class bases_S7223C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C8,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C12[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY vtc_S7223C12[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S7223C12[];
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C5__8S7223C12[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C5__8S7223C12[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C5__8S7223C12[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C12[] = {
  {&(_ZTV8S7223C12[5]),  5,21},
  {&(_tg__ZTV7S7223C5__8S7223C12[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C5__8S7223C12[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C5__8S7223C12[4]),  4,6},
  {&(_ZTV8S7223C12[12]),  12,21},
  {&(_ZTV8S7223C12[19]),  19,21},
  {&(_tg__ZTV7S7223C7__8S7223C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
Class_Descriptor cd_S7223C12 = {  "S7223C12", // class name
  bases_S7223C12, 6,
  &(vtc_S7223C12[0]), // expected_vtbl_contents
  &(vtt_S7223C12[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S7223C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7223C12),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C12),7, //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  S7223C14  : virtual S7223C7 , virtual S7223C12 , S7223C5 {
  void *s7223c14f0;
  short s7223c14f1[2];
  long double s7223c14f2[2];
  char s7223c14f3;
  ::S7223C7 s7223c14f4;
  long double s7223c14f5;
  ::S7223C5 s7223c14f6;
  virtual void  v7(); // _ZN8S7223C142v7Ev
  ~S7223C14(); // tgen
  S7223C14(); // tgen
};
//SIG(-1 S7223C14) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S7223C14()
{
  extern Class_Descriptor cd_S7223C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S7223C14, buf);
    S7223C14 *dp, &lv = *(dp=new (buf) S7223C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S7223C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C14)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(1072,800), "S7223C14");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(1072,800), "S7223C14");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*), ABISELECT(1072,800), "S7223C14");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(896,660), "S7223C14");
    check_base_class_offset(lv, (S7223C7*), ABISELECT(896,660), "S7223C14");
    check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(896,660), "S7223C14");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(896,660), "S7223C14");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*), ABISELECT(896,660), "S7223C14");
    /*is_ambiguous_... S7223C12::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(1212,904), "S7223C14");
    /*is_ambiguous_... S7223C12::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(1344,988), "S7223C14");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(1344,988), "S7223C14");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*), ABISELECT(1344,988), "S7223C14");
    check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(1080,804), "S7223C14");
    check_base_class_offset(lv, (S7223C12*), ABISELECT(1080,804), "S7223C14");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*), 0, "S7223C14");
    check_field_offset(lv, s7223c14f0, ABISELECT(136,100), "S7223C14.s7223c14f0");
    check_field_offset(lv, s7223c14f1, ABISELECT(144,104), "S7223C14.s7223c14f1");
    check_field_offset(lv, s7223c14f2, ABISELECT(160,108), "S7223C14.s7223c14f2");
    check_field_offset(lv, s7223c14f3, ABISELECT(192,132), "S7223C14.s7223c14f3");
    check_field_offset(lv, s7223c14f4, ABISELECT(208,136), "S7223C14.s7223c14f4");
    check_field_offset(lv, s7223c14f5, ABISELECT(400,280), "S7223C14.s7223c14f5");
    check_field_offset(lv, s7223c14f6, ABISELECT(416,292), "S7223C14.s7223c14f6");
    test_class_info(&lv, &cd_S7223C14);
    dp->~S7223C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C14(Test_S7223C14, "S7223C14", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN8S7223C14C1Ev();
extern void _ZN8S7223C14D1Ev();
Name_Map name_map_S7223C14[] = {
  NSPAIR(_ZN8S7223C14C1Ev),
  NSPAIR(_ZN8S7223C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
static Base_Class bases_S7223C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7223C8,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C5,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C14[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY vtc_S7223C14[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S7223C14[];
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C5__A1__8S7223C14[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C5__A1__8S7223C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C5__A1__8S7223C14[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__8S7223C14[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C14[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__8S7223C14[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__8S7223C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C14[] = {
  {&(_ZTV8S7223C14[6]),  6,32},
  {&(_tg__ZTV7S7223C5__A1__8S7223C14[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C5__A1__8S7223C14[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C5__A1__8S7223C14[4]),  4,6},
  {&(_ZTV8S7223C14[13]),  13,32},
  {&(_ZTV8S7223C14[23]),  23,32},
  {&(_ZTV8S7223C14[30]),  30,32},
  {&(_tg__ZTV7S7223C7__8S7223C14[3]),  3,5},
  {&(_tg__ZTV8S7223C12__8S7223C14[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__8S7223C14[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C14[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C14[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__8S7223C14[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__8S7223C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
Class_Descriptor cd_S7223C14 = {  "S7223C14", // class name
  bases_S7223C14, 8,
  &(vtc_S7223C14[0]), // expected_vtbl_contents
  &(vtt_S7223C14[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI8S7223C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7223C14),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C14),14, //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  S7223C11  : virtual S7223C8 , S7223C12 , virtual S7223C14 {
  int s7223c11f0;
  char s7223c11f1;
  unsigned char s7223c11f2:1;
  virtual void  v8(); // _ZN8S7223C112v8Ev
  ~S7223C11(); // tgen
  S7223C11(); // tgen
};
//SIG(-1 S7223C11) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S7223C11()
{
  extern Class_Descriptor cd_S7223C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S7223C11, buf);
    S7223C11 *dp, &lv = *(dp=new (buf) S7223C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S7223C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C11)");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*), ABISELECT(272,192), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(272,192), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(272,192), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(272,192), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(272,192), "S7223C11");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(272,192), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(132,100), "S7223C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(608,456), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(608,456), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(608,456), "S7223C11");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(608,456), "S7223C11");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(432,316), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(432,316), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(432,316), "S7223C11");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(432,316), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(432,316), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(432,316), "S7223C11");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(432,316), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), 0, "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*), 0, "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(1652,1220), "S7223C11");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(1520,1120), "S7223C11");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(1520,1120), "S7223C11");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(624,460), "S7223C11");
    check_base_class_offset(lv, (S7223C14*), ABISELECT(624,460), "S7223C11");
    check_field_offset(lv, s7223c11f0, ABISELECT(252,184), "S7223C11.s7223c11f0");
    check_field_offset(lv, s7223c11f1, ABISELECT(256,188), "S7223C11.s7223c11f1");
    set_bf_and_test(lv, s7223c11f2, ABISELECT(257,189), 0, 1, 1, "S7223C11");
    test_class_info(&lv, &cd_S7223C11);
    dp->~S7223C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C11(Test_S7223C11, "S7223C11", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN8S7223C11C1Ev();
extern void _ZN8S7223C11D1Ev();
Name_Map name_map_S7223C11[] = {
  NSPAIR(_ZN8S7223C11C1Ev),
  NSPAIR(_ZN8S7223C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
static Base_Class bases_S7223C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7223C8,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7223C12,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C11[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY vtc_S7223C11[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern VTBL_ENTRY _ZTV8S7223C11[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__8S7223C11[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__8S7223C11[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C11[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A__8S7223C11[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A__8S7223C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A2__8S7223C11[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C11[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__8S7223C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__8S7223C11[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__8S7223C11[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A1__8S7223C11[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C11[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__8S7223C11[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__8S7223C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C11[] = {
  {&(_ZTV8S7223C11[7]),  7,45},
  {&(_tg__ZTV8S7223C12__A__8S7223C11[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__8S7223C11[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C11[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C11[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A__8S7223C11[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A__8S7223C11[5]),  5,7},
  {&(_ZTV8S7223C11[15]),  15,45},
  {&(_ZTV8S7223C11[22]),  22,45},
  {&(_ZTV8S7223C11[32]),  32,45},
  {&(_ZTV8S7223C11[42]),  42,45},
  {&(_tg__ZTV7S7223C7__8S7223C11[3]),  3,5},
  {&(_tg__ZTV8S7223C14__8S7223C11[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A2__8S7223C11[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C11[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C11[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__8S7223C11[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__8S7223C11[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__8S7223C11[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A1__8S7223C11[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C11[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C11[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__8S7223C11[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__8S7223C11[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
Class_Descriptor cd_S7223C11 = {  "S7223C11", // class name
  bases_S7223C11, 12,
  &(vtc_S7223C11[0]), // expected_vtbl_contents
  &(vtt_S7223C11[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI8S7223C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7223C11),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C11),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C10  : virtual S7223C11 {
  ::S7223C11 s7223c10f0;
  short s7223c10f1:5;
  long s7223c10f2;
  virtual  ~S7223C10(); // _ZN8S7223C10D2Ev
  S7223C10(); // tgen
};
//SIG(-1 S7223C10) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S7223C10()
{
  extern Class_Descriptor cd_S7223C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S7223C10, buf);
    S7223C10 *dp, &lv = *(dp=new (buf) S7223C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S7223C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C10)");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(2080,1508), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(2080,1508), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(2080,1508), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(2080,1508), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(2080,1508), "S7223C10");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(2080,1508), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(1940,1416), "S7223C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(2416,1772), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(2416,1772), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(2416,1772), "S7223C10");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(2416,1772), "S7223C10");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(2240,1632), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(2240,1632), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(2240,1632), "S7223C10");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(2240,1632), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(2240,1632), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(2240,1632), "S7223C10");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(2240,1632), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(1808,1316), "S7223C10");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(1808,1316), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(3460,2536), "S7223C10");
    /*is_ambiguous_... S7223C10::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(3328,2436), "S7223C10");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(3328,2436), "S7223C10");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(2432,1776), "S7223C10");
    check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(2432,1776), "S7223C10");
    check_base_class_offset(lv, (S7223C11*), ABISELECT(1808,1316), "S7223C10");
    check_field_offset(lv, s7223c10f0, ABISELECT(16,4), "S7223C10.s7223c10f0");
    set_bf_and_test(lv, s7223c10f1, ABISELECT(1792,1308), 0, 5, 1, "S7223C10");
    set_bf_and_test(lv, s7223c10f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S7223C10");
    check_field_offset(lv, s7223c10f2, ABISELECT(1800,1312), "S7223C10.s7223c10f2");
    test_class_info(&lv, &cd_S7223C10);
    dp->~S7223C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C10(Test_S7223C10, "S7223C10", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN8S7223C10C1Ev();
extern void _ZN8S7223C10D2Ev();
Name_Map name_map_S7223C10[] = {
  NSPAIR(_ZN8S7223C10C1Ev),
  NSPAIR(_ZN8S7223C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
static Base_Class bases_S7223C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7223C8,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C10[];
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY vtc_S7223C10[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern VTBL_ENTRY _ZTV8S7223C10[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__8S7223C10[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__8S7223C10[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__8S7223C10[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__8S7223C10[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A2__8S7223C10[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C10[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__8S7223C10[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__8S7223C10[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A1__8S7223C10[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C10[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__8S7223C10[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__8S7223C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C10[] = {
  {&(_ZTV8S7223C10[8]),  8,59},
  {&(_ZTV8S7223C10[21]),  21,59},
  {&(_ZTV8S7223C10[29]),  29,59},
  {&(_ZTV8S7223C10[36]),  36,59},
  {&(_ZTV8S7223C10[46]),  46,59},
  {&(_ZTV8S7223C10[56]),  56,59},
  {&(_tg__ZTV8S7223C11__8S7223C10[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__8S7223C10[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__8S7223C10[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__8S7223C10[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__8S7223C10[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__8S7223C10[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__8S7223C10[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__8S7223C10[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__8S7223C10[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__8S7223C10[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__8S7223C10[8]),  8,11},
  {&(_tg__ZTV7S7223C7__8S7223C10[3]),  3,5},
  {&(_tg__ZTV8S7223C14__8S7223C10[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A2__8S7223C10[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C10[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C10[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__8S7223C10[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__8S7223C10[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__8S7223C10[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A1__8S7223C10[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C10[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C10[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__8S7223C10[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__8S7223C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
Class_Descriptor cd_S7223C10 = {  "S7223C10", // class name
  bases_S7223C10, 13,
  &(vtc_S7223C10[0]), // expected_vtbl_contents
  &(vtt_S7223C10[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI8S7223C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7223C10),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C10),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C3  : S7223C4 , virtual S7223C10 , S7223C12 {
  ::S7223C4 s7223c3f0[9];
  int s7223c3f1;
  short s7223c3f2:16;
  ::S7223C5 s7223c3f3;
  int s7223c3f4;
  short s7223c3f5;
  void *s7223c3f6;
  long s7223c3f7;
  ::S7223C7 s7223c3f8;
  ~S7223C3(); // tgen
  S7223C3(); // tgen
};
//SIG(-1 S7223C3) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ VBC4 BC6{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 v3 FL[8] Fp[7] Fs} v4 FL FC5 Fs Fc Fi[2] Fp FC7{} Fi FL} VBC8{ VBC9{ VBC6 BC10{ BC4 VBC6 VBC5 BC3 v5 v6 FU11{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC12{ VBC5 VBC10 BC3 v7 Fp Fs[2] FD[2] Fc FC5 FD FC3} v8 Fi Fc Fc:1} vd FC9 Fs:5 Fl} BC10 FC2[9] Fi Fs:16 FC3 Fi Fs Fp Fl FC5}


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

static void Test_S7223C3()
{
  extern Class_Descriptor cd_S7223C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(715,2149)];
    init_test(&cd_S7223C3, buf);
    S7223C3 *dp, &lv = *(dp=new (buf) S7223C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11424,8592), "sizeof(S7223C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C3)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*), ABISELECT(7840,5972), "S7223C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(7840,5972), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(7840,5972), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(7840,5972), "S7223C3");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(7840,5972), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(7840,5972), "S7223C3");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(7856,5976), "S7223C3");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(7856,5976), "S7223C3");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(7856,5976), "S7223C3");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(8032,6116), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(8032,6116), "S7223C3");
    check_base_class_offset(lv, (S7223C5*)(S7223C4*), 0, "S7223C3");
    check_base_class_offset(lv, (S7223C4*), 0, "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(10132,7656), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(10000,7556), "S7223C3");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(10000,7556), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(11300,8508), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(11168,8408), "S7223C3");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(11168,8408), "S7223C3");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(10272,7748), "S7223C3");
    check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(10272,7748), "S7223C3");
    check_base_class_offset(lv, (S7223C11*)(S7223C10*), ABISELECT(10000,7556), "S7223C3");
    check_base_class_offset(lv, (S7223C10*), ABISELECT(8192,6240), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(508,384), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(376,284), "S7223C3");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*), ABISELECT(376,284), "S7223C3");
    check_field_offset(lv, s7223c3f0, ABISELECT(640,468), "S7223C3.s7223c3f0");
    check_field_offset(lv, s7223c3f1, ABISELECT(7120,5436), "S7223C3.s7223c3f1");
    set_bf_and_test(lv, s7223c3f2, ABISELECT(7124,5440), 0, 16, 1, "S7223C3");
    set_bf_and_test(lv, s7223c3f2, ABISELECT(7124,5440), 0, 16, hide_sll(1LL<<15), "S7223C3");
    check_field_offset(lv, s7223c3f3, ABISELECT(7136,5444), "S7223C3.s7223c3f3");
    check_field_offset(lv, s7223c3f4, ABISELECT(7616,5812), "S7223C3.s7223c3f4");
    check_field_offset(lv, s7223c3f5, ABISELECT(7620,5816), "S7223C3.s7223c3f5");
    check_field_offset(lv, s7223c3f6, ABISELECT(7624,5820), "S7223C3.s7223c3f6");
    check_field_offset(lv, s7223c3f7, ABISELECT(7632,5824), "S7223C3.s7223c3f7");
    check_field_offset(lv, s7223c3f8, ABISELECT(7648,5828), "S7223C3.s7223c3f8");
    test_class_info(&lv, &cd_S7223C3);
    dp->~S7223C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C3(Test_S7223C3, "S7223C3", ABISELECT(11424,8592));

#else // __cplusplus

extern void _ZN7S7223C3C1Ev();
extern void _ZN7S7223C3D1Ev();
Name_Map name_map_S7223C3[] = {
  NSPAIR(_ZN7S7223C3C1Ev),
  NSPAIR(_ZN7S7223C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C10;
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
static Base_Class bases_S7223C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(7840,5972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    ABISELECT(7856,5976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C7,    ABISELECT(7856,5976), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(8032,6116), //bcp->offset
    28, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7223C4,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(10132,7656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(10000,7556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(10000,7556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(11300,8508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C5,    ABISELECT(11168,8408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(11168,8408), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(10272,7748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(10272,7748), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(10000,7556), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7223C10,    ABISELECT(8192,6240), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(508,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
    18, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(376,284), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7223C3[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C3D1Ev();
extern void _ZN7S7223C3D0Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev)();
extern void ABISELECT(_ZThn8192_N7S7223C3D1Ev,_ZThn6240_N7S7223C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev)();
extern void ABISELECT(_ZThn8192_N7S7223C3D0Ev,_ZThn6240_N7S7223C3D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY vtc_S7223C3[] = {
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D0Ev,
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(-8192,-6240),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6240),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7556),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7748),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8408),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern VTBL_ENTRY _ZTV7S7223C3[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C4__7S7223C3[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C4__7S7223C3[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C4__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C4__7S7223C3[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C4__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C4__7S7223C3[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C3[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A4__7S7223C3[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A4__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A4__7S7223C3[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A__7S7223C3[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C3[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C3[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10__7S7223C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C10__7S7223C3[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10__7S7223C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10__7S7223C3[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C3[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__7S7223C3[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A1__7S7223C3[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A1__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A1__7S7223C3[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__7S7223C3[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__7S7223C3[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__7S7223C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__7S7223C3[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C3[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A3__7S7223C3[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A3__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__7S7223C3[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__7S7223C3[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__7S7223C3[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C3[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A2__7S7223C3[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A2__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A2__7S7223C3[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__7S7223C3[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__7S7223C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C3[] = {
  {&(_ZTV7S7223C3[9]),  9,81},
  {&(_tg__ZTV7S7223C4__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C4__7S7223C3[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C4__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C4__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C4__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C4__7S7223C3[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A__7S7223C3[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A4__7S7223C3[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A4__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A4__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A__7S7223C3[5]),  5,7},
  {&(_ZTV7S7223C3[26]),  26,81},
  {&(_ZTV7S7223C3[32]),  32,81},
  {&(_ZTV7S7223C3[43]),  43,81},
  {&(_ZTV7S7223C3[56]),  56,81},
  {&(_ZTV7S7223C3[68]),  68,81},
  {&(_ZTV7S7223C3[78]),  78,81},
  {&(_ZTV7S7223C3[18]),  18,81},
  {&(_tg__ZTV7S7223C7__7S7223C3[3]),  3,5},
  {&(_tg__ZTV8S7223C10__7S7223C3[8]),  8,10},
  {&(_tg__ZTV8S7223C11__8S7223C10__7S7223C3[11]),  11,15},
  {&(_tg__ZTV7S7223C8__8S7223C10__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C10__7S7223C3[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C10__7S7223C3[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10__7S7223C3[8]),  8,11},
  {&(_tg__ZTV8S7223C11__7S7223C3[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__7S7223C3[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A1__7S7223C3[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A1__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A1__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__7S7223C3[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__7S7223C3[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__7S7223C3[8]),  8,11},
  {&(_tg__ZTV8S7223C14__7S7223C3[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A3__7S7223C3[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A3__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__7S7223C3[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__7S7223C3[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__7S7223C3[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__7S7223C3[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A2__7S7223C3[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A2__7S7223C3[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A2__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__7S7223C3[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__7S7223C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7223C3[];
extern  VTBL_ENTRY _ZTV7S7223C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C3[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7223C3D0Ev,_ZThn6240_N7S7223C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7223C3D1Ev,_ZThn6240_N7S7223C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7223C3 = {  "S7223C3", // class name
  bases_S7223C3, 19,
  &(vtc_S7223C3[0]), // expected_vtbl_contents
  &(vtt_S7223C3[0]), // expected_vtt_contents
  ABISELECT(11424,8592), // object size
  NSPAIRA(_ZTI7S7223C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7223C3),81, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7223C3),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C2  : virtual S7223C3 , S7223C11 , S7223C14 , S1538C9_nt , S7223C12 {
  __tsi64 s7223c2f0;
  long s7223c2f1;
  long s7223c2f2;
  char s7223c2f3;
  __tsi64 s7223c2f4;
  void *s7223c2f5;
  ::S7223C14 s7223c2f6[9];
  long double s7223c2f7[7];
  int s7223c2f8;
  ~S7223C2(); // tgen
  S7223C2(); // tgen
};
//SIG(-1 S7223C2) C1{ VBC2{ BC3{ BC4{ VBC5{ m Fi} VBC6{ VBC5 BC7{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC7 v3 FL[8] Fp[7] Fs} v4 FL FC6 Fs Fc Fi[2] Fp FC8{} Fi FL} VBC9{ VBC10{ VBC7 BC11{ BC5 VBC7 VBC6 BC4 v5 v6 FU12{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC13{ VBC6 VBC11 BC4 v7 Fp Fs[2] FD[2] Fc FC6 FD FC4} v8 Fi Fc Fc:1} vd FC10 Fs:5 Fl} BC11 FC3[9] Fi Fs:16 FC4 Fi Fs Fp Fl FC6} BC10 BC13 BC5 BC11 FL Fl Fl Fc FL Fp FC13[9] FD[7] Fi}


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

static void Test_S7223C2()
{
  extern Class_Descriptor cd_S7223C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1662,4941)];
    init_test(&cd_S7223C2, buf);
    S7223C2 *dp, &lv = *(dp=new (buf) S7223C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26576,19760), "sizeof(S7223C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C2)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(22992,17140), "S7223C2");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(22992,17140), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(22992,17140), "S7223C2");
    check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(23008,17144), "S7223C2");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C3*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(23008,17144), "S7223C2");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C3*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(23184,17284), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(23184,17284), "S7223C2");
    check_base_class_offset(lv, (S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15152,11168), "S7223C2");
    check_base_class_offset(lv, (S7223C4*)(S7223C3*), ABISELECT(15152,11168), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(25284,18824), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(25152,18724), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(25152,18724), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(26452,19676), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(26320,19576), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(26320,19576), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(26320,19576), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(25424,18916), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(25424,18916), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(25424,18916), "S7223C2");
    check_base_class_offset(lv, (S7223C11*)(S7223C10*), ABISELECT(25152,18724), "S7223C2");
    check_base_class_offset(lv, (S7223C10*)(S7223C3*), ABISELECT(23344,17408), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C3*), ABISELECT(15660,11552), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15528,11452), "S7223C2");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C3*), ABISELECT(15528,11452), "S7223C2");
    check_base_class_offset(lv, (S7223C3*), ABISELECT(15152,11168), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(132,100), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), 0, "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), 0, "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C11*), 0, "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(272,192), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C14*), ABISELECT(272,192), "S7223C2");
    /*is_ambiguous_... S7223C2::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(1168,852), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(1308,956), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(1176,856), "S7223C2");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*), ABISELECT(1176,856), "S7223C2");
    check_field_offset(lv, s7223c2f0, ABISELECT(1432,1040), "S7223C2.s7223c2f0");
    check_field_offset(lv, s7223c2f1, ABISELECT(1440,1048), "S7223C2.s7223c2f1");
    check_field_offset(lv, s7223c2f2, ABISELECT(1448,1052), "S7223C2.s7223c2f2");
    check_field_offset(lv, s7223c2f3, ABISELECT(1456,1056), "S7223C2.s7223c2f3");
    check_field_offset(lv, s7223c2f4, ABISELECT(1464,1060), "S7223C2.s7223c2f4");
    check_field_offset(lv, s7223c2f5, ABISELECT(1472,1068), "S7223C2.s7223c2f5");
    check_field_offset(lv, s7223c2f6, ABISELECT(1488,1072), "S7223C2.s7223c2f6");
    check_field_offset(lv, s7223c2f7, ABISELECT(15024,11080), "S7223C2.s7223c2f7");
    check_field_offset(lv, s7223c2f8, ABISELECT(15136,11164), "S7223C2.s7223c2f8");
    test_class_info(&lv, &cd_S7223C2);
    dp->~S7223C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C2(Test_S7223C2, "S7223C2", ABISELECT(26576,19760));

#else // __cplusplus

extern void _ZN7S7223C2C1Ev();
extern void _ZN7S7223C2D1Ev();
Name_Map name_map_S7223C2[] = {
  NSPAIR(_ZN7S7223C2C1Ev),
  NSPAIR(_ZN7S7223C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C10;
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C3;
extern VTBL_ENTRY _ZTI7S7223C3[];
extern  VTBL_ENTRY _ZTV7S7223C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C3[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
static Base_Class bases_S7223C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(22992,17140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    ABISELECT(23008,17144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C7,    ABISELECT(23008,17144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(23184,17284), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //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
    4, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(15152,11168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7223C4,    ABISELECT(15152,11168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25284,18824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(25152,18724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(25152,18724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(26452,19676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C5,    ABISELECT(26320,19576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(26320,19576), //bcp->offset
    107, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(25424,18916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(25424,18916), //bcp->offset
    97, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(25152,18724), //bcp->offset
    82, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7223C10,    ABISELECT(23344,17408), //bcp->offset
    71, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(15660,11552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(15528,11452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(15528,11452), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7223C3,    ABISELECT(15152,11168), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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
    22, //immediately_derived
  0, 0},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7223C12,    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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7223C11,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C5,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(272,192), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1168,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1308,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
    29, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(1176,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(1176,856), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7223C2[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C2D1Ev();
extern void _ZN7S7223C2D0Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N7S7223C2D1Ev,_ZTv0_n48_N7S7223C2D1Ev)();
extern void ABISELECT(_ZThn15152_N7S7223C2D1Ev,_ZThn11168_N7S7223C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7223C2D0Ev,_ZTv0_n48_N7S7223C2D0Ev)();
extern void ABISELECT(_ZThn15152_N7S7223C2D0Ev,_ZThn11168_N7S7223C2D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S7223C2D1Ev,_ZTv0_n36_N7S7223C2D1Ev)();
extern void ABISELECT(_ZThn23344_N7S7223C2D1Ev,_ZThn17408_N7S7223C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C2D0Ev,_ZTv0_n36_N7S7223C2D0Ev)();
extern void ABISELECT(_ZThn23344_N7S7223C2D0Ev,_ZThn17408_N7S7223C2D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY vtc_S7223C2[] = {
  ABISELECT(25152,18724),
  ABISELECT(23344,17408),
  ABISELECT(15152,11168),
  ABISELECT(26320,19576),
  ABISELECT(25424,18916),
  ABISELECT(23184,17284),
  ABISELECT(23008,17144),
  ABISELECT(22992,17140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  (VTBL_ENTRY)&_ZN7S7223C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C2D0Ev,
  ABISELECT(26048,19384),
  ABISELECT(22912,17092),
  ABISELECT(22736,16952),
  ABISELECT(22720,16948),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  ABISELECT(22008,16428),
  ABISELECT(21832,16288),
  ABISELECT(21816,16284),
  ABISELECT(-1176,-856),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15152,-11168),
  0,
  0,
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  ABISELECT(-15152,-11168),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7223C2D1Ev,_ZTv0_n48_N7S7223C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7223C2D0Ev,_ZTv0_n48_N7S7223C2D0Ev),
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-15528,-11452),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17144),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(-23184,-17284),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(-23344,-17408),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-23344,-17408),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C2D1Ev,_ZTv0_n36_N7S7223C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C2D0Ev,_ZTv0_n36_N7S7223C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-25152,-18724),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-25424,-18916),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-26320,-19576),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern VTBL_ENTRY _ZTV7S7223C2[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__A__7S7223C2[] = {
  ABISELECT(26320,19576),
  ABISELECT(25424,18916),
  ABISELECT(23184,17284),
  ABISELECT(23008,17144),
  ABISELECT(22992,17140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__A3__7S7223C2[] = {
  ABISELECT(23184,17284),
  ABISELECT(23008,17144),
  ABISELECT(22992,17140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A5__7S7223C2[] = {
  ABISELECT(23184,17284),
  ABISELECT(23008,17144),
  ABISELECT(22992,17140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A5__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17144),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A5__7S7223C2[] = {
  0,
  0,
  ABISELECT(-23184,-17284),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__A3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-23184,-17284),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__A3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17144),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(-23184,-17284),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17144),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-25424,-18916),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__A__7S7223C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-26320,-19576),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__A__7S7223C2[] = {
  ABISELECT(26048,19384),
  ABISELECT(22912,17092),
  ABISELECT(22736,16952),
  ABISELECT(22720,16948),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A6__7S7223C2[] = {
  ABISELECT(22912,17092),
  ABISELECT(22736,16952),
  ABISELECT(22720,16948),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A6__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-22736,-16952),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A6__7S7223C2[] = {
  0,
  0,
  ABISELECT(-22912,-17092),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-22736,-16952),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__A__7S7223C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-26048,-19384),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(-22912,-17092),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C2[] = {
  ABISELECT(22008,16428),
  ABISELECT(21832,16288),
  ABISELECT(21816,16284),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A7__7S7223C2[] = {
  ABISELECT(22008,16428),
  ABISELECT(21832,16288),
  ABISELECT(21816,16284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A7__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-21832,-16288),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A7__7S7223C2[] = {
  0,
  0,
  ABISELECT(-22008,-16428),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(-22008,-16428),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-21832,-16288),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C3D1Ev();
extern void _ZN7S7223C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C3__7S7223C2[] = {
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C47S7223C3__7S7223C2[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C47S7223C3__7S7223C2[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C47S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C47S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__7S7223C2[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C127S7223C3__A4__7S7223C2[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__7S7223C2[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C127S7223C3__A2__7S7223C2[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C127S7223C3__A2__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev)();
extern void ABISELECT(_ZThn8192_N7S7223C3D1Ev,_ZThn6240_N7S7223C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev)();
extern void ABISELECT(_ZThn8192_N7S7223C3D0Ev,_ZThn6240_N7S7223C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C3__7S7223C2[] = {
  ABISELECT(-8192,-6240),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6240),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C3__7S7223C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7556),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C3__7S7223C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7748),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C3__7S7223C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8408),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C3__7S7223C2[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C2[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C2[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10__7S7223C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C10__7S7223C2[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10__7S7223C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10__7S7223C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C2[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__7S7223C2[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A1__7S7223C2[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A1__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A1__7S7223C2[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__7S7223C2[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__7S7223C2[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__7S7223C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__7S7223C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C2[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A3__7S7223C2[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A3__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__7S7223C2[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__7S7223C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__7S7223C2[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C2[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A2__7S7223C2[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A2__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A2__7S7223C2[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__7S7223C2[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__7S7223C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C2[] = {
  {&(_ZTV7S7223C2[10]),  10,118},
  {&(_tg__ZTV8S7223C11__A__7S7223C2[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__A3__7S7223C2[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A5__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A5__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A5__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__A3__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__A3__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__A__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__A__7S7223C2[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__A__7S7223C2[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__A__7S7223C2[8]),  8,11},
  {&(_tg__ZTV8S7223C14__A__7S7223C2[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A6__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A6__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A6__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__A__7S7223C2[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__A__7S7223C2[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__A__7S7223C2[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A__7S7223C2[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A7__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A7__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A7__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A__7S7223C2[5]),  5,7},
  {&(_ZTV7S7223C2[46]),  46,118},
  {&(_ZTV7S7223C2[63]),  63,118},
  {&(_ZTV7S7223C2[69]),  69,118},
  {&(_ZTV7S7223C2[80]),  80,118},
  {&(_ZTV7S7223C2[93]),  93,118},
  {&(_ZTV7S7223C2[105]),  105,118},
  {&(_ZTV7S7223C2[115]),  115,118},
  {&(_ZTV7S7223C2[55]),  55,118},
  {&(_ZTV7S7223C2[22]),  22,118},
  {&(_ZTV7S7223C2[29]),  29,118},
  {&(_tg__ZTV7S7223C3__7S7223C2[9]),  9,13},
  {&(_tg__ZTV7S7223C47S7223C3__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C47S7223C3__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C47S7223C3__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C47S7223C3__7S7223C2[4]),  4,6},
  {&(_tg__ZTV8S7223C127S7223C3__A2__7S7223C2[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C127S7223C3__A4__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C127S7223C3__A2__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C127S7223C3__A2__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C7__7S7223C3__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C3__7S7223C2[4]),  4,6},
  {&(_tg__ZTV8S7223C10__7S7223C3__7S7223C2[9]),  9,11},
  {&(_tg__ZTV8S7223C11__7S7223C3__7S7223C2[11]),  11,15},
  {&(_tg__ZTV8S7223C14__7S7223C3__7S7223C2[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__7S7223C3__7S7223C2[8]),  8,11},
  {&(_tg__ZTV8S7223C12__A__7S7223C3__7S7223C2[5]),  5,8},
  {&(_tg__ZTV7S7223C7__7S7223C2[3]),  3,5},
  {&(_tg__ZTV8S7223C10__7S7223C2[8]),  8,10},
  {&(_tg__ZTV8S7223C11__8S7223C10__7S7223C2[11]),  11,15},
  {&(_tg__ZTV7S7223C8__8S7223C10__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C10__7S7223C2[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C10__7S7223C2[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10__7S7223C2[8]),  8,11},
  {&(_tg__ZTV8S7223C11__7S7223C2[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__7S7223C2[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A1__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A1__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A1__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__7S7223C2[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__7S7223C2[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__7S7223C2[8]),  8,11},
  {&(_tg__ZTV8S7223C14__7S7223C2[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A3__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A3__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__7S7223C2[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__7S7223C2[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__7S7223C2[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__7S7223C2[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A2__7S7223C2[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A2__7S7223C2[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A2__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__7S7223C2[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__7S7223C2[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7223C2[];
extern  VTBL_ENTRY _ZTV7S7223C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C2[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7223C3D0Ev,_ZThn6240_N7S7223C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7223C3D1Ev,_ZThn6240_N7S7223C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C2D0Ev,_ZTv0_n36_N7S7223C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23344_N7S7223C2D0Ev,_ZThn17408_N7S7223C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C2D1Ev,_ZTv0_n36_N7S7223C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23344_N7S7223C2D1Ev,_ZThn17408_N7S7223C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7223C2D0Ev,_ZTv0_n48_N7S7223C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15152_N7S7223C2D0Ev,_ZThn11168_N7S7223C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7223C2D1Ev,_ZTv0_n48_N7S7223C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15152_N7S7223C2D1Ev,_ZThn11168_N7S7223C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7223C2 = {  "S7223C2", // class name
  bases_S7223C2, 30,
  &(vtc_S7223C2[0]), // expected_vtbl_contents
  &(vtt_S7223C2[0]), // expected_vtt_contents
  ABISELECT(26576,19760), // object size
  NSPAIRA(_ZTI7S7223C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7223C2),118, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7223C2),86, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C16  : S7223C7 , virtual S7223C8 , virtual S7223C12 , S1538C9_nt , virtual S7223C3 {
  int s7223c16f0;
  void *s7223c16f1;
  char s7223c16f2;
  unsigned int s7223c16f3:1;
  void *s7223c16f4;
  ::S7223C3 s7223c16f5;
  ::S1538C9_nt s7223c16f6[6];
  void *s7223c16f7;
  ::S7223C10 s7223c16f8;
  __tsi64 s7223c16f9:5;
  long s7223c16f10;
  virtual  ~S7223C16(); // _ZN8S7223C16D2Ev
  virtual void  v9(); // _ZN8S7223C162v9Ev
  S7223C16(); // tgen
};
//SIG(-1 S7223C16) C1{ BC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC3 VBC8{ BC9{ BC6 v7 FL FC2 Fs Fc Fi[2] Fp FC10{} Fi FL} VBC11{ VBC12{ VBC4 BC5 VBC13{ VBC2 VBC5 BC6 v8 Fp Fs[2] FD[2] Fc FC2 FD FC6} v9 Fi Fc Fc:1} vd FC12 Fs:5 Fl} BC5 FC9[9] Fi Fs:16 FC6 Fi Fs Fp Fl FC2} vd v1 Fi Fp Fc Fi:1 Fp FC8 FC3[6] Fp FC11 FL:5 Fl}


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

static void Test_S7223C16()
{
  extern Class_Descriptor cd_S7223C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1669,5001)];
    init_test(&cd_S7223C16, buf);
    S7223C16 *dp, &lv = *(dp=new (buf) S7223C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26688,20000), "sizeof(S7223C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C16)");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(15264,11408), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(15264,11408), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(15264,11408), "S7223C16");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15264,11408), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(15264,11408), "S7223C16");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(15264,11408), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15264,11408), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), 0, "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C7*), 0, "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C3*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15280,11412), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(15572,11636), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(15696,11720), "S7223C16");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(15696,11720), "S7223C16");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C3*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15696,11720), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(15440,11536), "S7223C16");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*), ABISELECT(15440,11536), "S7223C16");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(15440,11536), "S7223C16");
    /*is_ambiguous_... S7223C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S7223C16");
    check_base_class_offset(lv, (S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15872,11860), "S7223C16");
    check_base_class_offset(lv, (S7223C4*)(S7223C3*), ABISELECT(15872,11860), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(25652,19248), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(25520,19148), "S7223C16");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(25520,19148), "S7223C16");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(25792,19340), "S7223C16");
    check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(25792,19340), "S7223C16");
    check_base_class_offset(lv, (S7223C11*)(S7223C10*), ABISELECT(25520,19148), "S7223C16");
    check_base_class_offset(lv, (S7223C10*)(S7223C3*), ABISELECT(23712,17832), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C3*), ABISELECT(16380,12244), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(16248,12144), "S7223C16");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C3*), ABISELECT(16248,12144), "S7223C16");
    check_base_class_offset(lv, (S7223C3*), ABISELECT(15872,11860), "S7223C16");
    check_field_offset(lv, s7223c16f0, ABISELECT(180,144), "S7223C16.s7223c16f0");
    check_field_offset(lv, s7223c16f1, ABISELECT(184,148), "S7223C16.s7223c16f1");
    check_field_offset(lv, s7223c16f2, ABISELECT(192,152), "S7223C16.s7223c16f2");
    set_bf_and_test(lv, s7223c16f3, ABISELECT(193,153), 0, 1, 1, "S7223C16");
    check_field_offset(lv, s7223c16f4, ABISELECT(200,156), "S7223C16.s7223c16f4");
    check_field_offset(lv, s7223c16f5, ABISELECT(208,160), "S7223C16.s7223c16f5");
    check_field_offset(lv, s7223c16f6, ABISELECT(11632,8752), "S7223C16.s7223c16f6");
    check_field_offset(lv, s7223c16f7, ABISELECT(11656,8776), "S7223C16.s7223c16f7");
    check_field_offset(lv, s7223c16f8, ABISELECT(11664,8780), "S7223C16.s7223c16f8");
    set_bf_and_test(lv, s7223c16f9, ABISELECT(15248,11400), 0, 5, 1, "S7223C16");
    set_bf_and_test(lv, s7223c16f9, ABISELECT(15248,11400), 0, 5, hide_sll(1LL<<4), "S7223C16");
    check_field_offset(lv, s7223c16f10, ABISELECT(15256,11404), "S7223C16.s7223c16f10");
    test_class_info(&lv, &cd_S7223C16);
    dp->~S7223C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C16(Test_S7223C16, "S7223C16", ABISELECT(26688,20000));

#else // __cplusplus

extern void _ZN8S7223C16C1Ev();
extern void _ZN8S7223C16D2Ev();
Name_Map name_map_S7223C16[] = {
  NSPAIR(_ZN8S7223C16C1Ev),
  NSPAIR(_ZN8S7223C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C10;
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C3;
extern VTBL_ENTRY _ZTI7S7223C3[];
extern  VTBL_ENTRY _ZTV7S7223C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C3[];
static Base_Class bases_S7223C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15264,11408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7223C7,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C8,    ABISELECT(15280,11412), //bcp->offset
    15, //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
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(15572,11636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C8,    ABISELECT(15696,11720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C7,    ABISELECT(15696,11720), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(15440,11536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(15440,11536), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C5,    ABISELECT(15872,11860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C4,    ABISELECT(15872,11860), //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25652,19248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(25520,19148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(25520,19148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(25792,19340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(25792,19340), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(25520,19148), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7223C10,    ABISELECT(23712,17832), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16380,12244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(16248,12144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(16248,12144), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7223C3,    ABISELECT(15872,11860), //bcp->offset
    39, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C16[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN8S7223C16D1Ev();
extern void _ZN8S7223C16D0Ev();
extern void _ZN8S7223C162v9Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev)();
extern void ABISELECT(_ZThn15872_N8S7223C16D1Ev,_ZThn11860_N8S7223C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev)();
extern void ABISELECT(_ZThn15872_N8S7223C16D0Ev,_ZThn11860_N8S7223C16D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev)();
extern void ABISELECT(_ZThn23712_N8S7223C16D1Ev,_ZThn17832_N8S7223C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev)();
extern void ABISELECT(_ZThn23712_N8S7223C16D0Ev,_ZThn17832_N8S7223C16D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY vtc_S7223C16[] = {
  ABISELECT(25792,19340),
  ABISELECT(25520,19148),
  ABISELECT(23712,17832),
  ABISELECT(15872,11860),
  ABISELECT(15696,11720),
  ABISELECT(15440,11536),
  ABISELECT(15280,11412),
  ABISELECT(15264,11408),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7223C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7223C162v9Ev,
  0,
  0,
  ABISELECT(-15280,-11412),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15440,-11536),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15696,-11720),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15872,-11860),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15872,-11860),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16248,-12144),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  ABISELECT(-23712,-17832),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23712,-17832),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25520,-19148),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25792,-19340),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern VTBL_ENTRY _ZTV8S7223C16[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A__8S7223C16[] = {
  ABISELECT(15264,11408),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__8S7223C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__8S7223C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A1__8S7223C16[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C3D1Ev();
extern void _ZN7S7223C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C3__8S7223C16[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C47S7223C3__8S7223C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C47S7223C3__A1__8S7223C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__A1__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__A1__8S7223C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C47S7223C3__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C47S7223C3__8S7223C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__8S7223C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C127S7223C3__A4__8S7223C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__8S7223C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C127S7223C3__A2__8S7223C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C127S7223C3__A2__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C3__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C3__8S7223C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev)();
extern void ABISELECT(_ZThn7840_N7S7223C3D1Ev,_ZThn5972_N7S7223C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev)();
extern void ABISELECT(_ZThn7840_N7S7223C3D0Ev,_ZThn5972_N7S7223C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C3__8S7223C16[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C3__8S7223C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C3__8S7223C16[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-9920,-7480),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C3__8S7223C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C3__8S7223C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C10__8S7223C16[] = {
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10__8S7223C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C10__8S7223C16[] = {
  0,
  0,
  ABISELECT(8432,6420),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6112),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10__8S7223C16[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10__8S7223C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6296),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C16[] = {
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__A1__8S7223C16[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A2__8S7223C16[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A2__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A2__8S7223C16[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__A1__8S7223C16[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__A1__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__8S7223C16[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__8S7223C16[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__8S7223C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7612),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C16[] = {
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A3__8S7223C16[] = {
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A3__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__8S7223C16[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__8S7223C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__8S7223C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7804),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__8S7223C16[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C16[] = {
  {&(_ZTV8S7223C16[10]),  10,101},
  {&(_tg__ZTV7S7223C7__A__8S7223C16[3]),  3,5},
  {&(_ZTV8S7223C16[19]),  19,101},
  {&(_ZTV8S7223C16[29]),  29,101},
  {&(_ZTV8S7223C16[37]),  37,101},
  {&(_ZTV8S7223C16[53]),  53,101},
  {&(_ZTV8S7223C16[74]),  74,101},
  {&(_ZTV8S7223C16[87]),  87,101},
  {&(_ZTV8S7223C16[99]),  99,101},
  {&(_ZTV8S7223C16[62]),  62,101},
  {&(_tg__ZTV8S7223C12__8S7223C16[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__8S7223C16[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C7__A1__8S7223C16[3]),  3,5},
  {&(_tg__ZTV7S7223C3__8S7223C16[9]),  9,13},
  {&(_tg__ZTV7S7223C47S7223C3__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C47S7223C3__A1__8S7223C16[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__A1__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__A1__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C47S7223C3__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C47S7223C3__8S7223C16[4]),  4,6},
  {&(_tg__ZTV8S7223C127S7223C3__A2__8S7223C16[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C127S7223C3__A4__8S7223C16[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C127S7223C3__A2__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C127S7223C3__A2__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C7__7S7223C3__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C3__8S7223C16[4]),  4,6},
  {&(_tg__ZTV8S7223C10__7S7223C3__8S7223C16[9]),  9,11},
  {&(_tg__ZTV8S7223C11__7S7223C3__8S7223C16[11]),  11,15},
  {&(_tg__ZTV8S7223C14__7S7223C3__8S7223C16[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__7S7223C3__8S7223C16[8]),  8,11},
  {&(_tg__ZTV8S7223C12__A__7S7223C3__8S7223C16[5]),  5,8},
  {&(_tg__ZTV8S7223C10__8S7223C16[8]),  8,10},
  {&(_tg__ZTV8S7223C11__8S7223C10__8S7223C16[11]),  11,15},
  {&(_tg__ZTV7S7223C8__8S7223C10__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C10__8S7223C16[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C10__8S7223C16[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10__8S7223C16[8]),  8,11},
  {&(_tg__ZTV8S7223C11__8S7223C16[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__A1__8S7223C16[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A2__8S7223C16[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A2__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A2__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__A1__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__A1__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__8S7223C16[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__8S7223C16[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__8S7223C16[8]),  8,11},
  {&(_tg__ZTV8S7223C14__8S7223C16[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A3__8S7223C16[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A3__8S7223C16[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__8S7223C16[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__8S7223C16[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__8S7223C16[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__8S7223C16[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7223C16[];
extern  VTBL_ENTRY _ZTV8S7223C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C16[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7223C3D0Ev,_ZThn5972_N7S7223C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7223C3D1Ev,_ZThn5972_N7S7223C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S7223C16D0Ev,_ZThn17832_N8S7223C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S7223C16D1Ev,_ZThn17832_N8S7223C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S7223C16D0Ev,_ZThn11860_N8S7223C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S7223C16D1Ev,_ZThn11860_N8S7223C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7223C16 = {  "S7223C16", // class name
  bases_S7223C16, 23,
  &(vtc_S7223C16[0]), // expected_vtbl_contents
  &(vtt_S7223C16[0]), // expected_vtt_contents
  ABISELECT(26688,20000), // object size
  NSPAIRA(_ZTI8S7223C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7223C16),101, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C16),61, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C15  : S7223C16 {
  void *s7223c15f0;
  __tsi64 s7223c15f1;
  void *s7223c15f2;
  void *s7223c15f3;
  ::S7223C9_nt s7223c15f4;
  long s7223c15f5;
  long double s7223c15f6;
  virtual void  v10(); // _ZN8S7223C153v10Ev
  ~S7223C15(); // tgen
  S7223C15(); // tgen
};
//SIG(-1 S7223C15) C1{ BC2{ BC3{ VBC4{ m Fi} BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 VBC6{ BC4 VBC5 VBC3 BC7{ VBC4 VBC3 VBC5 v4 FL[8] Fp[7] Fs} v5 v6 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC4 VBC9{ BC10{ BC7 v7 FL FC3 Fs Fc Fi[2] Fp FC11{} Fi FL} VBC12{ VBC13{ VBC5 BC6 VBC14{ VBC3 VBC6 BC7 v8 Fp Fs[2] FD[2] Fc FC3 FD FC7} v9 Fi Fc Fc:1} vd FC13 Fs:5 Fl} BC6 FC10[9] Fi Fs:16 FC7 Fi Fs Fp Fl FC3} vd v10 Fi Fp Fc Fi:1 Fp FC9 FC4[6] Fp FC12 FL:5 Fl} v1 Fp FL Fp Fp FC11 Fl FD}


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

static void Test_S7223C15()
{
  extern Class_Descriptor cd_S7223C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1673,5011)];
    init_test(&cd_S7223C15, buf);
    S7223C15 *dp, &lv = *(dp=new (buf) S7223C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26752,20040), "sizeof(S7223C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C15)");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*)(S7223C16*), ABISELECT(15328,11448), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(15328,11448), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(15328,11448), "S7223C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15328,11448), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(15328,11448), "S7223C15");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(15328,11448), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15328,11448), "S7223C15");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*)(S7223C16*), 0, "S7223C15");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C16*), 0, "S7223C15");
    /*is_ambiguous_... S7223C16::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C16*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C3*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15344,11452), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(15636,11676), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(15760,11760), "S7223C15");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(15760,11760), "S7223C15");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C3*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(15760,11760), "S7223C15");
    /*is_ambiguous_... S7223C15::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(15504,11576), "S7223C15");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C16*), ABISELECT(15504,11576), "S7223C15");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(15504,11576), "S7223C15");
    /*is_ambiguous_... S7223C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C16*), ABISELECT(176,140), "S7223C15");
    check_base_class_offset(lv, (S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(15936,11900), "S7223C15");
    check_base_class_offset(lv, (S7223C4*)(S7223C3*), ABISELECT(15936,11900), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(25716,19288), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(25584,19188), "S7223C15");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(25584,19188), "S7223C15");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(25856,19380), "S7223C15");
    check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(25856,19380), "S7223C15");
    check_base_class_offset(lv, (S7223C11*)(S7223C10*), ABISELECT(25584,19188), "S7223C15");
    check_base_class_offset(lv, (S7223C10*)(S7223C3*), ABISELECT(23776,17872), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C3*), ABISELECT(16444,12284), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(16312,12184), "S7223C15");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C3*), ABISELECT(16312,12184), "S7223C15");
    check_base_class_offset(lv, (S7223C3*)(S7223C16*), ABISELECT(15936,11900), "S7223C15");
    check_base_class_offset(lv, (S7223C16*), 0, "S7223C15");
    check_field_offset(lv, s7223c15f0, ABISELECT(15264,11408), "S7223C15.s7223c15f0");
    check_field_offset(lv, s7223c15f1, ABISELECT(15272,11412), "S7223C15.s7223c15f1");
    check_field_offset(lv, s7223c15f2, ABISELECT(15280,11420), "S7223C15.s7223c15f2");
    check_field_offset(lv, s7223c15f3, ABISELECT(15288,11424), "S7223C15.s7223c15f3");
    check_field_offset(lv, s7223c15f4, ABISELECT(15296,11428), "S7223C15.s7223c15f4");
    check_field_offset(lv, s7223c15f5, ABISELECT(15304,11432), "S7223C15.s7223c15f5");
    check_field_offset(lv, s7223c15f6, ABISELECT(15312,11436), "S7223C15.s7223c15f6");
    test_class_info(&lv, &cd_S7223C15);
    dp->~S7223C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C15(Test_S7223C15, "S7223C15", ABISELECT(26752,20040));

#else // __cplusplus

extern void _ZN8S7223C15C1Ev();
extern void _ZN8S7223C15D1Ev();
Name_Map name_map_S7223C15[] = {
  NSPAIR(_ZN8S7223C15C1Ev),
  NSPAIR(_ZN8S7223C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C10;
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C3;
extern VTBL_ENTRY _ZTI7S7223C3[];
extern  VTBL_ENTRY _ZTV7S7223C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C3[];
extern Class_Descriptor cd_S7223C16;
extern VTBL_ENTRY _ZTI8S7223C16[];
extern  VTBL_ENTRY _ZTV8S7223C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C16[];
static Base_Class bases_S7223C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15328,11448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7223C7,    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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7223C8,    ABISELECT(15344,11452), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(15636,11676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C8,    ABISELECT(15760,11760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C7,    ABISELECT(15760,11760), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(15504,11576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(15504,11576), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    23, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(15936,11900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C4,    ABISELECT(15936,11900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25716,19288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(25584,19188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(25584,19188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(25856,19380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(25856,19380), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(25584,19188), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7223C10,    ABISELECT(23776,17872), //bcp->offset
    66, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16444,12284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(16312,12184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(16312,12184), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7223C3,    ABISELECT(15936,11900), //bcp->offset
    40, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7223C16,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C15[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN8S7223C15D1Ev();
extern void _ZN8S7223C15D0Ev();
extern void _ZN8S7223C162v9Ev();
extern void _ZN8S7223C153v10Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7223C15D1Ev,_ZTv0_n48_N8S7223C15D1Ev)();
extern void ABISELECT(_ZThn15936_N8S7223C15D1Ev,_ZThn11900_N8S7223C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7223C15D0Ev,_ZTv0_n48_N8S7223C15D0Ev)();
extern void ABISELECT(_ZThn15936_N8S7223C15D0Ev,_ZThn11900_N8S7223C15D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S7223C15D1Ev,_ZTv0_n36_N8S7223C15D1Ev)();
extern void ABISELECT(_ZThn23776_N8S7223C15D1Ev,_ZThn17872_N8S7223C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7223C15D0Ev,_ZTv0_n36_N8S7223C15D0Ev)();
extern void ABISELECT(_ZThn23776_N8S7223C15D0Ev,_ZThn17872_N8S7223C15D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY vtc_S7223C15[] = {
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7223C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7223C162v9Ev,
  (VTBL_ENTRY)&_ZN8S7223C153v10Ev,
  0,
  0,
  ABISELECT(-15344,-11452),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11576),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11760),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11900),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11900),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C15D1Ev,_ZTv0_n48_N8S7223C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C15D0Ev,_ZTv0_n48_N8S7223C15D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12184),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  ABISELECT(-23776,-17872),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17872),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C15D1Ev,_ZTv0_n36_N8S7223C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C15D0Ev,_ZTv0_n36_N8S7223C15D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25584,-19188),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25856,-19380),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern VTBL_ENTRY _ZTV8S7223C15[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN8S7223C16D1Ev();
extern void _ZN8S7223C16D0Ev();
extern void _ZN8S7223C162v9Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C16__8S7223C15[] = {
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7223C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7223C162v9Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C78S7223C16__8S7223C15[] = {
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C16__8S7223C15[] = {
  0,
  0,
  ABISELECT(-15344,-11452),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C16__8S7223C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11576),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A1__8S7223C16__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11760),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev)();
extern void ABISELECT(_ZThn15936_N8S7223C16D1Ev,_ZThn11900_N8S7223C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev)();
extern void ABISELECT(_ZThn15936_N8S7223C16D0Ev,_ZThn11900_N8S7223C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7223C3__8S7223C16__8S7223C15[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11900),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11900),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev)();
extern void ABISELECT(_ZThn23776_N8S7223C16D1Ev,_ZThn17872_N8S7223C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev)();
extern void ABISELECT(_ZThn23776_N8S7223C16D0Ev,_ZThn17872_N8S7223C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__8S7223C16__8S7223C15[] = {
  ABISELECT(-23776,-17872),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17872),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C16__8S7223C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25584,-19188),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C16__8S7223C15[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25856,-19380),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__8S7223C16__8S7223C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12184),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C15[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__8S7223C15[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C15[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__8S7223C15[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A1__8S7223C15[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C3D1Ev();
extern void _ZN7S7223C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C3__8S7223C15[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C47S7223C3__8S7223C15[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C47S7223C3__A1__8S7223C15[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__A1__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__A1__8S7223C15[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C47S7223C3__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C47S7223C3__8S7223C15[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__8S7223C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C127S7223C3__A4__8S7223C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__8S7223C15[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C127S7223C3__A2__8S7223C15[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C127S7223C3__A2__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C3__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C3__8S7223C15[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev)();
extern void ABISELECT(_ZThn7840_N7S7223C3D1Ev,_ZThn5972_N7S7223C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev)();
extern void ABISELECT(_ZThn7840_N7S7223C3D0Ev,_ZThn5972_N7S7223C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C3__8S7223C15[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C3__8S7223C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C3__8S7223C15[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-9920,-7480),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C3__8S7223C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C3__8S7223C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C10__8S7223C15[] = {
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10__8S7223C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C10__8S7223C15[] = {
  0,
  0,
  ABISELECT(8432,6420),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6112),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10__8S7223C15[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10__8S7223C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6296),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C15[] = {
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__A1__8S7223C15[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A2__8S7223C15[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A2__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A2__8S7223C15[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__A1__8S7223C15[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__A1__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__8S7223C15[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__8S7223C15[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__8S7223C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7612),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C15[] = {
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A3__8S7223C15[] = {
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A3__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__8S7223C15[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__8S7223C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__8S7223C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7804),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__8S7223C15[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C15[] = {
  {&(_ZTV8S7223C15[10]),  10,102},
  {&(_tg__ZTV8S7223C16__8S7223C15[10]),  10,15},
  {&(_tg__ZTV7S7223C78S7223C16__8S7223C15[3]),  3,5},
  {&(_tg__ZTV7S7223C8__A1__8S7223C16__8S7223C15[4]),  4,6},
  {&(_tg__ZTV8S7223C12__8S7223C16__8S7223C15[8]),  8,11},
  {&(_tg__ZTV7S7223C7__A1__8S7223C16__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C3__8S7223C16__8S7223C15[14]),  14,18},
  {&(_tg__ZTV8S7223C10__8S7223C16__8S7223C15[9]),  9,11},
  {&(_tg__ZTV8S7223C11__8S7223C16__8S7223C15[11]),  11,15},
  {&(_tg__ZTV8S7223C14__8S7223C16__8S7223C15[8]),  8,10},
  {&(_tg__ZTV8S7223C127S7223C3__A2__8S7223C16__8S7223C15[5]),  5,8},
  {&(_ZTV8S7223C15[20]),  20,102},
  {&(_ZTV8S7223C15[30]),  30,102},
  {&(_ZTV8S7223C15[38]),  38,102},
  {&(_ZTV8S7223C15[54]),  54,102},
  {&(_ZTV8S7223C15[75]),  75,102},
  {&(_ZTV8S7223C15[88]),  88,102},
  {&(_ZTV8S7223C15[100]),  100,102},
  {&(_ZTV8S7223C15[63]),  63,102},
  {&(_tg__ZTV8S7223C12__8S7223C15[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__8S7223C15[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C7__A1__8S7223C15[3]),  3,5},
  {&(_tg__ZTV7S7223C3__8S7223C15[9]),  9,13},
  {&(_tg__ZTV7S7223C47S7223C3__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C47S7223C3__A1__8S7223C15[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__A1__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__A1__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C47S7223C3__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C47S7223C3__8S7223C15[4]),  4,6},
  {&(_tg__ZTV8S7223C127S7223C3__A2__8S7223C15[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C127S7223C3__A4__8S7223C15[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C127S7223C3__A2__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C127S7223C3__A2__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C7__7S7223C3__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C3__8S7223C15[4]),  4,6},
  {&(_tg__ZTV8S7223C10__7S7223C3__8S7223C15[9]),  9,11},
  {&(_tg__ZTV8S7223C11__7S7223C3__8S7223C15[11]),  11,15},
  {&(_tg__ZTV8S7223C14__7S7223C3__8S7223C15[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__7S7223C3__8S7223C15[8]),  8,11},
  {&(_tg__ZTV8S7223C12__A__7S7223C3__8S7223C15[5]),  5,8},
  {&(_tg__ZTV8S7223C10__8S7223C15[8]),  8,10},
  {&(_tg__ZTV8S7223C11__8S7223C10__8S7223C15[11]),  11,15},
  {&(_tg__ZTV7S7223C8__8S7223C10__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C10__8S7223C15[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C10__8S7223C15[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10__8S7223C15[8]),  8,11},
  {&(_tg__ZTV8S7223C11__8S7223C15[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__A1__8S7223C15[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A2__8S7223C15[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A2__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A2__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__A1__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__A1__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__8S7223C15[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__8S7223C15[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__8S7223C15[8]),  8,11},
  {&(_tg__ZTV8S7223C14__8S7223C15[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A3__8S7223C15[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A3__8S7223C15[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__8S7223C15[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__8S7223C15[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__8S7223C15[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__8S7223C15[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7223C15[];
extern  VTBL_ENTRY _ZTV8S7223C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C15[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7223C3D0Ev,_ZThn5972_N7S7223C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7223C3D1Ev,_ZThn5972_N7S7223C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7223C16D0Ev,_ZThn17872_N8S7223C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7223C16D1Ev,_ZThn17872_N8S7223C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7223C16D0Ev,_ZThn11900_N8S7223C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7223C16D1Ev,_ZThn11900_N8S7223C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C15D0Ev,_ZTv0_n36_N8S7223C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7223C15D0Ev,_ZThn17872_N8S7223C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C15D1Ev,_ZTv0_n36_N8S7223C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7223C15D1Ev,_ZThn17872_N8S7223C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C15D0Ev,_ZTv0_n48_N8S7223C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7223C15D0Ev,_ZThn11900_N8S7223C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C15D1Ev,_ZTv0_n48_N8S7223C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7223C15D1Ev,_ZThn11900_N8S7223C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7223C15 = {  "S7223C15", // class name
  bases_S7223C15, 24,
  &(vtc_S7223C15[0]), // expected_vtbl_contents
  &(vtt_S7223C15[0]), // expected_vtt_contents
  ABISELECT(26752,20040), // object size
  NSPAIRA(_ZTI8S7223C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7223C15),102, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C15),70, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C18  : virtual S7223C8 , S7223C11 , S7223C5 , S7223C7 , S7223C12 {
  int s7223c18f0;
  int s7223c18f1[6];
  void *s7223c18f2;
  void *s7223c18f3;
  int s7223c18f4[9];
  char s7223c18f5;
  void *s7223c18f6;
  char s7223c18f7;
  void *s7223c18f8;
  short s7223c18f9;
  virtual void  v11(); // _ZN8S7223C183v11Ev
  virtual void  v12(); // _ZN8S7223C183v12Ev
  ~S7223C18(); // tgen
  S7223C18(); // tgen
};
//SIG(-1 S7223C18) C1{ VBC2{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ VBC2 BC4{ BC5{ m Fi} VBC2 VBC6{ VBC5 BC2 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC2 v5 FL[8] Fp[7] Fs} v6 v7 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v8 Fp Fs[2] FD[2] Fc FC6 FD FC7} v9 Fi Fc Fc:1} BC7 BC6 BC4 v1 v2 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs}


void  S7223C18 ::v11(){vfunc_called(this, "_ZN8S7223C183v11Ev");}
void  S7223C18 ::v12(){vfunc_called(this, "_ZN8S7223C183v12Ev");}
S7223C18 ::~S7223C18(){ note_dtor("S7223C18", this);} // tgen
S7223C18 ::S7223C18(){ note_ctor("S7223C18", this);} // tgen

static void Test_S7223C18()
{
  extern Class_Descriptor cd_S7223C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(154,456)];
    init_test(&cd_S7223C18, buf);
    S7223C18 *dp, &lv = *(dp=new (buf) S7223C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2448,1820), "sizeof(S7223C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C18)");
    /*is_ambiguous_... S7223C18::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(944,708), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(132,100), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(1280,972), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(1104,832), "S7223C18");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(1104,832), "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), 0, "S7223C18");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), 0, "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(2324,1736), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(2192,1636), "S7223C18");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(2192,1636), "S7223C18");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(1296,976), "S7223C18");
    check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(1296,976), "S7223C18");
    check_base_class_offset(lv, (S7223C11*), 0, "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*), ABISELECT(264,192), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(400,292), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C7*), ABISELECT(400,292), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(708,532), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(576,432), "S7223C18");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*), ABISELECT(576,432), "S7223C18");
    check_field_offset(lv, s7223c18f0, ABISELECT(828,616), "S7223C18.s7223c18f0");
    check_field_offset(lv, s7223c18f1, ABISELECT(832,620), "S7223C18.s7223c18f1");
    check_field_offset(lv, s7223c18f2, ABISELECT(856,644), "S7223C18.s7223c18f2");
    check_field_offset(lv, s7223c18f3, ABISELECT(864,648), "S7223C18.s7223c18f3");
    check_field_offset(lv, s7223c18f4, ABISELECT(872,652), "S7223C18.s7223c18f4");
    check_field_offset(lv, s7223c18f5, ABISELECT(908,688), "S7223C18.s7223c18f5");
    check_field_offset(lv, s7223c18f6, ABISELECT(912,692), "S7223C18.s7223c18f6");
    check_field_offset(lv, s7223c18f7, ABISELECT(920,696), "S7223C18.s7223c18f7");
    check_field_offset(lv, s7223c18f8, ABISELECT(928,700), "S7223C18.s7223c18f8");
    check_field_offset(lv, s7223c18f9, ABISELECT(936,704), "S7223C18.s7223c18f9");
    test_class_info(&lv, &cd_S7223C18);
    dp->~S7223C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C18(Test_S7223C18, "S7223C18", ABISELECT(2448,1820));

#else // __cplusplus

extern void _ZN8S7223C18C1Ev();
extern void _ZN8S7223C18D1Ev();
Name_Map name_map_S7223C18[] = {
  NSPAIR(_ZN8S7223C18C1Ev),
  NSPAIR(_ZN8S7223C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
static Base_Class bases_S7223C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7223C8,    ABISELECT(944,708), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(1280,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    ABISELECT(1104,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(1104,832), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7223C12,    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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2324,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(2192,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(2192,1636), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(1296,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(1296,976), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7223C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C5,    ABISELECT(264,192), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C8,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(400,292), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(576,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(576,432), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C18[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN8S7223C183v11Ev();
extern void _ZN8S7223C183v12Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY vtc_S7223C18[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  (VTBL_ENTRY)&_ZN8S7223C183v11Ev,
  (VTBL_ENTRY)&_ZN8S7223C183v12Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern VTBL_ENTRY _ZTV8S7223C18[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C18[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__8S7223C18[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__8S7223C18[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__8S7223C18[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__8S7223C18[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C5__A3__8S7223C18[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C5__A3__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C5__A3__8S7223C18[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A__8S7223C18[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__8S7223C18[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A4__8S7223C18[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A4__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A4__8S7223C18[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A__8S7223C18[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C18[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C18[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A2__8S7223C18[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C18[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__8S7223C18[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__8S7223C18[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C18[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A1__8S7223C18[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C18[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__8S7223C18[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__8S7223C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C18[] = {
  {&(_ZTV8S7223C18[7]),  7,66},
  {&(_tg__ZTV8S7223C11__8S7223C18[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__8S7223C18[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__8S7223C18[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__8S7223C18[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__8S7223C18[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__8S7223C18[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__8S7223C18[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__8S7223C18[8]),  8,11},
  {&(_tg__ZTV7S7223C5__A3__8S7223C18[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C5__A3__8S7223C18[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C5__A3__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C7__A__8S7223C18[3]),  3,5},
  {&(_tg__ZTV8S7223C12__A__8S7223C18[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A4__8S7223C18[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A4__8S7223C18[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A4__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A__8S7223C18[5]),  5,7},
  {&(_ZTV8S7223C18[36]),  36,66},
  {&(_ZTV8S7223C18[43]),  43,66},
  {&(_ZTV8S7223C18[53]),  53,66},
  {&(_ZTV8S7223C18[63]),  63,66},
  {&(_ZTV8S7223C18[18]),  18,66},
  {&(_ZTV8S7223C18[22]),  22,66},
  {&(_ZTV8S7223C18[29]),  29,66},
  {&(_tg__ZTV7S7223C7__8S7223C18[3]),  3,5},
  {&(_tg__ZTV8S7223C14__8S7223C18[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A2__8S7223C18[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C18[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__8S7223C18[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__8S7223C18[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__8S7223C18[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__8S7223C18[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A1__8S7223C18[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C18[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__8S7223C18[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__8S7223C18[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7223C18[];
extern  VTBL_ENTRY _ZTV8S7223C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C18[];
Class_Descriptor cd_S7223C18 = {  "S7223C18", // class name
  bases_S7223C18, 19,
  &(vtc_S7223C18[0]), // expected_vtbl_contents
  &(vtt_S7223C18[0]), // expected_vtt_contents
  ABISELECT(2448,1820), // object size
  NSPAIRA(_ZTI8S7223C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7223C18),66, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C18),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C17  : virtual S7223C18 , S7223C7 , S7223C11 , virtual S7223C3 {
  ::S7223C16 s7223c17f0;
  void *s7223c17f1;
  char s7223c17f2[7];
  char  :0;
  ::S1538C9_nt s7223c17f4;
  int s7223c17f5[7];
  ~S7223C17(); // tgen
  S7223C17(); // tgen
};
//SIG(-1 S7223C17) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ VBC3 BC5{ BC6{ m Fi} VBC3 VBC7{ VBC6 BC3 Fi Fs[2] FL} BC8{ VBC6 VBC7 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC10{ VBC7 VBC5 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} BC8 BC7 BC5 v8 v9 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC7 BC4 VBC11{ BC12{ BC8 v10 FL FC7 Fs Fc Fi[2] Fp FC13{} Fi FL} VBC14{ VBC4 vd FC4 Fs:5 Fl} BC5 FC12[9] Fi Fs:16 FC8 Fi Fs Fp Fl FC7} FC15{ BC7 VBC3 VBC5 BC6 VBC11 vd v11 Fi Fp Fc Fi:1 Fp FC11 FC6[6] Fp FC14 FL:5 Fl} Fp Fc[7] Fc:0 FC6 Fi[7]}


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

static void Test_S7223C17()
{
  extern Class_Descriptor cd_S7223C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2473,7420)];
    init_test(&cd_S7223C17, buf);
    S7223C17 *dp, &lv = *(dp=new (buf) S7223C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39552,29676), "sizeof(S7223C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C17)");
    /*is_ambiguous_... S7223C18::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C18*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C3*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(28128,21084), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(27316,20476), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C18*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*)(S7223C18*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C18*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(28464,21348), "S7223C17");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(28464,21348), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(28288,21208), "S7223C17");
    check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C18*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C18*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C18*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(28288,21208), "S7223C17");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C3*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(28288,21208), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(27184,20376), "S7223C17");
    /*is_ambiguous_... S7223C11::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*)(S7223C18*), ABISELECT(27184,20376), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(29508,22112), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(29376,22012), "S7223C17");
    check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(29376,22012), "S7223C17");
    /*is_ambiguous_... S7223C14::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(28480,21352), "S7223C17");
    check_base_class_offset(lv, (S7223C14*)(S7223C11*)(S7223C18*), ABISELECT(28480,21352), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(28480,21352), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(28480,21352), "S7223C17");
    check_base_class_offset(lv, (S7223C11*)(S7223C18*), ABISELECT(27184,20376), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C5 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C18*), ABISELECT(27448,20568), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*)(S7223C18*), ABISELECT(27584,20668), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C18*), ABISELECT(27584,20668), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C18*), ABISELECT(27892,20908), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C18*), ABISELECT(27760,20808), "S7223C17");
    /*is_ambiguous_... S7223C18::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C18*), ABISELECT(27760,20808), "S7223C17");
    check_base_class_offset(lv, (S7223C18*), ABISELECT(27184,20376), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), 0, "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C7*), 0, "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(308,240), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(176,140), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(176,140), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C11*), ABISELECT(176,140), "S7223C17");
    check_base_class_offset(lv, (S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(29632,22196), "S7223C17");
    check_base_class_offset(lv, (S7223C4*)(S7223C3*), ABISELECT(29632,22196), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(39412,29584), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(39280,29484), "S7223C17");
    /*is_ambiguous_... S7223C17::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(39280,29484), "S7223C17");
    check_base_class_offset(lv, (S7223C11*)(S7223C10*), ABISELECT(39280,29484), "S7223C17");
    check_base_class_offset(lv, (S7223C10*)(S7223C3*), ABISELECT(37472,28168), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C3*), ABISELECT(30140,22580), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(30008,22480), "S7223C17");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C3*), ABISELECT(30008,22480), "S7223C17");
    check_base_class_offset(lv, (S7223C3*), ABISELECT(29632,22196), "S7223C17");
    check_field_offset(lv, s7223c17f0, ABISELECT(448,332), "S7223C17.s7223c17f0");
    check_field_offset(lv, s7223c17f1, ABISELECT(27136,20332), "S7223C17.s7223c17f1");
    check_field_offset(lv, s7223c17f2, ABISELECT(27144,20336), "S7223C17.s7223c17f2");
    check_field_offset(lv, s7223c17f4, ABISELECT(27152,20344), "S7223C17.s7223c17f4");
    check_field_offset(lv, s7223c17f5, ABISELECT(27156,20348), "S7223C17.s7223c17f5");
    test_class_info(&lv, &cd_S7223C17);
    dp->~S7223C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C17(Test_S7223C17, "S7223C17", ABISELECT(39552,29676));

#else // __cplusplus

extern void _ZN8S7223C17C1Ev();
extern void _ZN8S7223C17D1Ev();
Name_Map name_map_S7223C17[] = {
  NSPAIR(_ZN8S7223C17C1Ev),
  NSPAIR(_ZN8S7223C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C18;
extern VTBL_ENTRY _ZTI8S7223C18[];
extern  VTBL_ENTRY _ZTV8S7223C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C18[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C10;
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C3;
extern VTBL_ENTRY _ZTI7S7223C3[];
extern  VTBL_ENTRY _ZTV7S7223C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C3[];
static Base_Class bases_S7223C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7223C8,    ABISELECT(28128,21084), //bcp->offset
    66, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(27316,20476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(28464,21348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    ABISELECT(28288,21208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C7,    ABISELECT(28288,21208), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(27184,20376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(27184,20376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(29508,22112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(29376,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(29376,22012), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(28480,21352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(28480,21352), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(27184,20376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(27448,20568), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7223C8,    ABISELECT(27584,20668), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7223C7,    ABISELECT(27584,20668), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(27892,20908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(27760,20808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(27760,20808), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7223C18,    ABISELECT(27184,20376), //bcp->offset
    26, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7223C7,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(308,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
    24, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7223C11,    ABISELECT(176,140), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7223C5,    ABISELECT(29632,22196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7223C4,    ABISELECT(29632,22196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(39412,29584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(39280,29484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(39280,29484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7223C11,    ABISELECT(39280,29484), //bcp->offset
    137, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7223C10,    ABISELECT(37472,28168), //bcp->offset
    126, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(30140,22580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(30008,22480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    35, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(30008,22480), //bcp->offset
    118, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7223C3,    ABISELECT(29632,22196), //bcp->offset
    100, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7223C17[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN8S7223C17D1Ev();
extern void _ZN8S7223C17D0Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN8S7223C183v11Ev();
extern void _ZN8S7223C183v12Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7223C17D1Ev,_ZTv0_n48_N8S7223C17D1Ev)();
extern void ABISELECT(_ZThn29632_N8S7223C17D1Ev,_ZThn22196_N8S7223C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7223C17D0Ev,_ZTv0_n48_N8S7223C17D0Ev)();
extern void ABISELECT(_ZThn29632_N8S7223C17D0Ev,_ZThn22196_N8S7223C17D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S7223C17D1Ev,_ZTv0_n36_N8S7223C17D1Ev)();
extern void ABISELECT(_ZThn37472_N8S7223C17D1Ev,_ZThn28168_N8S7223C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7223C17D0Ev,_ZTv0_n36_N8S7223C17D0Ev)();
extern void ABISELECT(_ZThn37472_N8S7223C17D0Ev,_ZThn28168_N8S7223C17D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY vtc_S7223C17[] = {
  ABISELECT(39280,29484),
  ABISELECT(37472,28168),
  ABISELECT(29632,22196),
  ABISELECT(29376,22012),
  ABISELECT(28480,21352),
  ABISELECT(28288,21208),
  ABISELECT(28128,21084),
  ABISELECT(27184,20376),
  ABISELECT(28464,21348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7223C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C17D0Ev,
  ABISELECT(29200,21872),
  ABISELECT(28304,21212),
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  ABISELECT(-27184,-20376),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  (VTBL_ENTRY)&_ZN8S7223C183v11Ev,
  (VTBL_ENTRY)&_ZN8S7223C183v12Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-27448,-20568),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  ABISELECT(880,680),
  ABISELECT(-27584,-20668),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-27760,-20808),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-28128,-21084),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28288,-21208),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28480,-21352),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29376,-22012),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-29632,-22196),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  ABISELECT(-29632,-22196),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C17D1Ev,_ZTv0_n48_N8S7223C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C17D0Ev,_ZTv0_n48_N8S7223C17D0Ev),
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-30008,-22480),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  ABISELECT(-37472,-28168),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-9008,-6820),
  ABISELECT(-9184,-6960),
  ABISELECT(-9344,-7084),
  ABISELECT(1808,1316),
  ABISELECT(-37472,-28168),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C17D1Ev,_ZTv0_n36_N8S7223C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C17D0Ev,_ZTv0_n36_N8S7223C17D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  ABISELECT(-39280,-29484),
  (VTBL_ENTRY)&(_ZTI8S7223C17[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern VTBL_ENTRY _ZTV8S7223C17[];
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A__8S7223C17[] = {
  ABISELECT(28464,21348),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__A__8S7223C17[] = {
  ABISELECT(29200,21872),
  ABISELECT(28304,21212),
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__A3__8S7223C17[] = {
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A5__8S7223C17[] = {
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A5__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A5__8S7223C17[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__A3__8S7223C17[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__A3__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__A__8S7223C17[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__A__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__A__8S7223C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28304,-21212),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__A__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29200,-21872),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN8S7223C183v11Ev();
extern void _ZN8S7223C183v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C18__8S7223C17[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  (VTBL_ENTRY)&_ZN8S7223C183v11Ev,
  (VTBL_ENTRY)&_ZN8S7223C183v12Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C118S7223C18__8S7223C17[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C118S7223C18__8S7223C17[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C118S7223C18__8S7223C17[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C118S7223C18__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C18__A3__8S7223C17[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C18__A3__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C18__A3__8S7223C17[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C78S7223C18__A1__8S7223C17[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C18__A2__8S7223C17[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C18__A4__8S7223C17[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C18__A4__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C18__A4__8S7223C17[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C18__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C18__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C18__8S7223C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C18__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C5__A3__8S7223C18__8S7223C17[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A__8S7223C18__8S7223C17[] = {
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__8S7223C18__8S7223C17[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S7223C18[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C17[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C17[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A2__8S7223C17[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__8S7223C17[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C17[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A1__8S7223C17[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C17[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__8S7223C17[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C3D1Ev();
extern void _ZN7S7223C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C3__8S7223C17[] = {
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C47S7223C3__8S7223C17[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C47S7223C3__A6__8S7223C17[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__A6__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__A6__8S7223C17[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C47S7223C3__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C47S7223C3__8S7223C17[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A5__8S7223C17[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C127S7223C3__A8__8S7223C17[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A8__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A8__8S7223C17[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C127S7223C3__A5__8S7223C17[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C127S7223C3__A5__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C3__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C3__8S7223C17[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev)();
extern void ABISELECT(_ZThn7840_N7S7223C3D1Ev,_ZThn5972_N7S7223C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev)();
extern void ABISELECT(_ZThn7840_N7S7223C3D0Ev,_ZThn5972_N7S7223C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C3__8S7223C17[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-9008,-6820),
  ABISELECT(-9184,-6960),
  ABISELECT(-9344,-7084),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C3__8S7223C17[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C3__8S7223C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(1152,844),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C3__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C3__8S7223C17[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C10__8S7223C17[] = {
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-9008,-6820),
  ABISELECT(-9184,-6960),
  ABISELECT(-9344,-7084),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10__8S7223C17[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C10__8S7223C17[] = {
  0,
  0,
  ABISELECT(9344,7084),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(9184,6960),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10__8S7223C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(8992,6816),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(8096,6156),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__A2__8S7223C17[] = {
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__A4__8S7223C17[] = {
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A7__8S7223C17[] = {
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A7__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8276),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A7__8S7223C17[] = {
  0,
  0,
  ABISELECT(11152,8400),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__A4__8S7223C17[] = {
  0,
  0,
  ABISELECT(11152,8400),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__A4__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8276),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(11152,8400),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8276),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__A2__8S7223C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(10800,8132),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__A2__8S7223C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(9904,7472),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
static  VTT_ENTRY vtt_S7223C17[] = {
  {&(_ZTV8S7223C17[11]),  11,152},
  {&(_tg__ZTV7S7223C7__A__8S7223C17[3]),  3,5},
  {&(_tg__ZTV8S7223C11__A__8S7223C17[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__A3__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A5__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A5__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A5__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__A3__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__A3__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__A__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__A__8S7223C17[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__A__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__A__8S7223C17[8]),  8,11},
  {&(_ZTV8S7223C17[41]),  41,152},
  {&(_ZTV8S7223C17[70]),  70,152},
  {&(_ZTV8S7223C17[77]),  77,152},
  {&(_ZTV8S7223C17[87]),  87,152},
  {&(_ZTV8S7223C17[97]),  97,152},
  {&(_ZTV8S7223C17[52]),  52,152},
  {&(_ZTV8S7223C17[56]),  56,152},
  {&(_ZTV8S7223C17[63]),  63,152},
  {&(_ZTV8S7223C17[22]),  22,152},
  {&(_ZTV8S7223C17[114]),  114,152},
  {&(_ZTV8S7223C17[135]),  135,152},
  {&(_ZTV8S7223C17[148]),  148,152},
  {&(_ZTV8S7223C17[123]),  123,152},
  {&(_tg__ZTV8S7223C18__8S7223C17[7]),  7,13},
  {&(_tg__ZTV8S7223C118S7223C18__8S7223C17[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C118S7223C18__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C118S7223C18__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C118S7223C18__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C118S7223C18__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C118S7223C18__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C118S7223C18__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C118S7223C18__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C118S7223C18__8S7223C17[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C118S7223C18__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C118S7223C18__8S7223C17[8]),  8,11},
  {&(_tg__ZTV7S7223C58S7223C18__A3__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C18__A3__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C18__A3__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C78S7223C18__A1__8S7223C17[3]),  3,5},
  {&(_tg__ZTV8S7223C128S7223C18__A2__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C18__A4__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C18__A4__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C18__A4__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C18__A2__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C18__A2__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C18__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C18__8S7223C17[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C18__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C18__8S7223C17[8]),  8,11},
  {&(_tg__ZTV7S7223C5__A3__8S7223C18__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__A__8S7223C18__8S7223C17[3]),  3,5},
  {&(_tg__ZTV8S7223C12__A__8S7223C18__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C7__8S7223C17[3]),  3,5},
  {&(_tg__ZTV8S7223C14__8S7223C17[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A2__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A2__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A2__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__8S7223C17[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__8S7223C17[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__8S7223C17[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A1__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A1__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A1__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C3__8S7223C17[9]),  9,13},
  {&(_tg__ZTV7S7223C47S7223C3__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C47S7223C3__A6__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__A6__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__A6__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C47S7223C3__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C47S7223C3__8S7223C17[4]),  4,6},
  {&(_tg__ZTV8S7223C127S7223C3__A5__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C127S7223C3__A8__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A8__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A8__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C127S7223C3__A5__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C127S7223C3__A5__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C7__7S7223C3__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C3__8S7223C17[4]),  4,6},
  {&(_tg__ZTV8S7223C10__7S7223C3__8S7223C17[9]),  9,11},
  {&(_tg__ZTV8S7223C11__7S7223C3__8S7223C17[11]),  11,15},
  {&(_tg__ZTV8S7223C14__7S7223C3__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__7S7223C3__8S7223C17[8]),  8,11},
  {&(_tg__ZTV8S7223C12__A__7S7223C3__8S7223C17[5]),  5,8},
  {&(_tg__ZTV8S7223C10__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C11__8S7223C10__8S7223C17[11]),  11,15},
  {&(_tg__ZTV7S7223C8__8S7223C10__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C10__8S7223C17[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C10__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10__8S7223C17[8]),  8,11},
  {&(_tg__ZTV8S7223C11__A2__8S7223C17[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__A4__8S7223C17[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A7__8S7223C17[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A7__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A7__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__A4__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__A4__8S7223C17[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__A2__8S7223C17[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__A2__8S7223C17[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__A2__8S7223C17[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__A2__8S7223C17[8]),  8,11},
};
extern VTBL_ENTRY _ZTI8S7223C17[];
extern  VTBL_ENTRY _ZTV8S7223C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C17[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7223C3D0Ev,_ZThn5972_N7S7223C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7223C3D1Ev,_ZThn5972_N7S7223C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C17D0Ev,_ZTv0_n36_N8S7223C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S7223C17D0Ev,_ZThn28168_N8S7223C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C17D1Ev,_ZTv0_n36_N8S7223C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S7223C17D1Ev,_ZThn28168_N8S7223C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C17D0Ev,_ZTv0_n48_N8S7223C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S7223C17D0Ev,_ZThn22196_N8S7223C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C17D1Ev,_ZTv0_n48_N8S7223C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S7223C17D1Ev,_ZThn22196_N8S7223C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7223C17 = {  "S7223C17", // class name
  bases_S7223C17, 37,
  &(vtc_S7223C17[0]), // expected_vtbl_contents
  &(vtt_S7223C17[0]), // expected_vtt_contents
  ABISELECT(39552,29676), // object size
  NSPAIRA(_ZTI8S7223C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7223C17),152, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7223C17),106, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7223C1  : S7223C2 , virtual S7223C4 , S7223C15 {
  int s7223c1f0[9];
  int s7223c1f1;
  void *s7223c1f2;
  int s7223c1f3[9];
  ::S7223C17 s7223c1f4;
  ::S7223C7 s7223c1f5;
  void *s7223c1f6;
  ~S7223C1(); // tgen
  S7223C1(); // tgen
};
//SIG(1 S7223C1) C1{ BC2{ VBC3{ BC4{ BC5{ VBC6{ m Fi} VBC7{ VBC6 BC8{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC8 v3 FL[8] Fp[7] Fs} v4 FL FC7 Fs Fc Fi[2] Fp FC9{} Fi FL} VBC10{ VBC11{ VBC8 BC12{ BC6 VBC8 VBC7 BC5 v5 v6 FU13{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC14{ VBC7 VBC12 BC5 v7 Fp Fs[2] FD[2] Fc FC7 FD FC5} v8 Fi Fc Fc:1} vd FC11 Fs:5 Fl} BC12 FC4[9] Fi Fs:16 FC5 Fi Fs Fp Fl FC7} BC11 BC14 BC6 BC12 FL Fl Fl Fc FL Fp FC14[9] FD[7] Fi} VBC4 BC15{ BC16{ BC7 VBC8 VBC12 BC6 VBC3 vd v9 Fi Fp Fc Fi:1 Fp FC3 FC6[6] Fp FC10 FL:5 Fl} v10 Fp FL Fp Fp FC9 Fl FD} Fi[9] Fi Fp Fi[9] FC17{ VBC18{ VBC8 BC11 BC5 BC7 BC12 v11 v12 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC7 BC11 VBC3 FC16 Fp Fc[7] Fc:0 FC6 Fi[7]} FC7 Fp}


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

static void Test_S7223C1()
{
  extern Class_Descriptor cd_S7223C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5135,15350)];
    init_test(&cd_S7223C1, buf);
    S7223C1 *dp, &lv = *(dp=new (buf) S7223C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(82144,61396), "sizeof(S7223C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7223C1)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C11*)(S7223C2*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C14*)(S7223C2*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C12*)(S7223C2*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C5*)(S7223C4*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C7*)(S7223C16*)(S7223C15*), ABISELECT(78176,58492), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*), ABISELECT(78192,58496), "S7223C1");
    check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C14*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C3*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C11*)(S7223C2*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C11*)(S7223C2*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C14*)(S7223C2*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C14*)(S7223C2*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C12*)(S7223C2*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C12*)(S7223C2*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C4 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C5*)(S7223C4*), ABISELECT(78192,58496), "S7223C1");
    /*is_ambiguous_... S7223C5::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C3*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C11*)(S7223C2*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C11*)(S7223C2*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C11*)(S7223C2*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C14*)(S7223C2*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C12*)(S7223C2*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C12*)(S7223C2*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C4 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C5*)(S7223C4*), ABISELECT(78368,58636), "S7223C1");
    /*is_ambiguous_... S7223C16::S7223C8 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C16*)(S7223C15*), ABISELECT(78368,58636), "S7223C1");
    check_base_class_offset(lv, (S7223C5*)(S7223C4*)(S7223C3*), ABISELECT(70336,52520), "S7223C1");
    check_base_class_offset(lv, (S7223C4*)(S7223C3*), ABISELECT(70336,52520), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*), ABISELECT(80468,60176), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*), ABISELECT(80336,60076), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*), ABISELECT(80336,60076), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*), ABISELECT(81636,61028), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*), ABISELECT(81504,60928), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C14*), ABISELECT(81504,60928), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C14*)(S7223C2*), ABISELECT(81504,60928), "S7223C1");
    /*is_ambiguous_... S7223C16::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C16*)(S7223C15*), ABISELECT(81504,60928), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*), ABISELECT(80608,60268), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C11*), ABISELECT(80608,60268), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C11*)(S7223C2*), ABISELECT(80608,60268), "S7223C1");
    check_base_class_offset(lv, (S7223C11*)(S7223C10*), ABISELECT(80336,60076), "S7223C1");
    check_base_class_offset(lv, (S7223C10*)(S7223C3*), ABISELECT(78528,58760), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C3*), ABISELECT(70844,52904), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C3*), ABISELECT(70712,52804), "S7223C1");
    /*is_ambiguous_... S7223C3::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C3*), ABISELECT(70712,52804), "S7223C1");
    check_base_class_offset(lv, (S7223C3*)(S7223C2*), ABISELECT(70336,52520), "S7223C1");
    check_base_class_offset(lv, (S7223C3*)(S7223C16*)(S7223C15*), ABISELECT(70336,52520), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C11*)(S7223C2*), ABISELECT(132,100), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C11*)(S7223C2*), 0, "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C11*)(S7223C2*), 0, "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C11 */ AMB_check_base_class_offset(lv, (S7223C11*)(S7223C2*), 0, "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C14*)(S7223C2*), ABISELECT(272,192), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C14 */ AMB_check_base_class_offset(lv, (S7223C14*)(S7223C2*), ABISELECT(272,192), "S7223C1");
    /*is_ambiguous_... S7223C2::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C2*), ABISELECT(1168,852), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C12*)(S7223C2*), ABISELECT(1308,956), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C12*)(S7223C2*), ABISELECT(1176,856), "S7223C1");
    /*is_ambiguous_... S7223C2::S7223C12 */ AMB_check_base_class_offset(lv, (S7223C12*)(S7223C2*), ABISELECT(1176,856), "S7223C1");
    check_base_class_offset(lv, (S7223C2*), 0, "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C4 */ AMB_check_base_class_offset(lv, (S7223C5*)(S7223C4*), ABISELECT(81760,61112), "S7223C1");
    /*is_ambiguous_... S7223C1::S7223C4 */ AMB_check_base_class_offset(lv, (S7223C4*), ABISELECT(81760,61112), "S7223C1");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C8*)(S7223C7*)(S7223C16*)(S7223C15*), ABISELECT(15152,11168), "S7223C1");
    /*is_ambiguous_... S7223C16::S7223C7 */ AMB_check_base_class_offset(lv, (S7223C7*)(S7223C16*)(S7223C15*), ABISELECT(15152,11168), "S7223C1");
    /*is_ambiguous_... S7223C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7223C16*)(S7223C15*), ABISELECT(15328,11308), "S7223C1");
    check_base_class_offset(lv, (S7223C16*)(S7223C15*), ABISELECT(15152,11168), "S7223C1");
    check_base_class_offset(lv, (S7223C15*), ABISELECT(15152,11168), "S7223C1");
    check_field_offset(lv, s7223c1f0, ABISELECT(30480,22616), "S7223C1.s7223c1f0");
    check_field_offset(lv, s7223c1f1, ABISELECT(30516,22652), "S7223C1.s7223c1f1");
    check_field_offset(lv, s7223c1f2, ABISELECT(30520,22656), "S7223C1.s7223c1f2");
    check_field_offset(lv, s7223c1f3, ABISELECT(30528,22660), "S7223C1.s7223c1f3");
    check_field_offset(lv, s7223c1f4, ABISELECT(30576,22696), "S7223C1.s7223c1f4");
    check_field_offset(lv, s7223c1f5, ABISELECT(70128,52372), "S7223C1.s7223c1f5");
    check_field_offset(lv, s7223c1f6, ABISELECT(70320,52516), "S7223C1.s7223c1f6");
    test_class_info(&lv, &cd_S7223C1);
    dp->~S7223C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7223C1(Test_S7223C1, "S7223C1", ABISELECT(82144,61396));

#else // __cplusplus

extern void _ZN7S7223C1C1Ev();
extern void _ZN7S7223C1D1Ev();
Name_Map name_map_S7223C1[] = {
  NSPAIR(_ZN7S7223C1C1Ev),
  NSPAIR(_ZN7S7223C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C10;
extern VTBL_ENTRY _ZTI8S7223C10[];
extern  VTBL_ENTRY _ZTV8S7223C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C3;
extern VTBL_ENTRY _ZTI7S7223C3[];
extern  VTBL_ENTRY _ZTV7S7223C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C3[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C11;
extern VTBL_ENTRY _ZTI8S7223C11[];
extern  VTBL_ENTRY _ZTV8S7223C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C11[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C14;
extern VTBL_ENTRY _ZTI8S7223C14[];
extern  VTBL_ENTRY _ZTV8S7223C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C14[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C12;
extern VTBL_ENTRY _ZTI8S7223C12[];
extern  VTBL_ENTRY _ZTV8S7223C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C12[];
extern Class_Descriptor cd_S7223C2;
extern VTBL_ENTRY _ZTI7S7223C2[];
extern  VTBL_ENTRY _ZTV7S7223C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C2[];
extern Class_Descriptor cd_S7223C5;
extern VTBL_ENTRY _ZTI7S7223C5[];
extern  VTBL_ENTRY _ZTV7S7223C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C5[];
extern Class_Descriptor cd_S7223C4;
extern VTBL_ENTRY _ZTI7S7223C4[];
extern  VTBL_ENTRY _ZTV7S7223C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C4[];
extern Class_Descriptor cd_S7223C8;
extern VTBL_ENTRY _ZTI7S7223C8[];
extern  VTBL_ENTRY _ZTV7S7223C8[];
extern Class_Descriptor cd_S7223C7;
extern VTBL_ENTRY _ZTI7S7223C7[];
extern  VTBL_ENTRY _ZTV7S7223C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7223C16;
extern VTBL_ENTRY _ZTI8S7223C16[];
extern  VTBL_ENTRY _ZTV8S7223C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C16[];
extern Class_Descriptor cd_S7223C15;
extern VTBL_ENTRY _ZTI8S7223C15[];
extern  VTBL_ENTRY _ZTV8S7223C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7223C15[];
static Base_Class bases_S7223C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(78176,58492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C8,    ABISELECT(78192,58496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C7,    ABISELECT(78192,58496), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C8,    ABISELECT(78368,58636), //bcp->offset
    82, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(70336,52520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7223C4,    ABISELECT(70336,52520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(80468,60176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(80336,60076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(80336,60076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(81636,61028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7223C5,    ABISELECT(81504,60928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(81504,60928), //bcp->offset
    124, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7223C5,    ABISELECT(80608,60268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(80608,60268), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7223C11,    ABISELECT(80336,60076), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7223C10,    ABISELECT(78528,58760), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(70844,52904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C5,    ABISELECT(70712,52804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(70712,52804), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7223C3,    ABISELECT(70336,52520), //bcp->offset
    49, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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
    22, //immediately_derived
  0, 0},
  {&cd_S7223C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7223C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7223C11,    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
    21, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7223C14,    ABISELECT(272,192), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(1168,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1538C9_nt,    ABISELECT(1308,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
    29, //immediately_derived
  0, 0},
  {&cd_S7223C5,    ABISELECT(1176,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7223C12,    ABISELECT(1176,856), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7223C2,    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_S7223C5,    ABISELECT(81760,61112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7223C4,    ABISELECT(81760,61112), //bcp->offset
    135, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7223C8,    ABISELECT(15152,11168), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S7223C7,    ABISELECT(15152,11168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(15328,11308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7223C16,    ABISELECT(15152,11168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7223C15,    ABISELECT(15152,11168), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7223C1[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C1D1Ev();
extern void _ZN7S7223C1D0Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void ABISELECT(_ZThn15152_N7S7223C1D1Ev,_ZThn11168_N7S7223C1D1Ev)();
extern void ABISELECT(_ZThn15152_N7S7223C1D0Ev,_ZThn11168_N7S7223C1D0Ev)();
extern void _ZN8S7223C162v9Ev();
extern void _ZN8S7223C153v10Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N7S7223C1D1Ev,_ZTv0_n48_N7S7223C1D1Ev)();
extern void ABISELECT(_ZThn70336_N7S7223C1D1Ev,_ZThn52520_N7S7223C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7223C1D0Ev,_ZTv0_n48_N7S7223C1D0Ev)();
extern void ABISELECT(_ZThn70336_N7S7223C1D0Ev,_ZThn52520_N7S7223C1D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S7223C1D1Ev,_ZTv0_n36_N7S7223C1D1Ev)();
extern void ABISELECT(_ZThn78528_N7S7223C1D1Ev,_ZThn58760_N7S7223C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C1D0Ev,_ZTv0_n36_N7S7223C1D0Ev)();
extern void ABISELECT(_ZThn78528_N7S7223C1D0Ev,_ZThn58760_N7S7223C1D0Ev)() __attribute__((weak));
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY vtc_S7223C1[] = {
  ABISELECT(81760,61112),
  ABISELECT(80336,60076),
  ABISELECT(78528,58760),
  ABISELECT(70336,52520),
  ABISELECT(81504,60928),
  ABISELECT(80608,60268),
  ABISELECT(78368,58636),
  ABISELECT(78192,58496),
  ABISELECT(78176,58492),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  (VTBL_ENTRY)&_ZN7S7223C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C1D0Ev,
  ABISELECT(81232,60736),
  ABISELECT(78096,58444),
  ABISELECT(77920,58304),
  ABISELECT(77904,58300),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  ABISELECT(77192,57780),
  ABISELECT(77016,57640),
  ABISELECT(77000,57636),
  ABISELECT(-1176,-856),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  ABISELECT(65456,49100),
  ABISELECT(65184,48908),
  ABISELECT(63376,47592),
  ABISELECT(55184,41352),
  ABISELECT(63040,47328),
  ABISELECT(66352,49760),
  ABISELECT(63216,47468),
  ABISELECT(63024,47324),
  ABISELECT(-15152,-11168),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn15152_N7S7223C1D1Ev,_ZThn11168_N7S7223C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15152_N7S7223C1D0Ev,_ZThn11168_N7S7223C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7223C162v9Ev,
  (VTBL_ENTRY)&_ZN8S7223C153v10Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-70336,-52520),
  0,
  0,
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  ABISELECT(-70336,-52520),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7223C1D1Ev,_ZTv0_n48_N7S7223C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7223C1D0Ev,_ZTv0_n48_N7S7223C1D0Ev),
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-70712,-52804),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58496),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  0,
  0,
  ABISELECT(-78368,-58636),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  ABISELECT(-78528,-58760),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-78528,-58760),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C1D1Ev,_ZTv0_n36_N7S7223C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C1D0Ev,_ZTv0_n36_N7S7223C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-80336,-60076),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-80608,-60268),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81504,-60928),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  0,
  0,
  ABISELECT(-3392,-2476),
  ABISELECT(-3568,-2616),
  ABISELECT(-3584,-2620),
  ABISELECT(-81760,-61112),
  (VTBL_ENTRY)&(_ZTI7S7223C1[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7223C1[];
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
extern void _ZN7S7223C2D1Ev();
extern void _ZN7S7223C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C2__7S7223C1[] = {
  ABISELECT(80336,60076),
  ABISELECT(78528,58760),
  ABISELECT(70336,52520),
  ABISELECT(81504,60928),
  ABISELECT(80608,60268),
  ABISELECT(78368,58636),
  ABISELECT(78192,58496),
  ABISELECT(78176,58492),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
  (VTBL_ENTRY)&_ZN7S7223C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C2D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C117S7223C2__A1__7S7223C1[] = {
  ABISELECT(81504,60928),
  ABISELECT(80608,60268),
  ABISELECT(78368,58636),
  ABISELECT(78192,58496),
  ABISELECT(78176,58492),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C117S7223C2__A3__7S7223C1[] = {
  ABISELECT(78368,58636),
  ABISELECT(78192,58496),
  ABISELECT(78176,58492),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C117S7223C2__A5__7S7223C1[] = {
  ABISELECT(78368,58636),
  ABISELECT(78192,58496),
  ABISELECT(78176,58492),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C117S7223C2__A5__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58496),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C117S7223C2__A5__7S7223C1[] = {
  0,
  0,
  ABISELECT(-78368,-58636),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C117S7223C2__A3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-78368,-58636),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C117S7223C2__A3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58496),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C117S7223C2__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-78368,-58636),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C117S7223C2__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58496),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C117S7223C2__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-80608,-60268),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C117S7223C2__A1__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81504,-60928),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C147S7223C2__A1__7S7223C1[] = {
  ABISELECT(81232,60736),
  ABISELECT(78096,58444),
  ABISELECT(77920,58304),
  ABISELECT(77904,58300),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C147S7223C2__A6__7S7223C1[] = {
  ABISELECT(78096,58444),
  ABISELECT(77920,58304),
  ABISELECT(77904,58300),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C147S7223C2__A6__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77920,-58304),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C147S7223C2__A6__7S7223C1[] = {
  0,
  0,
  ABISELECT(-78096,-58444),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C147S7223C2__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77920,-58304),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C147S7223C2__A1__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81232,-60736),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C147S7223C2__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-78096,-58444),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C2__A4__7S7223C1[] = {
  ABISELECT(77192,57780),
  ABISELECT(77016,57640),
  ABISELECT(77000,57636),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C127S7223C2__A7__7S7223C1[] = {
  ABISELECT(77192,57780),
  ABISELECT(77016,57640),
  ABISELECT(77000,57636),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C127S7223C2__A7__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77016,-57640),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C2__A7__7S7223C1[] = {
  0,
  0,
  ABISELECT(-77192,-57780),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C127S7223C2__A4__7S7223C1[] = {
  0,
  0,
  ABISELECT(-77192,-57780),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C127S7223C2__A4__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77016,-57640),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N7S7223C2D1Ev,_ZTv0_n48_N7S7223C2D1Ev)();
extern void ABISELECT(_ZThn70336_N7S7223C2D1Ev,_ZThn52520_N7S7223C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7223C2D0Ev,_ZTv0_n48_N7S7223C2D0Ev)();
extern void ABISELECT(_ZThn70336_N7S7223C2D0Ev,_ZThn52520_N7S7223C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7223C3__7S7223C2__7S7223C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-70336,-52520),
  0,
  0,
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  ABISELECT(-70336,-52520),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7223C2D1Ev,_ZTv0_n48_N7S7223C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7223C2D0Ev,_ZTv0_n48_N7S7223C2D0Ev),
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C2__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58496),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C2__7S7223C1[] = {
  0,
  0,
  ABISELECT(-78368,-58636),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7223C2D1Ev,_ZTv0_n36_N7S7223C2D1Ev)();
extern void ABISELECT(_ZThn78528_N7S7223C2D1Ev,_ZThn58760_N7S7223C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C2D0Ev,_ZTv0_n36_N7S7223C2D0Ev)();
extern void ABISELECT(_ZThn78528_N7S7223C2D0Ev,_ZThn58760_N7S7223C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C2__7S7223C1[] = {
  ABISELECT(-78528,-58760),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-78528,-58760),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C2D1Ev,_ZTv0_n36_N7S7223C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C2D0Ev,_ZTv0_n36_N7S7223C2D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C2__7S7223C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-80336,-60076),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C2__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-80608,-60268),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C2__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81504,-60928),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__7S7223C2__7S7223C1[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-70712,-52804),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__A__7S7223C2__7S7223C1[] = {
  ABISELECT(81232,60736),
  ABISELECT(78096,58444),
  ABISELECT(77920,58304),
  ABISELECT(77904,58300),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C2__7S7223C1[] = {
  ABISELECT(77192,57780),
  ABISELECT(77016,57640),
  ABISELECT(77000,57636),
  ABISELECT(-1176,-856),
  (VTBL_ENTRY)&(_ZTI7S7223C2[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN8S7223C15D1Ev();
extern void _ZN8S7223C15D0Ev();
extern void _ZN8S7223C162v9Ev();
extern void _ZN8S7223C153v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C15__7S7223C1[] = {
  ABISELECT(65456,49100),
  ABISELECT(65184,48908),
  ABISELECT(63376,47592),
  ABISELECT(55184,41352),
  ABISELECT(63040,47328),
  ABISELECT(66352,49760),
  ABISELECT(63216,47468),
  ABISELECT(63024,47324),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7223C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7223C162v9Ev,
  (VTBL_ENTRY)&_ZN8S7223C153v10Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
extern void _ZN8S7223C16D1Ev();
extern void _ZN8S7223C16D0Ev();
extern void _ZN8S7223C162v9Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C168S7223C15__7S7223C1[] = {
  ABISELECT(65456,49100),
  ABISELECT(65184,48908),
  ABISELECT(63376,47592),
  ABISELECT(55184,41352),
  ABISELECT(63040,47328),
  ABISELECT(66352,49760),
  ABISELECT(63216,47468),
  ABISELECT(63024,47324),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7223C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7223C162v9Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C78S7223C168S7223C15__A1__7S7223C1[] = {
  ABISELECT(63024,47324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C168S7223C15__7S7223C1[] = {
  0,
  0,
  ABISELECT(-63216,-47468),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C168S7223C15__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-66352,-49760),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A1__8S7223C168S7223C15__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-63040,-47328),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev)();
extern void ABISELECT(_ZThn55184_N8S7223C16D1Ev,_ZThn41352_N8S7223C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev)();
extern void ABISELECT(_ZThn55184_N8S7223C16D0Ev,_ZThn41352_N8S7223C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7223C3__8S7223C168S7223C15__7S7223C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-55184,-41352),
  0,
  0,
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  ABISELECT(-55184,-41352),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev)();
extern void ABISELECT(_ZThn63376_N8S7223C16D1Ev,_ZThn47592_N8S7223C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev)();
extern void ABISELECT(_ZThn63376_N8S7223C16D0Ev,_ZThn47592_N8S7223C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__8S7223C168S7223C15__7S7223C1[] = {
  ABISELECT(-63376,-47592),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-63376,-47592),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C168S7223C15__7S7223C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-65184,-48908),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C168S7223C15__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-65456,-49100),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__8S7223C168S7223C15__7S7223C1[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-55560,-41636),
  (VTBL_ENTRY)&(_ZTI8S7223C16[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C15__7S7223C1[] = {
  0,
  0,
  ABISELECT(-63216,-47468),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C15__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-66352,-49760),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__A1__8S7223C15__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-63040,-47328),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7223C15D1Ev,_ZTv0_n48_N8S7223C15D1Ev)();
extern void ABISELECT(_ZThn55184_N8S7223C15D1Ev,_ZThn41352_N8S7223C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7223C15D0Ev,_ZTv0_n48_N8S7223C15D0Ev)();
extern void ABISELECT(_ZThn55184_N8S7223C15D0Ev,_ZThn41352_N8S7223C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7223C3__8S7223C15__7S7223C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-55184,-41352),
  0,
  0,
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  ABISELECT(-55184,-41352),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C15D1Ev,_ZTv0_n48_N8S7223C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7223C15D0Ev,_ZTv0_n48_N8S7223C15D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7223C15D1Ev,_ZTv0_n36_N8S7223C15D1Ev)();
extern void ABISELECT(_ZThn63376_N8S7223C15D1Ev,_ZThn47592_N8S7223C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7223C15D0Ev,_ZTv0_n36_N8S7223C15D0Ev)();
extern void ABISELECT(_ZThn63376_N8S7223C15D0Ev,_ZThn47592_N8S7223C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__8S7223C15__7S7223C1[] = {
  ABISELECT(-63376,-47592),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-63376,-47592),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C15D1Ev,_ZTv0_n36_N8S7223C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7223C15D0Ev,_ZTv0_n36_N8S7223C15D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C15__7S7223C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-65184,-48908),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C15__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-65456,-49100),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__8S7223C15__7S7223C1[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-55560,-41636),
  (VTBL_ENTRY)&(_ZTI8S7223C15[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
extern void _ZN7S7223C3D1Ev();
extern void _ZN7S7223C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C3__7S7223C1[] = {
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7223C3D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C47S7223C3__7S7223C1[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C47S7223C3__7S7223C1[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C47S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C47S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C127S7223C3__A2__7S7223C1[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C127S7223C3__A4__7S7223C1[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__7S7223C1[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C127S7223C3__A2__7S7223C1[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C127S7223C3__A2__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev)();
extern void ABISELECT(_ZThn8192_N7S7223C3D1Ev,_ZThn6240_N7S7223C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev)();
extern void ABISELECT(_ZThn8192_N7S7223C3D0Ev,_ZThn6240_N7S7223C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C3__7S7223C1[] = {
  ABISELECT(-8192,-6240),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6240),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev),
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C3__7S7223C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7556),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C3__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7748),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C3__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8408),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A__7S7223C3__7S7223C1[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7223C3[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C7[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN8S7223C10D1Ev();
extern void _ZN8S7223C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C10__7S7223C1[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN8S7223C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7223C10D0Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__8S7223C10__7S7223C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C10__7S7223C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C10__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C10__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C10__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI8S7223C10[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
extern void _ZN8S7223C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C11__7S7223C1[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7223C112v8Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C128S7223C11__7S7223C1[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C128S7223C11__A1__7S7223C1[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C128S7223C11__7S7223C1[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C128S7223C11__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C11__7S7223C1[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C11__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__8S7223C11__7S7223C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__8S7223C11__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S7223C11[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C14__7S7223C1[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C142v7Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C14__A3__7S7223C1[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C14__A3__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__7S7223C1[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C14__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__8S7223C14__7S7223C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__8S7223C14__7S7223C1[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S7223C14[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN8S7223C122v5Ev();
extern void _ZN8S7223C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7223C12__A1__7S7223C1[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7223C122v6Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C58S7223C12__A2__7S7223C1[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C58S7223C12__A2__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A2__7S7223C1[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__8S7223C12__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__8S7223C12__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S7223C12[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C52v3Ev();
extern void _ZN7S7223C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C4__A1__7S7223C1[] = {
  ABISELECT(-3392,-2476),
  ABISELECT(-3568,-2616),
  ABISELECT(-3584,-2620),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7223C42v4Ev,
};
extern void _ZN7S7223C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C57S7223C4__A8__7S7223C1[] = {
  ABISELECT(-3392,-2476),
  ABISELECT(-3568,-2616),
  ABISELECT(-3584,-2620),
  0,
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C52v3Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C57S7223C4__A8__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3568,2616),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C57S7223C4__A8__7S7223C1[] = {
  0,
  0,
  ABISELECT(3392,2476),
  (VTBL_ENTRY)&(_ZTI7S7223C5[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C7__7S7223C4__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3568,2616),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
extern void _ZN7S7223C82v1Ev();
extern void _ZN7S7223C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7223C8__A1__7S7223C4__A1__7S7223C1[] = {
  0,
  0,
  ABISELECT(3392,2476),
  (VTBL_ENTRY)&(_ZTI7S7223C4[0]),
  (VTBL_ENTRY)&_ZN7S7223C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7223C82v2Ev,
};
static  VTT_ENTRY vtt_S7223C1[] = {
  {&(_ZTV7S7223C1[11]),  11,144},
  {&(_tg__ZTV7S7223C2__7S7223C1[10]),  10,16},
  {&(_tg__ZTV8S7223C117S7223C2__A1__7S7223C1[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C117S7223C2__A3__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C117S7223C2__A5__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C117S7223C2__A5__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C117S7223C2__A5__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C117S7223C2__A3__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C117S7223C2__A3__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C117S7223C2__A1__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C117S7223C2__A1__7S7223C1[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C117S7223C2__A1__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C117S7223C2__A1__7S7223C1[8]),  8,11},
  {&(_tg__ZTV8S7223C147S7223C2__A1__7S7223C1[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C147S7223C2__A6__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C147S7223C2__A6__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C147S7223C2__A6__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C147S7223C2__A1__7S7223C1[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C147S7223C2__A1__7S7223C1[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C147S7223C2__A1__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C127S7223C2__A4__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C127S7223C2__A7__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C127S7223C2__A7__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C2__A7__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C127S7223C2__A4__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C127S7223C2__A4__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C3__7S7223C2__7S7223C1[14]),  14,18},
  {&(_tg__ZTV7S7223C7__7S7223C2__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C2__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C10__7S7223C2__7S7223C1[9]),  9,11},
  {&(_tg__ZTV8S7223C11__7S7223C2__7S7223C1[11]),  11,15},
  {&(_tg__ZTV8S7223C14__7S7223C2__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__7S7223C2__7S7223C1[8]),  8,11},
  {&(_tg__ZTV8S7223C127S7223C3__A2__7S7223C2__7S7223C1[5]),  5,8},
  {&(_tg__ZTV8S7223C14__A__7S7223C2__7S7223C1[6]),  6,8},
  {&(_tg__ZTV8S7223C12__A__7S7223C2__7S7223C1[5]),  5,8},
  {&(_tg__ZTV8S7223C15__7S7223C1[10]),  10,16},
  {&(_tg__ZTV8S7223C168S7223C15__7S7223C1[10]),  10,15},
  {&(_tg__ZTV7S7223C78S7223C168S7223C15__A1__7S7223C1[3]),  3,5},
  {&(_tg__ZTV7S7223C8__A1__8S7223C168S7223C15__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C12__8S7223C168S7223C15__7S7223C1[8]),  8,11},
  {&(_tg__ZTV7S7223C7__A1__8S7223C168S7223C15__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C3__8S7223C168S7223C15__7S7223C1[14]),  14,18},
  {&(_tg__ZTV8S7223C10__8S7223C168S7223C15__7S7223C1[9]),  9,11},
  {&(_tg__ZTV8S7223C11__8S7223C168S7223C15__7S7223C1[11]),  11,15},
  {&(_tg__ZTV8S7223C14__8S7223C168S7223C15__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C127S7223C3__A2__8S7223C168S7223C15__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C8__A1__8S7223C15__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C12__8S7223C15__7S7223C1[8]),  8,11},
  {&(_tg__ZTV7S7223C7__A1__8S7223C15__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C3__8S7223C15__7S7223C1[14]),  14,18},
  {&(_tg__ZTV8S7223C10__8S7223C15__7S7223C1[9]),  9,11},
  {&(_tg__ZTV8S7223C11__8S7223C15__7S7223C1[11]),  11,15},
  {&(_tg__ZTV8S7223C14__8S7223C15__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C127S7223C3__A2__8S7223C15__7S7223C1[5]),  5,8},
  {&(_ZTV7S7223C1[63]),  63,144},
  {&(_ZTV7S7223C1[80]),  80,144},
  {&(_ZTV7S7223C1[86]),  86,144},
  {&(_ZTV7S7223C1[97]),  97,144},
  {&(_ZTV7S7223C1[110]),  110,144},
  {&(_ZTV7S7223C1[122]),  122,144},
  {&(_ZTV7S7223C1[132]),  132,144},
  {&(_ZTV7S7223C1[72]),  72,144},
  {&(_ZTV7S7223C1[23]),  23,144},
  {&(_ZTV7S7223C1[30]),  30,144},
  {&(_ZTV7S7223C1[142]),  142,144},
  {&(_ZTV7S7223C1[43]),  43,144},
  {&(_tg__ZTV7S7223C3__7S7223C1[9]),  9,13},
  {&(_tg__ZTV7S7223C47S7223C3__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C47S7223C3__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C47S7223C3__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C47S7223C3__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C47S7223C3__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C47S7223C3__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C127S7223C3__A2__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C127S7223C3__A4__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C127S7223C3__A4__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C127S7223C3__A4__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C127S7223C3__A2__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C127S7223C3__A2__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C7__7S7223C3__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C3__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C10__7S7223C3__7S7223C1[9]),  9,11},
  {&(_tg__ZTV8S7223C11__7S7223C3__7S7223C1[11]),  11,15},
  {&(_tg__ZTV8S7223C14__7S7223C3__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__7S7223C3__7S7223C1[8]),  8,11},
  {&(_tg__ZTV8S7223C12__A__7S7223C3__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C7__7S7223C1[3]),  3,5},
  {&(_tg__ZTV8S7223C10__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C11__8S7223C10__7S7223C1[11]),  11,15},
  {&(_tg__ZTV7S7223C8__8S7223C10__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C10__7S7223C1[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C10__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C10__7S7223C1[8]),  8,11},
  {&(_tg__ZTV8S7223C11__7S7223C1[7]),  7,11},
  {&(_tg__ZTV8S7223C128S7223C11__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C128S7223C11__A1__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C128S7223C11__A1__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C128S7223C11__A1__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C128S7223C11__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C128S7223C11__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__8S7223C11__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C11__7S7223C1[5]),  5,7},
  {&(_tg__ZTV8S7223C14__8S7223C11__7S7223C1[8]),  8,10},
  {&(_tg__ZTV8S7223C12__A1__8S7223C11__7S7223C1[8]),  8,11},
  {&(_tg__ZTV8S7223C14__7S7223C1[6]),  6,8},
  {&(_tg__ZTV7S7223C58S7223C14__A3__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C14__A3__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C14__A3__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C14__7S7223C1[5]),  5,7},
  {&(_tg__ZTV8S7223C12__8S7223C14__7S7223C1[8]),  8,11},
  {&(_tg__ZTV7S7223C8__A1__8S7223C14__7S7223C1[4]),  4,6},
  {&(_tg__ZTV8S7223C12__A1__7S7223C1[5]),  5,8},
  {&(_tg__ZTV7S7223C58S7223C12__A2__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C58S7223C12__A2__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C58S7223C12__A2__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C8__8S7223C12__A1__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__8S7223C12__A1__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C4__A1__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C57S7223C4__A8__7S7223C1[5]),  5,6},
  {&(_tg__ZTV7S7223C7__7S7223C57S7223C4__A8__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C57S7223C4__A8__7S7223C1[4]),  4,6},
  {&(_tg__ZTV7S7223C7__7S7223C4__A1__7S7223C1[5]),  5,7},
  {&(_tg__ZTV7S7223C8__A1__7S7223C4__A1__7S7223C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7223C1[];
extern  VTBL_ENTRY _ZTV7S7223C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7223C1[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D0Ev,_ZTv0_n36_N7S7223C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7223C3D0Ev,_ZThn6240_N7S7223C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C3D1Ev,_ZTv0_n36_N7S7223C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7223C3D1Ev,_ZThn6240_N7S7223C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C15D0Ev,_ZTv0_n36_N8S7223C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7223C15D0Ev,_ZThn47592_N8S7223C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C15D1Ev,_ZTv0_n36_N8S7223C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7223C15D1Ev,_ZThn47592_N8S7223C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C15D0Ev,_ZTv0_n48_N8S7223C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7223C15D0Ev,_ZThn41352_N8S7223C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C15D1Ev,_ZTv0_n48_N8S7223C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7223C15D1Ev,_ZThn41352_N8S7223C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C16D0Ev,_ZTv0_n36_N8S7223C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7223C16D0Ev,_ZThn47592_N8S7223C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7223C16D1Ev,_ZTv0_n36_N8S7223C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7223C16D1Ev,_ZThn47592_N8S7223C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C16D0Ev,_ZTv0_n48_N8S7223C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7223C16D0Ev,_ZThn41352_N8S7223C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7223C16D1Ev,_ZTv0_n48_N8S7223C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7223C16D1Ev,_ZThn41352_N8S7223C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C2D0Ev,_ZTv0_n36_N7S7223C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7223C2D0Ev,_ZThn58760_N7S7223C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C2D1Ev,_ZTv0_n36_N7S7223C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7223C2D1Ev,_ZThn58760_N7S7223C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7223C2D0Ev,_ZTv0_n48_N7S7223C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7223C2D0Ev,_ZThn52520_N7S7223C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7223C2D1Ev,_ZTv0_n48_N7S7223C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7223C2D1Ev,_ZThn52520_N7S7223C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C1D0Ev,_ZTv0_n36_N7S7223C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7223C1D0Ev,_ZThn58760_N7S7223C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7223C1D1Ev,_ZTv0_n36_N7S7223C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7223C1D1Ev,_ZThn58760_N7S7223C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7223C1D0Ev,_ZTv0_n48_N7S7223C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7223C1D0Ev,_ZThn52520_N7S7223C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7223C1D1Ev,_ZTv0_n48_N7S7223C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7223C1D1Ev,_ZThn52520_N7S7223C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7223C1 = {  "S7223C1", // class name
  bases_S7223C1, 38,
  &(vtc_S7223C1[0]), // expected_vtbl_contents
  &(vtt_S7223C1[0]), // expected_vtt_contents
  ABISELECT(82144,61396), // object size
  NSPAIRA(_ZTI7S7223C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7223C1),144, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7223C1),124, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C8  {
  __tsi64 s7222c8f0[9];
  void *s7222c8f1;
  long double s7222c8f2;
  void *s7222c8f3;
  char s7222c8f4;
  short s7222c8f5[6];
  void *s7222c8f6;
  char s7222c8f7:4;
  void *s7222c8f8;
  virtual void  v1(); // _ZN7S7222C82v1Ev
  virtual void  v2(); // _ZN7S7222C82v2Ev
  ~S7222C8(); // tgen
  S7222C8(); // tgen
};
//SIG(-1 S7222C8) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S7222C8 ::v1(){vfunc_called(this, "_ZN7S7222C82v1Ev");}
void  S7222C8 ::v2(){vfunc_called(this, "_ZN7S7222C82v2Ev");}
S7222C8 ::~S7222C8(){ note_dtor("S7222C8", this);} // tgen
S7222C8 ::S7222C8(){ note_ctor("S7222C8", this);} // tgen

static void Test_S7222C8()
{
  extern Class_Descriptor cd_S7222C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S7222C8, buf);
    S7222C8 *dp, &lv = *(dp=new (buf) S7222C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7222C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C8)");
    check_field_offset(lv, s7222c8f0, ABISELECT(8,4), "S7222C8.s7222c8f0");
    check_field_offset(lv, s7222c8f1, ABISELECT(80,76), "S7222C8.s7222c8f1");
    check_field_offset(lv, s7222c8f2, ABISELECT(96,80), "S7222C8.s7222c8f2");
    check_field_offset(lv, s7222c8f3, ABISELECT(112,92), "S7222C8.s7222c8f3");
    check_field_offset(lv, s7222c8f4, ABISELECT(120,96), "S7222C8.s7222c8f4");
    check_field_offset(lv, s7222c8f5, ABISELECT(122,98), "S7222C8.s7222c8f5");
    check_field_offset(lv, s7222c8f6, ABISELECT(136,112), "S7222C8.s7222c8f6");
    set_bf_and_test(lv, s7222c8f7, ABISELECT(144,116), 0, 4, 1, "S7222C8");
    set_bf_and_test(lv, s7222c8f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S7222C8");
    check_field_offset(lv, s7222c8f8, ABISELECT(152,120), "S7222C8.s7222c8f8");
    test_class_info(&lv, &cd_S7222C8);
    dp->~S7222C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C8(Test_S7222C8, "S7222C8", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN7S7222C8C1Ev();
extern void _ZN7S7222C8D1Ev();
Name_Map name_map_S7222C8[] = {
  NSPAIR(_ZN7S7222C8C1Ev),
  NSPAIR(_ZN7S7222C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7222C8[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY vtc_S7222C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C8[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
Class_Descriptor cd_S7222C8 = {  "S7222C8", // class name
  0,0,//no base classes
  &(vtc_S7222C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI7S7222C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7222C8),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  S7222C7  : virtual S1538C9_nt , S7222C8 {
  int s7222c7f0;
  short s7222c7f1[2];
  __tsi64 s7222c7f2;
  ~S7222C7(); // tgen
  S7222C7(); // tgen
};
//SIG(-1 S7222C7) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S7222C7()
{
  extern Class_Descriptor cd_S7222C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S7222C7, buf);
    S7222C7 *dp, &lv = *(dp=new (buf) S7222C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S7222C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S7222C7");
    check_base_class_offset(lv, (S7222C8*), 0, "S7222C7");
    check_field_offset(lv, s7222c7f0, ABISELECT(160,124), "S7222C7.s7222c7f0");
    check_field_offset(lv, s7222c7f1, ABISELECT(164,128), "S7222C7.s7222c7f1");
    check_field_offset(lv, s7222c7f2, ABISELECT(168,132), "S7222C7.s7222c7f2");
    test_class_info(&lv, &cd_S7222C7);
    dp->~S7222C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C7(Test_S7222C7, "S7222C7", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S7222C7C1Ev();
extern void _ZN7S7222C7D1Ev();
Name_Map name_map_S7222C7[] = {
  NSPAIR(_ZN7S7222C7C1Ev),
  NSPAIR(_ZN7S7222C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
static Base_Class bases_S7222C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7222C7[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY vtc_S7222C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7222C7[];
static  VTT_ENTRY vtt_S7222C7[] = {
  {&(_ZTV7S7222C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
Class_Descriptor cd_S7222C7 = {  "S7222C7", // class name
  bases_S7222C7, 2,
  &(vtc_S7222C7[0]), // expected_vtbl_contents
  &(vtt_S7222C7[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S7222C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7222C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7222C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C5  : virtual S1538C9_nt , virtual S7222C7 , virtual S7222C8 {
  __tsi64 s7222c5f0[8];
  void *s7222c5f1[7];
  short s7222c5f2;
  virtual void  v3(); // _ZN7S7222C52v3Ev
  ~S7222C5(); // tgen
  S7222C5(); // tgen
};
//SIG(-1 S7222C5) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S7222C5()
{
  extern Class_Descriptor cd_S7222C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S7222C5, buf);
    S7222C5 *dp, &lv = *(dp=new (buf) S7222C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S7222C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C5)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S7222C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(132,100), "S7222C5");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(144,104), "S7222C5");
    check_base_class_offset(lv, (S7222C7*), ABISELECT(144,104), "S7222C5");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*), ABISELECT(320,244), "S7222C5");
    check_field_offset(lv, s7222c5f0, ABISELECT(8,4), "S7222C5.s7222c5f0");
    check_field_offset(lv, s7222c5f1, ABISELECT(72,68), "S7222C5.s7222c5f1");
    check_field_offset(lv, s7222c5f2, ABISELECT(128,96), "S7222C5.s7222c5f2");
    test_class_info(&lv, &cd_S7222C5);
    dp->~S7222C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C5(Test_S7222C5, "S7222C5", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN7S7222C5C1Ev();
extern void _ZN7S7222C5D1Ev();
Name_Map name_map_S7222C5[] = {
  NSPAIR(_ZN7S7222C5C1Ev),
  NSPAIR(_ZN7S7222C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
static Base_Class bases_S7222C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C8,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C8,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7222C5[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY vtc_S7222C5[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7222C5[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C5[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C5[] = {
  {&(_ZTV7S7222C5[5]),  5,19},
  {&(_ZTV7S7222C5[11]),  11,19},
  {&(_ZTV7S7222C5[17]),  17,19},
  {&(_tg__ZTV7S7222C7__7S7222C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
Class_Descriptor cd_S7222C5 = {  "S7222C5", // class name
  bases_S7222C5, 4,
  &(vtc_S7222C5[0]), // expected_vtbl_contents
  &(vtt_S7222C5[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI7S7222C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7222C5),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7222C5),4, //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  S7222C4  : S7222C5 {
  __tsi64 s7222c4f0;
  ::S7222C7 s7222c4f1;
  short s7222c4f2;
  char s7222c4f3;
  int s7222c4f4[2];
  void *s7222c4f5;
  ::S7223C9_nt s7222c4f6;
  int s7222c4f7;
  __tsi64 s7222c4f8;
  virtual void  v4(); // _ZN7S7222C42v4Ev
  ~S7222C4(); // tgen
  S7222C4(); // tgen
};
//SIG(-1 S7222C4) C1{ BC2{ VBC3{ m Fi} VBC4{ VBC3 BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 v4 FL[8] Fp[7] Fs} v1 FL FC4 Fs Fc Fi[2] Fp FC6{} Fi FL}


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

static void Test_S7222C4()
{
  extern Class_Descriptor cd_S7222C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,139)];
    init_test(&cd_S7222C4, buf);
    S7222C4 *dp, &lv = *(dp=new (buf) S7222C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,552), "sizeof(S7222C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C4)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*), ABISELECT(376,284), "S7222C4");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(376,284), "S7222C4");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(384,288), "S7222C4");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*), ABISELECT(384,288), "S7222C4");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*), ABISELECT(560,428), "S7222C4");
    check_base_class_offset(lv, (S7222C5*), 0, "S7222C4");
    check_field_offset(lv, s7222c4f0, ABISELECT(136,100), "S7222C4.s7222c4f0");
    check_field_offset(lv, s7222c4f1, ABISELECT(144,108), "S7222C4.s7222c4f1");
    check_field_offset(lv, s7222c4f2, ABISELECT(336,252), "S7222C4.s7222c4f2");
    check_field_offset(lv, s7222c4f3, ABISELECT(338,254), "S7222C4.s7222c4f3");
    check_field_offset(lv, s7222c4f4, ABISELECT(340,256), "S7222C4.s7222c4f4");
    check_field_offset(lv, s7222c4f5, ABISELECT(352,264), "S7222C4.s7222c4f5");
    check_field_offset(lv, s7222c4f6, ABISELECT(360,268), "S7222C4.s7222c4f6");
    check_field_offset(lv, s7222c4f7, ABISELECT(364,272), "S7222C4.s7222c4f7");
    check_field_offset(lv, s7222c4f8, ABISELECT(368,276), "S7222C4.s7222c4f8");
    test_class_info(&lv, &cd_S7222C4);
    dp->~S7222C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C4(Test_S7222C4, "S7222C4", ABISELECT(720,552));

#else // __cplusplus

extern void _ZN7S7222C4C1Ev();
extern void _ZN7S7222C4D1Ev();
Name_Map name_map_S7222C4[] = {
  NSPAIR(_ZN7S7222C4C1Ev),
  NSPAIR(_ZN7S7222C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
static Base_Class bases_S7222C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(384,288), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(560,428), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7222C4[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY vtc_S7222C4[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7222C4[];
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C5__7S7222C4[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C5__7S7222C4[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C5__7S7222C4[] = {
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C4[] = {
  {&(_ZTV7S7222C4[5]),  5,20},
  {&(_tg__ZTV7S7222C5__7S7222C4[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C5__7S7222C4[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C5__7S7222C4[4]),  4,6},
  {&(_ZTV7S7222C4[12]),  12,20},
  {&(_ZTV7S7222C4[18]),  18,20},
  {&(_tg__ZTV7S7222C7__7S7222C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
Class_Descriptor cd_S7222C4 = {  "S7222C4", // class name
  bases_S7222C4, 5,
  &(vtc_S7222C4[0]), // expected_vtbl_contents
  &(vtt_S7222C4[0]), // expected_vtt_contents
  ABISELECT(720,552), // object size
  NSPAIRA(_ZTI7S7222C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7222C4),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7222C4),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C12  : S1538C9_nt , virtual S7222C8 , virtual S7222C7 , S7222C5 {
  ::S7223C13 s7222c12f0;
  int s7222c12f1:10;
  int s7222c12f2[9];
  int s7222c12f3;
  virtual void  v5(); // _ZN8S7222C122v5Ev
  virtual void  v6(); // _ZN8S7222C122v6Ev
  ~S7222C12(); // tgen
  S7222C12(); // tgen
};
//SIG(-1 S7222C12) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi}


void  S7222C12 ::v5(){vfunc_called(this, "_ZN8S7222C122v5Ev");}
void  S7222C12 ::v6(){vfunc_called(this, "_ZN8S7222C122v6Ev");}
S7222C12 ::~S7222C12(){ note_dtor("S7222C12", this);} // tgen
S7222C12 ::S7222C12(){ note_ctor("S7222C12", this);} // tgen

static void Test_S7222C12()
{
  extern Class_Descriptor cd_S7222C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S7222C12, buf);
    S7222C12 *dp, &lv = *(dp=new (buf) S7222C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S7222C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C12)");
    /*is_ambiguous_... S7222C12::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S7222C12");
    /*is_ambiguous_... S7222C12::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*), ABISELECT(256,184), "S7222C12");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*), ABISELECT(256,184), "S7222C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(592,448), "S7222C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*), ABISELECT(592,448), "S7222C12");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(416,308), "S7222C12");
    check_base_class_offset(lv, (S7222C7*), ABISELECT(416,308), "S7222C12");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*), ABISELECT(416,308), "S7222C12");
    check_base_class_offset(lv, (S7222C5*), 0, "S7222C12");
    check_field_offset(lv, s7222c12f0, ABISELECT(136,104), "S7222C12.s7222c12f0");
    set_bf_and_test(lv, s7222c12f1, ABISELECT(208,140), 0, 10, 1, "S7222C12");
    set_bf_and_test(lv, s7222c12f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S7222C12");
    check_field_offset(lv, s7222c12f2, ABISELECT(212,144), "S7222C12.s7222c12f2");
    check_field_offset(lv, s7222c12f3, ABISELECT(248,180), "S7222C12.s7222c12f3");
    test_class_info(&lv, &cd_S7222C12);
    dp->~S7222C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C12(Test_S7222C12, "S7222C12", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S7222C12C1Ev();
extern void _ZN8S7222C12D1Ev();
Name_Map name_map_S7222C12[] = {
  NSPAIR(_ZN8S7222C12C1Ev),
  NSPAIR(_ZN8S7222C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
static Base_Class bases_S7222C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C8,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C12[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY vtc_S7222C12[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S7222C12[];
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C5__8S7222C12[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C5__8S7222C12[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C5__8S7222C12[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C12[] = {
  {&(_ZTV8S7222C12[5]),  5,21},
  {&(_tg__ZTV7S7222C5__8S7222C12[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C5__8S7222C12[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C5__8S7222C12[4]),  4,6},
  {&(_ZTV8S7222C12[12]),  12,21},
  {&(_ZTV8S7222C12[19]),  19,21},
  {&(_tg__ZTV7S7222C7__8S7222C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
Class_Descriptor cd_S7222C12 = {  "S7222C12", // class name
  bases_S7222C12, 6,
  &(vtc_S7222C12[0]), // expected_vtbl_contents
  &(vtt_S7222C12[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S7222C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7222C12),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C12),7, //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  S7222C14  : virtual S7222C7 , virtual S7222C12 , S7222C5 {
  void *s7222c14f0;
  short s7222c14f1[2];
  long double s7222c14f2[2];
  char s7222c14f3;
  ::S7222C7 s7222c14f4;
  long double s7222c14f5;
  ::S7222C5 s7222c14f6;
  virtual void  v7(); // _ZN8S7222C142v7Ev
  ~S7222C14(); // tgen
  S7222C14(); // tgen
};
//SIG(-1 S7222C14) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S7222C14()
{
  extern Class_Descriptor cd_S7222C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S7222C14, buf);
    S7222C14 *dp, &lv = *(dp=new (buf) S7222C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S7222C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C14)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(1072,800), "S7222C14");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(1072,800), "S7222C14");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*), ABISELECT(1072,800), "S7222C14");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(896,660), "S7222C14");
    check_base_class_offset(lv, (S7222C7*), ABISELECT(896,660), "S7222C14");
    check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(896,660), "S7222C14");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(896,660), "S7222C14");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*), ABISELECT(896,660), "S7222C14");
    /*is_ambiguous_... S7222C12::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(1212,904), "S7222C14");
    /*is_ambiguous_... S7222C12::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(1344,988), "S7222C14");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(1344,988), "S7222C14");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*), ABISELECT(1344,988), "S7222C14");
    check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(1080,804), "S7222C14");
    check_base_class_offset(lv, (S7222C12*), ABISELECT(1080,804), "S7222C14");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*), 0, "S7222C14");
    check_field_offset(lv, s7222c14f0, ABISELECT(136,100), "S7222C14.s7222c14f0");
    check_field_offset(lv, s7222c14f1, ABISELECT(144,104), "S7222C14.s7222c14f1");
    check_field_offset(lv, s7222c14f2, ABISELECT(160,108), "S7222C14.s7222c14f2");
    check_field_offset(lv, s7222c14f3, ABISELECT(192,132), "S7222C14.s7222c14f3");
    check_field_offset(lv, s7222c14f4, ABISELECT(208,136), "S7222C14.s7222c14f4");
    check_field_offset(lv, s7222c14f5, ABISELECT(400,280), "S7222C14.s7222c14f5");
    check_field_offset(lv, s7222c14f6, ABISELECT(416,292), "S7222C14.s7222c14f6");
    test_class_info(&lv, &cd_S7222C14);
    dp->~S7222C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C14(Test_S7222C14, "S7222C14", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN8S7222C14C1Ev();
extern void _ZN8S7222C14D1Ev();
Name_Map name_map_S7222C14[] = {
  NSPAIR(_ZN8S7222C14C1Ev),
  NSPAIR(_ZN8S7222C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
static Base_Class bases_S7222C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7222C8,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C5,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C14[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY vtc_S7222C14[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern VTBL_ENTRY _ZTV8S7222C14[];
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C5__A1__8S7222C14[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C5__A1__8S7222C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C5__A1__8S7222C14[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__8S7222C14[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C14[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__8S7222C14[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__8S7222C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C14[] = {
  {&(_ZTV8S7222C14[6]),  6,32},
  {&(_tg__ZTV7S7222C5__A1__8S7222C14[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C5__A1__8S7222C14[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C5__A1__8S7222C14[4]),  4,6},
  {&(_ZTV8S7222C14[13]),  13,32},
  {&(_ZTV8S7222C14[23]),  23,32},
  {&(_ZTV8S7222C14[30]),  30,32},
  {&(_tg__ZTV7S7222C7__8S7222C14[3]),  3,5},
  {&(_tg__ZTV8S7222C12__8S7222C14[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__8S7222C14[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C14[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C14[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__8S7222C14[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__8S7222C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
Class_Descriptor cd_S7222C14 = {  "S7222C14", // class name
  bases_S7222C14, 8,
  &(vtc_S7222C14[0]), // expected_vtbl_contents
  &(vtt_S7222C14[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI8S7222C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7222C14),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C14),14, //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  S7222C11  : virtual S7222C8 , S7222C12 , virtual S7222C14 {
  int s7222c11f0;
  char s7222c11f1;
  unsigned char s7222c11f2:1;
  virtual void  v8(); // _ZN8S7222C112v8Ev
  ~S7222C11(); // tgen
  S7222C11(); // tgen
};
//SIG(-1 S7222C11) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S7222C11()
{
  extern Class_Descriptor cd_S7222C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S7222C11, buf);
    S7222C11 *dp, &lv = *(dp=new (buf) S7222C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S7222C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C11)");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*), ABISELECT(272,192), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(272,192), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(272,192), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(272,192), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(272,192), "S7222C11");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(272,192), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(132,100), "S7222C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(608,456), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(608,456), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(608,456), "S7222C11");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(608,456), "S7222C11");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(432,316), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(432,316), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(432,316), "S7222C11");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(432,316), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(432,316), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(432,316), "S7222C11");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(432,316), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), 0, "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*), 0, "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(1652,1220), "S7222C11");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(1520,1120), "S7222C11");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(1520,1120), "S7222C11");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(624,460), "S7222C11");
    check_base_class_offset(lv, (S7222C14*), ABISELECT(624,460), "S7222C11");
    check_field_offset(lv, s7222c11f0, ABISELECT(252,184), "S7222C11.s7222c11f0");
    check_field_offset(lv, s7222c11f1, ABISELECT(256,188), "S7222C11.s7222c11f1");
    set_bf_and_test(lv, s7222c11f2, ABISELECT(257,189), 0, 1, 1, "S7222C11");
    test_class_info(&lv, &cd_S7222C11);
    dp->~S7222C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C11(Test_S7222C11, "S7222C11", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN8S7222C11C1Ev();
extern void _ZN8S7222C11D1Ev();
Name_Map name_map_S7222C11[] = {
  NSPAIR(_ZN8S7222C11C1Ev),
  NSPAIR(_ZN8S7222C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
static Base_Class bases_S7222C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7222C8,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7222C12,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C11[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY vtc_S7222C11[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern VTBL_ENTRY _ZTV8S7222C11[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__8S7222C11[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__8S7222C11[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C11[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A__8S7222C11[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A__8S7222C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A2__8S7222C11[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C11[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__8S7222C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__8S7222C11[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__8S7222C11[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A1__8S7222C11[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C11[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__8S7222C11[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__8S7222C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C11[] = {
  {&(_ZTV8S7222C11[7]),  7,45},
  {&(_tg__ZTV8S7222C12__A__8S7222C11[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__8S7222C11[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C11[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C11[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A__8S7222C11[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A__8S7222C11[5]),  5,7},
  {&(_ZTV8S7222C11[15]),  15,45},
  {&(_ZTV8S7222C11[22]),  22,45},
  {&(_ZTV8S7222C11[32]),  32,45},
  {&(_ZTV8S7222C11[42]),  42,45},
  {&(_tg__ZTV7S7222C7__8S7222C11[3]),  3,5},
  {&(_tg__ZTV8S7222C14__8S7222C11[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A2__8S7222C11[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C11[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C11[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__8S7222C11[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__8S7222C11[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__8S7222C11[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A1__8S7222C11[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C11[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C11[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__8S7222C11[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__8S7222C11[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
Class_Descriptor cd_S7222C11 = {  "S7222C11", // class name
  bases_S7222C11, 12,
  &(vtc_S7222C11[0]), // expected_vtbl_contents
  &(vtt_S7222C11[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI8S7222C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7222C11),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C11),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C10  : virtual S7222C11 {
  ::S7222C11 s7222c10f0;
  short s7222c10f1:5;
  long s7222c10f2;
  virtual  ~S7222C10(); // _ZN8S7222C10D2Ev
  S7222C10(); // tgen
};
//SIG(-1 S7222C10) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S7222C10()
{
  extern Class_Descriptor cd_S7222C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S7222C10, buf);
    S7222C10 *dp, &lv = *(dp=new (buf) S7222C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S7222C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C10)");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(2080,1508), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(2080,1508), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(2080,1508), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(2080,1508), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(2080,1508), "S7222C10");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(2080,1508), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(1940,1416), "S7222C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(2416,1772), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(2416,1772), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(2416,1772), "S7222C10");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(2416,1772), "S7222C10");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(2240,1632), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(2240,1632), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(2240,1632), "S7222C10");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(2240,1632), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(2240,1632), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(2240,1632), "S7222C10");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(2240,1632), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(1808,1316), "S7222C10");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(1808,1316), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(3460,2536), "S7222C10");
    /*is_ambiguous_... S7222C10::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(3328,2436), "S7222C10");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(3328,2436), "S7222C10");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(2432,1776), "S7222C10");
    check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(2432,1776), "S7222C10");
    check_base_class_offset(lv, (S7222C11*), ABISELECT(1808,1316), "S7222C10");
    check_field_offset(lv, s7222c10f0, ABISELECT(16,4), "S7222C10.s7222c10f0");
    set_bf_and_test(lv, s7222c10f1, ABISELECT(1792,1308), 0, 5, 1, "S7222C10");
    set_bf_and_test(lv, s7222c10f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S7222C10");
    check_field_offset(lv, s7222c10f2, ABISELECT(1800,1312), "S7222C10.s7222c10f2");
    test_class_info(&lv, &cd_S7222C10);
    dp->~S7222C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C10(Test_S7222C10, "S7222C10", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN8S7222C10C1Ev();
extern void _ZN8S7222C10D2Ev();
Name_Map name_map_S7222C10[] = {
  NSPAIR(_ZN8S7222C10C1Ev),
  NSPAIR(_ZN8S7222C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
static Base_Class bases_S7222C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7222C8,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C10[];
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY vtc_S7222C10[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern VTBL_ENTRY _ZTV8S7222C10[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__8S7222C10[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__8S7222C10[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__8S7222C10[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__8S7222C10[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A2__8S7222C10[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C10[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__8S7222C10[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__8S7222C10[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A1__8S7222C10[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C10[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__8S7222C10[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__8S7222C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C10[] = {
  {&(_ZTV8S7222C10[8]),  8,59},
  {&(_ZTV8S7222C10[21]),  21,59},
  {&(_ZTV8S7222C10[29]),  29,59},
  {&(_ZTV8S7222C10[36]),  36,59},
  {&(_ZTV8S7222C10[46]),  46,59},
  {&(_ZTV8S7222C10[56]),  56,59},
  {&(_tg__ZTV8S7222C11__8S7222C10[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__8S7222C10[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__8S7222C10[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__8S7222C10[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__8S7222C10[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__8S7222C10[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__8S7222C10[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__8S7222C10[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__8S7222C10[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__8S7222C10[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__8S7222C10[8]),  8,11},
  {&(_tg__ZTV7S7222C7__8S7222C10[3]),  3,5},
  {&(_tg__ZTV8S7222C14__8S7222C10[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A2__8S7222C10[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C10[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C10[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__8S7222C10[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__8S7222C10[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__8S7222C10[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A1__8S7222C10[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C10[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C10[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__8S7222C10[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__8S7222C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
Class_Descriptor cd_S7222C10 = {  "S7222C10", // class name
  bases_S7222C10, 13,
  &(vtc_S7222C10[0]), // expected_vtbl_contents
  &(vtt_S7222C10[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI8S7222C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7222C10),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C10),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C3  : S7222C4 , virtual S7222C10 , S7222C12 {
  ::S7222C4 s7222c3f0[9];
  int s7222c3f1;
  short s7222c3f2:16;
  ::S7222C5 s7222c3f3;
  int s7222c3f4;
  short s7222c3f5;
  void *s7222c3f6;
  __tsi64 s7222c3f7;
  ::S7222C7 s7222c3f8;
  ~S7222C3(); // tgen
  S7222C3(); // tgen
};
//SIG(-1 S7222C3) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ VBC4 BC6{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 v3 FL[8] Fp[7] Fs} v4 FL FC5 Fs Fc Fi[2] Fp FC7{} Fi FL} VBC8{ VBC9{ VBC6 BC10{ BC4 VBC6 VBC5 BC3 v5 v6 FU11{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC12{ VBC5 VBC10 BC3 v7 Fp Fs[2] FD[2] Fc FC5 FD FC3} v8 Fi Fc Fc:1} vd FC9 Fs:5 Fl} BC10 FC2[9] Fi Fs:16 FC3 Fi Fs Fp FL FC5}


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

static void Test_S7222C3()
{
  extern Class_Descriptor cd_S7222C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(715,2150)];
    init_test(&cd_S7222C3, buf);
    S7222C3 *dp, &lv = *(dp=new (buf) S7222C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11424,8596), "sizeof(S7222C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C3)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*), ABISELECT(7840,5976), "S7222C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(7840,5976), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(7840,5976), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(7840,5976), "S7222C3");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(7840,5976), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(7840,5976), "S7222C3");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(7856,5980), "S7222C3");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(7856,5980), "S7222C3");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(7856,5980), "S7222C3");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(8032,6120), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(8032,6120), "S7222C3");
    check_base_class_offset(lv, (S7222C5*)(S7222C4*), 0, "S7222C3");
    check_base_class_offset(lv, (S7222C4*), 0, "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(10132,7660), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(10000,7560), "S7222C3");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(10000,7560), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(11300,8512), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(11168,8412), "S7222C3");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(11168,8412), "S7222C3");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(10272,7752), "S7222C3");
    check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(10272,7752), "S7222C3");
    check_base_class_offset(lv, (S7222C11*)(S7222C10*), ABISELECT(10000,7560), "S7222C3");
    check_base_class_offset(lv, (S7222C10*), ABISELECT(8192,6244), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(508,384), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(376,284), "S7222C3");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*), ABISELECT(376,284), "S7222C3");
    check_field_offset(lv, s7222c3f0, ABISELECT(640,468), "S7222C3.s7222c3f0");
    check_field_offset(lv, s7222c3f1, ABISELECT(7120,5436), "S7222C3.s7222c3f1");
    set_bf_and_test(lv, s7222c3f2, ABISELECT(7124,5440), 0, 16, 1, "S7222C3");
    set_bf_and_test(lv, s7222c3f2, ABISELECT(7124,5440), 0, 16, hide_sll(1LL<<15), "S7222C3");
    check_field_offset(lv, s7222c3f3, ABISELECT(7136,5444), "S7222C3.s7222c3f3");
    check_field_offset(lv, s7222c3f4, ABISELECT(7616,5812), "S7222C3.s7222c3f4");
    check_field_offset(lv, s7222c3f5, ABISELECT(7620,5816), "S7222C3.s7222c3f5");
    check_field_offset(lv, s7222c3f6, ABISELECT(7624,5820), "S7222C3.s7222c3f6");
    check_field_offset(lv, s7222c3f7, ABISELECT(7632,5824), "S7222C3.s7222c3f7");
    check_field_offset(lv, s7222c3f8, ABISELECT(7648,5832), "S7222C3.s7222c3f8");
    test_class_info(&lv, &cd_S7222C3);
    dp->~S7222C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C3(Test_S7222C3, "S7222C3", ABISELECT(11424,8596));

#else // __cplusplus

extern void _ZN7S7222C3C1Ev();
extern void _ZN7S7222C3D1Ev();
Name_Map name_map_S7222C3[] = {
  NSPAIR(_ZN7S7222C3C1Ev),
  NSPAIR(_ZN7S7222C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C10;
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
static Base_Class bases_S7222C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(7840,5976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    ABISELECT(7856,5980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C7,    ABISELECT(7856,5980), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(8032,6120), //bcp->offset
    28, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7222C4,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(10132,7660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(10000,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(10000,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(11300,8512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C5,    ABISELECT(11168,8412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(11168,8412), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(10272,7752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(10272,7752), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(10000,7560), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7222C10,    ABISELECT(8192,6244), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(508,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
    18, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(376,284), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7222C3[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C3D1Ev();
extern void _ZN7S7222C3D0Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev)();
extern void ABISELECT(_ZThn8192_N7S7222C3D1Ev,_ZThn6244_N7S7222C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev)();
extern void ABISELECT(_ZThn8192_N7S7222C3D0Ev,_ZThn6244_N7S7222C3D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY vtc_S7222C3[] = {
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D0Ev,
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(-8192,-6244),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6244),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7560),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7752),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8412),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern VTBL_ENTRY _ZTV7S7222C3[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C4__7S7222C3[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C4__7S7222C3[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C4__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C4__7S7222C3[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C4__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C4__7S7222C3[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C3[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A4__7S7222C3[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A4__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A4__7S7222C3[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A__7S7222C3[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C3[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C3[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10__7S7222C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C10__7S7222C3[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10__7S7222C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10__7S7222C3[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C3[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__7S7222C3[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A1__7S7222C3[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A1__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A1__7S7222C3[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__7S7222C3[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__7S7222C3[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__7S7222C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__7S7222C3[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C3[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A3__7S7222C3[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A3__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__7S7222C3[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__7S7222C3[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__7S7222C3[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C3[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A2__7S7222C3[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A2__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A2__7S7222C3[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__7S7222C3[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__7S7222C3[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C3[] = {
  {&(_ZTV7S7222C3[9]),  9,81},
  {&(_tg__ZTV7S7222C4__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C4__7S7222C3[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C4__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C4__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C4__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C4__7S7222C3[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A__7S7222C3[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A4__7S7222C3[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A4__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A4__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A__7S7222C3[5]),  5,7},
  {&(_ZTV7S7222C3[26]),  26,81},
  {&(_ZTV7S7222C3[32]),  32,81},
  {&(_ZTV7S7222C3[43]),  43,81},
  {&(_ZTV7S7222C3[56]),  56,81},
  {&(_ZTV7S7222C3[68]),  68,81},
  {&(_ZTV7S7222C3[78]),  78,81},
  {&(_ZTV7S7222C3[18]),  18,81},
  {&(_tg__ZTV7S7222C7__7S7222C3[3]),  3,5},
  {&(_tg__ZTV8S7222C10__7S7222C3[8]),  8,10},
  {&(_tg__ZTV8S7222C11__8S7222C10__7S7222C3[11]),  11,15},
  {&(_tg__ZTV7S7222C8__8S7222C10__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C10__7S7222C3[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C10__7S7222C3[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10__7S7222C3[8]),  8,11},
  {&(_tg__ZTV8S7222C11__7S7222C3[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__7S7222C3[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A1__7S7222C3[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A1__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A1__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__7S7222C3[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__7S7222C3[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__7S7222C3[8]),  8,11},
  {&(_tg__ZTV8S7222C14__7S7222C3[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A3__7S7222C3[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A3__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__7S7222C3[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__7S7222C3[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__7S7222C3[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__7S7222C3[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A2__7S7222C3[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A2__7S7222C3[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A2__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__7S7222C3[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__7S7222C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7222C3[];
extern  VTBL_ENTRY _ZTV7S7222C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C3[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7222C3D0Ev,_ZThn6244_N7S7222C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7222C3D1Ev,_ZThn6244_N7S7222C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7222C3 = {  "S7222C3", // class name
  bases_S7222C3, 19,
  &(vtc_S7222C3[0]), // expected_vtbl_contents
  &(vtt_S7222C3[0]), // expected_vtt_contents
  ABISELECT(11424,8596), // object size
  NSPAIRA(_ZTI7S7222C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7222C3),81, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7222C3),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C2  : virtual S7222C3 , S7222C11 , S7222C14 , S1538C9_nt , S7222C12 {
  __tsi64 s7222c2f0;
  __tsi64 s7222c2f1;
  __tsi64 s7222c2f2;
  char s7222c2f3;
  __tsi64 s7222c2f4;
  void *s7222c2f5;
  ::S7222C14 s7222c2f6[9];
  long double s7222c2f7[7];
  int s7222c2f8;
  ~S7222C2(); // tgen
  S7222C2(); // tgen
};
//SIG(-1 S7222C2) C1{ VBC2{ BC3{ BC4{ VBC5{ m Fi} VBC6{ VBC5 BC7{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC7 v3 FL[8] Fp[7] Fs} v4 FL FC6 Fs Fc Fi[2] Fp FC8{} Fi FL} VBC9{ VBC10{ VBC7 BC11{ BC5 VBC7 VBC6 BC4 v5 v6 FU12{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC13{ VBC6 VBC11 BC4 v7 Fp Fs[2] FD[2] Fc FC6 FD FC4} v8 Fi Fc Fc:1} vd FC10 Fs:5 Fl} BC11 FC3[9] Fi Fs:16 FC4 Fi Fs Fp FL FC6} BC10 BC13 BC5 BC11 FL FL FL Fc FL Fp FC13[9] FD[7] Fi}


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

static void Test_S7222C2()
{
  extern Class_Descriptor cd_S7222C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1662,4944)];
    init_test(&cd_S7222C2, buf);
    S7222C2 *dp, &lv = *(dp=new (buf) S7222C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26576,19772), "sizeof(S7222C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C2)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(22992,17152), "S7222C2");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(22992,17152), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(22992,17152), "S7222C2");
    check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(23008,17156), "S7222C2");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C3*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(23008,17156), "S7222C2");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C3*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(23184,17296), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(23184,17296), "S7222C2");
    check_base_class_offset(lv, (S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15152,11176), "S7222C2");
    check_base_class_offset(lv, (S7222C4*)(S7222C3*), ABISELECT(15152,11176), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(25284,18836), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(25152,18736), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(25152,18736), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(26452,19688), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(26320,19588), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(26320,19588), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(26320,19588), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(25424,18928), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(25424,18928), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(25424,18928), "S7222C2");
    check_base_class_offset(lv, (S7222C11*)(S7222C10*), ABISELECT(25152,18736), "S7222C2");
    check_base_class_offset(lv, (S7222C10*)(S7222C3*), ABISELECT(23344,17420), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C3*), ABISELECT(15660,11560), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15528,11460), "S7222C2");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C3*), ABISELECT(15528,11460), "S7222C2");
    check_base_class_offset(lv, (S7222C3*), ABISELECT(15152,11176), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(132,100), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), 0, "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), 0, "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C11*), 0, "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(272,192), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C14*), ABISELECT(272,192), "S7222C2");
    /*is_ambiguous_... S7222C2::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(1168,852), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(1308,956), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(1176,856), "S7222C2");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*), ABISELECT(1176,856), "S7222C2");
    check_field_offset(lv, s7222c2f0, ABISELECT(1432,1040), "S7222C2.s7222c2f0");
    check_field_offset(lv, s7222c2f1, ABISELECT(1440,1048), "S7222C2.s7222c2f1");
    check_field_offset(lv, s7222c2f2, ABISELECT(1448,1056), "S7222C2.s7222c2f2");
    check_field_offset(lv, s7222c2f3, ABISELECT(1456,1064), "S7222C2.s7222c2f3");
    check_field_offset(lv, s7222c2f4, ABISELECT(1464,1068), "S7222C2.s7222c2f4");
    check_field_offset(lv, s7222c2f5, ABISELECT(1472,1076), "S7222C2.s7222c2f5");
    check_field_offset(lv, s7222c2f6, ABISELECT(1488,1080), "S7222C2.s7222c2f6");
    check_field_offset(lv, s7222c2f7, ABISELECT(15024,11088), "S7222C2.s7222c2f7");
    check_field_offset(lv, s7222c2f8, ABISELECT(15136,11172), "S7222C2.s7222c2f8");
    test_class_info(&lv, &cd_S7222C2);
    dp->~S7222C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C2(Test_S7222C2, "S7222C2", ABISELECT(26576,19772));

#else // __cplusplus

extern void _ZN7S7222C2C1Ev();
extern void _ZN7S7222C2D1Ev();
Name_Map name_map_S7222C2[] = {
  NSPAIR(_ZN7S7222C2C1Ev),
  NSPAIR(_ZN7S7222C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C10;
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C3;
extern VTBL_ENTRY _ZTI7S7222C3[];
extern  VTBL_ENTRY _ZTV7S7222C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C3[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
static Base_Class bases_S7222C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(22992,17152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    ABISELECT(23008,17156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C7,    ABISELECT(23008,17156), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(23184,17296), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //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
    4, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(15152,11176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7222C4,    ABISELECT(15152,11176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25284,18836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(25152,18736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(25152,18736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(26452,19688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C5,    ABISELECT(26320,19588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(26320,19588), //bcp->offset
    107, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(25424,18928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(25424,18928), //bcp->offset
    97, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(25152,18736), //bcp->offset
    82, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7222C10,    ABISELECT(23344,17420), //bcp->offset
    71, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(15660,11560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(15528,11460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(15528,11460), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7222C3,    ABISELECT(15152,11176), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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
    22, //immediately_derived
  0, 0},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7222C12,    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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7222C11,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C5,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(272,192), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1168,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1308,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
    29, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(1176,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(1176,856), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7222C2[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C2D1Ev();
extern void _ZN7S7222C2D0Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N7S7222C2D1Ev,_ZTv0_n48_N7S7222C2D1Ev)();
extern void ABISELECT(_ZThn15152_N7S7222C2D1Ev,_ZThn11176_N7S7222C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7222C2D0Ev,_ZTv0_n48_N7S7222C2D0Ev)();
extern void ABISELECT(_ZThn15152_N7S7222C2D0Ev,_ZThn11176_N7S7222C2D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S7222C2D1Ev,_ZTv0_n36_N7S7222C2D1Ev)();
extern void ABISELECT(_ZThn23344_N7S7222C2D1Ev,_ZThn17420_N7S7222C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C2D0Ev,_ZTv0_n36_N7S7222C2D0Ev)();
extern void ABISELECT(_ZThn23344_N7S7222C2D0Ev,_ZThn17420_N7S7222C2D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY vtc_S7222C2[] = {
  ABISELECT(25152,18736),
  ABISELECT(23344,17420),
  ABISELECT(15152,11176),
  ABISELECT(26320,19588),
  ABISELECT(25424,18928),
  ABISELECT(23184,17296),
  ABISELECT(23008,17156),
  ABISELECT(22992,17152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  (VTBL_ENTRY)&_ZN7S7222C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C2D0Ev,
  ABISELECT(26048,19396),
  ABISELECT(22912,17104),
  ABISELECT(22736,16964),
  ABISELECT(22720,16960),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  ABISELECT(22008,16440),
  ABISELECT(21832,16300),
  ABISELECT(21816,16296),
  ABISELECT(-1176,-856),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15152,-11176),
  0,
  0,
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  ABISELECT(-15152,-11176),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7222C2D1Ev,_ZTv0_n48_N7S7222C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7222C2D0Ev,_ZTv0_n48_N7S7222C2D0Ev),
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-15528,-11460),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17156),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(-23184,-17296),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(-23344,-17420),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-23344,-17420),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C2D1Ev,_ZTv0_n36_N7S7222C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C2D0Ev,_ZTv0_n36_N7S7222C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-25152,-18736),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-25424,-18928),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-26320,-19588),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern VTBL_ENTRY _ZTV7S7222C2[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__A__7S7222C2[] = {
  ABISELECT(26320,19588),
  ABISELECT(25424,18928),
  ABISELECT(23184,17296),
  ABISELECT(23008,17156),
  ABISELECT(22992,17152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__A3__7S7222C2[] = {
  ABISELECT(23184,17296),
  ABISELECT(23008,17156),
  ABISELECT(22992,17152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A5__7S7222C2[] = {
  ABISELECT(23184,17296),
  ABISELECT(23008,17156),
  ABISELECT(22992,17152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A5__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17156),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A5__7S7222C2[] = {
  0,
  0,
  ABISELECT(-23184,-17296),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__A3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-23184,-17296),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__A3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17156),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(-23184,-17296),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-23008,-17156),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-25424,-18928),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__A__7S7222C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-26320,-19588),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__A__7S7222C2[] = {
  ABISELECT(26048,19396),
  ABISELECT(22912,17104),
  ABISELECT(22736,16964),
  ABISELECT(22720,16960),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A6__7S7222C2[] = {
  ABISELECT(22912,17104),
  ABISELECT(22736,16964),
  ABISELECT(22720,16960),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A6__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-22736,-16964),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A6__7S7222C2[] = {
  0,
  0,
  ABISELECT(-22912,-17104),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-22736,-16964),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__A__7S7222C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-26048,-19396),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(-22912,-17104),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C2[] = {
  ABISELECT(22008,16440),
  ABISELECT(21832,16300),
  ABISELECT(21816,16296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A7__7S7222C2[] = {
  ABISELECT(22008,16440),
  ABISELECT(21832,16300),
  ABISELECT(21816,16296),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A7__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-21832,-16300),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A7__7S7222C2[] = {
  0,
  0,
  ABISELECT(-22008,-16440),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(-22008,-16440),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-21832,-16300),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C3D1Ev();
extern void _ZN7S7222C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C3__7S7222C2[] = {
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C47S7222C3__7S7222C2[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C47S7222C3__7S7222C2[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C47S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C47S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__7S7222C2[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C127S7222C3__A4__7S7222C2[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__7S7222C2[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C127S7222C3__A2__7S7222C2[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C127S7222C3__A2__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev)();
extern void ABISELECT(_ZThn8192_N7S7222C3D1Ev,_ZThn6244_N7S7222C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev)();
extern void ABISELECT(_ZThn8192_N7S7222C3D0Ev,_ZThn6244_N7S7222C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C3__7S7222C2[] = {
  ABISELECT(-8192,-6244),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6244),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C3__7S7222C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7560),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C3__7S7222C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7752),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C3__7S7222C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8412),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C3__7S7222C2[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C2[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C2[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10__7S7222C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C10__7S7222C2[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10__7S7222C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10__7S7222C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C2[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__7S7222C2[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A1__7S7222C2[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A1__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A1__7S7222C2[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__7S7222C2[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__7S7222C2[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__7S7222C2[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__7S7222C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C2[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A3__7S7222C2[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A3__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__7S7222C2[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__7S7222C2[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__7S7222C2[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C2[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A2__7S7222C2[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A2__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A2__7S7222C2[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__7S7222C2[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__7S7222C2[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C2[] = {
  {&(_ZTV7S7222C2[10]),  10,118},
  {&(_tg__ZTV8S7222C11__A__7S7222C2[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__A3__7S7222C2[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A5__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A5__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A5__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__A3__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__A3__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__A__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__A__7S7222C2[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__A__7S7222C2[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__A__7S7222C2[8]),  8,11},
  {&(_tg__ZTV8S7222C14__A__7S7222C2[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A6__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A6__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A6__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__A__7S7222C2[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__A__7S7222C2[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__A__7S7222C2[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A__7S7222C2[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A7__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A7__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A7__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A__7S7222C2[5]),  5,7},
  {&(_ZTV7S7222C2[46]),  46,118},
  {&(_ZTV7S7222C2[63]),  63,118},
  {&(_ZTV7S7222C2[69]),  69,118},
  {&(_ZTV7S7222C2[80]),  80,118},
  {&(_ZTV7S7222C2[93]),  93,118},
  {&(_ZTV7S7222C2[105]),  105,118},
  {&(_ZTV7S7222C2[115]),  115,118},
  {&(_ZTV7S7222C2[55]),  55,118},
  {&(_ZTV7S7222C2[22]),  22,118},
  {&(_ZTV7S7222C2[29]),  29,118},
  {&(_tg__ZTV7S7222C3__7S7222C2[9]),  9,13},
  {&(_tg__ZTV7S7222C47S7222C3__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C47S7222C3__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C47S7222C3__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C47S7222C3__7S7222C2[4]),  4,6},
  {&(_tg__ZTV8S7222C127S7222C3__A2__7S7222C2[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C127S7222C3__A4__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C127S7222C3__A2__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C127S7222C3__A2__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C7__7S7222C3__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C3__7S7222C2[4]),  4,6},
  {&(_tg__ZTV8S7222C10__7S7222C3__7S7222C2[9]),  9,11},
  {&(_tg__ZTV8S7222C11__7S7222C3__7S7222C2[11]),  11,15},
  {&(_tg__ZTV8S7222C14__7S7222C3__7S7222C2[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__7S7222C3__7S7222C2[8]),  8,11},
  {&(_tg__ZTV8S7222C12__A__7S7222C3__7S7222C2[5]),  5,8},
  {&(_tg__ZTV7S7222C7__7S7222C2[3]),  3,5},
  {&(_tg__ZTV8S7222C10__7S7222C2[8]),  8,10},
  {&(_tg__ZTV8S7222C11__8S7222C10__7S7222C2[11]),  11,15},
  {&(_tg__ZTV7S7222C8__8S7222C10__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C10__7S7222C2[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C10__7S7222C2[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10__7S7222C2[8]),  8,11},
  {&(_tg__ZTV8S7222C11__7S7222C2[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__7S7222C2[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A1__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A1__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A1__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__7S7222C2[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__7S7222C2[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__7S7222C2[8]),  8,11},
  {&(_tg__ZTV8S7222C14__7S7222C2[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A3__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A3__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__7S7222C2[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__7S7222C2[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__7S7222C2[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__7S7222C2[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A2__7S7222C2[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A2__7S7222C2[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A2__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__7S7222C2[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__7S7222C2[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7222C2[];
extern  VTBL_ENTRY _ZTV7S7222C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C2[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7222C3D0Ev,_ZThn6244_N7S7222C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7222C3D1Ev,_ZThn6244_N7S7222C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C2D0Ev,_ZTv0_n36_N7S7222C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23344_N7S7222C2D0Ev,_ZThn17420_N7S7222C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C2D1Ev,_ZTv0_n36_N7S7222C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23344_N7S7222C2D1Ev,_ZThn17420_N7S7222C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7222C2D0Ev,_ZTv0_n48_N7S7222C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15152_N7S7222C2D0Ev,_ZThn11176_N7S7222C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7222C2D1Ev,_ZTv0_n48_N7S7222C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15152_N7S7222C2D1Ev,_ZThn11176_N7S7222C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7222C2 = {  "S7222C2", // class name
  bases_S7222C2, 30,
  &(vtc_S7222C2[0]), // expected_vtbl_contents
  &(vtt_S7222C2[0]), // expected_vtt_contents
  ABISELECT(26576,19772), // object size
  NSPAIRA(_ZTI7S7222C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7222C2),118, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7222C2),86, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C16  : S7222C7 , virtual S7222C8 , virtual S7222C12 , S1538C9_nt , virtual S7222C3 {
  int s7222c16f0;
  void *s7222c16f1;
  char s7222c16f2;
  unsigned int s7222c16f3:1;
  void *s7222c16f4;
  ::S7222C3 s7222c16f5;
  ::S1538C9_nt s7222c16f6[6];
  void *s7222c16f7;
  ::S7222C10 s7222c16f8;
  int s7222c16f9:5;
  __tsi64 s7222c16f10;
  virtual  ~S7222C16(); // _ZN8S7222C16D2Ev
  virtual void  v9(); // _ZN8S7222C162v9Ev
  S7222C16(); // tgen
};
//SIG(-1 S7222C16) C1{ BC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC3 VBC8{ BC9{ BC6 v7 FL FC2 Fs Fc Fi[2] Fp FC10{} Fi FL} VBC11{ VBC12{ VBC4 BC5 VBC13{ VBC2 VBC5 BC6 v8 Fp Fs[2] FD[2] Fc FC2 FD FC6} v9 Fi Fc Fc:1} vd FC12 Fs:5 Fl} BC5 FC9[9] Fi Fs:16 FC6 Fi Fs Fp FL FC2} vd v1 Fi Fp Fc Fi:1 Fp FC8 FC3[6] Fp FC11 Fi:5 FL}


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

static void Test_S7222C16()
{
  extern Class_Descriptor cd_S7222C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1669,5004)];
    init_test(&cd_S7222C16, buf);
    S7222C16 *dp, &lv = *(dp=new (buf) S7222C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26688,20012), "sizeof(S7222C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C16)");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(15264,11416), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(15264,11416), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(15264,11416), "S7222C16");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15264,11416), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(15264,11416), "S7222C16");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(15264,11416), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15264,11416), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), 0, "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C7*), 0, "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C3*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15280,11420), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(15572,11644), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(15696,11728), "S7222C16");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(15696,11728), "S7222C16");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C3*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15696,11728), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(15440,11544), "S7222C16");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*), ABISELECT(15440,11544), "S7222C16");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(15440,11544), "S7222C16");
    /*is_ambiguous_... S7222C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S7222C16");
    check_base_class_offset(lv, (S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15872,11868), "S7222C16");
    check_base_class_offset(lv, (S7222C4*)(S7222C3*), ABISELECT(15872,11868), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(25652,19260), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(25520,19160), "S7222C16");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(25520,19160), "S7222C16");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(25792,19352), "S7222C16");
    check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(25792,19352), "S7222C16");
    check_base_class_offset(lv, (S7222C11*)(S7222C10*), ABISELECT(25520,19160), "S7222C16");
    check_base_class_offset(lv, (S7222C10*)(S7222C3*), ABISELECT(23712,17844), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C3*), ABISELECT(16380,12252), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(16248,12152), "S7222C16");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C3*), ABISELECT(16248,12152), "S7222C16");
    check_base_class_offset(lv, (S7222C3*), ABISELECT(15872,11868), "S7222C16");
    check_field_offset(lv, s7222c16f0, ABISELECT(180,144), "S7222C16.s7222c16f0");
    check_field_offset(lv, s7222c16f1, ABISELECT(184,148), "S7222C16.s7222c16f1");
    check_field_offset(lv, s7222c16f2, ABISELECT(192,152), "S7222C16.s7222c16f2");
    set_bf_and_test(lv, s7222c16f3, ABISELECT(193,153), 0, 1, 1, "S7222C16");
    check_field_offset(lv, s7222c16f4, ABISELECT(200,156), "S7222C16.s7222c16f4");
    check_field_offset(lv, s7222c16f5, ABISELECT(208,160), "S7222C16.s7222c16f5");
    check_field_offset(lv, s7222c16f6, ABISELECT(11632,8756), "S7222C16.s7222c16f6");
    check_field_offset(lv, s7222c16f7, ABISELECT(11656,8780), "S7222C16.s7222c16f7");
    check_field_offset(lv, s7222c16f8, ABISELECT(11664,8784), "S7222C16.s7222c16f8");
    set_bf_and_test(lv, s7222c16f9, ABISELECT(15248,11404), 0, 5, 1, "S7222C16");
    set_bf_and_test(lv, s7222c16f9, ABISELECT(15248,11404), 0, 5, hide_sll(1LL<<4), "S7222C16");
    check_field_offset(lv, s7222c16f10, ABISELECT(15256,11408), "S7222C16.s7222c16f10");
    test_class_info(&lv, &cd_S7222C16);
    dp->~S7222C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C16(Test_S7222C16, "S7222C16", ABISELECT(26688,20012));

#else // __cplusplus

extern void _ZN8S7222C16C1Ev();
extern void _ZN8S7222C16D2Ev();
Name_Map name_map_S7222C16[] = {
  NSPAIR(_ZN8S7222C16C1Ev),
  NSPAIR(_ZN8S7222C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C10;
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C3;
extern VTBL_ENTRY _ZTI7S7222C3[];
extern  VTBL_ENTRY _ZTV7S7222C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C3[];
static Base_Class bases_S7222C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15264,11416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7222C7,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C8,    ABISELECT(15280,11420), //bcp->offset
    15, //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
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(15572,11644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C8,    ABISELECT(15696,11728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C7,    ABISELECT(15696,11728), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(15440,11544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(15440,11544), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C5,    ABISELECT(15872,11868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C4,    ABISELECT(15872,11868), //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25652,19260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(25520,19160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(25520,19160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(25792,19352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(25792,19352), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(25520,19160), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7222C10,    ABISELECT(23712,17844), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16380,12252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(16248,12152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(16248,12152), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7222C3,    ABISELECT(15872,11868), //bcp->offset
    39, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C16[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN8S7222C16D1Ev();
extern void _ZN8S7222C16D0Ev();
extern void _ZN8S7222C162v9Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev)();
extern void ABISELECT(_ZThn15872_N8S7222C16D1Ev,_ZThn11868_N8S7222C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev)();
extern void ABISELECT(_ZThn15872_N8S7222C16D0Ev,_ZThn11868_N8S7222C16D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev)();
extern void ABISELECT(_ZThn23712_N8S7222C16D1Ev,_ZThn17844_N8S7222C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev)();
extern void ABISELECT(_ZThn23712_N8S7222C16D0Ev,_ZThn17844_N8S7222C16D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY vtc_S7222C16[] = {
  ABISELECT(25792,19352),
  ABISELECT(25520,19160),
  ABISELECT(23712,17844),
  ABISELECT(15872,11868),
  ABISELECT(15696,11728),
  ABISELECT(15440,11544),
  ABISELECT(15280,11420),
  ABISELECT(15264,11416),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7222C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7222C162v9Ev,
  0,
  0,
  ABISELECT(-15280,-11420),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15440,-11544),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15696,-11728),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15872,-11868),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15872,-11868),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16248,-12152),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  ABISELECT(-23712,-17844),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23712,-17844),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25520,-19160),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25792,-19352),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern VTBL_ENTRY _ZTV8S7222C16[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A__8S7222C16[] = {
  ABISELECT(15264,11416),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__8S7222C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__8S7222C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A1__8S7222C16[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C3D1Ev();
extern void _ZN7S7222C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C3__8S7222C16[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C47S7222C3__8S7222C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C47S7222C3__A1__8S7222C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__A1__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__A1__8S7222C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C47S7222C3__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C47S7222C3__8S7222C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__8S7222C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C127S7222C3__A4__8S7222C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__8S7222C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C127S7222C3__A2__8S7222C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C127S7222C3__A2__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C3__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C3__8S7222C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev)();
extern void ABISELECT(_ZThn7840_N7S7222C3D1Ev,_ZThn5976_N7S7222C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev)();
extern void ABISELECT(_ZThn7840_N7S7222C3D0Ev,_ZThn5976_N7S7222C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C3__8S7222C16[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C3__8S7222C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C3__8S7222C16[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-9920,-7484),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C3__8S7222C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C3__8S7222C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C10__8S7222C16[] = {
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10__8S7222C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C10__8S7222C16[] = {
  0,
  0,
  ABISELECT(8432,6424),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6116),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10__8S7222C16[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10__8S7222C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6300),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C16[] = {
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__A1__8S7222C16[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A2__8S7222C16[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A2__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A2__8S7222C16[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__A1__8S7222C16[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__A1__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__8S7222C16[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__8S7222C16[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__8S7222C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7616),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C16[] = {
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A3__8S7222C16[] = {
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A3__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__8S7222C16[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__8S7222C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__8S7222C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7808),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__8S7222C16[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C16[] = {
  {&(_ZTV8S7222C16[10]),  10,101},
  {&(_tg__ZTV7S7222C7__A__8S7222C16[3]),  3,5},
  {&(_ZTV8S7222C16[19]),  19,101},
  {&(_ZTV8S7222C16[29]),  29,101},
  {&(_ZTV8S7222C16[37]),  37,101},
  {&(_ZTV8S7222C16[53]),  53,101},
  {&(_ZTV8S7222C16[74]),  74,101},
  {&(_ZTV8S7222C16[87]),  87,101},
  {&(_ZTV8S7222C16[99]),  99,101},
  {&(_ZTV8S7222C16[62]),  62,101},
  {&(_tg__ZTV8S7222C12__8S7222C16[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__8S7222C16[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C7__A1__8S7222C16[3]),  3,5},
  {&(_tg__ZTV7S7222C3__8S7222C16[9]),  9,13},
  {&(_tg__ZTV7S7222C47S7222C3__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C47S7222C3__A1__8S7222C16[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__A1__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__A1__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C47S7222C3__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C47S7222C3__8S7222C16[4]),  4,6},
  {&(_tg__ZTV8S7222C127S7222C3__A2__8S7222C16[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C127S7222C3__A4__8S7222C16[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C127S7222C3__A2__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C127S7222C3__A2__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C7__7S7222C3__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C3__8S7222C16[4]),  4,6},
  {&(_tg__ZTV8S7222C10__7S7222C3__8S7222C16[9]),  9,11},
  {&(_tg__ZTV8S7222C11__7S7222C3__8S7222C16[11]),  11,15},
  {&(_tg__ZTV8S7222C14__7S7222C3__8S7222C16[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__7S7222C3__8S7222C16[8]),  8,11},
  {&(_tg__ZTV8S7222C12__A__7S7222C3__8S7222C16[5]),  5,8},
  {&(_tg__ZTV8S7222C10__8S7222C16[8]),  8,10},
  {&(_tg__ZTV8S7222C11__8S7222C10__8S7222C16[11]),  11,15},
  {&(_tg__ZTV7S7222C8__8S7222C10__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C10__8S7222C16[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C10__8S7222C16[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10__8S7222C16[8]),  8,11},
  {&(_tg__ZTV8S7222C11__8S7222C16[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__A1__8S7222C16[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A2__8S7222C16[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A2__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A2__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__A1__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__A1__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__8S7222C16[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__8S7222C16[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__8S7222C16[8]),  8,11},
  {&(_tg__ZTV8S7222C14__8S7222C16[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A3__8S7222C16[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A3__8S7222C16[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__8S7222C16[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__8S7222C16[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__8S7222C16[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__8S7222C16[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7222C16[];
extern  VTBL_ENTRY _ZTV8S7222C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C16[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7222C3D0Ev,_ZThn5976_N7S7222C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7222C3D1Ev,_ZThn5976_N7S7222C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S7222C16D0Ev,_ZThn17844_N8S7222C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S7222C16D1Ev,_ZThn17844_N8S7222C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S7222C16D0Ev,_ZThn11868_N8S7222C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S7222C16D1Ev,_ZThn11868_N8S7222C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7222C16 = {  "S7222C16", // class name
  bases_S7222C16, 23,
  &(vtc_S7222C16[0]), // expected_vtbl_contents
  &(vtt_S7222C16[0]), // expected_vtt_contents
  ABISELECT(26688,20012), // object size
  NSPAIRA(_ZTI8S7222C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7222C16),101, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C16),61, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C15  : S7222C16 {
  void *s7222c15f0;
  __tsi64 s7222c15f1;
  void *s7222c15f2;
  void *s7222c15f3;
  ::S7223C9_nt s7222c15f4;
  __tsi64 s7222c15f5;
  long double s7222c15f6;
  virtual void  v10(); // _ZN8S7222C153v10Ev
  ~S7222C15(); // tgen
  S7222C15(); // tgen
};
//SIG(-1 S7222C15) C1{ BC2{ BC3{ VBC4{ m Fi} BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 VBC6{ BC4 VBC5 VBC3 BC7{ VBC4 VBC3 VBC5 v4 FL[8] Fp[7] Fs} v5 v6 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC4 VBC9{ BC10{ BC7 v7 FL FC3 Fs Fc Fi[2] Fp FC11{} Fi FL} VBC12{ VBC13{ VBC5 BC6 VBC14{ VBC3 VBC6 BC7 v8 Fp Fs[2] FD[2] Fc FC3 FD FC7} v9 Fi Fc Fc:1} vd FC13 Fs:5 Fl} BC6 FC10[9] Fi Fs:16 FC7 Fi Fs Fp FL FC3} vd v10 Fi Fp Fc Fi:1 Fp FC9 FC4[6] Fp FC12 Fi:5 FL} v1 Fp FL Fp Fp FC11 FL FD}


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

static void Test_S7222C15()
{
  extern Class_Descriptor cd_S7222C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1673,5015)];
    init_test(&cd_S7222C15, buf);
    S7222C15 *dp, &lv = *(dp=new (buf) S7222C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26752,20056), "sizeof(S7222C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C15)");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*)(S7222C16*), ABISELECT(15328,11460), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(15328,11460), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(15328,11460), "S7222C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15328,11460), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(15328,11460), "S7222C15");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(15328,11460), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15328,11460), "S7222C15");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*)(S7222C16*), 0, "S7222C15");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C16*), 0, "S7222C15");
    /*is_ambiguous_... S7222C16::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C16*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C3*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15344,11464), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(15636,11688), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(15760,11772), "S7222C15");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(15760,11772), "S7222C15");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C3*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(15760,11772), "S7222C15");
    /*is_ambiguous_... S7222C15::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(15504,11588), "S7222C15");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C16*), ABISELECT(15504,11588), "S7222C15");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(15504,11588), "S7222C15");
    /*is_ambiguous_... S7222C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C16*), ABISELECT(176,140), "S7222C15");
    check_base_class_offset(lv, (S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(15936,11912), "S7222C15");
    check_base_class_offset(lv, (S7222C4*)(S7222C3*), ABISELECT(15936,11912), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(25716,19304), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(25584,19204), "S7222C15");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(25584,19204), "S7222C15");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(25856,19396), "S7222C15");
    check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(25856,19396), "S7222C15");
    check_base_class_offset(lv, (S7222C11*)(S7222C10*), ABISELECT(25584,19204), "S7222C15");
    check_base_class_offset(lv, (S7222C10*)(S7222C3*), ABISELECT(23776,17888), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C3*), ABISELECT(16444,12296), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(16312,12196), "S7222C15");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C3*), ABISELECT(16312,12196), "S7222C15");
    check_base_class_offset(lv, (S7222C3*)(S7222C16*), ABISELECT(15936,11912), "S7222C15");
    check_base_class_offset(lv, (S7222C16*), 0, "S7222C15");
    check_field_offset(lv, s7222c15f0, ABISELECT(15264,11416), "S7222C15.s7222c15f0");
    check_field_offset(lv, s7222c15f1, ABISELECT(15272,11420), "S7222C15.s7222c15f1");
    check_field_offset(lv, s7222c15f2, ABISELECT(15280,11428), "S7222C15.s7222c15f2");
    check_field_offset(lv, s7222c15f3, ABISELECT(15288,11432), "S7222C15.s7222c15f3");
    check_field_offset(lv, s7222c15f4, ABISELECT(15296,11436), "S7222C15.s7222c15f4");
    check_field_offset(lv, s7222c15f5, ABISELECT(15304,11440), "S7222C15.s7222c15f5");
    check_field_offset(lv, s7222c15f6, ABISELECT(15312,11448), "S7222C15.s7222c15f6");
    test_class_info(&lv, &cd_S7222C15);
    dp->~S7222C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C15(Test_S7222C15, "S7222C15", ABISELECT(26752,20056));

#else // __cplusplus

extern void _ZN8S7222C15C1Ev();
extern void _ZN8S7222C15D1Ev();
Name_Map name_map_S7222C15[] = {
  NSPAIR(_ZN8S7222C15C1Ev),
  NSPAIR(_ZN8S7222C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C10;
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C3;
extern VTBL_ENTRY _ZTI7S7222C3[];
extern  VTBL_ENTRY _ZTV7S7222C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C3[];
extern Class_Descriptor cd_S7222C16;
extern VTBL_ENTRY _ZTI8S7222C16[];
extern  VTBL_ENTRY _ZTV8S7222C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C16[];
static Base_Class bases_S7222C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15328,11460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7222C7,    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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7222C8,    ABISELECT(15344,11464), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(15636,11688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C8,    ABISELECT(15760,11772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C7,    ABISELECT(15760,11772), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(15504,11588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(15504,11588), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    23, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(15936,11912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C4,    ABISELECT(15936,11912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25716,19304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(25584,19204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(25584,19204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(25856,19396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(25856,19396), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(25584,19204), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7222C10,    ABISELECT(23776,17888), //bcp->offset
    66, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16444,12296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(16312,12196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(16312,12196), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7222C3,    ABISELECT(15936,11912), //bcp->offset
    40, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7222C16,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C15[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN8S7222C15D1Ev();
extern void _ZN8S7222C15D0Ev();
extern void _ZN8S7222C162v9Ev();
extern void _ZN8S7222C153v10Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7222C15D1Ev,_ZTv0_n48_N8S7222C15D1Ev)();
extern void ABISELECT(_ZThn15936_N8S7222C15D1Ev,_ZThn11912_N8S7222C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7222C15D0Ev,_ZTv0_n48_N8S7222C15D0Ev)();
extern void ABISELECT(_ZThn15936_N8S7222C15D0Ev,_ZThn11912_N8S7222C15D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S7222C15D1Ev,_ZTv0_n36_N8S7222C15D1Ev)();
extern void ABISELECT(_ZThn23776_N8S7222C15D1Ev,_ZThn17888_N8S7222C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7222C15D0Ev,_ZTv0_n36_N8S7222C15D0Ev)();
extern void ABISELECT(_ZThn23776_N8S7222C15D0Ev,_ZThn17888_N8S7222C15D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY vtc_S7222C15[] = {
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7222C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7222C162v9Ev,
  (VTBL_ENTRY)&_ZN8S7222C153v10Ev,
  0,
  0,
  ABISELECT(-15344,-11464),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11588),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11772),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11912),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11912),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C15D1Ev,_ZTv0_n48_N8S7222C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C15D0Ev,_ZTv0_n48_N8S7222C15D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12196),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  ABISELECT(-23776,-17888),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17888),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C15D1Ev,_ZTv0_n36_N8S7222C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C15D0Ev,_ZTv0_n36_N8S7222C15D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25584,-19204),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25856,-19396),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern VTBL_ENTRY _ZTV8S7222C15[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN8S7222C16D1Ev();
extern void _ZN8S7222C16D0Ev();
extern void _ZN8S7222C162v9Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C16__8S7222C15[] = {
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7222C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7222C162v9Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C78S7222C16__8S7222C15[] = {
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C16__8S7222C15[] = {
  0,
  0,
  ABISELECT(-15344,-11464),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C16__8S7222C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11588),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A1__8S7222C16__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11772),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev)();
extern void ABISELECT(_ZThn15936_N8S7222C16D1Ev,_ZThn11912_N8S7222C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev)();
extern void ABISELECT(_ZThn15936_N8S7222C16D0Ev,_ZThn11912_N8S7222C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7222C3__8S7222C16__8S7222C15[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11912),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11912),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev)();
extern void ABISELECT(_ZThn23776_N8S7222C16D1Ev,_ZThn17888_N8S7222C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev)();
extern void ABISELECT(_ZThn23776_N8S7222C16D0Ev,_ZThn17888_N8S7222C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__8S7222C16__8S7222C15[] = {
  ABISELECT(-23776,-17888),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17888),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C16__8S7222C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25584,-19204),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C16__8S7222C15[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25856,-19396),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__8S7222C16__8S7222C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12196),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C15[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__8S7222C15[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C15[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__8S7222C15[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A1__8S7222C15[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C3D1Ev();
extern void _ZN7S7222C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C3__8S7222C15[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C47S7222C3__8S7222C15[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C47S7222C3__A1__8S7222C15[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__A1__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__A1__8S7222C15[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C47S7222C3__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C47S7222C3__8S7222C15[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__8S7222C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C127S7222C3__A4__8S7222C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__8S7222C15[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C127S7222C3__A2__8S7222C15[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C127S7222C3__A2__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C3__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C3__8S7222C15[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev)();
extern void ABISELECT(_ZThn7840_N7S7222C3D1Ev,_ZThn5976_N7S7222C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev)();
extern void ABISELECT(_ZThn7840_N7S7222C3D0Ev,_ZThn5976_N7S7222C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C3__8S7222C15[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C3__8S7222C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C3__8S7222C15[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-9920,-7484),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C3__8S7222C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C3__8S7222C15[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C10__8S7222C15[] = {
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10__8S7222C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C10__8S7222C15[] = {
  0,
  0,
  ABISELECT(8432,6424),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6116),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10__8S7222C15[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10__8S7222C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6300),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C15[] = {
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__A1__8S7222C15[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A2__8S7222C15[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A2__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A2__8S7222C15[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__A1__8S7222C15[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__A1__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__8S7222C15[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__8S7222C15[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__8S7222C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7616),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C15[] = {
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A3__8S7222C15[] = {
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A3__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__8S7222C15[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__8S7222C15[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__8S7222C15[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7808),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__8S7222C15[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C15[] = {
  {&(_ZTV8S7222C15[10]),  10,102},
  {&(_tg__ZTV8S7222C16__8S7222C15[10]),  10,15},
  {&(_tg__ZTV7S7222C78S7222C16__8S7222C15[3]),  3,5},
  {&(_tg__ZTV7S7222C8__A1__8S7222C16__8S7222C15[4]),  4,6},
  {&(_tg__ZTV8S7222C12__8S7222C16__8S7222C15[8]),  8,11},
  {&(_tg__ZTV7S7222C7__A1__8S7222C16__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C3__8S7222C16__8S7222C15[14]),  14,18},
  {&(_tg__ZTV8S7222C10__8S7222C16__8S7222C15[9]),  9,11},
  {&(_tg__ZTV8S7222C11__8S7222C16__8S7222C15[11]),  11,15},
  {&(_tg__ZTV8S7222C14__8S7222C16__8S7222C15[8]),  8,10},
  {&(_tg__ZTV8S7222C127S7222C3__A2__8S7222C16__8S7222C15[5]),  5,8},
  {&(_ZTV8S7222C15[20]),  20,102},
  {&(_ZTV8S7222C15[30]),  30,102},
  {&(_ZTV8S7222C15[38]),  38,102},
  {&(_ZTV8S7222C15[54]),  54,102},
  {&(_ZTV8S7222C15[75]),  75,102},
  {&(_ZTV8S7222C15[88]),  88,102},
  {&(_ZTV8S7222C15[100]),  100,102},
  {&(_ZTV8S7222C15[63]),  63,102},
  {&(_tg__ZTV8S7222C12__8S7222C15[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__8S7222C15[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C7__A1__8S7222C15[3]),  3,5},
  {&(_tg__ZTV7S7222C3__8S7222C15[9]),  9,13},
  {&(_tg__ZTV7S7222C47S7222C3__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C47S7222C3__A1__8S7222C15[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__A1__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__A1__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C47S7222C3__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C47S7222C3__8S7222C15[4]),  4,6},
  {&(_tg__ZTV8S7222C127S7222C3__A2__8S7222C15[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C127S7222C3__A4__8S7222C15[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C127S7222C3__A2__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C127S7222C3__A2__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C7__7S7222C3__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C3__8S7222C15[4]),  4,6},
  {&(_tg__ZTV8S7222C10__7S7222C3__8S7222C15[9]),  9,11},
  {&(_tg__ZTV8S7222C11__7S7222C3__8S7222C15[11]),  11,15},
  {&(_tg__ZTV8S7222C14__7S7222C3__8S7222C15[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__7S7222C3__8S7222C15[8]),  8,11},
  {&(_tg__ZTV8S7222C12__A__7S7222C3__8S7222C15[5]),  5,8},
  {&(_tg__ZTV8S7222C10__8S7222C15[8]),  8,10},
  {&(_tg__ZTV8S7222C11__8S7222C10__8S7222C15[11]),  11,15},
  {&(_tg__ZTV7S7222C8__8S7222C10__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C10__8S7222C15[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C10__8S7222C15[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10__8S7222C15[8]),  8,11},
  {&(_tg__ZTV8S7222C11__8S7222C15[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__A1__8S7222C15[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A2__8S7222C15[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A2__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A2__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__A1__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__A1__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__8S7222C15[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__8S7222C15[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__8S7222C15[8]),  8,11},
  {&(_tg__ZTV8S7222C14__8S7222C15[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A3__8S7222C15[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A3__8S7222C15[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__8S7222C15[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__8S7222C15[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__8S7222C15[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__8S7222C15[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7222C15[];
extern  VTBL_ENTRY _ZTV8S7222C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C15[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7222C3D0Ev,_ZThn5976_N7S7222C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7222C3D1Ev,_ZThn5976_N7S7222C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7222C16D0Ev,_ZThn17888_N8S7222C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7222C16D1Ev,_ZThn17888_N8S7222C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7222C16D0Ev,_ZThn11912_N8S7222C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7222C16D1Ev,_ZThn11912_N8S7222C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C15D0Ev,_ZTv0_n36_N8S7222C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7222C15D0Ev,_ZThn17888_N8S7222C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C15D1Ev,_ZTv0_n36_N8S7222C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S7222C15D1Ev,_ZThn17888_N8S7222C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C15D0Ev,_ZTv0_n48_N8S7222C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7222C15D0Ev,_ZThn11912_N8S7222C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C15D1Ev,_ZTv0_n48_N8S7222C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S7222C15D1Ev,_ZThn11912_N8S7222C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7222C15 = {  "S7222C15", // class name
  bases_S7222C15, 24,
  &(vtc_S7222C15[0]), // expected_vtbl_contents
  &(vtt_S7222C15[0]), // expected_vtt_contents
  ABISELECT(26752,20056), // object size
  NSPAIRA(_ZTI8S7222C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7222C15),102, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C15),70, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C18  : virtual S7222C8 , S7222C11 , S7222C5 , S7222C7 , S7222C12 {
  int s7222c18f0;
  int s7222c18f1[6];
  void *s7222c18f2;
  void *s7222c18f3;
  int s7222c18f4[9];
  char s7222c18f5;
  void *s7222c18f6;
  char s7222c18f7;
  void *s7222c18f8;
  short s7222c18f9;
  virtual void  v11(); // _ZN8S7222C183v11Ev
  virtual void  v12(); // _ZN8S7222C183v12Ev
  ~S7222C18(); // tgen
  S7222C18(); // tgen
};
//SIG(-1 S7222C18) C1{ VBC2{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ VBC2 BC4{ BC5{ m Fi} VBC2 VBC6{ VBC5 BC2 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC2 v5 FL[8] Fp[7] Fs} v6 v7 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v8 Fp Fs[2] FD[2] Fc FC6 FD FC7} v9 Fi Fc Fc:1} BC7 BC6 BC4 v1 v2 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs}


void  S7222C18 ::v11(){vfunc_called(this, "_ZN8S7222C183v11Ev");}
void  S7222C18 ::v12(){vfunc_called(this, "_ZN8S7222C183v12Ev");}
S7222C18 ::~S7222C18(){ note_dtor("S7222C18", this);} // tgen
S7222C18 ::S7222C18(){ note_ctor("S7222C18", this);} // tgen

static void Test_S7222C18()
{
  extern Class_Descriptor cd_S7222C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(154,456)];
    init_test(&cd_S7222C18, buf);
    S7222C18 *dp, &lv = *(dp=new (buf) S7222C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2448,1820), "sizeof(S7222C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C18)");
    /*is_ambiguous_... S7222C18::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(944,708), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(132,100), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(1280,972), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(1104,832), "S7222C18");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(1104,832), "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), 0, "S7222C18");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), 0, "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(2324,1736), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(2192,1636), "S7222C18");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(2192,1636), "S7222C18");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(1296,976), "S7222C18");
    check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(1296,976), "S7222C18");
    check_base_class_offset(lv, (S7222C11*), 0, "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*), ABISELECT(264,192), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(400,292), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C7*), ABISELECT(400,292), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(708,532), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(576,432), "S7222C18");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*), ABISELECT(576,432), "S7222C18");
    check_field_offset(lv, s7222c18f0, ABISELECT(828,616), "S7222C18.s7222c18f0");
    check_field_offset(lv, s7222c18f1, ABISELECT(832,620), "S7222C18.s7222c18f1");
    check_field_offset(lv, s7222c18f2, ABISELECT(856,644), "S7222C18.s7222c18f2");
    check_field_offset(lv, s7222c18f3, ABISELECT(864,648), "S7222C18.s7222c18f3");
    check_field_offset(lv, s7222c18f4, ABISELECT(872,652), "S7222C18.s7222c18f4");
    check_field_offset(lv, s7222c18f5, ABISELECT(908,688), "S7222C18.s7222c18f5");
    check_field_offset(lv, s7222c18f6, ABISELECT(912,692), "S7222C18.s7222c18f6");
    check_field_offset(lv, s7222c18f7, ABISELECT(920,696), "S7222C18.s7222c18f7");
    check_field_offset(lv, s7222c18f8, ABISELECT(928,700), "S7222C18.s7222c18f8");
    check_field_offset(lv, s7222c18f9, ABISELECT(936,704), "S7222C18.s7222c18f9");
    test_class_info(&lv, &cd_S7222C18);
    dp->~S7222C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C18(Test_S7222C18, "S7222C18", ABISELECT(2448,1820));

#else // __cplusplus

extern void _ZN8S7222C18C1Ev();
extern void _ZN8S7222C18D1Ev();
Name_Map name_map_S7222C18[] = {
  NSPAIR(_ZN8S7222C18C1Ev),
  NSPAIR(_ZN8S7222C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
static Base_Class bases_S7222C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7222C8,    ABISELECT(944,708), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(1280,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    ABISELECT(1104,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(1104,832), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7222C12,    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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2324,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(2192,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(2192,1636), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(1296,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(1296,976), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7222C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C5,    ABISELECT(264,192), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C8,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(400,292), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(576,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(576,432), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C18[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN8S7222C183v11Ev();
extern void _ZN8S7222C183v12Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY vtc_S7222C18[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  (VTBL_ENTRY)&_ZN8S7222C183v11Ev,
  (VTBL_ENTRY)&_ZN8S7222C183v12Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern VTBL_ENTRY _ZTV8S7222C18[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C18[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__8S7222C18[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__8S7222C18[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__8S7222C18[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__8S7222C18[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C5__A3__8S7222C18[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C5__A3__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C5__A3__8S7222C18[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A__8S7222C18[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__8S7222C18[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A4__8S7222C18[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A4__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A4__8S7222C18[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A__8S7222C18[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C18[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C18[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A2__8S7222C18[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C18[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__8S7222C18[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__8S7222C18[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C18[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A1__8S7222C18[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C18[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__8S7222C18[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__8S7222C18[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C18[] = {
  {&(_ZTV8S7222C18[7]),  7,66},
  {&(_tg__ZTV8S7222C11__8S7222C18[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__8S7222C18[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__8S7222C18[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__8S7222C18[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__8S7222C18[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__8S7222C18[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__8S7222C18[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__8S7222C18[8]),  8,11},
  {&(_tg__ZTV7S7222C5__A3__8S7222C18[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C5__A3__8S7222C18[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C5__A3__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C7__A__8S7222C18[3]),  3,5},
  {&(_tg__ZTV8S7222C12__A__8S7222C18[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A4__8S7222C18[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A4__8S7222C18[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A4__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A__8S7222C18[5]),  5,7},
  {&(_ZTV8S7222C18[36]),  36,66},
  {&(_ZTV8S7222C18[43]),  43,66},
  {&(_ZTV8S7222C18[53]),  53,66},
  {&(_ZTV8S7222C18[63]),  63,66},
  {&(_ZTV8S7222C18[18]),  18,66},
  {&(_ZTV8S7222C18[22]),  22,66},
  {&(_ZTV8S7222C18[29]),  29,66},
  {&(_tg__ZTV7S7222C7__8S7222C18[3]),  3,5},
  {&(_tg__ZTV8S7222C14__8S7222C18[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A2__8S7222C18[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C18[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__8S7222C18[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__8S7222C18[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__8S7222C18[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__8S7222C18[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A1__8S7222C18[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C18[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__8S7222C18[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__8S7222C18[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7222C18[];
extern  VTBL_ENTRY _ZTV8S7222C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C18[];
Class_Descriptor cd_S7222C18 = {  "S7222C18", // class name
  bases_S7222C18, 19,
  &(vtc_S7222C18[0]), // expected_vtbl_contents
  &(vtt_S7222C18[0]), // expected_vtt_contents
  ABISELECT(2448,1820), // object size
  NSPAIRA(_ZTI8S7222C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7222C18),66, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C18),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C17  : virtual S7222C18 , S7222C7 , S7222C11 , virtual S7222C3 {
  ::S7222C16 s7222c17f0;
  void *s7222c17f1;
  char s7222c17f2[7];
  char  :0;
  ::S1538C9_nt s7222c17f4;
  int s7222c17f5[7];
  ~S7222C17(); // tgen
  S7222C17(); // tgen
};
//SIG(-1 S7222C17) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ VBC3 BC5{ BC6{ m Fi} VBC3 VBC7{ VBC6 BC3 Fi Fs[2] FL} BC8{ VBC6 VBC7 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC10{ VBC7 VBC5 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} BC8 BC7 BC5 v8 v9 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC7 BC4 VBC11{ BC12{ BC8 v10 FL FC7 Fs Fc Fi[2] Fp FC13{} Fi FL} VBC14{ VBC4 vd FC4 Fs:5 Fl} BC5 FC12[9] Fi Fs:16 FC8 Fi Fs Fp FL FC7} FC15{ BC7 VBC3 VBC5 BC6 VBC11 vd v11 Fi Fp Fc Fi:1 Fp FC11 FC6[6] Fp FC14 Fi:5 FL} Fp Fc[7] Fc:0 FC6 Fi[7]}


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

static void Test_S7222C17()
{
  extern Class_Descriptor cd_S7222C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2473,7424)];
    init_test(&cd_S7222C17, buf);
    S7222C17 *dp, &lv = *(dp=new (buf) S7222C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39552,29692), "sizeof(S7222C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C17)");
    /*is_ambiguous_... S7222C18::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C18*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C3*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(28128,21096), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(27316,20488), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C18*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*)(S7222C18*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C18*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(28464,21360), "S7222C17");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(28464,21360), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(28288,21220), "S7222C17");
    check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C18*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C18*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C18*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(28288,21220), "S7222C17");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C3*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(28288,21220), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(27184,20388), "S7222C17");
    /*is_ambiguous_... S7222C11::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*)(S7222C18*), ABISELECT(27184,20388), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(29508,22124), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(29376,22024), "S7222C17");
    check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(29376,22024), "S7222C17");
    /*is_ambiguous_... S7222C14::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(28480,21364), "S7222C17");
    check_base_class_offset(lv, (S7222C14*)(S7222C11*)(S7222C18*), ABISELECT(28480,21364), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(28480,21364), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(28480,21364), "S7222C17");
    check_base_class_offset(lv, (S7222C11*)(S7222C18*), ABISELECT(27184,20388), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C5 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C18*), ABISELECT(27448,20580), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*)(S7222C18*), ABISELECT(27584,20680), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C18*), ABISELECT(27584,20680), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C18*), ABISELECT(27892,20920), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C18*), ABISELECT(27760,20820), "S7222C17");
    /*is_ambiguous_... S7222C18::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C18*), ABISELECT(27760,20820), "S7222C17");
    check_base_class_offset(lv, (S7222C18*), ABISELECT(27184,20388), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), 0, "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C7*), 0, "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(308,240), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(176,140), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(176,140), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C11*), ABISELECT(176,140), "S7222C17");
    check_base_class_offset(lv, (S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(29632,22208), "S7222C17");
    check_base_class_offset(lv, (S7222C4*)(S7222C3*), ABISELECT(29632,22208), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(39412,29600), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(39280,29500), "S7222C17");
    /*is_ambiguous_... S7222C17::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(39280,29500), "S7222C17");
    check_base_class_offset(lv, (S7222C11*)(S7222C10*), ABISELECT(39280,29500), "S7222C17");
    check_base_class_offset(lv, (S7222C10*)(S7222C3*), ABISELECT(37472,28184), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C3*), ABISELECT(30140,22592), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(30008,22492), "S7222C17");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C3*), ABISELECT(30008,22492), "S7222C17");
    check_base_class_offset(lv, (S7222C3*), ABISELECT(29632,22208), "S7222C17");
    check_field_offset(lv, s7222c17f0, ABISELECT(448,332), "S7222C17.s7222c17f0");
    check_field_offset(lv, s7222c17f1, ABISELECT(27136,20344), "S7222C17.s7222c17f1");
    check_field_offset(lv, s7222c17f2, ABISELECT(27144,20348), "S7222C17.s7222c17f2");
    check_field_offset(lv, s7222c17f4, ABISELECT(27152,20356), "S7222C17.s7222c17f4");
    check_field_offset(lv, s7222c17f5, ABISELECT(27156,20360), "S7222C17.s7222c17f5");
    test_class_info(&lv, &cd_S7222C17);
    dp->~S7222C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C17(Test_S7222C17, "S7222C17", ABISELECT(39552,29692));

#else // __cplusplus

extern void _ZN8S7222C17C1Ev();
extern void _ZN8S7222C17D1Ev();
Name_Map name_map_S7222C17[] = {
  NSPAIR(_ZN8S7222C17C1Ev),
  NSPAIR(_ZN8S7222C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C18;
extern VTBL_ENTRY _ZTI8S7222C18[];
extern  VTBL_ENTRY _ZTV8S7222C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C18[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C10;
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C3;
extern VTBL_ENTRY _ZTI7S7222C3[];
extern  VTBL_ENTRY _ZTV7S7222C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C3[];
static Base_Class bases_S7222C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7222C8,    ABISELECT(28128,21096), //bcp->offset
    66, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(27316,20488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(28464,21360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    ABISELECT(28288,21220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C7,    ABISELECT(28288,21220), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(27184,20388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(27184,20388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(29508,22124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(29376,22024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(29376,22024), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(28480,21364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(28480,21364), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(27184,20388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(27448,20580), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7222C8,    ABISELECT(27584,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(27584,20680), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(27892,20920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(27760,20820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(27760,20820), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7222C18,    ABISELECT(27184,20388), //bcp->offset
    26, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7222C7,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(308,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
    24, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7222C11,    ABISELECT(176,140), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7222C5,    ABISELECT(29632,22208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7222C4,    ABISELECT(29632,22208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(39412,29600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(39280,29500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(39280,29500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7222C11,    ABISELECT(39280,29500), //bcp->offset
    137, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7222C10,    ABISELECT(37472,28184), //bcp->offset
    126, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(30140,22592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(30008,22492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    35, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(30008,22492), //bcp->offset
    118, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7222C3,    ABISELECT(29632,22208), //bcp->offset
    100, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7222C17[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN8S7222C17D1Ev();
extern void _ZN8S7222C17D0Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN8S7222C183v11Ev();
extern void _ZN8S7222C183v12Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7222C17D1Ev,_ZTv0_n48_N8S7222C17D1Ev)();
extern void ABISELECT(_ZThn29632_N8S7222C17D1Ev,_ZThn22208_N8S7222C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7222C17D0Ev,_ZTv0_n48_N8S7222C17D0Ev)();
extern void ABISELECT(_ZThn29632_N8S7222C17D0Ev,_ZThn22208_N8S7222C17D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S7222C17D1Ev,_ZTv0_n36_N8S7222C17D1Ev)();
extern void ABISELECT(_ZThn37472_N8S7222C17D1Ev,_ZThn28184_N8S7222C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7222C17D0Ev,_ZTv0_n36_N8S7222C17D0Ev)();
extern void ABISELECT(_ZThn37472_N8S7222C17D0Ev,_ZThn28184_N8S7222C17D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY vtc_S7222C17[] = {
  ABISELECT(39280,29500),
  ABISELECT(37472,28184),
  ABISELECT(29632,22208),
  ABISELECT(29376,22024),
  ABISELECT(28480,21364),
  ABISELECT(28288,21220),
  ABISELECT(28128,21096),
  ABISELECT(27184,20388),
  ABISELECT(28464,21360),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7222C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C17D0Ev,
  ABISELECT(29200,21884),
  ABISELECT(28304,21224),
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  ABISELECT(-27184,-20388),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  (VTBL_ENTRY)&_ZN8S7222C183v11Ev,
  (VTBL_ENTRY)&_ZN8S7222C183v12Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-27448,-20580),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  ABISELECT(880,680),
  ABISELECT(-27584,-20680),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-27760,-20820),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-28128,-21096),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28288,-21220),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28480,-21364),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29376,-22024),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-29632,-22208),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  ABISELECT(-29632,-22208),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C17D1Ev,_ZTv0_n48_N8S7222C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C17D0Ev,_ZTv0_n48_N8S7222C17D0Ev),
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-30008,-22492),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  ABISELECT(-37472,-28184),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-9008,-6824),
  ABISELECT(-9184,-6964),
  ABISELECT(-9344,-7088),
  ABISELECT(1808,1316),
  ABISELECT(-37472,-28184),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C17D1Ev,_ZTv0_n36_N8S7222C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C17D0Ev,_ZTv0_n36_N8S7222C17D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  ABISELECT(-39280,-29500),
  (VTBL_ENTRY)&(_ZTI8S7222C17[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern VTBL_ENTRY _ZTV8S7222C17[];
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A__8S7222C17[] = {
  ABISELECT(28464,21360),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__A__8S7222C17[] = {
  ABISELECT(29200,21884),
  ABISELECT(28304,21224),
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__A3__8S7222C17[] = {
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A5__8S7222C17[] = {
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A5__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A5__8S7222C17[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__A3__8S7222C17[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__A3__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__A__8S7222C17[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__A__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__A__8S7222C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28304,-21224),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__A__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29200,-21884),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN8S7222C183v11Ev();
extern void _ZN8S7222C183v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C18__8S7222C17[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  (VTBL_ENTRY)&_ZN8S7222C183v11Ev,
  (VTBL_ENTRY)&_ZN8S7222C183v12Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C118S7222C18__8S7222C17[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C118S7222C18__8S7222C17[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C118S7222C18__8S7222C17[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C118S7222C18__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C18__A3__8S7222C17[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C18__A3__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C18__A3__8S7222C17[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C78S7222C18__A1__8S7222C17[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C18__A2__8S7222C17[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C18__A4__8S7222C17[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C18__A4__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C18__A4__8S7222C17[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C18__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C18__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C18__8S7222C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C18__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C5__A3__8S7222C18__8S7222C17[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A__8S7222C18__8S7222C17[] = {
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__8S7222C18__8S7222C17[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S7222C18[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C17[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C17[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A2__8S7222C17[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__8S7222C17[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C17[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A1__8S7222C17[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C17[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__8S7222C17[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C3D1Ev();
extern void _ZN7S7222C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C3__8S7222C17[] = {
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C47S7222C3__8S7222C17[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C47S7222C3__A6__8S7222C17[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__A6__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__A6__8S7222C17[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C47S7222C3__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C47S7222C3__8S7222C17[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A5__8S7222C17[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C127S7222C3__A8__8S7222C17[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A8__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A8__8S7222C17[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C127S7222C3__A5__8S7222C17[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C127S7222C3__A5__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C3__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C3__8S7222C17[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev)();
extern void ABISELECT(_ZThn7840_N7S7222C3D1Ev,_ZThn5976_N7S7222C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev)();
extern void ABISELECT(_ZThn7840_N7S7222C3D0Ev,_ZThn5976_N7S7222C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C3__8S7222C17[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-9008,-6824),
  ABISELECT(-9184,-6964),
  ABISELECT(-9344,-7088),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C3__8S7222C17[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C3__8S7222C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(1152,844),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C3__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C3__8S7222C17[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C10__8S7222C17[] = {
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-9008,-6824),
  ABISELECT(-9184,-6964),
  ABISELECT(-9344,-7088),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10__8S7222C17[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C10__8S7222C17[] = {
  0,
  0,
  ABISELECT(9344,7088),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(9184,6964),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10__8S7222C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(8992,6820),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(8096,6160),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__A2__8S7222C17[] = {
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__A4__8S7222C17[] = {
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A7__8S7222C17[] = {
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A7__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A7__8S7222C17[] = {
  0,
  0,
  ABISELECT(11152,8404),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__A4__8S7222C17[] = {
  0,
  0,
  ABISELECT(11152,8404),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__A4__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(11152,8404),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__A2__8S7222C17[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(10800,8136),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__A2__8S7222C17[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(9904,7476),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
static  VTT_ENTRY vtt_S7222C17[] = {
  {&(_ZTV8S7222C17[11]),  11,152},
  {&(_tg__ZTV7S7222C7__A__8S7222C17[3]),  3,5},
  {&(_tg__ZTV8S7222C11__A__8S7222C17[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__A3__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A5__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A5__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A5__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__A3__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__A3__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__A__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__A__8S7222C17[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__A__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__A__8S7222C17[8]),  8,11},
  {&(_ZTV8S7222C17[41]),  41,152},
  {&(_ZTV8S7222C17[70]),  70,152},
  {&(_ZTV8S7222C17[77]),  77,152},
  {&(_ZTV8S7222C17[87]),  87,152},
  {&(_ZTV8S7222C17[97]),  97,152},
  {&(_ZTV8S7222C17[52]),  52,152},
  {&(_ZTV8S7222C17[56]),  56,152},
  {&(_ZTV8S7222C17[63]),  63,152},
  {&(_ZTV8S7222C17[22]),  22,152},
  {&(_ZTV8S7222C17[114]),  114,152},
  {&(_ZTV8S7222C17[135]),  135,152},
  {&(_ZTV8S7222C17[148]),  148,152},
  {&(_ZTV8S7222C17[123]),  123,152},
  {&(_tg__ZTV8S7222C18__8S7222C17[7]),  7,13},
  {&(_tg__ZTV8S7222C118S7222C18__8S7222C17[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C118S7222C18__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C118S7222C18__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C118S7222C18__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C118S7222C18__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C118S7222C18__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C118S7222C18__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C118S7222C18__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C118S7222C18__8S7222C17[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C118S7222C18__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C118S7222C18__8S7222C17[8]),  8,11},
  {&(_tg__ZTV7S7222C58S7222C18__A3__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C18__A3__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C18__A3__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C78S7222C18__A1__8S7222C17[3]),  3,5},
  {&(_tg__ZTV8S7222C128S7222C18__A2__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C18__A4__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C18__A4__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C18__A4__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C18__A2__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C18__A2__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C18__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C18__8S7222C17[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C18__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C18__8S7222C17[8]),  8,11},
  {&(_tg__ZTV7S7222C5__A3__8S7222C18__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__A__8S7222C18__8S7222C17[3]),  3,5},
  {&(_tg__ZTV8S7222C12__A__8S7222C18__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C7__8S7222C17[3]),  3,5},
  {&(_tg__ZTV8S7222C14__8S7222C17[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A2__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A2__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A2__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__8S7222C17[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__8S7222C17[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__8S7222C17[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A1__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A1__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A1__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C3__8S7222C17[9]),  9,13},
  {&(_tg__ZTV7S7222C47S7222C3__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C47S7222C3__A6__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__A6__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__A6__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C47S7222C3__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C47S7222C3__8S7222C17[4]),  4,6},
  {&(_tg__ZTV8S7222C127S7222C3__A5__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C127S7222C3__A8__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A8__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A8__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C127S7222C3__A5__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C127S7222C3__A5__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C7__7S7222C3__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C3__8S7222C17[4]),  4,6},
  {&(_tg__ZTV8S7222C10__7S7222C3__8S7222C17[9]),  9,11},
  {&(_tg__ZTV8S7222C11__7S7222C3__8S7222C17[11]),  11,15},
  {&(_tg__ZTV8S7222C14__7S7222C3__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__7S7222C3__8S7222C17[8]),  8,11},
  {&(_tg__ZTV8S7222C12__A__7S7222C3__8S7222C17[5]),  5,8},
  {&(_tg__ZTV8S7222C10__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C11__8S7222C10__8S7222C17[11]),  11,15},
  {&(_tg__ZTV7S7222C8__8S7222C10__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C10__8S7222C17[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C10__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10__8S7222C17[8]),  8,11},
  {&(_tg__ZTV8S7222C11__A2__8S7222C17[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__A4__8S7222C17[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A7__8S7222C17[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A7__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A7__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__A4__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__A4__8S7222C17[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__A2__8S7222C17[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__A2__8S7222C17[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__A2__8S7222C17[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__A2__8S7222C17[8]),  8,11},
};
extern VTBL_ENTRY _ZTI8S7222C17[];
extern  VTBL_ENTRY _ZTV8S7222C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C17[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7222C3D0Ev,_ZThn5976_N7S7222C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N7S7222C3D1Ev,_ZThn5976_N7S7222C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C17D0Ev,_ZTv0_n36_N8S7222C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S7222C17D0Ev,_ZThn28184_N8S7222C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C17D1Ev,_ZTv0_n36_N8S7222C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S7222C17D1Ev,_ZThn28184_N8S7222C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C17D0Ev,_ZTv0_n48_N8S7222C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S7222C17D0Ev,_ZThn22208_N8S7222C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C17D1Ev,_ZTv0_n48_N8S7222C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S7222C17D1Ev,_ZThn22208_N8S7222C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7222C17 = {  "S7222C17", // class name
  bases_S7222C17, 37,
  &(vtc_S7222C17[0]), // expected_vtbl_contents
  &(vtt_S7222C17[0]), // expected_vtt_contents
  ABISELECT(39552,29692), // object size
  NSPAIRA(_ZTI8S7222C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7222C17),152, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7222C17),106, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7222C1  : S7222C2 , virtual S7222C4 , S7222C15 {
  int s7222c1f0[9];
  int s7222c1f1;
  void *s7222c1f2;
  int s7222c1f3[9];
  ::S7222C17 s7222c1f4;
  ::S7222C7 s7222c1f5;
  void *s7222c1f6;
  ~S7222C1(); // tgen
  S7222C1(); // tgen
};
//SIG(1 S7222C1) C1{ BC2{ VBC3{ BC4{ BC5{ VBC6{ m Fi} VBC7{ VBC6 BC8{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC8 v3 FL[8] Fp[7] Fs} v4 FL FC7 Fs Fc Fi[2] Fp FC9{} Fi FL} VBC10{ VBC11{ VBC8 BC12{ BC6 VBC8 VBC7 BC5 v5 v6 FU13{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC14{ VBC7 VBC12 BC5 v7 Fp Fs[2] FD[2] Fc FC7 FD FC5} v8 Fi Fc Fc:1} vd FC11 Fs:5 Fl} BC12 FC4[9] Fi Fs:16 FC5 Fi Fs Fp FL FC7} BC11 BC14 BC6 BC12 FL FL FL Fc FL Fp FC14[9] FD[7] Fi} VBC4 BC15{ BC16{ BC7 VBC8 VBC12 BC6 VBC3 vd v9 Fi Fp Fc Fi:1 Fp FC3 FC6[6] Fp FC10 Fi:5 FL} v10 Fp FL Fp Fp FC9 FL FD} Fi[9] Fi Fp Fi[9] FC17{ VBC18{ VBC8 BC11 BC5 BC7 BC12 v11 v12 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC7 BC11 VBC3 FC16 Fp Fc[7] Fc:0 FC6 Fi[7]} FC7 Fp}


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

static void Test_S7222C1()
{
  extern Class_Descriptor cd_S7222C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5135,15360)];
    init_test(&cd_S7222C1, buf);
    S7222C1 *dp, &lv = *(dp=new (buf) S7222C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(82144,61436), "sizeof(S7222C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7222C1)");
    check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C11*)(S7222C2*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C14*)(S7222C2*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C12*)(S7222C2*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C5*)(S7222C4*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C7*)(S7222C16*)(S7222C15*), ABISELECT(78176,58532), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*), ABISELECT(78192,58536), "S7222C1");
    check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C14*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C3*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C11*)(S7222C2*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C11*)(S7222C2*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C14*)(S7222C2*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C14*)(S7222C2*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C12*)(S7222C2*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C12*)(S7222C2*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C4 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C5*)(S7222C4*), ABISELECT(78192,58536), "S7222C1");
    /*is_ambiguous_... S7222C5::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C3*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C11*)(S7222C2*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C11*)(S7222C2*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C11*)(S7222C2*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C14*)(S7222C2*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C12*)(S7222C2*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C12*)(S7222C2*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C4 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C5*)(S7222C4*), ABISELECT(78368,58676), "S7222C1");
    /*is_ambiguous_... S7222C16::S7222C8 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C16*)(S7222C15*), ABISELECT(78368,58676), "S7222C1");
    check_base_class_offset(lv, (S7222C5*)(S7222C4*)(S7222C3*), ABISELECT(70336,52556), "S7222C1");
    check_base_class_offset(lv, (S7222C4*)(S7222C3*), ABISELECT(70336,52556), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*), ABISELECT(80468,60216), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*), ABISELECT(80336,60116), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*), ABISELECT(80336,60116), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*), ABISELECT(81636,61068), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*), ABISELECT(81504,60968), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C14*), ABISELECT(81504,60968), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C14*)(S7222C2*), ABISELECT(81504,60968), "S7222C1");
    /*is_ambiguous_... S7222C16::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C16*)(S7222C15*), ABISELECT(81504,60968), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*), ABISELECT(80608,60308), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C11*), ABISELECT(80608,60308), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C11*)(S7222C2*), ABISELECT(80608,60308), "S7222C1");
    check_base_class_offset(lv, (S7222C11*)(S7222C10*), ABISELECT(80336,60116), "S7222C1");
    check_base_class_offset(lv, (S7222C10*)(S7222C3*), ABISELECT(78528,58800), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C3*), ABISELECT(70844,52940), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C3*), ABISELECT(70712,52840), "S7222C1");
    /*is_ambiguous_... S7222C3::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C3*), ABISELECT(70712,52840), "S7222C1");
    check_base_class_offset(lv, (S7222C3*)(S7222C2*), ABISELECT(70336,52556), "S7222C1");
    check_base_class_offset(lv, (S7222C3*)(S7222C16*)(S7222C15*), ABISELECT(70336,52556), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C11*)(S7222C2*), ABISELECT(132,100), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C11*)(S7222C2*), 0, "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C11*)(S7222C2*), 0, "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C11 */ AMB_check_base_class_offset(lv, (S7222C11*)(S7222C2*), 0, "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C14*)(S7222C2*), ABISELECT(272,192), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C14 */ AMB_check_base_class_offset(lv, (S7222C14*)(S7222C2*), ABISELECT(272,192), "S7222C1");
    /*is_ambiguous_... S7222C2::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C2*), ABISELECT(1168,852), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C12*)(S7222C2*), ABISELECT(1308,956), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C12*)(S7222C2*), ABISELECT(1176,856), "S7222C1");
    /*is_ambiguous_... S7222C2::S7222C12 */ AMB_check_base_class_offset(lv, (S7222C12*)(S7222C2*), ABISELECT(1176,856), "S7222C1");
    check_base_class_offset(lv, (S7222C2*), 0, "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C4 */ AMB_check_base_class_offset(lv, (S7222C5*)(S7222C4*), ABISELECT(81760,61152), "S7222C1");
    /*is_ambiguous_... S7222C1::S7222C4 */ AMB_check_base_class_offset(lv, (S7222C4*), ABISELECT(81760,61152), "S7222C1");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C8*)(S7222C7*)(S7222C16*)(S7222C15*), ABISELECT(15152,11176), "S7222C1");
    /*is_ambiguous_... S7222C16::S7222C7 */ AMB_check_base_class_offset(lv, (S7222C7*)(S7222C16*)(S7222C15*), ABISELECT(15152,11176), "S7222C1");
    /*is_ambiguous_... S7222C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7222C16*)(S7222C15*), ABISELECT(15328,11316), "S7222C1");
    check_base_class_offset(lv, (S7222C16*)(S7222C15*), ABISELECT(15152,11176), "S7222C1");
    check_base_class_offset(lv, (S7222C15*), ABISELECT(15152,11176), "S7222C1");
    check_field_offset(lv, s7222c1f0, ABISELECT(30480,22636), "S7222C1.s7222c1f0");
    check_field_offset(lv, s7222c1f1, ABISELECT(30516,22672), "S7222C1.s7222c1f1");
    check_field_offset(lv, s7222c1f2, ABISELECT(30520,22676), "S7222C1.s7222c1f2");
    check_field_offset(lv, s7222c1f3, ABISELECT(30528,22680), "S7222C1.s7222c1f3");
    check_field_offset(lv, s7222c1f4, ABISELECT(30576,22716), "S7222C1.s7222c1f4");
    check_field_offset(lv, s7222c1f5, ABISELECT(70128,52408), "S7222C1.s7222c1f5");
    check_field_offset(lv, s7222c1f6, ABISELECT(70320,52552), "S7222C1.s7222c1f6");
    test_class_info(&lv, &cd_S7222C1);
    dp->~S7222C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7222C1(Test_S7222C1, "S7222C1", ABISELECT(82144,61436));

#else // __cplusplus

extern void _ZN7S7222C1C1Ev();
extern void _ZN7S7222C1D1Ev();
Name_Map name_map_S7222C1[] = {
  NSPAIR(_ZN7S7222C1C1Ev),
  NSPAIR(_ZN7S7222C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C10;
extern VTBL_ENTRY _ZTI8S7222C10[];
extern  VTBL_ENTRY _ZTV8S7222C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C10[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C3;
extern VTBL_ENTRY _ZTI7S7222C3[];
extern  VTBL_ENTRY _ZTV7S7222C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C3[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C11;
extern VTBL_ENTRY _ZTI8S7222C11[];
extern  VTBL_ENTRY _ZTV8S7222C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C11[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C14;
extern VTBL_ENTRY _ZTI8S7222C14[];
extern  VTBL_ENTRY _ZTV8S7222C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C14[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C12;
extern VTBL_ENTRY _ZTI8S7222C12[];
extern  VTBL_ENTRY _ZTV8S7222C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C12[];
extern Class_Descriptor cd_S7222C2;
extern VTBL_ENTRY _ZTI7S7222C2[];
extern  VTBL_ENTRY _ZTV7S7222C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C2[];
extern Class_Descriptor cd_S7222C5;
extern VTBL_ENTRY _ZTI7S7222C5[];
extern  VTBL_ENTRY _ZTV7S7222C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C5[];
extern Class_Descriptor cd_S7222C4;
extern VTBL_ENTRY _ZTI7S7222C4[];
extern  VTBL_ENTRY _ZTV7S7222C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C4[];
extern Class_Descriptor cd_S7222C8;
extern VTBL_ENTRY _ZTI7S7222C8[];
extern  VTBL_ENTRY _ZTV7S7222C8[];
extern Class_Descriptor cd_S7222C7;
extern VTBL_ENTRY _ZTI7S7222C7[];
extern  VTBL_ENTRY _ZTV7S7222C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7222C16;
extern VTBL_ENTRY _ZTI8S7222C16[];
extern  VTBL_ENTRY _ZTV8S7222C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C16[];
extern Class_Descriptor cd_S7222C15;
extern VTBL_ENTRY _ZTI8S7222C15[];
extern  VTBL_ENTRY _ZTV8S7222C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7222C15[];
static Base_Class bases_S7222C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(78176,58532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C8,    ABISELECT(78192,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(78192,58536), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C8,    ABISELECT(78368,58676), //bcp->offset
    82, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(70336,52556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7222C4,    ABISELECT(70336,52556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(80468,60216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(80336,60116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(80336,60116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(81636,61068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7222C5,    ABISELECT(81504,60968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(81504,60968), //bcp->offset
    124, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7222C5,    ABISELECT(80608,60308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(80608,60308), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7222C11,    ABISELECT(80336,60116), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7222C10,    ABISELECT(78528,58800), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(70844,52940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C5,    ABISELECT(70712,52840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(70712,52840), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7222C3,    ABISELECT(70336,52556), //bcp->offset
    49, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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
    22, //immediately_derived
  0, 0},
  {&cd_S7222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7222C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7222C11,    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
    21, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7222C14,    ABISELECT(272,192), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(1168,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1538C9_nt,    ABISELECT(1308,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
    29, //immediately_derived
  0, 0},
  {&cd_S7222C5,    ABISELECT(1176,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7222C12,    ABISELECT(1176,856), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7222C2,    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_S7222C5,    ABISELECT(81760,61152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7222C4,    ABISELECT(81760,61152), //bcp->offset
    135, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7222C8,    ABISELECT(15152,11176), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S7222C7,    ABISELECT(15152,11176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(15328,11316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7222C16,    ABISELECT(15152,11176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7222C15,    ABISELECT(15152,11176), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7222C1[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C1D1Ev();
extern void _ZN7S7222C1D0Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void ABISELECT(_ZThn15152_N7S7222C1D1Ev,_ZThn11176_N7S7222C1D1Ev)();
extern void ABISELECT(_ZThn15152_N7S7222C1D0Ev,_ZThn11176_N7S7222C1D0Ev)();
extern void _ZN8S7222C162v9Ev();
extern void _ZN8S7222C153v10Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N7S7222C1D1Ev,_ZTv0_n48_N7S7222C1D1Ev)();
extern void ABISELECT(_ZThn70336_N7S7222C1D1Ev,_ZThn52556_N7S7222C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7222C1D0Ev,_ZTv0_n48_N7S7222C1D0Ev)();
extern void ABISELECT(_ZThn70336_N7S7222C1D0Ev,_ZThn52556_N7S7222C1D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S7222C1D1Ev,_ZTv0_n36_N7S7222C1D1Ev)();
extern void ABISELECT(_ZThn78528_N7S7222C1D1Ev,_ZThn58800_N7S7222C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C1D0Ev,_ZTv0_n36_N7S7222C1D0Ev)();
extern void ABISELECT(_ZThn78528_N7S7222C1D0Ev,_ZThn58800_N7S7222C1D0Ev)() __attribute__((weak));
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY vtc_S7222C1[] = {
  ABISELECT(81760,61152),
  ABISELECT(80336,60116),
  ABISELECT(78528,58800),
  ABISELECT(70336,52556),
  ABISELECT(81504,60968),
  ABISELECT(80608,60308),
  ABISELECT(78368,58676),
  ABISELECT(78192,58536),
  ABISELECT(78176,58532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  (VTBL_ENTRY)&_ZN7S7222C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C1D0Ev,
  ABISELECT(81232,60776),
  ABISELECT(78096,58484),
  ABISELECT(77920,58344),
  ABISELECT(77904,58340),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  ABISELECT(77192,57820),
  ABISELECT(77016,57680),
  ABISELECT(77000,57676),
  ABISELECT(-1176,-856),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  ABISELECT(65456,49132),
  ABISELECT(65184,48940),
  ABISELECT(63376,47624),
  ABISELECT(55184,41380),
  ABISELECT(63040,47360),
  ABISELECT(66352,49792),
  ABISELECT(63216,47500),
  ABISELECT(63024,47356),
  ABISELECT(-15152,-11176),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn15152_N7S7222C1D1Ev,_ZThn11176_N7S7222C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15152_N7S7222C1D0Ev,_ZThn11176_N7S7222C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7222C162v9Ev,
  (VTBL_ENTRY)&_ZN8S7222C153v10Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-70336,-52556),
  0,
  0,
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  ABISELECT(-70336,-52556),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7222C1D1Ev,_ZTv0_n48_N7S7222C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7222C1D0Ev,_ZTv0_n48_N7S7222C1D0Ev),
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-70712,-52840),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58536),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  0,
  0,
  ABISELECT(-78368,-58676),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  ABISELECT(-78528,-58800),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-78528,-58800),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C1D1Ev,_ZTv0_n36_N7S7222C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C1D0Ev,_ZTv0_n36_N7S7222C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-80336,-60116),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-80608,-60308),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81504,-60968),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  0,
  0,
  ABISELECT(-3392,-2476),
  ABISELECT(-3568,-2616),
  ABISELECT(-3584,-2620),
  ABISELECT(-81760,-61152),
  (VTBL_ENTRY)&(_ZTI7S7222C1[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7222C1[];
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
extern void _ZN7S7222C2D1Ev();
extern void _ZN7S7222C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C2__7S7222C1[] = {
  ABISELECT(80336,60116),
  ABISELECT(78528,58800),
  ABISELECT(70336,52556),
  ABISELECT(81504,60968),
  ABISELECT(80608,60308),
  ABISELECT(78368,58676),
  ABISELECT(78192,58536),
  ABISELECT(78176,58532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
  (VTBL_ENTRY)&_ZN7S7222C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C2D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C117S7222C2__A1__7S7222C1[] = {
  ABISELECT(81504,60968),
  ABISELECT(80608,60308),
  ABISELECT(78368,58676),
  ABISELECT(78192,58536),
  ABISELECT(78176,58532),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C117S7222C2__A3__7S7222C1[] = {
  ABISELECT(78368,58676),
  ABISELECT(78192,58536),
  ABISELECT(78176,58532),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C117S7222C2__A5__7S7222C1[] = {
  ABISELECT(78368,58676),
  ABISELECT(78192,58536),
  ABISELECT(78176,58532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C117S7222C2__A5__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58536),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C117S7222C2__A5__7S7222C1[] = {
  0,
  0,
  ABISELECT(-78368,-58676),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C117S7222C2__A3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-78368,-58676),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C117S7222C2__A3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58536),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C117S7222C2__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-78368,-58676),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C117S7222C2__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58536),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C117S7222C2__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-80608,-60308),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C117S7222C2__A1__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81504,-60968),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C147S7222C2__A1__7S7222C1[] = {
  ABISELECT(81232,60776),
  ABISELECT(78096,58484),
  ABISELECT(77920,58344),
  ABISELECT(77904,58340),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C147S7222C2__A6__7S7222C1[] = {
  ABISELECT(78096,58484),
  ABISELECT(77920,58344),
  ABISELECT(77904,58340),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C147S7222C2__A6__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77920,-58344),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C147S7222C2__A6__7S7222C1[] = {
  0,
  0,
  ABISELECT(-78096,-58484),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C147S7222C2__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77920,-58344),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C147S7222C2__A1__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81232,-60776),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C147S7222C2__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-78096,-58484),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C2__A4__7S7222C1[] = {
  ABISELECT(77192,57820),
  ABISELECT(77016,57680),
  ABISELECT(77000,57676),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C127S7222C2__A7__7S7222C1[] = {
  ABISELECT(77192,57820),
  ABISELECT(77016,57680),
  ABISELECT(77000,57676),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C127S7222C2__A7__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77016,-57680),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C2__A7__7S7222C1[] = {
  0,
  0,
  ABISELECT(-77192,-57820),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C127S7222C2__A4__7S7222C1[] = {
  0,
  0,
  ABISELECT(-77192,-57820),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C127S7222C2__A4__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-77016,-57680),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N7S7222C2D1Ev,_ZTv0_n48_N7S7222C2D1Ev)();
extern void ABISELECT(_ZThn70336_N7S7222C2D1Ev,_ZThn52556_N7S7222C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7222C2D0Ev,_ZTv0_n48_N7S7222C2D0Ev)();
extern void ABISELECT(_ZThn70336_N7S7222C2D0Ev,_ZThn52556_N7S7222C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7222C3__7S7222C2__7S7222C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-70336,-52556),
  0,
  0,
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  ABISELECT(-70336,-52556),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7222C2D1Ev,_ZTv0_n48_N7S7222C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7222C2D0Ev,_ZTv0_n48_N7S7222C2D0Ev),
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C2__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-78192,-58536),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C2__7S7222C1[] = {
  0,
  0,
  ABISELECT(-78368,-58676),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7222C2D1Ev,_ZTv0_n36_N7S7222C2D1Ev)();
extern void ABISELECT(_ZThn78528_N7S7222C2D1Ev,_ZThn58800_N7S7222C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C2D0Ev,_ZTv0_n36_N7S7222C2D0Ev)();
extern void ABISELECT(_ZThn78528_N7S7222C2D0Ev,_ZThn58800_N7S7222C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C2__7S7222C1[] = {
  ABISELECT(-78528,-58800),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-78528,-58800),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C2D1Ev,_ZTv0_n36_N7S7222C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C2D0Ev,_ZTv0_n36_N7S7222C2D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C2__7S7222C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-80336,-60116),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C2__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-80608,-60308),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C2__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-81504,-60968),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__7S7222C2__7S7222C1[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-70712,-52840),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__A__7S7222C2__7S7222C1[] = {
  ABISELECT(81232,60776),
  ABISELECT(78096,58484),
  ABISELECT(77920,58344),
  ABISELECT(77904,58340),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C2__7S7222C1[] = {
  ABISELECT(77192,57820),
  ABISELECT(77016,57680),
  ABISELECT(77000,57676),
  ABISELECT(-1176,-856),
  (VTBL_ENTRY)&(_ZTI7S7222C2[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN8S7222C15D1Ev();
extern void _ZN8S7222C15D0Ev();
extern void _ZN8S7222C162v9Ev();
extern void _ZN8S7222C153v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C15__7S7222C1[] = {
  ABISELECT(65456,49132),
  ABISELECT(65184,48940),
  ABISELECT(63376,47624),
  ABISELECT(55184,41380),
  ABISELECT(63040,47360),
  ABISELECT(66352,49792),
  ABISELECT(63216,47500),
  ABISELECT(63024,47356),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7222C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7222C162v9Ev,
  (VTBL_ENTRY)&_ZN8S7222C153v10Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
extern void _ZN8S7222C16D1Ev();
extern void _ZN8S7222C16D0Ev();
extern void _ZN8S7222C162v9Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C168S7222C15__7S7222C1[] = {
  ABISELECT(65456,49132),
  ABISELECT(65184,48940),
  ABISELECT(63376,47624),
  ABISELECT(55184,41380),
  ABISELECT(63040,47360),
  ABISELECT(66352,49792),
  ABISELECT(63216,47500),
  ABISELECT(63024,47356),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
  (VTBL_ENTRY)&_ZN8S7222C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7222C162v9Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C78S7222C168S7222C15__A1__7S7222C1[] = {
  ABISELECT(63024,47356),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C168S7222C15__7S7222C1[] = {
  0,
  0,
  ABISELECT(-63216,-47500),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C168S7222C15__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-66352,-49792),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A1__8S7222C168S7222C15__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-63040,-47360),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev)();
extern void ABISELECT(_ZThn55184_N8S7222C16D1Ev,_ZThn41380_N8S7222C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev)();
extern void ABISELECT(_ZThn55184_N8S7222C16D0Ev,_ZThn41380_N8S7222C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7222C3__8S7222C168S7222C15__7S7222C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-55184,-41380),
  0,
  0,
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  ABISELECT(-55184,-41380),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev)();
extern void ABISELECT(_ZThn63376_N8S7222C16D1Ev,_ZThn47624_N8S7222C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev)();
extern void ABISELECT(_ZThn63376_N8S7222C16D0Ev,_ZThn47624_N8S7222C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__8S7222C168S7222C15__7S7222C1[] = {
  ABISELECT(-63376,-47624),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-63376,-47624),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C168S7222C15__7S7222C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-65184,-48940),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C168S7222C15__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-65456,-49132),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__8S7222C168S7222C15__7S7222C1[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-55560,-41664),
  (VTBL_ENTRY)&(_ZTI8S7222C16[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C15__7S7222C1[] = {
  0,
  0,
  ABISELECT(-63216,-47500),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C15__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-66352,-49792),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__A1__8S7222C15__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-63040,-47360),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S7222C15D1Ev,_ZTv0_n48_N8S7222C15D1Ev)();
extern void ABISELECT(_ZThn55184_N8S7222C15D1Ev,_ZThn41380_N8S7222C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7222C15D0Ev,_ZTv0_n48_N8S7222C15D0Ev)();
extern void ABISELECT(_ZThn55184_N8S7222C15D0Ev,_ZThn41380_N8S7222C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7222C3__8S7222C15__7S7222C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-55184,-41380),
  0,
  0,
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  ABISELECT(-55184,-41380),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C15D1Ev,_ZTv0_n48_N8S7222C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7222C15D0Ev,_ZTv0_n48_N8S7222C15D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7222C15D1Ev,_ZTv0_n36_N8S7222C15D1Ev)();
extern void ABISELECT(_ZThn63376_N8S7222C15D1Ev,_ZThn47624_N8S7222C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7222C15D0Ev,_ZTv0_n36_N8S7222C15D0Ev)();
extern void ABISELECT(_ZThn63376_N8S7222C15D0Ev,_ZThn47624_N8S7222C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__8S7222C15__7S7222C1[] = {
  ABISELECT(-63376,-47624),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-63376,-47624),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C15D1Ev,_ZTv0_n36_N8S7222C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7222C15D0Ev,_ZTv0_n36_N8S7222C15D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C15__7S7222C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-65184,-48940),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C15__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-65456,-49132),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__8S7222C15__7S7222C1[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-55560,-41664),
  (VTBL_ENTRY)&(_ZTI8S7222C15[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
extern void _ZN7S7222C3D1Ev();
extern void _ZN7S7222C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C3__7S7222C1[] = {
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7222C3D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C47S7222C3__7S7222C1[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C47S7222C3__7S7222C1[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C47S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C47S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C127S7222C3__A2__7S7222C1[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C127S7222C3__A4__7S7222C1[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__7S7222C1[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C127S7222C3__A2__7S7222C1[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C127S7222C3__A2__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev)();
extern void ABISELECT(_ZThn8192_N7S7222C3D1Ev,_ZThn6244_N7S7222C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev)();
extern void ABISELECT(_ZThn8192_N7S7222C3D0Ev,_ZThn6244_N7S7222C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C3__7S7222C1[] = {
  ABISELECT(-8192,-6244),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6244),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev),
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C3__7S7222C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7560),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C3__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7752),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C3__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8412),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A__7S7222C3__7S7222C1[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI7S7222C3[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C7[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN8S7222C10D1Ev();
extern void _ZN8S7222C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C10__7S7222C1[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN8S7222C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7222C10D0Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__8S7222C10__7S7222C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C10__7S7222C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C10__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C10__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C10__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI8S7222C10[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
extern void _ZN8S7222C112v8Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C11__7S7222C1[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
  (VTBL_ENTRY)&_ZN8S7222C112v8Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C128S7222C11__7S7222C1[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C128S7222C11__A1__7S7222C1[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C128S7222C11__7S7222C1[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C128S7222C11__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C11__7S7222C1[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C11__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__8S7222C11__7S7222C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__8S7222C11__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S7222C11[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C14__7S7222C1[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C142v7Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C14__A3__7S7222C1[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C14__A3__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__7S7222C1[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C14__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__8S7222C14__7S7222C1[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__8S7222C14__7S7222C1[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S7222C14[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN8S7222C122v5Ev();
extern void _ZN8S7222C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7222C12__A1__7S7222C1[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v5Ev,
  (VTBL_ENTRY)&_ZN8S7222C122v6Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C58S7222C12__A2__7S7222C1[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C58S7222C12__A2__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A2__7S7222C1[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__8S7222C12__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__8S7222C12__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S7222C12[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C52v3Ev();
extern void _ZN7S7222C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C4__A1__7S7222C1[] = {
  ABISELECT(-3392,-2476),
  ABISELECT(-3568,-2616),
  ABISELECT(-3584,-2620),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7222C42v4Ev,
};
extern void _ZN7S7222C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C57S7222C4__A8__7S7222C1[] = {
  ABISELECT(-3392,-2476),
  ABISELECT(-3568,-2616),
  ABISELECT(-3584,-2620),
  0,
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C52v3Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C57S7222C4__A8__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3568,2616),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C57S7222C4__A8__7S7222C1[] = {
  0,
  0,
  ABISELECT(3392,2476),
  (VTBL_ENTRY)&(_ZTI7S7222C5[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C7__7S7222C4__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3568,2616),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
extern void _ZN7S7222C82v1Ev();
extern void _ZN7S7222C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7222C8__A1__7S7222C4__A1__7S7222C1[] = {
  0,
  0,
  ABISELECT(3392,2476),
  (VTBL_ENTRY)&(_ZTI7S7222C4[0]),
  (VTBL_ENTRY)&_ZN7S7222C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7222C82v2Ev,
};
static  VTT_ENTRY vtt_S7222C1[] = {
  {&(_ZTV7S7222C1[11]),  11,144},
  {&(_tg__ZTV7S7222C2__7S7222C1[10]),  10,16},
  {&(_tg__ZTV8S7222C117S7222C2__A1__7S7222C1[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C117S7222C2__A3__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C117S7222C2__A5__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C117S7222C2__A5__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C117S7222C2__A5__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C117S7222C2__A3__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C117S7222C2__A3__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C117S7222C2__A1__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C117S7222C2__A1__7S7222C1[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C117S7222C2__A1__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C117S7222C2__A1__7S7222C1[8]),  8,11},
  {&(_tg__ZTV8S7222C147S7222C2__A1__7S7222C1[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C147S7222C2__A6__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C147S7222C2__A6__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C147S7222C2__A6__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C147S7222C2__A1__7S7222C1[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C147S7222C2__A1__7S7222C1[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C147S7222C2__A1__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C127S7222C2__A4__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C127S7222C2__A7__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C127S7222C2__A7__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C2__A7__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C127S7222C2__A4__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C127S7222C2__A4__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C3__7S7222C2__7S7222C1[14]),  14,18},
  {&(_tg__ZTV7S7222C7__7S7222C2__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C2__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C10__7S7222C2__7S7222C1[9]),  9,11},
  {&(_tg__ZTV8S7222C11__7S7222C2__7S7222C1[11]),  11,15},
  {&(_tg__ZTV8S7222C14__7S7222C2__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__7S7222C2__7S7222C1[8]),  8,11},
  {&(_tg__ZTV8S7222C127S7222C3__A2__7S7222C2__7S7222C1[5]),  5,8},
  {&(_tg__ZTV8S7222C14__A__7S7222C2__7S7222C1[6]),  6,8},
  {&(_tg__ZTV8S7222C12__A__7S7222C2__7S7222C1[5]),  5,8},
  {&(_tg__ZTV8S7222C15__7S7222C1[10]),  10,16},
  {&(_tg__ZTV8S7222C168S7222C15__7S7222C1[10]),  10,15},
  {&(_tg__ZTV7S7222C78S7222C168S7222C15__A1__7S7222C1[3]),  3,5},
  {&(_tg__ZTV7S7222C8__A1__8S7222C168S7222C15__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C12__8S7222C168S7222C15__7S7222C1[8]),  8,11},
  {&(_tg__ZTV7S7222C7__A1__8S7222C168S7222C15__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C3__8S7222C168S7222C15__7S7222C1[14]),  14,18},
  {&(_tg__ZTV8S7222C10__8S7222C168S7222C15__7S7222C1[9]),  9,11},
  {&(_tg__ZTV8S7222C11__8S7222C168S7222C15__7S7222C1[11]),  11,15},
  {&(_tg__ZTV8S7222C14__8S7222C168S7222C15__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C127S7222C3__A2__8S7222C168S7222C15__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C8__A1__8S7222C15__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C12__8S7222C15__7S7222C1[8]),  8,11},
  {&(_tg__ZTV7S7222C7__A1__8S7222C15__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C3__8S7222C15__7S7222C1[14]),  14,18},
  {&(_tg__ZTV8S7222C10__8S7222C15__7S7222C1[9]),  9,11},
  {&(_tg__ZTV8S7222C11__8S7222C15__7S7222C1[11]),  11,15},
  {&(_tg__ZTV8S7222C14__8S7222C15__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C127S7222C3__A2__8S7222C15__7S7222C1[5]),  5,8},
  {&(_ZTV7S7222C1[63]),  63,144},
  {&(_ZTV7S7222C1[80]),  80,144},
  {&(_ZTV7S7222C1[86]),  86,144},
  {&(_ZTV7S7222C1[97]),  97,144},
  {&(_ZTV7S7222C1[110]),  110,144},
  {&(_ZTV7S7222C1[122]),  122,144},
  {&(_ZTV7S7222C1[132]),  132,144},
  {&(_ZTV7S7222C1[72]),  72,144},
  {&(_ZTV7S7222C1[23]),  23,144},
  {&(_ZTV7S7222C1[30]),  30,144},
  {&(_ZTV7S7222C1[142]),  142,144},
  {&(_ZTV7S7222C1[43]),  43,144},
  {&(_tg__ZTV7S7222C3__7S7222C1[9]),  9,13},
  {&(_tg__ZTV7S7222C47S7222C3__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C47S7222C3__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C47S7222C3__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C47S7222C3__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C47S7222C3__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C47S7222C3__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C127S7222C3__A2__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C127S7222C3__A4__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C127S7222C3__A4__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C127S7222C3__A4__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C127S7222C3__A2__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C127S7222C3__A2__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C7__7S7222C3__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C3__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C10__7S7222C3__7S7222C1[9]),  9,11},
  {&(_tg__ZTV8S7222C11__7S7222C3__7S7222C1[11]),  11,15},
  {&(_tg__ZTV8S7222C14__7S7222C3__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__7S7222C3__7S7222C1[8]),  8,11},
  {&(_tg__ZTV8S7222C12__A__7S7222C3__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C7__7S7222C1[3]),  3,5},
  {&(_tg__ZTV8S7222C10__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C11__8S7222C10__7S7222C1[11]),  11,15},
  {&(_tg__ZTV7S7222C8__8S7222C10__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C10__7S7222C1[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C10__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C10__7S7222C1[8]),  8,11},
  {&(_tg__ZTV8S7222C11__7S7222C1[7]),  7,11},
  {&(_tg__ZTV8S7222C128S7222C11__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C128S7222C11__A1__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C128S7222C11__A1__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C128S7222C11__A1__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C128S7222C11__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C128S7222C11__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__8S7222C11__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C11__7S7222C1[5]),  5,7},
  {&(_tg__ZTV8S7222C14__8S7222C11__7S7222C1[8]),  8,10},
  {&(_tg__ZTV8S7222C12__A1__8S7222C11__7S7222C1[8]),  8,11},
  {&(_tg__ZTV8S7222C14__7S7222C1[6]),  6,8},
  {&(_tg__ZTV7S7222C58S7222C14__A3__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C14__A3__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C14__A3__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C14__7S7222C1[5]),  5,7},
  {&(_tg__ZTV8S7222C12__8S7222C14__7S7222C1[8]),  8,11},
  {&(_tg__ZTV7S7222C8__A1__8S7222C14__7S7222C1[4]),  4,6},
  {&(_tg__ZTV8S7222C12__A1__7S7222C1[5]),  5,8},
  {&(_tg__ZTV7S7222C58S7222C12__A2__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C58S7222C12__A2__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C58S7222C12__A2__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C8__8S7222C12__A1__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__8S7222C12__A1__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C4__A1__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C57S7222C4__A8__7S7222C1[5]),  5,6},
  {&(_tg__ZTV7S7222C7__7S7222C57S7222C4__A8__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C57S7222C4__A8__7S7222C1[4]),  4,6},
  {&(_tg__ZTV7S7222C7__7S7222C4__A1__7S7222C1[5]),  5,7},
  {&(_tg__ZTV7S7222C8__A1__7S7222C4__A1__7S7222C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7222C1[];
extern  VTBL_ENTRY _ZTV7S7222C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7222C1[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D0Ev,_ZTv0_n36_N7S7222C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7222C3D0Ev,_ZThn6244_N7S7222C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C3D1Ev,_ZTv0_n36_N7S7222C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N7S7222C3D1Ev,_ZThn6244_N7S7222C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C15D0Ev,_ZTv0_n36_N8S7222C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7222C15D0Ev,_ZThn47624_N8S7222C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C15D1Ev,_ZTv0_n36_N8S7222C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7222C15D1Ev,_ZThn47624_N8S7222C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C15D0Ev,_ZTv0_n48_N8S7222C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7222C15D0Ev,_ZThn41380_N8S7222C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C15D1Ev,_ZTv0_n48_N8S7222C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7222C15D1Ev,_ZThn41380_N8S7222C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C16D0Ev,_ZTv0_n36_N8S7222C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7222C16D0Ev,_ZThn47624_N8S7222C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7222C16D1Ev,_ZTv0_n36_N8S7222C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63376_N8S7222C16D1Ev,_ZThn47624_N8S7222C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C16D0Ev,_ZTv0_n48_N8S7222C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7222C16D0Ev,_ZThn41380_N8S7222C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7222C16D1Ev,_ZTv0_n48_N8S7222C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55184_N8S7222C16D1Ev,_ZThn41380_N8S7222C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C2D0Ev,_ZTv0_n36_N7S7222C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7222C2D0Ev,_ZThn58800_N7S7222C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C2D1Ev,_ZTv0_n36_N7S7222C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7222C2D1Ev,_ZThn58800_N7S7222C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7222C2D0Ev,_ZTv0_n48_N7S7222C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7222C2D0Ev,_ZThn52556_N7S7222C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7222C2D1Ev,_ZTv0_n48_N7S7222C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7222C2D1Ev,_ZThn52556_N7S7222C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C1D0Ev,_ZTv0_n36_N7S7222C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7222C1D0Ev,_ZThn58800_N7S7222C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7222C1D1Ev,_ZTv0_n36_N7S7222C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn78528_N7S7222C1D1Ev,_ZThn58800_N7S7222C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7222C1D0Ev,_ZTv0_n48_N7S7222C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7222C1D0Ev,_ZThn52556_N7S7222C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7222C1D1Ev,_ZTv0_n48_N7S7222C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn70336_N7S7222C1D1Ev,_ZThn52556_N7S7222C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7222C1 = {  "S7222C1", // class name
  bases_S7222C1, 38,
  &(vtc_S7222C1[0]), // expected_vtbl_contents
  &(vtt_S7222C1[0]), // expected_vtt_contents
  ABISELECT(82144,61436), // object size
  NSPAIRA(_ZTI7S7222C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7222C1),144, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7222C1),124, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C4  {
  __tsi64 s20640c4f0[9];
  void *s20640c4f1;
  long double s20640c4f2;
  void *s20640c4f3;
  char s20640c4f4;
  short s20640c4f5[6];
  void *s20640c4f6;
  char s20640c4f7:4;
  void *s20640c4f8;
  virtual void  v3(); // _ZN8S20640C42v3Ev
  virtual void  v4(); // _ZN8S20640C42v4Ev
  ~S20640C4(); // tgen
  S20640C4(); // tgen
};
//SIG(-1 S20640C4) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S20640C4 ::v3(){vfunc_called(this, "_ZN8S20640C42v3Ev");}
void  S20640C4 ::v4(){vfunc_called(this, "_ZN8S20640C42v4Ev");}
S20640C4 ::~S20640C4(){ note_dtor("S20640C4", this);} // tgen
S20640C4 ::S20640C4(){ note_ctor("S20640C4", this);} // tgen

static void Test_S20640C4()
{
  extern Class_Descriptor cd_S20640C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S20640C4, buf);
    S20640C4 *dp, &lv = *(dp=new (buf) S20640C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S20640C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C4)");
    check_field_offset(lv, s20640c4f0, ABISELECT(8,4), "S20640C4.s20640c4f0");
    check_field_offset(lv, s20640c4f1, ABISELECT(80,76), "S20640C4.s20640c4f1");
    check_field_offset(lv, s20640c4f2, ABISELECT(96,80), "S20640C4.s20640c4f2");
    check_field_offset(lv, s20640c4f3, ABISELECT(112,92), "S20640C4.s20640c4f3");
    check_field_offset(lv, s20640c4f4, ABISELECT(120,96), "S20640C4.s20640c4f4");
    check_field_offset(lv, s20640c4f5, ABISELECT(122,98), "S20640C4.s20640c4f5");
    check_field_offset(lv, s20640c4f6, ABISELECT(136,112), "S20640C4.s20640c4f6");
    set_bf_and_test(lv, s20640c4f7, ABISELECT(144,116), 0, 4, 1, "S20640C4");
    set_bf_and_test(lv, s20640c4f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S20640C4");
    check_field_offset(lv, s20640c4f8, ABISELECT(152,120), "S20640C4.s20640c4f8");
    test_class_info(&lv, &cd_S20640C4);
    dp->~S20640C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C4(Test_S20640C4, "S20640C4", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S20640C4C1Ev();
extern void _ZN8S20640C4D1Ev();
Name_Map name_map_S20640C4[] = {
  NSPAIR(_ZN8S20640C4C1Ev),
  NSPAIR(_ZN8S20640C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20640C4[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY vtc_S20640C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C4[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
Class_Descriptor cd_S20640C4 = {  "S20640C4", // class name
  0,0,//no base classes
  &(vtc_S20640C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S20640C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20640C4),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  S20640C2  : virtual S1538C9_nt , S20640C4 {
  int s20640c2f0;
  short s20640c2f1[2];
  __tsi64 s20640c2f2;
  ~S20640C2(); // tgen
  S20640C2(); // tgen
};
//SIG(-1 S20640C2) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S20640C2()
{
  extern Class_Descriptor cd_S20640C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S20640C2, buf);
    S20640C2 *dp, &lv = *(dp=new (buf) S20640C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S20640C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C2)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S20640C2");
    check_base_class_offset(lv, (S20640C4*), 0, "S20640C2");
    check_field_offset(lv, s20640c2f0, ABISELECT(160,124), "S20640C2.s20640c2f0");
    check_field_offset(lv, s20640c2f1, ABISELECT(164,128), "S20640C2.s20640c2f1");
    check_field_offset(lv, s20640c2f2, ABISELECT(168,132), "S20640C2.s20640c2f2");
    test_class_info(&lv, &cd_S20640C2);
    dp->~S20640C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C2(Test_S20640C2, "S20640C2", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN8S20640C2C1Ev();
extern void _ZN8S20640C2D1Ev();
Name_Map name_map_S20640C2[] = {
  NSPAIR(_ZN8S20640C2C1Ev),
  NSPAIR(_ZN8S20640C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
static Base_Class bases_S20640C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C2[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY vtc_S20640C2[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20640C2[];
static  VTT_ENTRY vtt_S20640C2[] = {
  {&(_ZTV8S20640C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
Class_Descriptor cd_S20640C2 = {  "S20640C2", // class name
  bases_S20640C2, 2,
  &(vtc_S20640C2[0]), // expected_vtbl_contents
  &(vtt_S20640C2[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI8S20640C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20640C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C2),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C9  : virtual S1538C9_nt , virtual S20640C2 , virtual S20640C4 {
  __tsi64 s20640c9f0[8];
  void *s20640c9f1[7];
  short s20640c9f2;
  virtual void  v5(); // _ZN8S20640C92v5Ev
  ~S20640C9(); // tgen
  S20640C9(); // tgen
};
//SIG(-1 S20640C9) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S20640C9()
{
  extern Class_Descriptor cd_S20640C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S20640C9, buf);
    S20640C9 *dp, &lv = *(dp=new (buf) S20640C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S20640C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C9)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S20640C9");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(132,100), "S20640C9");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(144,104), "S20640C9");
    check_base_class_offset(lv, (S20640C2*), ABISELECT(144,104), "S20640C9");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*), ABISELECT(320,244), "S20640C9");
    check_field_offset(lv, s20640c9f0, ABISELECT(8,4), "S20640C9.s20640c9f0");
    check_field_offset(lv, s20640c9f1, ABISELECT(72,68), "S20640C9.s20640c9f1");
    check_field_offset(lv, s20640c9f2, ABISELECT(128,96), "S20640C9.s20640c9f2");
    test_class_info(&lv, &cd_S20640C9);
    dp->~S20640C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C9(Test_S20640C9, "S20640C9", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN8S20640C9C1Ev();
extern void _ZN8S20640C9D1Ev();
Name_Map name_map_S20640C9[] = {
  NSPAIR(_ZN8S20640C9C1Ev),
  NSPAIR(_ZN8S20640C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
static Base_Class bases_S20640C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C4,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C9[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY vtc_S20640C9[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20640C9[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C9[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C9[] = {
  {&(_ZTV8S20640C9[5]),  5,19},
  {&(_ZTV8S20640C9[11]),  11,19},
  {&(_ZTV8S20640C9[17]),  17,19},
  {&(_tg__ZTV8S20640C2__8S20640C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
Class_Descriptor cd_S20640C9 = {  "S20640C9", // class name
  bases_S20640C9, 4,
  &(vtc_S20640C9[0]), // expected_vtbl_contents
  &(vtt_S20640C9[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI8S20640C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20640C9),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C9),4, //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  S20640C8  : S1538C9_nt , virtual S20640C4 , virtual S20640C2 , S20640C9 {
  ::S7223C13 s20640c8f0;
  __tsi64 s20640c8f1:10;
  int s20640c8f2[9];
  int s20640c8f3;
  virtual void  v6(); // _ZN8S20640C82v6Ev
  virtual void  v7(); // _ZN8S20640C82v7Ev
  ~S20640C8(); // tgen
  S20640C8(); // tgen
};
//SIG(-1 S20640C8) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi}


void  S20640C8 ::v6(){vfunc_called(this, "_ZN8S20640C82v6Ev");}
void  S20640C8 ::v7(){vfunc_called(this, "_ZN8S20640C82v7Ev");}
S20640C8 ::~S20640C8(){ note_dtor("S20640C8", this);} // tgen
S20640C8 ::S20640C8(){ note_ctor("S20640C8", this);} // tgen

static void Test_S20640C8()
{
  extern Class_Descriptor cd_S20640C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S20640C8, buf);
    S20640C8 *dp, &lv = *(dp=new (buf) S20640C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S20640C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C8)");
    /*is_ambiguous_... S20640C8::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S20640C8");
    /*is_ambiguous_... S20640C8::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*), ABISELECT(256,184), "S20640C8");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*), ABISELECT(256,184), "S20640C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(592,448), "S20640C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*), ABISELECT(592,448), "S20640C8");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(416,308), "S20640C8");
    check_base_class_offset(lv, (S20640C2*), ABISELECT(416,308), "S20640C8");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*), ABISELECT(416,308), "S20640C8");
    check_base_class_offset(lv, (S20640C9*), 0, "S20640C8");
    check_field_offset(lv, s20640c8f0, ABISELECT(136,104), "S20640C8.s20640c8f0");
    set_bf_and_test(lv, s20640c8f1, ABISELECT(208,140), 0, 10, 1, "S20640C8");
    set_bf_and_test(lv, s20640c8f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S20640C8");
    check_field_offset(lv, s20640c8f2, ABISELECT(212,144), "S20640C8.s20640c8f2");
    check_field_offset(lv, s20640c8f3, ABISELECT(248,180), "S20640C8.s20640c8f3");
    test_class_info(&lv, &cd_S20640C8);
    dp->~S20640C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C8(Test_S20640C8, "S20640C8", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S20640C8C1Ev();
extern void _ZN8S20640C8D1Ev();
Name_Map name_map_S20640C8[] = {
  NSPAIR(_ZN8S20640C8C1Ev),
  NSPAIR(_ZN8S20640C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
static Base_Class bases_S20640C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S20640C4,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C8[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY vtc_S20640C8[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20640C8[];
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C9__8S20640C8[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C9__8S20640C8[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C9__8S20640C8[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C8[] = {
  {&(_ZTV8S20640C8[5]),  5,21},
  {&(_tg__ZTV8S20640C9__8S20640C8[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C9__8S20640C8[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C9__8S20640C8[4]),  4,6},
  {&(_ZTV8S20640C8[12]),  12,21},
  {&(_ZTV8S20640C8[19]),  19,21},
  {&(_tg__ZTV8S20640C2__8S20640C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
Class_Descriptor cd_S20640C8 = {  "S20640C8", // class name
  bases_S20640C8, 6,
  &(vtc_S20640C8[0]), // expected_vtbl_contents
  &(vtt_S20640C8[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S20640C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20640C8),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C8),7, //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  S20640C11  : virtual S20640C2 , virtual S20640C8 , S20640C9 {
  void *s20640c11f0;
  short s20640c11f1[2];
  long double s20640c11f2[2];
  char s20640c11f3;
  ::S20640C2 s20640c11f4;
  long double s20640c11f5;
  ::S20640C9 s20640c11f6;
  virtual void  v8(); // _ZN9S20640C112v8Ev
  ~S20640C11(); // tgen
  S20640C11(); // tgen
};
//SIG(-1 S20640C11) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S20640C11()
{
  extern Class_Descriptor cd_S20640C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S20640C11, buf);
    S20640C11 *dp, &lv = *(dp=new (buf) S20640C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S20640C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C11)");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(1072,800), "S20640C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(1072,800), "S20640C11");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*), ABISELECT(1072,800), "S20640C11");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(896,660), "S20640C11");
    check_base_class_offset(lv, (S20640C2*), ABISELECT(896,660), "S20640C11");
    check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(896,660), "S20640C11");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(896,660), "S20640C11");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*), ABISELECT(896,660), "S20640C11");
    /*is_ambiguous_... S20640C8::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(1212,904), "S20640C11");
    /*is_ambiguous_... S20640C8::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(1344,988), "S20640C11");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(1344,988), "S20640C11");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*), ABISELECT(1344,988), "S20640C11");
    check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(1080,804), "S20640C11");
    check_base_class_offset(lv, (S20640C8*), ABISELECT(1080,804), "S20640C11");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*), 0, "S20640C11");
    check_field_offset(lv, s20640c11f0, ABISELECT(136,100), "S20640C11.s20640c11f0");
    check_field_offset(lv, s20640c11f1, ABISELECT(144,104), "S20640C11.s20640c11f1");
    check_field_offset(lv, s20640c11f2, ABISELECT(160,108), "S20640C11.s20640c11f2");
    check_field_offset(lv, s20640c11f3, ABISELECT(192,132), "S20640C11.s20640c11f3");
    check_field_offset(lv, s20640c11f4, ABISELECT(208,136), "S20640C11.s20640c11f4");
    check_field_offset(lv, s20640c11f5, ABISELECT(400,280), "S20640C11.s20640c11f5");
    check_field_offset(lv, s20640c11f6, ABISELECT(416,292), "S20640C11.s20640c11f6");
    test_class_info(&lv, &cd_S20640C11);
    dp->~S20640C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C11(Test_S20640C11, "S20640C11", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN9S20640C11C1Ev();
extern void _ZN9S20640C11D1Ev();
Name_Map name_map_S20640C11[] = {
  NSPAIR(_ZN9S20640C11C1Ev),
  NSPAIR(_ZN9S20640C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
static Base_Class bases_S20640C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C4,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C9,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20640C11[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY vtc_S20640C11[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern VTBL_ENTRY _ZTV9S20640C11[];
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C9__A1__9S20640C11[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C9__A1__9S20640C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C9__A1__9S20640C11[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__9S20640C11[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__9S20640C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__9S20640C11[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__9S20640C11[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__9S20640C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C11[] = {
  {&(_ZTV9S20640C11[6]),  6,32},
  {&(_tg__ZTV8S20640C9__A1__9S20640C11[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C9__A1__9S20640C11[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C9__A1__9S20640C11[4]),  4,6},
  {&(_ZTV9S20640C11[13]),  13,32},
  {&(_ZTV9S20640C11[23]),  23,32},
  {&(_ZTV9S20640C11[30]),  30,32},
  {&(_tg__ZTV8S20640C2__9S20640C11[3]),  3,5},
  {&(_tg__ZTV8S20640C8__9S20640C11[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__9S20640C11[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__9S20640C11[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__9S20640C11[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__9S20640C11[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__9S20640C11[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
Class_Descriptor cd_S20640C11 = {  "S20640C11", // class name
  bases_S20640C11, 8,
  &(vtc_S20640C11[0]), // expected_vtbl_contents
  &(vtt_S20640C11[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI9S20640C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20640C11),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20640C11),14, //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  S20640C7  : virtual S20640C4 , S20640C8 , virtual S20640C11 {
  int s20640c7f0;
  char s20640c7f1;
  unsigned char s20640c7f2:1;
  virtual void  v9(); // _ZN8S20640C72v9Ev
  ~S20640C7(); // tgen
  S20640C7(); // tgen
};
//SIG(-1 S20640C7) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S20640C7()
{
  extern Class_Descriptor cd_S20640C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S20640C7, buf);
    S20640C7 *dp, &lv = *(dp=new (buf) S20640C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S20640C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C7)");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*), ABISELECT(272,192), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(272,192), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(272,192), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(272,192), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(272,192), "S20640C7");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(272,192), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(132,100), "S20640C7");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(608,456), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(608,456), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(608,456), "S20640C7");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(608,456), "S20640C7");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(432,316), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(432,316), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(432,316), "S20640C7");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(432,316), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(432,316), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(432,316), "S20640C7");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(432,316), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), 0, "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*), 0, "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(1652,1220), "S20640C7");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(1520,1120), "S20640C7");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(1520,1120), "S20640C7");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(624,460), "S20640C7");
    check_base_class_offset(lv, (S20640C11*), ABISELECT(624,460), "S20640C7");
    check_field_offset(lv, s20640c7f0, ABISELECT(252,184), "S20640C7.s20640c7f0");
    check_field_offset(lv, s20640c7f1, ABISELECT(256,188), "S20640C7.s20640c7f1");
    set_bf_and_test(lv, s20640c7f2, ABISELECT(257,189), 0, 1, 1, "S20640C7");
    test_class_info(&lv, &cd_S20640C7);
    dp->~S20640C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C7(Test_S20640C7, "S20640C7", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN8S20640C7C1Ev();
extern void _ZN8S20640C7D1Ev();
Name_Map name_map_S20640C7[] = {
  NSPAIR(_ZN8S20640C7C1Ev),
  NSPAIR(_ZN8S20640C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
static Base_Class bases_S20640C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20640C4,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20640C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C8,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C7[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY vtc_S20640C7[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern VTBL_ENTRY _ZTV8S20640C7[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__8S20640C7[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__8S20640C7[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__8S20640C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__8S20640C7[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A__8S20640C7[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A__8S20640C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A2__8S20640C7[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C7[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__8S20640C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__8S20640C7[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__8S20640C7[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A1__8S20640C7[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C7[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A1__8S20640C7[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A1__8S20640C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C7[] = {
  {&(_ZTV8S20640C7[7]),  7,45},
  {&(_tg__ZTV8S20640C8__A__8S20640C7[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__8S20640C7[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__8S20640C7[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__8S20640C7[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A__8S20640C7[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A__8S20640C7[5]),  5,7},
  {&(_ZTV8S20640C7[15]),  15,45},
  {&(_ZTV8S20640C7[22]),  22,45},
  {&(_ZTV8S20640C7[32]),  32,45},
  {&(_ZTV8S20640C7[42]),  42,45},
  {&(_tg__ZTV8S20640C2__8S20640C7[3]),  3,5},
  {&(_tg__ZTV9S20640C11__8S20640C7[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A2__8S20640C7[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C7[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C7[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__8S20640C7[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__8S20640C7[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__8S20640C7[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A1__8S20640C7[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C7[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C7[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A1__8S20640C7[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A1__8S20640C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
Class_Descriptor cd_S20640C7 = {  "S20640C7", // class name
  bases_S20640C7, 12,
  &(vtc_S20640C7[0]), // expected_vtbl_contents
  &(vtt_S20640C7[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI8S20640C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20640C7),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C7),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C6  : virtual S20640C4 , S20640C7 , S20640C9 , S20640C2 , S20640C8 {
  int s20640c6f0;
  int s20640c6f1[6];
  void *s20640c6f2;
  void *s20640c6f3;
  int s20640c6f4[9];
  char s20640c6f5;
  void *s20640c6f6;
  char s20640c6f7;
  void *s20640c6f8;
  short s20640c6f9;
  virtual void  v10(); // _ZN8S20640C63v10Ev
  virtual void  v11(); // _ZN8S20640C63v11Ev
  ~S20640C6(); // tgen
  S20640C6(); // tgen
};
//SIG(-1 S20640C6) C1{ VBC2{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ VBC2 BC4{ BC5{ m Fi} VBC2 VBC6{ VBC5 BC2 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC2 v5 FL[8] Fp[7] Fs} v6 v7 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v8 Fp Fs[2] FD[2] Fc FC6 FD FC7} v9 Fi Fc Fc:1} BC7 BC6 BC4 v1 v2 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs}


void  S20640C6 ::v10(){vfunc_called(this, "_ZN8S20640C63v10Ev");}
void  S20640C6 ::v11(){vfunc_called(this, "_ZN8S20640C63v11Ev");}
S20640C6 ::~S20640C6(){ note_dtor("S20640C6", this);} // tgen
S20640C6 ::S20640C6(){ note_ctor("S20640C6", this);} // tgen

static void Test_S20640C6()
{
  extern Class_Descriptor cd_S20640C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(154,456)];
    init_test(&cd_S20640C6, buf);
    S20640C6 *dp, &lv = *(dp=new (buf) S20640C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2448,1820), "sizeof(S20640C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C6)");
    /*is_ambiguous_... S20640C6::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(944,708), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(132,100), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(1280,972), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(1104,832), "S20640C6");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(1104,832), "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), 0, "S20640C6");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), 0, "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(2324,1736), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(2192,1636), "S20640C6");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(2192,1636), "S20640C6");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(1296,976), "S20640C6");
    check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(1296,976), "S20640C6");
    check_base_class_offset(lv, (S20640C7*), 0, "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*), ABISELECT(264,192), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(400,292), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*), ABISELECT(400,292), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(708,532), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(576,432), "S20640C6");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*), ABISELECT(576,432), "S20640C6");
    check_field_offset(lv, s20640c6f0, ABISELECT(828,616), "S20640C6.s20640c6f0");
    check_field_offset(lv, s20640c6f1, ABISELECT(832,620), "S20640C6.s20640c6f1");
    check_field_offset(lv, s20640c6f2, ABISELECT(856,644), "S20640C6.s20640c6f2");
    check_field_offset(lv, s20640c6f3, ABISELECT(864,648), "S20640C6.s20640c6f3");
    check_field_offset(lv, s20640c6f4, ABISELECT(872,652), "S20640C6.s20640c6f4");
    check_field_offset(lv, s20640c6f5, ABISELECT(908,688), "S20640C6.s20640c6f5");
    check_field_offset(lv, s20640c6f6, ABISELECT(912,692), "S20640C6.s20640c6f6");
    check_field_offset(lv, s20640c6f7, ABISELECT(920,696), "S20640C6.s20640c6f7");
    check_field_offset(lv, s20640c6f8, ABISELECT(928,700), "S20640C6.s20640c6f8");
    check_field_offset(lv, s20640c6f9, ABISELECT(936,704), "S20640C6.s20640c6f9");
    test_class_info(&lv, &cd_S20640C6);
    dp->~S20640C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C6(Test_S20640C6, "S20640C6", ABISELECT(2448,1820));

#else // __cplusplus

extern void _ZN8S20640C6C1Ev();
extern void _ZN8S20640C6D1Ev();
Name_Map name_map_S20640C6[] = {
  NSPAIR(_ZN8S20640C6C1Ev),
  NSPAIR(_ZN8S20640C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
static Base_Class bases_S20640C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20640C4,    ABISELECT(944,708), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(1280,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C4,    ABISELECT(1104,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(1104,832), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20640C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C8,    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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2324,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(2192,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(2192,1636), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(1296,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(1296,976), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20640C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20640C9,    ABISELECT(264,192), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20640C4,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(400,292), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(576,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(576,432), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C6[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C63v10Ev();
extern void _ZN8S20640C63v11Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY vtc_S20640C6[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v11Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern VTBL_ENTRY _ZTV8S20640C6[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__8S20640C6[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__8S20640C6[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__8S20640C6[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__8S20640C6[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__8S20640C6[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C9__A3__8S20640C6[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C9__A3__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C9__A3__8S20640C6[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__A__8S20640C6[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__8S20640C6[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A4__8S20640C6[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A4__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A4__8S20640C6[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A__8S20640C6[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C6[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C6[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A2__8S20640C6[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C6[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__8S20640C6[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__8S20640C6[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C6[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A1__8S20640C6[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C6[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A1__8S20640C6[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A1__8S20640C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C6[] = {
  {&(_ZTV8S20640C6[7]),  7,66},
  {&(_tg__ZTV8S20640C7__8S20640C6[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__8S20640C6[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__8S20640C6[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__8S20640C6[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__8S20640C6[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__8S20640C6[8]),  8,11},
  {&(_tg__ZTV8S20640C9__A3__8S20640C6[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C9__A3__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C9__A3__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C2__A__8S20640C6[3]),  3,5},
  {&(_tg__ZTV8S20640C8__A__8S20640C6[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A4__8S20640C6[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A4__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A4__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A__8S20640C6[5]),  5,7},
  {&(_ZTV8S20640C6[36]),  36,66},
  {&(_ZTV8S20640C6[43]),  43,66},
  {&(_ZTV8S20640C6[53]),  53,66},
  {&(_ZTV8S20640C6[63]),  63,66},
  {&(_ZTV8S20640C6[18]),  18,66},
  {&(_ZTV8S20640C6[22]),  22,66},
  {&(_ZTV8S20640C6[29]),  29,66},
  {&(_tg__ZTV8S20640C2__8S20640C6[3]),  3,5},
  {&(_tg__ZTV9S20640C11__8S20640C6[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A2__8S20640C6[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__8S20640C6[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A1__8S20640C6[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A1__8S20640C6[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C6[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A1__8S20640C6[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A1__8S20640C6[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20640C6[];
extern  VTBL_ENTRY _ZTV8S20640C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C6[];
Class_Descriptor cd_S20640C6 = {  "S20640C6", // class name
  bases_S20640C6, 19,
  &(vtc_S20640C6[0]), // expected_vtbl_contents
  &(vtt_S20640C6[0]), // expected_vtt_contents
  ABISELECT(2448,1820), // object size
  NSPAIRA(_ZTI8S20640C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20640C6),66, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C6),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C13  : S20640C9 {
  __tsi64 s20640c13f0;
  ::S20640C2 s20640c13f1;
  short s20640c13f2;
  char s20640c13f3;
  int s20640c13f4;
  int s20640c13f5;
  void *s20640c13f6;
  ::S7223C9_nt s20640c13f7;
  int s20640c13f8;
  __tsi64 s20640c13f9;
  virtual void  v12(); // _ZN9S20640C133v12Ev
  ~S20640C13(); // tgen
  S20640C13(); // tgen
};
//SIG(-1 S20640C13) C1{ BC2{ VBC3{ m Fi} VBC4{ VBC3 BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 v4 FL[8] Fp[7] Fs} v1 FL FC4 Fs Fc Fi[2] Fp FC6{} Fi FL}


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

static void Test_S20640C13()
{
  extern Class_Descriptor cd_S20640C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,139)];
    init_test(&cd_S20640C13, buf);
    S20640C13 *dp, &lv = *(dp=new (buf) S20640C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,552), "sizeof(S20640C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C13)");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*), ABISELECT(376,284), "S20640C13");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(376,284), "S20640C13");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(384,288), "S20640C13");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*), ABISELECT(384,288), "S20640C13");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*), ABISELECT(560,428), "S20640C13");
    check_base_class_offset(lv, (S20640C9*), 0, "S20640C13");
    check_field_offset(lv, s20640c13f0, ABISELECT(136,100), "S20640C13.s20640c13f0");
    check_field_offset(lv, s20640c13f1, ABISELECT(144,108), "S20640C13.s20640c13f1");
    check_field_offset(lv, s20640c13f2, ABISELECT(336,252), "S20640C13.s20640c13f2");
    check_field_offset(lv, s20640c13f3, ABISELECT(338,254), "S20640C13.s20640c13f3");
    check_field_offset(lv, s20640c13f4, ABISELECT(340,256), "S20640C13.s20640c13f4");
    check_field_offset(lv, s20640c13f5, ABISELECT(344,260), "S20640C13.s20640c13f5");
    check_field_offset(lv, s20640c13f6, ABISELECT(352,264), "S20640C13.s20640c13f6");
    check_field_offset(lv, s20640c13f7, ABISELECT(360,268), "S20640C13.s20640c13f7");
    check_field_offset(lv, s20640c13f8, ABISELECT(364,272), "S20640C13.s20640c13f8");
    check_field_offset(lv, s20640c13f9, ABISELECT(368,276), "S20640C13.s20640c13f9");
    test_class_info(&lv, &cd_S20640C13);
    dp->~S20640C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C13(Test_S20640C13, "S20640C13", ABISELECT(720,552));

#else // __cplusplus

extern void _ZN9S20640C13C1Ev();
extern void _ZN9S20640C13D1Ev();
Name_Map name_map_S20640C13[] = {
  NSPAIR(_ZN9S20640C13C1Ev),
  NSPAIR(_ZN9S20640C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
static Base_Class bases_S20640C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(384,288), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(560,428), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20640C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20640C13[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY vtc_S20640C13[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern VTBL_ENTRY _ZTV9S20640C13[];
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C9__9S20640C13[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C9__9S20640C13[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C9__9S20640C13[] = {
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C13[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C13[] = {
  {&(_ZTV9S20640C13[5]),  5,20},
  {&(_tg__ZTV8S20640C9__9S20640C13[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C9__9S20640C13[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C9__9S20640C13[4]),  4,6},
  {&(_ZTV9S20640C13[12]),  12,20},
  {&(_ZTV9S20640C13[18]),  18,20},
  {&(_tg__ZTV8S20640C2__9S20640C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20640C13[];
extern  VTBL_ENTRY _ZTV9S20640C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C13[];
Class_Descriptor cd_S20640C13 = {  "S20640C13", // class name
  bases_S20640C13, 5,
  &(vtc_S20640C13[0]), // expected_vtbl_contents
  &(vtt_S20640C13[0]), // expected_vtt_contents
  ABISELECT(720,552), // object size
  NSPAIRA(_ZTI9S20640C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20640C13),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20640C13),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C15  : virtual S20640C7 {
  ::S20640C7 s20640c15f0;
  short s20640c15f1:5;
  long s20640c15f2;
  virtual  ~S20640C15(); // _ZN9S20640C15D2Ev
  S20640C15(); // tgen
};
//SIG(-1 S20640C15) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S20640C15()
{
  extern Class_Descriptor cd_S20640C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S20640C15, buf);
    S20640C15 *dp, &lv = *(dp=new (buf) S20640C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S20640C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C15)");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(2080,1508), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(2080,1508), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(2080,1508), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(2080,1508), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(2080,1508), "S20640C15");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(2080,1508), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(1940,1416), "S20640C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(2416,1772), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(2416,1772), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(2416,1772), "S20640C15");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(2416,1772), "S20640C15");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(2240,1632), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(2240,1632), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(2240,1632), "S20640C15");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(2240,1632), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(2240,1632), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(2240,1632), "S20640C15");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(2240,1632), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(1808,1316), "S20640C15");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), ABISELECT(1808,1316), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(3460,2536), "S20640C15");
    /*is_ambiguous_... S20640C15::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(3328,2436), "S20640C15");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(3328,2436), "S20640C15");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(2432,1776), "S20640C15");
    check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(2432,1776), "S20640C15");
    check_base_class_offset(lv, (S20640C7*), ABISELECT(1808,1316), "S20640C15");
    check_field_offset(lv, s20640c15f0, ABISELECT(16,4), "S20640C15.s20640c15f0");
    set_bf_and_test(lv, s20640c15f1, ABISELECT(1792,1308), 0, 5, 1, "S20640C15");
    set_bf_and_test(lv, s20640c15f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S20640C15");
    check_field_offset(lv, s20640c15f2, ABISELECT(1800,1312), "S20640C15.s20640c15f2");
    test_class_info(&lv, &cd_S20640C15);
    dp->~S20640C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C15(Test_S20640C15, "S20640C15", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN9S20640C15C1Ev();
extern void _ZN9S20640C15D2Ev();
Name_Map name_map_S20640C15[] = {
  NSPAIR(_ZN9S20640C15C1Ev),
  NSPAIR(_ZN9S20640C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
static Base_Class bases_S20640C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20640C4,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C4,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20640C7,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20640C15[];
extern void _ZN9S20640C15D1Ev();
extern void _ZN9S20640C15D0Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY vtc_S20640C15[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN9S20640C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C15D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern VTBL_ENTRY _ZTV9S20640C15[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C15[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__9S20640C15[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__9S20640C15[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__9S20640C15[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__9S20640C15[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C15[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C15[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A2__9S20640C15[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A2__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__9S20640C15[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__9S20640C15[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__9S20640C15[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C15[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A1__9S20640C15[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A1__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__9S20640C15[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A1__9S20640C15[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A1__9S20640C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C15[] = {
  {&(_ZTV9S20640C15[8]),  8,59},
  {&(_ZTV9S20640C15[21]),  21,59},
  {&(_ZTV9S20640C15[29]),  29,59},
  {&(_ZTV9S20640C15[36]),  36,59},
  {&(_ZTV9S20640C15[46]),  46,59},
  {&(_ZTV9S20640C15[56]),  56,59},
  {&(_tg__ZTV8S20640C7__9S20640C15[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__9S20640C15[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__9S20640C15[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__9S20640C15[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__9S20640C15[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__9S20640C15[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__9S20640C15[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__9S20640C15[8]),  8,11},
  {&(_tg__ZTV8S20640C2__9S20640C15[3]),  3,5},
  {&(_tg__ZTV9S20640C11__9S20640C15[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A2__9S20640C15[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A2__9S20640C15[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__9S20640C15[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__9S20640C15[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A1__9S20640C15[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A1__9S20640C15[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A1__9S20640C15[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A1__9S20640C15[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A1__9S20640C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20640C15[];
extern  VTBL_ENTRY _ZTV9S20640C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C15[];
Class_Descriptor cd_S20640C15 = {  "S20640C15", // class name
  bases_S20640C15, 13,
  &(vtc_S20640C15[0]), // expected_vtbl_contents
  &(vtt_S20640C15[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI9S20640C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20640C15),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20640C15),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C12  : S20640C13 , virtual S20640C15 , S20640C8 {
  ::S20640C13 s20640c12f0[9];
  int s20640c12f1;
  short s20640c12f2:16;
  ::S20640C9 s20640c12f3;
  int s20640c12f4;
  short s20640c12f5;
  void *s20640c12f6;
  long s20640c12f7;
  ::S20640C2 s20640c12f8;
  ~S20640C12(); // tgen
  S20640C12(); // tgen
};
//SIG(-1 S20640C12) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ VBC4 BC6{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 v3 FL[8] Fp[7] Fs} v4 FL FC5 Fs Fc Fi[2] Fp FC7{} Fi FL} VBC8{ VBC9{ VBC6 BC10{ BC4 VBC6 VBC5 BC3 v5 v6 FU11{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC12{ VBC5 VBC10 BC3 v7 Fp Fs[2] FD[2] Fc FC5 FD FC3} v8 Fi Fc Fc:1} vd FC9 Fs:5 Fl} BC10 FC2[9] Fi Fs:16 FC3 Fi Fs Fp Fl FC5}


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

static void Test_S20640C12()
{
  extern Class_Descriptor cd_S20640C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(715,2149)];
    init_test(&cd_S20640C12, buf);
    S20640C12 *dp, &lv = *(dp=new (buf) S20640C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11424,8592), "sizeof(S20640C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C12)");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C13*), ABISELECT(7840,5972), "S20640C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(7840,5972), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(7840,5972), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(7840,5972), "S20640C12");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(7840,5972), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(7840,5972), "S20640C12");
    check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(7856,5976), "S20640C12");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C13*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(7856,5976), "S20640C12");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(7856,5976), "S20640C12");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C13*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(8032,6116), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(8032,6116), "S20640C12");
    check_base_class_offset(lv, (S20640C9*)(S20640C13*), 0, "S20640C12");
    check_base_class_offset(lv, (S20640C13*), 0, "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(10132,7656), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(10000,7556), "S20640C12");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), ABISELECT(10000,7556), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(11300,8508), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(11168,8408), "S20640C12");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(11168,8408), "S20640C12");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(10272,7748), "S20640C12");
    check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(10272,7748), "S20640C12");
    check_base_class_offset(lv, (S20640C7*)(S20640C15*), ABISELECT(10000,7556), "S20640C12");
    check_base_class_offset(lv, (S20640C15*), ABISELECT(8192,6240), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(508,384), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(376,284), "S20640C12");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*), ABISELECT(376,284), "S20640C12");
    check_field_offset(lv, s20640c12f0, ABISELECT(640,468), "S20640C12.s20640c12f0");
    check_field_offset(lv, s20640c12f1, ABISELECT(7120,5436), "S20640C12.s20640c12f1");
    set_bf_and_test(lv, s20640c12f2, ABISELECT(7124,5440), 0, 16, 1, "S20640C12");
    set_bf_and_test(lv, s20640c12f2, ABISELECT(7124,5440), 0, 16, hide_sll(1LL<<15), "S20640C12");
    check_field_offset(lv, s20640c12f3, ABISELECT(7136,5444), "S20640C12.s20640c12f3");
    check_field_offset(lv, s20640c12f4, ABISELECT(7616,5812), "S20640C12.s20640c12f4");
    check_field_offset(lv, s20640c12f5, ABISELECT(7620,5816), "S20640C12.s20640c12f5");
    check_field_offset(lv, s20640c12f6, ABISELECT(7624,5820), "S20640C12.s20640c12f6");
    check_field_offset(lv, s20640c12f7, ABISELECT(7632,5824), "S20640C12.s20640c12f7");
    check_field_offset(lv, s20640c12f8, ABISELECT(7648,5828), "S20640C12.s20640c12f8");
    test_class_info(&lv, &cd_S20640C12);
    dp->~S20640C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C12(Test_S20640C12, "S20640C12", ABISELECT(11424,8592));

#else // __cplusplus

extern void _ZN9S20640C12C1Ev();
extern void _ZN9S20640C12D1Ev();
Name_Map name_map_S20640C12[] = {
  NSPAIR(_ZN9S20640C12C1Ev),
  NSPAIR(_ZN9S20640C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C13;
extern VTBL_ENTRY _ZTI9S20640C13[];
extern  VTBL_ENTRY _ZTV9S20640C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C15;
extern VTBL_ENTRY _ZTI9S20640C15[];
extern  VTBL_ENTRY _ZTV9S20640C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
static Base_Class bases_S20640C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(7840,5972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C4,    ABISELECT(7856,5976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C2,    ABISELECT(7856,5976), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(8032,6116), //bcp->offset
    28, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20640C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20640C13,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(10132,7656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(10000,7556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(10000,7556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(11300,8508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C9,    ABISELECT(11168,8408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(11168,8408), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(10272,7748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(10272,7748), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20640C7,    ABISELECT(10000,7556), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20640C15,    ABISELECT(8192,6240), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(508,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
    18, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(376,284), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20640C12[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void _ZN9S20640C12D1Ev();
extern void _ZN9S20640C12D0Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev)();
extern void ABISELECT(_ZThn8192_N9S20640C12D1Ev,_ZThn6240_N9S20640C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev)();
extern void ABISELECT(_ZThn8192_N9S20640C12D0Ev,_ZThn6240_N9S20640C12D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY vtc_S20640C12[] = {
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D0Ev,
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  ABISELECT(-8192,-6240),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6240),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7556),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7748),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8408),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern VTBL_ENTRY _ZTV9S20640C12[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C13__9S20640C12[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C13__9S20640C12[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C13__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C13__9S20640C12[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C13__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C13__9S20640C12[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__9S20640C12[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A4__9S20640C12[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A4__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A4__9S20640C12[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A__9S20640C12[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C12[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN9S20640C15D1Ev();
extern void _ZN9S20640C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C15__9S20640C12[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN9S20640C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C15D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C15__9S20640C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__9S20640C15__9S20640C12[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C15__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C15__9S20640C12[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C15__9S20640C12[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C12[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__9S20640C12[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__A1__9S20640C12[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A1__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A1__9S20640C12[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__9S20640C12[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__9S20640C12[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__9S20640C12[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__9S20640C12[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C12[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A3__9S20640C12[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A3__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A3__9S20640C12[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__9S20640C12[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__9S20640C12[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C12[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A2__9S20640C12[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A2__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A2__9S20640C12[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A1__9S20640C12[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A1__9S20640C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C12[] = {
  {&(_ZTV9S20640C12[9]),  9,81},
  {&(_tg__ZTV9S20640C13__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C99S20640C13__9S20640C12[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C13__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C13__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C13__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C13__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A__9S20640C12[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A4__9S20640C12[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A4__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A4__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A__9S20640C12[5]),  5,7},
  {&(_ZTV9S20640C12[26]),  26,81},
  {&(_ZTV9S20640C12[32]),  32,81},
  {&(_ZTV9S20640C12[43]),  43,81},
  {&(_ZTV9S20640C12[56]),  56,81},
  {&(_ZTV9S20640C12[68]),  68,81},
  {&(_ZTV9S20640C12[78]),  78,81},
  {&(_ZTV9S20640C12[18]),  18,81},
  {&(_tg__ZTV8S20640C2__9S20640C12[3]),  3,5},
  {&(_tg__ZTV9S20640C15__9S20640C12[8]),  8,10},
  {&(_tg__ZTV8S20640C7__9S20640C15__9S20640C12[11]),  11,15},
  {&(_tg__ZTV8S20640C4__9S20640C15__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C15__9S20640C12[5]),  5,7},
  {&(_tg__ZTV9S20640C11__9S20640C15__9S20640C12[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C15__9S20640C12[8]),  8,11},
  {&(_tg__ZTV8S20640C7__9S20640C12[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__9S20640C12[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__A1__9S20640C12[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A1__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A1__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__9S20640C12[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__9S20640C12[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__9S20640C12[8]),  8,11},
  {&(_tg__ZTV9S20640C11__9S20640C12[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A3__9S20640C12[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A3__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A3__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__9S20640C12[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A1__9S20640C12[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A2__9S20640C12[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A2__9S20640C12[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A2__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A1__9S20640C12[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A1__9S20640C12[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20640C12[];
extern  VTBL_ENTRY _ZTV9S20640C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C12[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S20640C12D0Ev,_ZThn6240_N9S20640C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S20640C12D1Ev,_ZThn6240_N9S20640C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20640C12 = {  "S20640C12", // class name
  bases_S20640C12, 19,
  &(vtc_S20640C12[0]), // expected_vtbl_contents
  &(vtt_S20640C12[0]), // expected_vtt_contents
  ABISELECT(11424,8592), // object size
  NSPAIRA(_ZTI9S20640C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20640C12),81, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20640C12),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C16  : S20640C2 , virtual S20640C4 , virtual S20640C8 , S1538C9_nt , virtual S20640C12 {
  int s20640c16f0;
  void *s20640c16f1;
  char s20640c16f2;
  unsigned int s20640c16f3:1;
  void *s20640c16f4;
  ::S20640C12 s20640c16f5;
  ::S1538C9_nt s20640c16f6[6];
  void *s20640c16f7;
  ::S20640C15 s20640c16f8;
  __tsi64 s20640c16f9:5;
  long s20640c16f10;
  virtual  ~S20640C16(); // _ZN9S20640C16D2Ev
  virtual void  v14(); // _ZN9S20640C163v14Ev
  S20640C16(); // tgen
};
//SIG(-1 S20640C16) C1{ BC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC3 VBC8{ BC9{ BC6 v7 FL FC2 Fs Fc Fi Fi Fp FC10{} Fi FL} VBC11{ VBC12{ VBC4 BC5 VBC13{ VBC2 VBC5 BC6 v8 Fp Fs[2] FD[2] Fc FC2 FD FC6} v9 Fi Fc Fc:1} vd FC12 Fs:5 Fl} BC5 FC9[9] Fi Fs:16 FC6 Fi Fs Fp Fl FC2} vd v1 Fi Fp Fc Fi:1 Fp FC8 FC3[6] Fp FC11 FL:5 Fl}


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

static void Test_S20640C16()
{
  extern Class_Descriptor cd_S20640C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1669,5001)];
    init_test(&cd_S20640C16, buf);
    S20640C16 *dp, &lv = *(dp=new (buf) S20640C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26688,20000), "sizeof(S20640C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C16)");
    /*is_ambiguous_... S20640C16::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(15264,11408), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(15264,11408), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(15264,11408), "S20640C16");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(15264,11408), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(15264,11408), "S20640C16");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(15264,11408), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(15264,11408), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), 0, "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*), 0, "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C12*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(15280,11412), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(15572,11636), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(15696,11720), "S20640C16");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(15696,11720), "S20640C16");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C12*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(15696,11720), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(15440,11536), "S20640C16");
    /*is_ambiguous_... S20640C16::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*), ABISELECT(15440,11536), "S20640C16");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(15440,11536), "S20640C16");
    /*is_ambiguous_... S20640C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S20640C16");
    check_base_class_offset(lv, (S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(15872,11860), "S20640C16");
    check_base_class_offset(lv, (S20640C13*)(S20640C12*), ABISELECT(15872,11860), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(25652,19248), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(25520,19148), "S20640C16");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), ABISELECT(25520,19148), "S20640C16");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(25792,19340), "S20640C16");
    check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(25792,19340), "S20640C16");
    check_base_class_offset(lv, (S20640C7*)(S20640C15*), ABISELECT(25520,19148), "S20640C16");
    check_base_class_offset(lv, (S20640C15*)(S20640C12*), ABISELECT(23712,17832), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C12*), ABISELECT(16380,12244), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(16248,12144), "S20640C16");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C12*), ABISELECT(16248,12144), "S20640C16");
    check_base_class_offset(lv, (S20640C12*), ABISELECT(15872,11860), "S20640C16");
    check_field_offset(lv, s20640c16f0, ABISELECT(180,144), "S20640C16.s20640c16f0");
    check_field_offset(lv, s20640c16f1, ABISELECT(184,148), "S20640C16.s20640c16f1");
    check_field_offset(lv, s20640c16f2, ABISELECT(192,152), "S20640C16.s20640c16f2");
    set_bf_and_test(lv, s20640c16f3, ABISELECT(193,153), 0, 1, 1, "S20640C16");
    check_field_offset(lv, s20640c16f4, ABISELECT(200,156), "S20640C16.s20640c16f4");
    check_field_offset(lv, s20640c16f5, ABISELECT(208,160), "S20640C16.s20640c16f5");
    check_field_offset(lv, s20640c16f6, ABISELECT(11632,8752), "S20640C16.s20640c16f6");
    check_field_offset(lv, s20640c16f7, ABISELECT(11656,8776), "S20640C16.s20640c16f7");
    check_field_offset(lv, s20640c16f8, ABISELECT(11664,8780), "S20640C16.s20640c16f8");
    set_bf_and_test(lv, s20640c16f9, ABISELECT(15248,11400), 0, 5, 1, "S20640C16");
    set_bf_and_test(lv, s20640c16f9, ABISELECT(15248,11400), 0, 5, hide_sll(1LL<<4), "S20640C16");
    check_field_offset(lv, s20640c16f10, ABISELECT(15256,11404), "S20640C16.s20640c16f10");
    test_class_info(&lv, &cd_S20640C16);
    dp->~S20640C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C16(Test_S20640C16, "S20640C16", ABISELECT(26688,20000));

#else // __cplusplus

extern void _ZN9S20640C16C1Ev();
extern void _ZN9S20640C16D2Ev();
Name_Map name_map_S20640C16[] = {
  NSPAIR(_ZN9S20640C16C1Ev),
  NSPAIR(_ZN9S20640C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C13;
extern VTBL_ENTRY _ZTI9S20640C13[];
extern  VTBL_ENTRY _ZTV9S20640C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C15;
extern VTBL_ENTRY _ZTI9S20640C15[];
extern  VTBL_ENTRY _ZTV9S20640C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C12;
extern VTBL_ENTRY _ZTI9S20640C12[];
extern  VTBL_ENTRY _ZTV9S20640C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C12[];
static Base_Class bases_S20640C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15264,11408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20640C2,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20640C4,    ABISELECT(15280,11412), //bcp->offset
    15, //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
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(15572,11636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C4,    ABISELECT(15696,11720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C2,    ABISELECT(15696,11720), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(15440,11536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(15440,11536), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 0},
  {&cd_S20640C9,    ABISELECT(15872,11860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C13,    ABISELECT(15872,11860), //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25652,19248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(25520,19148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(25520,19148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(25792,19340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(25792,19340), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20640C7,    ABISELECT(25520,19148), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20640C15,    ABISELECT(23712,17832), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16380,12244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(16248,12144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(16248,12144), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20640C12,    ABISELECT(15872,11860), //bcp->offset
    39, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20640C16[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN9S20640C16D1Ev();
extern void _ZN9S20640C16D0Ev();
extern void _ZN9S20640C163v14Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N9S20640C16D1Ev,_ZTv0_n48_N9S20640C16D1Ev)();
extern void ABISELECT(_ZThn15872_N9S20640C16D1Ev,_ZThn11860_N9S20640C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20640C16D0Ev,_ZTv0_n48_N9S20640C16D0Ev)();
extern void ABISELECT(_ZThn15872_N9S20640C16D0Ev,_ZThn11860_N9S20640C16D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void ABISELECT(_ZTv0_n72_N9S20640C16D1Ev,_ZTv0_n36_N9S20640C16D1Ev)();
extern void ABISELECT(_ZThn23712_N9S20640C16D1Ev,_ZThn17832_N9S20640C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20640C16D0Ev,_ZTv0_n36_N9S20640C16D0Ev)();
extern void ABISELECT(_ZThn23712_N9S20640C16D0Ev,_ZThn17832_N9S20640C16D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY vtc_S20640C16[] = {
  ABISELECT(25792,19340),
  ABISELECT(25520,19148),
  ABISELECT(23712,17832),
  ABISELECT(15872,11860),
  ABISELECT(15696,11720),
  ABISELECT(15440,11536),
  ABISELECT(15280,11412),
  ABISELECT(15264,11408),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  (VTBL_ENTRY)&_ZN9S20640C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20640C163v14Ev,
  0,
  0,
  ABISELECT(-15280,-11412),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15440,-11536),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15696,-11720),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15872,-11860),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15872,-11860),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20640C16D1Ev,_ZTv0_n48_N9S20640C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20640C16D0Ev,_ZTv0_n48_N9S20640C16D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16248,-12144),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  ABISELECT(-23712,-17832),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23712,-17832),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C16D1Ev,_ZTv0_n36_N9S20640C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C16D0Ev,_ZTv0_n36_N9S20640C16D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25520,-19148),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25792,-19340),
  (VTBL_ENTRY)&(_ZTI9S20640C16[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern VTBL_ENTRY _ZTV9S20640C16[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__A__9S20640C16[] = {
  ABISELECT(15264,11408),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__9S20640C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__9S20640C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__9S20640C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__A1__9S20640C16[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void _ZN9S20640C12D1Ev();
extern void _ZN9S20640C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C12__9S20640C16[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C139S20640C12__9S20640C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C139S20640C12__A1__9S20640C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C139S20640C12__A1__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C139S20640C12__A1__9S20640C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C139S20640C12__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C139S20640C12__9S20640C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C89S20640C12__A2__9S20640C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C89S20640C12__A4__9S20640C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C89S20640C12__A4__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C89S20640C12__A4__9S20640C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C89S20640C12__A2__9S20640C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C89S20640C12__A2__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C12__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C12__9S20640C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev)();
extern void ABISELECT(_ZThn7840_N9S20640C12D1Ev,_ZThn5972_N9S20640C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev)();
extern void ABISELECT(_ZThn7840_N9S20640C12D0Ev,_ZThn5972_N9S20640C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20640C15__9S20640C12__9S20640C16[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev),
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C12__9S20640C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C12__9S20640C16[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-9920,-7480),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C12__9S20640C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__9S20640C12__9S20640C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN9S20640C15D1Ev();
extern void _ZN9S20640C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C15__9S20640C16[] = {
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN9S20640C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C15D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C15__9S20640C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__9S20640C15__9S20640C16[] = {
  0,
  0,
  ABISELECT(8432,6420),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C15__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6112),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C15__9S20640C16[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C15__9S20640C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6296),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C16[] = {
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__A1__9S20640C16[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__A2__9S20640C16[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A2__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A2__9S20640C16[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__A1__9S20640C16[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__A1__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__9S20640C16[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__9S20640C16[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__9S20640C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7612),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C16[] = {
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A3__9S20640C16[] = {
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A3__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A3__9S20640C16[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__9S20640C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__9S20640C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7804),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__9S20640C16[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
static  VTT_ENTRY vtt_S20640C16[] = {
  {&(_ZTV9S20640C16[10]),  10,101},
  {&(_tg__ZTV8S20640C2__A__9S20640C16[3]),  3,5},
  {&(_ZTV9S20640C16[19]),  19,101},
  {&(_ZTV9S20640C16[29]),  29,101},
  {&(_ZTV9S20640C16[37]),  37,101},
  {&(_ZTV9S20640C16[53]),  53,101},
  {&(_ZTV9S20640C16[74]),  74,101},
  {&(_ZTV9S20640C16[87]),  87,101},
  {&(_ZTV9S20640C16[99]),  99,101},
  {&(_ZTV9S20640C16[62]),  62,101},
  {&(_tg__ZTV8S20640C8__9S20640C16[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__9S20640C16[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C2__A1__9S20640C16[3]),  3,5},
  {&(_tg__ZTV9S20640C12__9S20640C16[9]),  9,13},
  {&(_tg__ZTV9S20640C139S20640C12__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C99S20640C139S20640C12__A1__9S20640C16[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C139S20640C12__A1__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C139S20640C12__A1__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C139S20640C12__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C139S20640C12__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C89S20640C12__A2__9S20640C16[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C89S20640C12__A4__9S20640C16[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C89S20640C12__A4__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C89S20640C12__A4__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C89S20640C12__A2__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C89S20640C12__A2__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C2__9S20640C12__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C12__9S20640C16[4]),  4,6},
  {&(_tg__ZTV9S20640C15__9S20640C12__9S20640C16[9]),  9,11},
  {&(_tg__ZTV8S20640C7__9S20640C12__9S20640C16[11]),  11,15},
  {&(_tg__ZTV9S20640C11__9S20640C12__9S20640C16[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C12__9S20640C16[8]),  8,11},
  {&(_tg__ZTV8S20640C8__A__9S20640C12__9S20640C16[5]),  5,8},
  {&(_tg__ZTV9S20640C15__9S20640C16[8]),  8,10},
  {&(_tg__ZTV8S20640C7__9S20640C15__9S20640C16[11]),  11,15},
  {&(_tg__ZTV8S20640C4__9S20640C15__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C15__9S20640C16[5]),  5,7},
  {&(_tg__ZTV9S20640C11__9S20640C15__9S20640C16[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C15__9S20640C16[8]),  8,11},
  {&(_tg__ZTV8S20640C7__9S20640C16[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__A1__9S20640C16[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__A2__9S20640C16[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A2__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A2__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__A1__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__A1__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__9S20640C16[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__9S20640C16[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__9S20640C16[8]),  8,11},
  {&(_tg__ZTV9S20640C11__9S20640C16[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A3__9S20640C16[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A3__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A3__9S20640C16[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__9S20640C16[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__9S20640C16[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__9S20640C16[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20640C16[];
extern  VTBL_ENTRY _ZTV9S20640C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C16[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20640C12D0Ev,_ZThn5972_N9S20640C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20640C12D1Ev,_ZThn5972_N9S20640C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C16D0Ev,_ZTv0_n36_N9S20640C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S20640C16D0Ev,_ZThn17832_N9S20640C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C16D1Ev,_ZTv0_n36_N9S20640C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S20640C16D1Ev,_ZThn17832_N9S20640C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20640C16D0Ev,_ZTv0_n48_N9S20640C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N9S20640C16D0Ev,_ZThn11860_N9S20640C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20640C16D1Ev,_ZTv0_n48_N9S20640C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N9S20640C16D1Ev,_ZThn11860_N9S20640C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20640C16 = {  "S20640C16", // class name
  bases_S20640C16, 23,
  &(vtc_S20640C16[0]), // expected_vtbl_contents
  &(vtt_S20640C16[0]), // expected_vtt_contents
  ABISELECT(26688,20000), // object size
  NSPAIRA(_ZTI9S20640C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20640C16),101, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20640C16),61, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C5  : virtual S20640C6 , S20640C2 , S20640C7 , virtual S20640C12 {
  ::S20640C16 s20640c5f0;
  void *s20640c5f1;
  char s20640c5f2[7];
  char  :0;
  ::S1538C9_nt s20640c5f4;
  int s20640c5f5[7];
  ~S20640C5(); // tgen
  S20640C5(); // tgen
};
//SIG(-1 S20640C5) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ VBC3 BC5{ BC6{ m Fi} VBC3 VBC7{ VBC6 BC3 Fi Fs[2] FL} BC8{ VBC6 VBC7 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC10{ VBC7 VBC5 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} BC8 BC7 BC5 v8 v9 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC7 BC4 VBC11{ BC12{ BC8 v10 FL FC7 Fs Fc Fi Fi Fp FC13{} Fi FL} VBC14{ VBC4 vd FC4 Fs:5 Fl} BC5 FC12[9] Fi Fs:16 FC8 Fi Fs Fp Fl FC7} FC15{ BC7 VBC3 VBC5 BC6 VBC11 vd v11 Fi Fp Fc Fi:1 Fp FC11 FC6[6] Fp FC14 FL:5 Fl} Fp Fc[7] Fc:0 FC6 Fi[7]}


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

static void Test_S20640C5()
{
  extern Class_Descriptor cd_S20640C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2473,7420)];
    init_test(&cd_S20640C5, buf);
    S20640C5 *dp, &lv = *(dp=new (buf) S20640C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39552,29676), "sizeof(S20640C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C5)");
    /*is_ambiguous_... S20640C6::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C12*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(28128,21084), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(27316,20476), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C6*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*)(S20640C6*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(28464,21348), "S20640C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(28464,21348), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28288,21208), "S20640C5");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C6*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C6*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(28288,21208), "S20640C5");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C12*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(28288,21208), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(27184,20376), "S20640C5");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(27184,20376), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(29508,22112), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(29376,22012), "S20640C5");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(29376,22012), "S20640C5");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(28480,21352), "S20640C5");
    check_base_class_offset(lv, (S20640C11*)(S20640C7*)(S20640C6*), ABISELECT(28480,21352), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(28480,21352), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(28480,21352), "S20640C5");
    check_base_class_offset(lv, (S20640C7*)(S20640C6*), ABISELECT(27184,20376), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C6*), ABISELECT(27448,20568), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*)(S20640C6*), ABISELECT(27584,20668), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C6*), ABISELECT(27584,20668), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C6*), ABISELECT(27892,20908), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(27760,20808), "S20640C5");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C6*), ABISELECT(27760,20808), "S20640C5");
    check_base_class_offset(lv, (S20640C6*), ABISELECT(27184,20376), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), 0, "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*), 0, "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(308,240), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(176,140), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), ABISELECT(176,140), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C7*), ABISELECT(176,140), "S20640C5");
    check_base_class_offset(lv, (S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(29632,22196), "S20640C5");
    check_base_class_offset(lv, (S20640C13*)(S20640C12*), ABISELECT(29632,22196), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(39412,29584), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(39280,29484), "S20640C5");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), ABISELECT(39280,29484), "S20640C5");
    check_base_class_offset(lv, (S20640C7*)(S20640C15*), ABISELECT(39280,29484), "S20640C5");
    check_base_class_offset(lv, (S20640C15*)(S20640C12*), ABISELECT(37472,28168), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C12*), ABISELECT(30140,22580), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(30008,22480), "S20640C5");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C12*), ABISELECT(30008,22480), "S20640C5");
    check_base_class_offset(lv, (S20640C12*), ABISELECT(29632,22196), "S20640C5");
    check_field_offset(lv, s20640c5f0, ABISELECT(448,332), "S20640C5.s20640c5f0");
    check_field_offset(lv, s20640c5f1, ABISELECT(27136,20332), "S20640C5.s20640c5f1");
    check_field_offset(lv, s20640c5f2, ABISELECT(27144,20336), "S20640C5.s20640c5f2");
    check_field_offset(lv, s20640c5f4, ABISELECT(27152,20344), "S20640C5.s20640c5f4");
    check_field_offset(lv, s20640c5f5, ABISELECT(27156,20348), "S20640C5.s20640c5f5");
    test_class_info(&lv, &cd_S20640C5);
    dp->~S20640C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C5(Test_S20640C5, "S20640C5", ABISELECT(39552,29676));

#else // __cplusplus

extern void _ZN8S20640C5C1Ev();
extern void _ZN8S20640C5D1Ev();
Name_Map name_map_S20640C5[] = {
  NSPAIR(_ZN8S20640C5C1Ev),
  NSPAIR(_ZN8S20640C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C6;
extern VTBL_ENTRY _ZTI8S20640C6[];
extern  VTBL_ENTRY _ZTV8S20640C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C6[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C13;
extern VTBL_ENTRY _ZTI9S20640C13[];
extern  VTBL_ENTRY _ZTV9S20640C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C15;
extern VTBL_ENTRY _ZTI9S20640C15[];
extern  VTBL_ENTRY _ZTV9S20640C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C12;
extern VTBL_ENTRY _ZTI9S20640C12[];
extern  VTBL_ENTRY _ZTV9S20640C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C12[];
static Base_Class bases_S20640C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20640C4,    ABISELECT(28128,21084), //bcp->offset
    66, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(27316,20476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(28464,21348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20640C4,    ABISELECT(28288,21208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C2,    ABISELECT(28288,21208), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(27184,20376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(27184,20376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(29508,22112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(29376,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(29376,22012), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(28480,21352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(28480,21352), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20640C7,    ABISELECT(27184,20376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(27448,20568), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20640C4,    ABISELECT(27584,20668), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20640C2,    ABISELECT(27584,20668), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(27892,20908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(27760,20808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(27760,20808), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20640C6,    ABISELECT(27184,20376), //bcp->offset
    26, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20640C2,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(308,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
    24, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20640C7,    ABISELECT(176,140), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20640C9,    ABISELECT(29632,22196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20640C13,    ABISELECT(29632,22196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(39412,29584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(39280,29484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(39280,29484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20640C7,    ABISELECT(39280,29484), //bcp->offset
    137, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20640C15,    ABISELECT(37472,28168), //bcp->offset
    126, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(30140,22580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(30008,22480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    35, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(30008,22480), //bcp->offset
    118, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20640C12,    ABISELECT(29632,22196), //bcp->offset
    100, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C5[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C5D1Ev();
extern void _ZN8S20640C5D0Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C63v10Ev();
extern void _ZN8S20640C63v11Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S20640C5D1Ev,_ZTv0_n48_N8S20640C5D1Ev)();
extern void ABISELECT(_ZThn29632_N8S20640C5D1Ev,_ZThn22196_N8S20640C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20640C5D0Ev,_ZTv0_n48_N8S20640C5D0Ev)();
extern void ABISELECT(_ZThn29632_N8S20640C5D0Ev,_ZThn22196_N8S20640C5D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void ABISELECT(_ZTv0_n72_N8S20640C5D1Ev,_ZTv0_n36_N8S20640C5D1Ev)();
extern void ABISELECT(_ZThn37472_N8S20640C5D1Ev,_ZThn28168_N8S20640C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20640C5D0Ev,_ZTv0_n36_N8S20640C5D0Ev)();
extern void ABISELECT(_ZThn37472_N8S20640C5D0Ev,_ZThn28168_N8S20640C5D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY vtc_S20640C5[] = {
  ABISELECT(39280,29484),
  ABISELECT(37472,28168),
  ABISELECT(29632,22196),
  ABISELECT(29376,22012),
  ABISELECT(28480,21352),
  ABISELECT(28288,21208),
  ABISELECT(28128,21084),
  ABISELECT(27184,20376),
  ABISELECT(28464,21348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20640C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20640C5D0Ev,
  ABISELECT(29200,21872),
  ABISELECT(28304,21212),
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  ABISELECT(-27184,-20376),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v11Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-27448,-20568),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  ABISELECT(880,680),
  ABISELECT(-27584,-20668),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-27760,-20808),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-28128,-21084),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28288,-21208),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28480,-21352),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29376,-22012),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-29632,-22196),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  ABISELECT(-29632,-22196),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20640C5D1Ev,_ZTv0_n48_N8S20640C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20640C5D0Ev,_ZTv0_n48_N8S20640C5D0Ev),
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-30008,-22480),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  ABISELECT(-37472,-28168),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-9008,-6820),
  ABISELECT(-9184,-6960),
  ABISELECT(-9344,-7084),
  ABISELECT(1808,1316),
  ABISELECT(-37472,-28168),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20640C5D1Ev,_ZTv0_n36_N8S20640C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20640C5D0Ev,_ZTv0_n36_N8S20640C5D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  ABISELECT(-39280,-29484),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern VTBL_ENTRY _ZTV8S20640C5[];
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__A__8S20640C5[] = {
  ABISELECT(28464,21348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__A__8S20640C5[] = {
  ABISELECT(29200,21872),
  ABISELECT(28304,21212),
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__A3__8S20640C5[] = {
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__A5__8S20640C5[] = {
  ABISELECT(27952,20944),
  ABISELECT(28112,21068),
  ABISELECT(28288,21208),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A5__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A5__8S20640C5[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__A3__8S20640C5[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__A3__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__A__8S20640C5[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__A__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__A__8S20640C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28304,-21212),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__A__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29200,-21872),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C63v10Ev();
extern void _ZN8S20640C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C6__8S20640C5[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v11Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C78S20640C6__8S20640C5[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C78S20640C6__8S20640C5[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C78S20640C6__8S20640C5[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C78S20640C6__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C6__A3__8S20640C5[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C6__A3__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C6__A3__8S20640C5[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C28S20640C6__A1__8S20640C5[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C6__A2__8S20640C5[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C6__A4__8S20640C5[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C6__A4__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C6__A4__8S20640C5[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C6__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C6__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C6__8S20640C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C6__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C9__A3__8S20640C6__8S20640C5[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__A__8S20640C6__8S20640C5[] = {
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__8S20640C6__8S20640C5[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C5[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C5[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A2__8S20640C5[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__8S20640C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A1__8S20640C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A1__8S20640C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A1__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void _ZN9S20640C12D1Ev();
extern void _ZN9S20640C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C12__8S20640C5[] = {
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C139S20640C12__8S20640C5[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C139S20640C12__A6__8S20640C5[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C139S20640C12__A6__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C139S20640C12__A6__8S20640C5[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C139S20640C12__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C139S20640C12__8S20640C5[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C89S20640C12__A5__8S20640C5[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C89S20640C12__A8__8S20640C5[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C89S20640C12__A8__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C89S20640C12__A8__8S20640C5[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C89S20640C12__A5__8S20640C5[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C89S20640C12__A5__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C12__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C12__8S20640C5[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev)();
extern void ABISELECT(_ZThn7840_N9S20640C12D1Ev,_ZThn5972_N9S20640C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev)();
extern void ABISELECT(_ZThn7840_N9S20640C12D0Ev,_ZThn5972_N9S20640C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20640C15__9S20640C12__8S20640C5[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-9008,-6820),
  ABISELECT(-9184,-6960),
  ABISELECT(-9344,-7084),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev),
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C12__8S20640C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C12__8S20640C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(1152,844),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C12__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__9S20640C12__8S20640C5[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN9S20640C15D1Ev();
extern void _ZN9S20640C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C15__8S20640C5[] = {
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-9008,-6820),
  ABISELECT(-9184,-6960),
  ABISELECT(-9344,-7084),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN9S20640C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C15D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C15__8S20640C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__9S20640C15__8S20640C5[] = {
  0,
  0,
  ABISELECT(9344,7084),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C15__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(9184,6960),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C15__8S20640C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(8992,6816),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C15__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(8096,6156),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__A2__8S20640C5[] = {
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__A4__8S20640C5[] = {
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__A7__8S20640C5[] = {
  ABISELECT(-11152,-8400),
  ABISELECT(-10992,-8276),
  ABISELECT(-10816,-8136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A7__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8276),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A7__8S20640C5[] = {
  0,
  0,
  ABISELECT(11152,8400),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__A4__8S20640C5[] = {
  0,
  0,
  ABISELECT(11152,8400),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__A4__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8276),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(11152,8400),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8276),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__A2__8S20640C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(10800,8132),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__A2__8S20640C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(9904,7472),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
static  VTT_ENTRY vtt_S20640C5[] = {
  {&(_ZTV8S20640C5[11]),  11,152},
  {&(_tg__ZTV8S20640C2__A__8S20640C5[3]),  3,5},
  {&(_tg__ZTV8S20640C7__A__8S20640C5[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__A3__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__A5__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A5__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A5__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__A3__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__A3__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__A__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__A__8S20640C5[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__A__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__A__8S20640C5[8]),  8,11},
  {&(_ZTV8S20640C5[41]),  41,152},
  {&(_ZTV8S20640C5[70]),  70,152},
  {&(_ZTV8S20640C5[77]),  77,152},
  {&(_ZTV8S20640C5[87]),  87,152},
  {&(_ZTV8S20640C5[97]),  97,152},
  {&(_ZTV8S20640C5[52]),  52,152},
  {&(_ZTV8S20640C5[56]),  56,152},
  {&(_ZTV8S20640C5[63]),  63,152},
  {&(_ZTV8S20640C5[22]),  22,152},
  {&(_ZTV8S20640C5[114]),  114,152},
  {&(_ZTV8S20640C5[135]),  135,152},
  {&(_ZTV8S20640C5[148]),  148,152},
  {&(_ZTV8S20640C5[123]),  123,152},
  {&(_tg__ZTV8S20640C6__8S20640C5[7]),  7,13},
  {&(_tg__ZTV8S20640C78S20640C6__8S20640C5[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C78S20640C6__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C78S20640C6__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C78S20640C6__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C78S20640C6__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C78S20640C6__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C78S20640C6__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C78S20640C6__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C78S20640C6__8S20640C5[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C78S20640C6__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C78S20640C6__8S20640C5[8]),  8,11},
  {&(_tg__ZTV8S20640C98S20640C6__A3__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C6__A3__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C6__A3__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C28S20640C6__A1__8S20640C5[3]),  3,5},
  {&(_tg__ZTV8S20640C88S20640C6__A2__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C6__A4__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C6__A4__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C6__A4__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C6__A2__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C6__A2__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C6__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C6__8S20640C5[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C6__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C6__8S20640C5[8]),  8,11},
  {&(_tg__ZTV8S20640C9__A3__8S20640C6__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__A__8S20640C6__8S20640C5[3]),  3,5},
  {&(_tg__ZTV8S20640C8__A__8S20640C6__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C2__8S20640C5[3]),  3,5},
  {&(_tg__ZTV9S20640C11__8S20640C5[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A2__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__8S20640C5[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A1__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A1__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A1__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A1__8S20640C5[5]),  5,7},
  {&(_tg__ZTV9S20640C12__8S20640C5[9]),  9,13},
  {&(_tg__ZTV9S20640C139S20640C12__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C99S20640C139S20640C12__A6__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C139S20640C12__A6__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C139S20640C12__A6__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C139S20640C12__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C139S20640C12__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C89S20640C12__A5__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C89S20640C12__A8__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C89S20640C12__A8__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C89S20640C12__A8__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C89S20640C12__A5__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C89S20640C12__A5__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C2__9S20640C12__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C12__8S20640C5[4]),  4,6},
  {&(_tg__ZTV9S20640C15__9S20640C12__8S20640C5[9]),  9,11},
  {&(_tg__ZTV8S20640C7__9S20640C12__8S20640C5[11]),  11,15},
  {&(_tg__ZTV9S20640C11__9S20640C12__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C12__8S20640C5[8]),  8,11},
  {&(_tg__ZTV8S20640C8__A__9S20640C12__8S20640C5[5]),  5,8},
  {&(_tg__ZTV9S20640C15__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C7__9S20640C15__8S20640C5[11]),  11,15},
  {&(_tg__ZTV8S20640C4__9S20640C15__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C15__8S20640C5[5]),  5,7},
  {&(_tg__ZTV9S20640C11__9S20640C15__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C15__8S20640C5[8]),  8,11},
  {&(_tg__ZTV8S20640C7__A2__8S20640C5[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__A4__8S20640C5[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__A7__8S20640C5[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A7__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A7__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__A4__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__A4__8S20640C5[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__A2__8S20640C5[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__A2__8S20640C5[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__A2__8S20640C5[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__A2__8S20640C5[8]),  8,11},
};
extern VTBL_ENTRY _ZTI8S20640C5[];
extern  VTBL_ENTRY _ZTV8S20640C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C5[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20640C12D0Ev,_ZThn5972_N9S20640C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20640C12D1Ev,_ZThn5972_N9S20640C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20640C5D0Ev,_ZTv0_n36_N8S20640C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S20640C5D0Ev,_ZThn28168_N8S20640C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20640C5D1Ev,_ZTv0_n36_N8S20640C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S20640C5D1Ev,_ZThn28168_N8S20640C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20640C5D0Ev,_ZTv0_n48_N8S20640C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S20640C5D0Ev,_ZThn22196_N8S20640C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20640C5D1Ev,_ZTv0_n48_N8S20640C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S20640C5D1Ev,_ZThn22196_N8S20640C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20640C5 = {  "S20640C5", // class name
  bases_S20640C5, 37,
  &(vtc_S20640C5[0]), // expected_vtbl_contents
  &(vtt_S20640C5[0]), // expected_vtt_contents
  ABISELECT(39552,29676), // object size
  NSPAIRA(_ZTI8S20640C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20640C5),152, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C5),106, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20640C17  {
  __tsi64 s20640c17f0;
  __tsi64 s20640c17f1;
  ::S20640C15 s20640c17f2;
  int s20640c17f3;
  void  mf20640c17(); // _ZN9S20640C1710mf20640c17Ev
};
//SIG(-1 S20640C17) C1{ m FL[2] FC2{ VBC3{ VBC4{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC5{ BC6{ m Fi} VBC4 VBC7{ VBC6 BC4 Fi Fs[2] FL} BC8{ VBC6 VBC7 VBC4 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC10{ VBC7 VBC5 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} vd FC3 Fs:5 Fl} Fi}


void  S20640C17 ::mf20640c17(){}

static void Test_S20640C17()
{
  {
    init_simple_test("S20640C17");
    static S20640C17 lv;
    check2(sizeof(lv), ABISELECT(3616,2640), "sizeof(S20640C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C17)");
    check_field_offset(lv, s20640c17f0, 0, "S20640C17.s20640c17f0");
    check_field_offset(lv, s20640c17f1, 8, "S20640C17.s20640c17f1");
    check_field_offset(lv, s20640c17f2, 16, "S20640C17.s20640c17f2");
    check_field_offset(lv, s20640c17f3, ABISELECT(3600,2636), "S20640C17.s20640c17f3");
  }
}
static Arrange_To_Call_Me vS20640C17(Test_S20640C17, "S20640C17", ABISELECT(3616,2640));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S20640C17[];
VTBL_ENTRY *P__ZTI9S20640C17 = _ZTI9S20640C17; 
Class_Descriptor cd_S20640C17 = {  "S20640C17", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(3616,2640), // object size
  NSPAIRA(_ZTI9S20640C17),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  S20640C18  {
  ::S20640C8 s20640c18f0;
  short s20640c18f1;
  void *s20640c18f2;
  __tsi64 s20640c18f3:64;
  int s20640c18f4[9];
  int s20640c18f5[9];
  virtual  ~S20640C18(); // _ZN9S20640C18D1Ev
  virtual void  v13(); // _ZN9S20640C183v13Ev
  S20640C18(); // tgen
};
//SIG(-1 S20640C18) C1{ vd v1 FC2{ BC3{ m Fi} VBC4{ v4 v5 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC5{ VBC3 BC4 Fi Fs[2] FL} BC6{ VBC3 VBC5 VBC4 v6 FL[8] Fp[7] Fs} v2 v3 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} Fs Fp FL:64 Fi[9] Fi[9]}


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

static void Test_S20640C18()
{
  extern Class_Descriptor cd_S20640C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,137)];
    init_test(&cd_S20640C18, buf);
    S20640C18 *dp, &lv = *(dp=new (buf) S20640C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,544), "sizeof(S20640C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C18)");
    check_field_offset(lv, s20640c18f0, ABISELECT(16,4), "S20640C18.s20640c18f0");
    check_field_offset(lv, s20640c18f1, ABISELECT(624,456), "S20640C18.s20640c18f1");
    check_field_offset(lv, s20640c18f2, ABISELECT(632,460), "S20640C18.s20640c18f2");
    set_bf_and_test(lv, s20640c18f3, ABISELECT(640,464), 0, 64, 1, "S20640C18");
    set_bf_and_test(lv, s20640c18f3, ABISELECT(640,464), 0, 64, hide_sll(1LL<<63), "S20640C18");
    check_field_offset(lv, s20640c18f4, ABISELECT(648,472), "S20640C18.s20640c18f4");
    check_field_offset(lv, s20640c18f5, ABISELECT(684,508), "S20640C18.s20640c18f5");
    test_class_info(&lv, &cd_S20640C18);
    dp->~S20640C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C18(Test_S20640C18, "S20640C18", ABISELECT(720,544));

#else // __cplusplus

extern void _ZN9S20640C18C1Ev();
extern void _ZN9S20640C18D1Ev();
Name_Map name_map_S20640C18[] = {
  NSPAIR(_ZN9S20640C18C1Ev),
  NSPAIR(_ZN9S20640C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20640C18[];
extern void _ZN9S20640C18D1Ev();
extern void _ZN9S20640C18D0Ev();
extern void _ZN9S20640C183v13Ev();
static  VTBL_ENTRY vtc_S20640C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C18[0]),
  (VTBL_ENTRY)&_ZN9S20640C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20640C183v13Ev,
};
extern VTBL_ENTRY _ZTI9S20640C18[];
extern  VTBL_ENTRY _ZTV9S20640C18[];
Class_Descriptor cd_S20640C18 = {  "S20640C18", // class name
  0,0,//no base classes
  &(vtc_S20640C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(720,544), // object size
  NSPAIRA(_ZTI9S20640C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20640C18),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  S20640C1  : virtual S20640C2 , virtual S20640C5 , virtual S20640C17 , S20640C18 , S20640C8 {
  void *s20640c1f0;
  int s20640c1f1;
  int s20640c1f2;
  int s20640c1f3;
  char s20640c1f4;
  __tsi64 s20640c1f5;
  virtual void  v1(); // _ZN8S20640C12v1Ev
  virtual void  v2(); // _ZN8S20640C12v2Ev
  ~S20640C1(); // tgen
  S20640C1(); // tgen
};
//SIG(1 S20640C1) C1{ VBC2{ VBC3{ m Fi} BC4{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ VBC6{ VBC4 BC7{ VBC4 BC8{ BC3 VBC4 VBC2 BC9{ VBC3 VBC2 VBC4 v5 FL[8] Fp[7] Fs} v6 v7 FU10{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC11{ VBC2 VBC8 BC9 v8 Fp Fs[2] FD[2] Fc FC2 FD FC9} v9 Fi Fc Fc:1} BC9 BC2 BC8 v10 v11 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC2 BC7 VBC12{ BC13{ BC9 v12 FL FC2 Fs Fc Fi Fi Fp FC14{} Fi FL} VBC15{ VBC7 vd FC7 Fs:5 Fl} BC8 FC13[9] Fi Fs:16 FC9 Fi Fs Fp Fl FC2} FC16{ BC2 VBC4 VBC8 BC3 VBC12 vd v14 Fi Fp Fc Fi:1 Fp FC12 FC3[6] Fp FC15 FL:5 Fl} Fp Fc[7] Fc:0 FC3 Fi[7]} VBC17{ m FL FL FC15 Fi} BC18{ vd v13 FC8 Fs Fp FL:64 Fi[9] Fi[9]} BC8 v1 v2 Fp Fi Fi Fi Fc FL}


void  S20640C1 ::v1(){vfunc_called(this, "_ZN8S20640C12v1Ev");}
void  S20640C1 ::v2(){vfunc_called(this, "_ZN8S20640C12v2Ev");}
S20640C1 ::~S20640C1(){ note_dtor("S20640C1", this);} // tgen
S20640C1 ::S20640C1(){ note_ctor("S20640C1", this);} // tgen

static void Test_S20640C1()
{
  extern Class_Descriptor cd_S20640C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2762,8269)];
    init_test(&cd_S20640C1, buf);
    S20640C1 *dp, &lv = *(dp=new (buf) S20640C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(44176,33072), "sizeof(S20640C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20640C1)");
    /*is_ambiguous_... S20640C1::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C11*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C6*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*)(S20640C6*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C2*)(S20640C5*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(1184,896), "S20640C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C9*)(S20640C8*), ABISELECT(1184,896), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(1008,756), "S20640C1");
    check_base_class_offset(lv, (S20640C2*)(S20640C11*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C11*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C6*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C6*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(1008,756), "S20640C1");
    check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C7*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*)(S20640C12*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C8*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C9*)(S20640C8*), ABISELECT(1008,756), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C11*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*)(S20640C5*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C9::S20640C4 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C7*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C7*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*)(S20640C12*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C8*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C9*)(S20640C8*), ABISELECT(29328,21984), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28516,21376), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28384,21276), "S20640C1");
    /*is_ambiguous_... S20640C7::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*)(S20640C6*), ABISELECT(28384,21276), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(30516,22868), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(30384,22768), "S20640C1");
    check_base_class_offset(lv, (S20640C8*)(S20640C11*), ABISELECT(30384,22768), "S20640C1");
    /*is_ambiguous_... S20640C11::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C11*), ABISELECT(29488,22108), "S20640C1");
    check_base_class_offset(lv, (S20640C11*)(S20640C7*)(S20640C6*), ABISELECT(29488,22108), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C11*)(S20640C7*)(S20640C5*), ABISELECT(29488,22108), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C11*)(S20640C7*), ABISELECT(29488,22108), "S20640C1");
    check_base_class_offset(lv, (S20640C7*)(S20640C6*), ABISELECT(28384,21276), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C9 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C6*), ABISELECT(28648,21468), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*)(S20640C6*), ABISELECT(28784,21568), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C6*), ABISELECT(28784,21568), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C6*), ABISELECT(29092,21808), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C6*), ABISELECT(28960,21708), "S20640C1");
    /*is_ambiguous_... S20640C6::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C6*), ABISELECT(28960,21708), "S20640C1");
    check_base_class_offset(lv, (S20640C6*)(S20640C5*), ABISELECT(28384,21276), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C4*)(S20640C2*)(S20640C5*), ABISELECT(1200,900), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C2 */ AMB_check_base_class_offset(lv, (S20640C2*)(S20640C5*), ABISELECT(1200,900), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(1508,1140), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(1376,1040), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*)(S20640C5*), ABISELECT(1376,1040), "S20640C1");
    /*is_ambiguous_... S20640C5::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C7*)(S20640C5*), ABISELECT(1376,1040), "S20640C1");
    check_base_class_offset(lv, (S20640C9*)(S20640C13*)(S20640C12*), ABISELECT(30640,22952), "S20640C1");
    check_base_class_offset(lv, (S20640C13*)(S20640C12*), ABISELECT(30640,22952), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C7*), ABISELECT(40420,30340), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C7*), ABISELECT(40288,30240), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C7 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C7*), ABISELECT(40288,30240), "S20640C1");
    check_base_class_offset(lv, (S20640C7*)(S20640C15*), ABISELECT(40288,30240), "S20640C1");
    check_base_class_offset(lv, (S20640C15*)(S20640C12*), ABISELECT(38480,28924), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*)(S20640C12*), ABISELECT(31148,23336), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*)(S20640C12*), ABISELECT(31016,23236), "S20640C1");
    /*is_ambiguous_... S20640C12::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*)(S20640C12*), ABISELECT(31016,23236), "S20640C1");
    check_base_class_offset(lv, (S20640C12*)(S20640C5*), ABISELECT(30640,22952), "S20640C1");
    check_base_class_offset(lv, (S20640C5*), ABISELECT(1200,900), "S20640C1");
    check_base_class_offset(lv, (S20640C17*), ABISELECT(40560,30432), "S20640C1");
    check_base_class_offset(lv, (S20640C18*), 0, "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20640C8*), ABISELECT(852,644), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C9*)(S20640C8*), ABISELECT(720,544), "S20640C1");
    /*is_ambiguous_... S20640C1::S20640C8 */ AMB_check_base_class_offset(lv, (S20640C8*), ABISELECT(720,544), "S20640C1");
    check_field_offset(lv, s20640c1f0, ABISELECT(976,728), "S20640C1.s20640c1f0");
    check_field_offset(lv, s20640c1f1, ABISELECT(984,732), "S20640C1.s20640c1f1");
    check_field_offset(lv, s20640c1f2, ABISELECT(988,736), "S20640C1.s20640c1f2");
    check_field_offset(lv, s20640c1f3, ABISELECT(992,740), "S20640C1.s20640c1f3");
    check_field_offset(lv, s20640c1f4, ABISELECT(996,744), "S20640C1.s20640c1f4");
    check_field_offset(lv, s20640c1f5, ABISELECT(1000,748), "S20640C1.s20640c1f5");
    test_class_info(&lv, &cd_S20640C1);
    dp->~S20640C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20640C1(Test_S20640C1, "S20640C1", ABISELECT(44176,33072));

#else // __cplusplus

extern void _ZN8S20640C1C1Ev();
extern void _ZN8S20640C1D1Ev();
Name_Map name_map_S20640C1[] = {
  NSPAIR(_ZN8S20640C1C1Ev),
  NSPAIR(_ZN8S20640C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C11;
extern VTBL_ENTRY _ZTI9S20640C11[];
extern  VTBL_ENTRY _ZTV9S20640C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C11[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C6;
extern VTBL_ENTRY _ZTI8S20640C6[];
extern  VTBL_ENTRY _ZTV8S20640C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C6[];
extern Class_Descriptor cd_S20640C4;
extern VTBL_ENTRY _ZTI8S20640C4[];
extern  VTBL_ENTRY _ZTV8S20640C4[];
extern Class_Descriptor cd_S20640C2;
extern VTBL_ENTRY _ZTI8S20640C2[];
extern  VTBL_ENTRY _ZTV8S20640C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C13;
extern VTBL_ENTRY _ZTI9S20640C13[];
extern  VTBL_ENTRY _ZTV9S20640C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C7;
extern VTBL_ENTRY _ZTI8S20640C7[];
extern  VTBL_ENTRY _ZTV8S20640C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C7[];
extern Class_Descriptor cd_S20640C15;
extern VTBL_ENTRY _ZTI9S20640C15[];
extern  VTBL_ENTRY _ZTV9S20640C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
extern Class_Descriptor cd_S20640C12;
extern VTBL_ENTRY _ZTI9S20640C12[];
extern  VTBL_ENTRY _ZTV9S20640C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20640C12[];
extern Class_Descriptor cd_S20640C5;
extern VTBL_ENTRY _ZTI8S20640C5[];
extern  VTBL_ENTRY _ZTV8S20640C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C5[];
extern Class_Descriptor cd_S20640C17;
extern VTBL_ENTRY _ZTI9S20640C17[];
extern Class_Descriptor cd_S20640C18;
extern VTBL_ENTRY _ZTI9S20640C18[];
extern  VTBL_ENTRY _ZTV9S20640C18[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20640C9;
extern VTBL_ENTRY _ZTI8S20640C9[];
extern  VTBL_ENTRY _ZTV8S20640C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C9[];
extern Class_Descriptor cd_S20640C8;
extern VTBL_ENTRY _ZTI8S20640C8[];
extern  VTBL_ENTRY _ZTV8S20640C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C8[];
static Base_Class bases_S20640C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1184,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
    2, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(1008,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(1008,756), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C4,    ABISELECT(29328,21984), //bcp->offset
    106, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(28516,21376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(28384,21276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(28384,21276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(30516,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
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(30384,22768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(30384,22768), //bcp->offset
    122, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20640C9,    ABISELECT(29488,22108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20640C11,    ABISELECT(29488,22108), //bcp->offset
    112, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20640C7,    ABISELECT(28384,21276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(28648,21468), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20640C4,    ABISELECT(28784,21568), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20640C2,    ABISELECT(28784,21568), //bcp->offset
    93, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(29092,21808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(28960,21708), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(28960,21708), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20640C6,    ABISELECT(28384,21276), //bcp->offset
    66, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20640C4,    ABISELECT(1200,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20640C2,    ABISELECT(1200,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(1508,1140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(1376,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(1376,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20640C7,    ABISELECT(1376,1040), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(30640,22952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20640C13,    ABISELECT(30640,22952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(40420,30340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(40288,30240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(40288,30240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    31, //immediately_derived
  0, 0},
  {&cd_S20640C7,    ABISELECT(40288,30240), //bcp->offset
    170, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20640C15,    ABISELECT(38480,28924), //bcp->offset
    159, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(31148,23336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20640C9,    ABISELECT(31016,23236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(31016,23236), //bcp->offset
    151, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20640C12,    ABISELECT(30640,22952), //bcp->offset
    133, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20640C5,    ABISELECT(1200,900), //bcp->offset
    33, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C17,    ABISELECT(40560,30432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20640C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(852,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20640C9,    ABISELECT(720,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20640C8,    ABISELECT(720,544), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20640C1[];
extern void _ZN8S20640C1D1Ev();
extern void _ZN8S20640C1D0Ev();
extern void _ZN9S20640C183v13Ev();
extern void _ZN8S20640C12v1Ev();
extern void _ZN8S20640C12v2Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void ABISELECT(_ZTv0_n112_N8S20640C1D1Ev,_ZTv0_n56_N8S20640C1D1Ev)();
extern void ABISELECT(_ZThn1200_N8S20640C1D1Ev,_ZThn900_N8S20640C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20640C1D0Ev,_ZTv0_n56_N8S20640C1D0Ev)();
extern void ABISELECT(_ZThn1200_N8S20640C1D0Ev,_ZThn900_N8S20640C1D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C63v10Ev();
extern void _ZN8S20640C63v11Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S20640C1D1Ev,_ZTv0_n48_N8S20640C1D1Ev)();
extern void ABISELECT(_ZThn30640_N8S20640C1D1Ev,_ZThn22952_N8S20640C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20640C1D0Ev,_ZTv0_n48_N8S20640C1D0Ev)();
extern void ABISELECT(_ZThn30640_N8S20640C1D0Ev,_ZThn22952_N8S20640C1D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void ABISELECT(_ZTv0_n72_N8S20640C1D1Ev,_ZTv0_n36_N8S20640C1D1Ev)();
extern void ABISELECT(_ZThn38480_N8S20640C1D1Ev,_ZThn28924_N8S20640C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20640C1D0Ev,_ZTv0_n36_N8S20640C1D0Ev)();
extern void ABISELECT(_ZThn38480_N8S20640C1D0Ev,_ZThn28924_N8S20640C1D0Ev)() __attribute__((weak));
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY vtc_S20640C1[] = {
  ABISELECT(40560,30432),
  ABISELECT(40288,30240),
  ABISELECT(38480,28924),
  ABISELECT(30640,22952),
  ABISELECT(30384,22768),
  ABISELECT(29488,22108),
  ABISELECT(29328,21984),
  ABISELECT(28384,21276),
  ABISELECT(1200,900),
  ABISELECT(1184,896),
  ABISELECT(1008,756),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20640C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20640C183v13Ev,
  (VTBL_ENTRY)&_ZN8S20640C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20640C12v2Ev,
  ABISELECT(28608,21440),
  ABISELECT(288,212),
  ABISELECT(464,352),
  ABISELECT(-720,-544),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1008,-756),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  ABISELECT(176,140),
  ABISELECT(176,140),
  ABISELECT(176,140),
  ABISELECT(176,140),
  ABISELECT(-1200,-900),
  0,
  0,
  ABISELECT(39088,29340),
  ABISELECT(37280,28024),
  ABISELECT(29440,22052),
  ABISELECT(29184,21868),
  ABISELECT(28288,21208),
  ABISELECT(-192,-144),
  ABISELECT(28128,21084),
  ABISELECT(27184,20376),
  ABISELECT(-16,-4),
  ABISELECT(-1200,-900),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20640C1D1Ev,_ZTv0_n56_N8S20640C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20640C1D0Ev,_ZTv0_n56_N8S20640C1D0Ev),
  ABISELECT(29008,21728),
  ABISELECT(28112,21068),
  ABISELECT(27952,20944),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  ABISELECT(-1376,-1040),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20520),
  ABISELECT(-27200,-20380),
  ABISELECT(-28384,-21276),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v11Ev,
  ABISELECT(680,516),
  ABISELECT(-27640,-20712),
  ABISELECT(-27464,-20572),
  ABISELECT(-28648,-21468),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  ABISELECT(-27600,-20672),
  ABISELECT(-28784,-21568),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  ABISELECT(368,276),
  ABISELECT(-27952,-20952),
  ABISELECT(-27776,-20812),
  ABISELECT(-28960,-21708),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  0,
  0,
  ABISELECT(-29328,-21984),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(-29488,-22108),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(-30384,-22768),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-30640,-22952),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22196),
  ABISELECT(-29456,-22056),
  ABISELECT(-30640,-22952),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20640C1D1Ev,_ZTv0_n48_N8S20640C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20640C1D0Ev,_ZTv0_n48_N8S20640C1D0Ev),
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22480),
  ABISELECT(-29832,-22340),
  ABISELECT(-31016,-23236),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  ABISELECT(-38480,-28924),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-37296,-28028),
  ABISELECT(-37472,-28168),
  ABISELECT(-9152,-6940),
  ABISELECT(1808,1316),
  ABISELECT(-38480,-28924),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20640C1D1Ev,_ZTv0_n36_N8S20640C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20640C1D0Ev,_ZTv0_n36_N8S20640C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  ABISELECT(-40288,-30240),
  (VTBL_ENTRY)&(_ZTI8S20640C1[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern VTBL_ENTRY _ZTV8S20640C1[];
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__8S20640C1[] = {
  ABISELECT(28608,21440),
  ABISELECT(288,212),
  ABISELECT(464,352),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A9__8S20640C1[] = {
  ABISELECT(28608,21440),
  ABISELECT(288,212),
  ABISELECT(464,352),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A9__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A9__8S20640C1[] = {
  0,
  0,
  ABISELECT(-28608,-21440),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A__8S20640C1[] = {
  0,
  0,
  ABISELECT(-28608,-21440),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C1[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
extern void _ZN8S20640C5D1Ev();
extern void _ZN8S20640C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C5__8S20640C1[] = {
  ABISELECT(39088,29340),
  ABISELECT(37280,28024),
  ABISELECT(29440,22052),
  ABISELECT(29184,21868),
  ABISELECT(28288,21208),
  ABISELECT(-192,-144),
  ABISELECT(28128,21084),
  ABISELECT(27184,20376),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20640C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20640C5D0Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C28S20640C5__A2__8S20640C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C78S20640C5__A1__8S20640C1[] = {
  ABISELECT(29008,21728),
  ABISELECT(28112,21068),
  ABISELECT(27952,20944),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C78S20640C5__A3__8S20640C1[] = {
  ABISELECT(27952,20944),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C78S20640C5__A5__8S20640C1[] = {
  ABISELECT(27952,20944),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C78S20640C5__A5__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(368,284),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C78S20640C5__A5__8S20640C1[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C78S20640C5__A3__8S20640C1[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C78S20640C5__A3__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(368,284),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C78S20640C5__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(-27952,-20944),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C78S20640C5__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(368,284),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C78S20640C5__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(-28112,-21068),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C78S20640C5__A1__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(-29008,-21728),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C63v10Ev();
extern void _ZN8S20640C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C6__8S20640C5__8S20640C1[] = {
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20520),
  ABISELECT(-27200,-20380),
  ABISELECT(-27184,-20376),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v11Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C5__8S20640C1[] = {
  0,
  0,
  ABISELECT(-28128,-21084),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C5__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C5__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(-28288,-21208),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C5__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(-29184,-21868),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C6__A3__8S20640C5__8S20640C1[] = {
  ABISELECT(680,516),
  ABISELECT(-27640,-20712),
  ABISELECT(-27464,-20572),
  ABISELECT(-27448,-20568),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C28S20640C6__A1__8S20640C5__8S20640C1[] = {
  ABISELECT(-27600,-20672),
  ABISELECT(-27584,-20668),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C6__A2__8S20640C5__8S20640C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20952),
  ABISELECT(-27776,-20812),
  ABISELECT(-27760,-20808),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__A__8S20640C5__8S20640C1[] = {
  ABISELECT(29008,21728),
  ABISELECT(28112,21068),
  ABISELECT(27952,20944),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S20640C5D1Ev,_ZTv0_n48_N8S20640C5D1Ev)();
extern void ABISELECT(_ZThn29440_N8S20640C5D1Ev,_ZThn22052_N8S20640C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20640C5D0Ev,_ZTv0_n48_N8S20640C5D0Ev)();
extern void ABISELECT(_ZThn29440_N8S20640C5D0Ev,_ZThn22052_N8S20640C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20640C12__8S20640C5__8S20640C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-29440,-22052),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22196),
  ABISELECT(-29456,-22056),
  ABISELECT(-29440,-22052),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20640C5D1Ev,_ZTv0_n48_N8S20640C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20640C5D0Ev,_ZTv0_n48_N8S20640C5D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S20640C5D1Ev,_ZTv0_n36_N8S20640C5D1Ev)();
extern void ABISELECT(_ZThn37280_N8S20640C5D1Ev,_ZThn28024_N8S20640C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20640C5D0Ev,_ZTv0_n36_N8S20640C5D0Ev)();
extern void ABISELECT(_ZThn37280_N8S20640C5D0Ev,_ZThn28024_N8S20640C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20640C15__8S20640C5__8S20640C1[] = {
  ABISELECT(-37280,-28024),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-37296,-28028),
  ABISELECT(-37472,-28168),
  ABISELECT(-9152,-6940),
  ABISELECT(1808,1316),
  ABISELECT(-37280,-28024),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20640C5D1Ev,_ZTv0_n36_N8S20640C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20640C5D0Ev,_ZTv0_n36_N8S20640C5D0Ev),
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__A2__8S20640C5__8S20640C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  ABISELECT(-39088,-29340),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C89S20640C12__A5__8S20640C5__8S20640C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22480),
  ABISELECT(-29832,-22340),
  ABISELECT(-29816,-22336),
  (VTBL_ENTRY)&(_ZTI8S20640C5[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
extern void _ZN8S20640C63v10Ev();
extern void _ZN8S20640C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C6__8S20640C1[] = {
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20520),
  ABISELECT(-27200,-20380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20640C63v11Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C78S20640C6__8S20640C1[] = {
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20520),
  ABISELECT(-27200,-20380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C78S20640C6__8S20640C1[] = {
  ABISELECT(944,708),
  ABISELECT(-27376,-20520),
  ABISELECT(-27200,-20380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C78S20640C6__8S20640C1[] = {
  ABISELECT(944,708),
  ABISELECT(-27376,-20520),
  ABISELECT(-27200,-20380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20520),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20520),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20520),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C78S20640C6__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(-2000,-1492),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C6__A3__8S20640C1[] = {
  ABISELECT(680,516),
  ABISELECT(-27640,-20712),
  ABISELECT(-27464,-20572),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C6__A3__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27640,20712),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C6__A3__8S20640C1[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C28S20640C6__A1__8S20640C1[] = {
  ABISELECT(-27600,-20672),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C2[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C6__A2__8S20640C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20952),
  ABISELECT(-27776,-20812),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C6__A4__8S20640C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20952),
  ABISELECT(-27776,-20812),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C6__A4__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27952,20952),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C6__A4__8S20640C1[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C6__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C6__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27952,20952),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20520),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C6__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C6__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(-2000,-1492),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C9__A3__8S20640C6__8S20640C1[] = {
  ABISELECT(680,516),
  ABISELECT(-27640,-20712),
  ABISELECT(-27464,-20572),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__A__8S20640C6__8S20640C1[] = {
  ABISELECT(-27600,-20672),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__8S20640C6__8S20640C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20952),
  ABISELECT(-27776,-20812),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S20640C6[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C1[] = {
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C11__A2__8S20640C1[] = {
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(28480,21352),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C11__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(28480,21352),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__9S20640C11__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C11__8S20640C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI9S20640C11[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C1[] = {
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C8__A1__8S20640C1[] = {
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29376,22012),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(1056,784),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C8__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(1056,784),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C8__A1__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29376,22012),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
extern void _ZN9S20640C12D1Ev();
extern void _ZN9S20640C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C12__8S20640C1[] = {
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22196),
  ABISELECT(-29456,-22056),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C12D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C139S20640C12__8S20640C1[] = {
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22196),
  ABISELECT(-29456,-22056),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C133v12Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C99S20640C139S20640C12__A6__8S20640C1[] = {
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22196),
  ABISELECT(-29456,-22056),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C99S20640C139S20640C12__A6__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29632,22196),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C99S20640C139S20640C12__A6__8S20640C1[] = {
  0,
  0,
  ABISELECT(1312,968),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C139S20640C12__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29632,22196),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C139S20640C12__8S20640C1[] = {
  0,
  0,
  ABISELECT(1312,968),
  (VTBL_ENTRY)&(_ZTI9S20640C13[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C89S20640C12__A5__8S20640C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22480),
  ABISELECT(-29832,-22340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C89S20640C12__A8__8S20640C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22480),
  ABISELECT(-29832,-22340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C89S20640C12__A8__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(30008,22480),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C89S20640C12__A8__8S20640C1[] = {
  0,
  0,
  ABISELECT(1688,1252),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C89S20640C12__A5__8S20640C1[] = {
  0,
  0,
  ABISELECT(1688,1252),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C89S20640C12__A5__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(30008,22480),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C12__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29632,22196),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__9S20640C12__8S20640C1[] = {
  0,
  0,
  ABISELECT(1312,968),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev)();
extern void ABISELECT(_ZThn7840_N9S20640C12D1Ev,_ZThn5972_N9S20640C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev)();
extern void ABISELECT(_ZThn7840_N9S20640C12D0Ev,_ZThn5972_N9S20640C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20640C15__9S20640C12__8S20640C1[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-37296,-28028),
  ABISELECT(-37472,-28168),
  ABISELECT(-9152,-6940),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev),
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C12__8S20640C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C12__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(1152,844),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C12__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A__9S20640C12__8S20640C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22480),
  ABISELECT(-29832,-22340),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20640C12[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN9S20640C15D1Ev();
extern void _ZN9S20640C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C15__8S20640C1[] = {
  ABISELECT(-8096,-6156),
  ABISELECT(-8992,-6816),
  ABISELECT(-37296,-28028),
  ABISELECT(-37472,-28168),
  ABISELECT(-9152,-6940),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN9S20640C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20640C15D0Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__9S20640C15__8S20640C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__9S20640C15__8S20640C1[] = {
  0,
  0,
  ABISELECT(9152,6940),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__9S20640C15__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(37472,28168),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__9S20640C15__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(8992,6816),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__9S20640C15__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(8096,6156),
  (VTBL_ENTRY)&(_ZTI9S20640C15[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
extern void _ZN8S20640C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C7__A2__8S20640C1[] = {
  ABISELECT(-9904,-7472),
  ABISELECT(-10800,-8132),
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20640C72v9Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C88S20640C7__A4__8S20640C1[] = {
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
extern void _ZN8S20640C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C98S20640C88S20640C7__A7__8S20640C1[] = {
  ABISELECT(-10960,-8256),
  ABISELECT(-39280,-29484),
  ABISELECT(-39104,-29344),
  0,
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A7__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(39280,29484),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A7__8S20640C1[] = {
  0,
  0,
  ABISELECT(10960,8256),
  (VTBL_ENTRY)&(_ZTI8S20640C9[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C88S20640C7__A4__8S20640C1[] = {
  0,
  0,
  ABISELECT(10960,8256),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C88S20640C7__A4__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(39280,29484),
  (VTBL_ENTRY)&(_ZTI8S20640C8[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C4__8S20640C7__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(10960,8256),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C42v3Ev();
extern void _ZN8S20640C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C2__8S20640C7__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(39280,29484),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20640C42v4Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN9S20640C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20640C11__8S20640C7__A2__8S20640C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21352),
  ABISELECT(-28304,-21212),
  ABISELECT(10800,8132),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20640C112v8Ev,
};
extern void _ZN8S20640C92v5Ev();
extern void _ZN8S20640C82v6Ev();
extern void _ZN8S20640C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20640C8__A1__8S20640C7__A2__8S20640C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22012),
  ABISELECT(-29200,-21872),
  ABISELECT(9904,7472),
  (VTBL_ENTRY)&(_ZTI8S20640C7[0]),
  (VTBL_ENTRY)&_ZN8S20640C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20640C82v7Ev,
};
static  VTT_ENTRY vtt_S20640C1[] = {
  {&(_ZTV8S20640C1[13]),  13,185},
  {&(_tg__ZTV8S20640C8__A__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A9__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A9__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A9__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A__8S20640C1[5]),  5,7},
  {&(_ZTV8S20640C1[31]),  31,185},
  {&(_ZTV8S20640C1[51]),  51,185},
  {&(_ZTV8S20640C1[81]),  81,185},
  {&(_ZTV8S20640C1[110]),  110,185},
  {&(_ZTV8S20640C1[120]),  120,185},
  {&(_ZTV8S20640C1[130]),  130,185},
  {&(_ZTV8S20640C1[92]),  92,185},
  {&(_ZTV8S20640C1[96]),  96,185},
  {&(_ZTV8S20640C1[103]),  103,185},
  {&(_ZTV8S20640C1[62]),  62,185},
  {&(_ZTV8S20640C1[147]),  147,185},
  {&(_ZTV8S20640C1[168]),  168,185},
  {&(_ZTV8S20640C1[181]),  181,185},
  {&(_ZTV8S20640C1[156]),  156,185},
  {&(_ZTV8S20640C1[23]),  23,185},
  {&(_tg__ZTV8S20640C2__8S20640C1[3]),  3,5},
  {&(_tg__ZTV8S20640C5__8S20640C1[11]),  11,15},
  {&(_tg__ZTV8S20640C28S20640C5__A2__8S20640C1[3]),  3,5},
  {&(_tg__ZTV8S20640C78S20640C5__A1__8S20640C1[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C78S20640C5__A3__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C78S20640C5__A5__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C78S20640C5__A5__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C78S20640C5__A5__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C78S20640C5__A3__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C78S20640C5__A3__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C78S20640C5__A1__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C78S20640C5__A1__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C78S20640C5__A1__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C78S20640C5__A1__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C6__8S20640C5__8S20640C1[15]),  15,21},
  {&(_tg__ZTV8S20640C4__8S20640C5__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C5__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C5__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C5__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C98S20640C6__A3__8S20640C5__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C28S20640C6__A1__8S20640C5__8S20640C1[3]),  3,5},
  {&(_tg__ZTV8S20640C88S20640C6__A2__8S20640C5__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C7__A__8S20640C5__8S20640C1[7]),  7,11},
  {&(_tg__ZTV9S20640C12__8S20640C5__8S20640C1[14]),  14,18},
  {&(_tg__ZTV9S20640C15__8S20640C5__8S20640C1[9]),  9,11},
  {&(_tg__ZTV8S20640C7__A2__8S20640C5__8S20640C1[11]),  11,15},
  {&(_tg__ZTV8S20640C89S20640C12__A5__8S20640C5__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C6__8S20640C1[7]),  7,13},
  {&(_tg__ZTV8S20640C78S20640C6__8S20640C1[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C78S20640C6__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C78S20640C6__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C78S20640C6__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C78S20640C6__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C78S20640C6__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C78S20640C6__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C78S20640C6__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C78S20640C6__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C78S20640C6__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C78S20640C6__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C98S20640C6__A3__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C6__A3__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C6__A3__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C28S20640C6__A1__8S20640C1[3]),  3,5},
  {&(_tg__ZTV8S20640C88S20640C6__A2__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C6__A4__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C6__A4__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C6__A4__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C6__A2__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C6__A2__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C6__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C6__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C6__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C6__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C9__A3__8S20640C6__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__A__8S20640C6__8S20640C1[3]),  3,5},
  {&(_tg__ZTV8S20640C8__A__8S20640C6__8S20640C1[5]),  5,8},
  {&(_tg__ZTV9S20640C11__8S20640C1[6]),  6,8},
  {&(_tg__ZTV8S20640C99S20640C11__A2__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C11__A2__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C11__A2__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C11__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C8__9S20640C11__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C4__A1__9S20640C11__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C8__A1__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C8__A1__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C8__A1__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C8__A1__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C8__A1__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C8__A1__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C12__8S20640C1[9]),  9,13},
  {&(_tg__ZTV9S20640C139S20640C12__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C99S20640C139S20640C12__A6__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C99S20640C139S20640C12__A6__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C99S20640C139S20640C12__A6__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C139S20640C12__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C139S20640C12__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C89S20640C12__A5__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C89S20640C12__A8__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C89S20640C12__A8__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C89S20640C12__A8__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C89S20640C12__A5__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C89S20640C12__A5__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C2__9S20640C12__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__9S20640C12__8S20640C1[4]),  4,6},
  {&(_tg__ZTV9S20640C15__9S20640C12__8S20640C1[9]),  9,11},
  {&(_tg__ZTV8S20640C7__9S20640C12__8S20640C1[11]),  11,15},
  {&(_tg__ZTV9S20640C11__9S20640C12__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C12__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C8__A__9S20640C12__8S20640C1[5]),  5,8},
  {&(_tg__ZTV9S20640C15__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C7__9S20640C15__8S20640C1[11]),  11,15},
  {&(_tg__ZTV8S20640C4__9S20640C15__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__9S20640C15__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C11__9S20640C15__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__9S20640C15__8S20640C1[8]),  8,11},
  {&(_tg__ZTV8S20640C7__A2__8S20640C1[7]),  7,11},
  {&(_tg__ZTV8S20640C88S20640C7__A4__8S20640C1[5]),  5,8},
  {&(_tg__ZTV8S20640C98S20640C88S20640C7__A7__8S20640C1[5]),  5,6},
  {&(_tg__ZTV8S20640C2__8S20640C98S20640C88S20640C7__A7__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__A1__8S20640C98S20640C88S20640C7__A7__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C4__8S20640C88S20640C7__A4__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C88S20640C7__A4__8S20640C1[5]),  5,7},
  {&(_tg__ZTV8S20640C4__8S20640C7__A2__8S20640C1[4]),  4,6},
  {&(_tg__ZTV8S20640C2__8S20640C7__A2__8S20640C1[5]),  5,7},
  {&(_tg__ZTV9S20640C11__8S20640C7__A2__8S20640C1[8]),  8,10},
  {&(_tg__ZTV8S20640C8__A1__8S20640C7__A2__8S20640C1[8]),  8,11},
};
extern VTBL_ENTRY _ZTI8S20640C1[];
extern  VTBL_ENTRY _ZTV8S20640C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20640C1[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D0Ev,_ZTv0_n36_N9S20640C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20640C12D0Ev,_ZThn5972_N9S20640C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20640C12D1Ev,_ZTv0_n36_N9S20640C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20640C12D1Ev,_ZThn5972_N9S20640C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20640C5D0Ev,_ZTv0_n36_N8S20640C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37280_N8S20640C5D0Ev,_ZThn28024_N8S20640C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20640C5D1Ev,_ZTv0_n36_N8S20640C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37280_N8S20640C5D1Ev,_ZThn28024_N8S20640C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20640C5D0Ev,_ZTv0_n48_N8S20640C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29440_N8S20640C5D0Ev,_ZThn22052_N8S20640C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20640C5D1Ev,_ZTv0_n48_N8S20640C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29440_N8S20640C5D1Ev,_ZThn22052_N8S20640C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20640C1D0Ev,_ZTv0_n36_N8S20640C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38480_N8S20640C1D0Ev,_ZThn28924_N8S20640C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20640C1D1Ev,_ZTv0_n36_N8S20640C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38480_N8S20640C1D1Ev,_ZThn28924_N8S20640C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20640C1D0Ev,_ZTv0_n48_N8S20640C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30640_N8S20640C1D0Ev,_ZThn22952_N8S20640C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20640C1D1Ev,_ZTv0_n48_N8S20640C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30640_N8S20640C1D1Ev,_ZThn22952_N8S20640C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20640C1D0Ev,_ZTv0_n56_N8S20640C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S20640C1D0Ev,_ZThn900_N8S20640C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20640C1D1Ev,_ZTv0_n56_N8S20640C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S20640C1D1Ev,_ZThn900_N8S20640C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20640C1 = {  "S20640C1", // class name
  bases_S20640C1, 43,
  &(vtc_S20640C1[0]), // expected_vtbl_contents
  &(vtt_S20640C1[0]), // expected_vtt_contents
  ABISELECT(44176,33072), // object size
  NSPAIRA(_ZTI8S20640C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20640C1),185, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20640C1),128, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C4  {
  __tsi64 s20639c4f0[9];
  void *s20639c4f1;
  long double s20639c4f2;
  void *s20639c4f3;
  char s20639c4f4;
  short s20639c4f5[6];
  void *s20639c4f6;
  char s20639c4f7:4;
  void *s20639c4f8;
  virtual void  v3(); // _ZN8S20639C42v3Ev
  virtual void  v4(); // _ZN8S20639C42v4Ev
  ~S20639C4(); // tgen
  S20639C4(); // tgen
};
//SIG(-1 S20639C4) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S20639C4 ::v3(){vfunc_called(this, "_ZN8S20639C42v3Ev");}
void  S20639C4 ::v4(){vfunc_called(this, "_ZN8S20639C42v4Ev");}
S20639C4 ::~S20639C4(){ note_dtor("S20639C4", this);} // tgen
S20639C4 ::S20639C4(){ note_ctor("S20639C4", this);} // tgen

static void Test_S20639C4()
{
  extern Class_Descriptor cd_S20639C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S20639C4, buf);
    S20639C4 *dp, &lv = *(dp=new (buf) S20639C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S20639C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C4)");
    check_field_offset(lv, s20639c4f0, ABISELECT(8,4), "S20639C4.s20639c4f0");
    check_field_offset(lv, s20639c4f1, ABISELECT(80,76), "S20639C4.s20639c4f1");
    check_field_offset(lv, s20639c4f2, ABISELECT(96,80), "S20639C4.s20639c4f2");
    check_field_offset(lv, s20639c4f3, ABISELECT(112,92), "S20639C4.s20639c4f3");
    check_field_offset(lv, s20639c4f4, ABISELECT(120,96), "S20639C4.s20639c4f4");
    check_field_offset(lv, s20639c4f5, ABISELECT(122,98), "S20639C4.s20639c4f5");
    check_field_offset(lv, s20639c4f6, ABISELECT(136,112), "S20639C4.s20639c4f6");
    set_bf_and_test(lv, s20639c4f7, ABISELECT(144,116), 0, 4, 1, "S20639C4");
    set_bf_and_test(lv, s20639c4f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S20639C4");
    check_field_offset(lv, s20639c4f8, ABISELECT(152,120), "S20639C4.s20639c4f8");
    test_class_info(&lv, &cd_S20639C4);
    dp->~S20639C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C4(Test_S20639C4, "S20639C4", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S20639C4C1Ev();
extern void _ZN8S20639C4D1Ev();
Name_Map name_map_S20639C4[] = {
  NSPAIR(_ZN8S20639C4C1Ev),
  NSPAIR(_ZN8S20639C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20639C4[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY vtc_S20639C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C4[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
Class_Descriptor cd_S20639C4 = {  "S20639C4", // class name
  0,0,//no base classes
  &(vtc_S20639C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S20639C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20639C4),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  S20639C2  : virtual S1538C9_nt , S20639C4 {
  int s20639c2f0;
  short s20639c2f1[2];
  __tsi64 s20639c2f2;
  ~S20639C2(); // tgen
  S20639C2(); // tgen
};
//SIG(-1 S20639C2) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S20639C2()
{
  extern Class_Descriptor cd_S20639C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S20639C2, buf);
    S20639C2 *dp, &lv = *(dp=new (buf) S20639C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S20639C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C2)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S20639C2");
    check_base_class_offset(lv, (S20639C4*), 0, "S20639C2");
    check_field_offset(lv, s20639c2f0, ABISELECT(160,124), "S20639C2.s20639c2f0");
    check_field_offset(lv, s20639c2f1, ABISELECT(164,128), "S20639C2.s20639c2f1");
    check_field_offset(lv, s20639c2f2, ABISELECT(168,132), "S20639C2.s20639c2f2");
    test_class_info(&lv, &cd_S20639C2);
    dp->~S20639C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C2(Test_S20639C2, "S20639C2", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN8S20639C2C1Ev();
extern void _ZN8S20639C2D1Ev();
Name_Map name_map_S20639C2[] = {
  NSPAIR(_ZN8S20639C2C1Ev),
  NSPAIR(_ZN8S20639C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
static Base_Class bases_S20639C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C2[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY vtc_S20639C2[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20639C2[];
static  VTT_ENTRY vtt_S20639C2[] = {
  {&(_ZTV8S20639C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
Class_Descriptor cd_S20639C2 = {  "S20639C2", // class name
  bases_S20639C2, 2,
  &(vtc_S20639C2[0]), // expected_vtbl_contents
  &(vtt_S20639C2[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI8S20639C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20639C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C2),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C9  : virtual S1538C9_nt , virtual S20639C2 , virtual S20639C4 {
  __tsi64 s20639c9f0[8];
  void *s20639c9f1[7];
  short s20639c9f2;
  virtual void  v5(); // _ZN8S20639C92v5Ev
  ~S20639C9(); // tgen
  S20639C9(); // tgen
};
//SIG(-1 S20639C9) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S20639C9()
{
  extern Class_Descriptor cd_S20639C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S20639C9, buf);
    S20639C9 *dp, &lv = *(dp=new (buf) S20639C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S20639C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C9)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S20639C9");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(132,100), "S20639C9");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(144,104), "S20639C9");
    check_base_class_offset(lv, (S20639C2*), ABISELECT(144,104), "S20639C9");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*), ABISELECT(320,244), "S20639C9");
    check_field_offset(lv, s20639c9f0, ABISELECT(8,4), "S20639C9.s20639c9f0");
    check_field_offset(lv, s20639c9f1, ABISELECT(72,68), "S20639C9.s20639c9f1");
    check_field_offset(lv, s20639c9f2, ABISELECT(128,96), "S20639C9.s20639c9f2");
    test_class_info(&lv, &cd_S20639C9);
    dp->~S20639C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C9(Test_S20639C9, "S20639C9", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN8S20639C9C1Ev();
extern void _ZN8S20639C9D1Ev();
Name_Map name_map_S20639C9[] = {
  NSPAIR(_ZN8S20639C9C1Ev),
  NSPAIR(_ZN8S20639C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
static Base_Class bases_S20639C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C4,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C9[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY vtc_S20639C9[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20639C9[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C9[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C9[] = {
  {&(_ZTV8S20639C9[5]),  5,19},
  {&(_ZTV8S20639C9[11]),  11,19},
  {&(_ZTV8S20639C9[17]),  17,19},
  {&(_tg__ZTV8S20639C2__8S20639C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
Class_Descriptor cd_S20639C9 = {  "S20639C9", // class name
  bases_S20639C9, 4,
  &(vtc_S20639C9[0]), // expected_vtbl_contents
  &(vtt_S20639C9[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI8S20639C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20639C9),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C9),4, //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  S20639C8  : S1538C9_nt , virtual S20639C4 , virtual S20639C2 , S20639C9 {
  ::S7223C13 s20639c8f0;
  int s20639c8f1:10;
  int s20639c8f2[9];
  int s20639c8f3;
  virtual void  v6(); // _ZN8S20639C82v6Ev
  virtual void  v7(); // _ZN8S20639C82v7Ev
  ~S20639C8(); // tgen
  S20639C8(); // tgen
};
//SIG(-1 S20639C8) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi}


void  S20639C8 ::v6(){vfunc_called(this, "_ZN8S20639C82v6Ev");}
void  S20639C8 ::v7(){vfunc_called(this, "_ZN8S20639C82v7Ev");}
S20639C8 ::~S20639C8(){ note_dtor("S20639C8", this);} // tgen
S20639C8 ::S20639C8(){ note_ctor("S20639C8", this);} // tgen

static void Test_S20639C8()
{
  extern Class_Descriptor cd_S20639C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S20639C8, buf);
    S20639C8 *dp, &lv = *(dp=new (buf) S20639C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S20639C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C8)");
    /*is_ambiguous_... S20639C8::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S20639C8");
    /*is_ambiguous_... S20639C8::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*), ABISELECT(256,184), "S20639C8");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*), ABISELECT(256,184), "S20639C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(592,448), "S20639C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*), ABISELECT(592,448), "S20639C8");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(416,308), "S20639C8");
    check_base_class_offset(lv, (S20639C2*), ABISELECT(416,308), "S20639C8");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*), ABISELECT(416,308), "S20639C8");
    check_base_class_offset(lv, (S20639C9*), 0, "S20639C8");
    check_field_offset(lv, s20639c8f0, ABISELECT(136,104), "S20639C8.s20639c8f0");
    set_bf_and_test(lv, s20639c8f1, ABISELECT(208,140), 0, 10, 1, "S20639C8");
    set_bf_and_test(lv, s20639c8f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S20639C8");
    check_field_offset(lv, s20639c8f2, ABISELECT(212,144), "S20639C8.s20639c8f2");
    check_field_offset(lv, s20639c8f3, ABISELECT(248,180), "S20639C8.s20639c8f3");
    test_class_info(&lv, &cd_S20639C8);
    dp->~S20639C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C8(Test_S20639C8, "S20639C8", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S20639C8C1Ev();
extern void _ZN8S20639C8D1Ev();
Name_Map name_map_S20639C8[] = {
  NSPAIR(_ZN8S20639C8C1Ev),
  NSPAIR(_ZN8S20639C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
static Base_Class bases_S20639C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S20639C4,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C8[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY vtc_S20639C8[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20639C8[];
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C9__8S20639C8[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C9__8S20639C8[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C9__8S20639C8[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C8[] = {
  {&(_ZTV8S20639C8[5]),  5,21},
  {&(_tg__ZTV8S20639C9__8S20639C8[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C9__8S20639C8[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C9__8S20639C8[4]),  4,6},
  {&(_ZTV8S20639C8[12]),  12,21},
  {&(_ZTV8S20639C8[19]),  19,21},
  {&(_tg__ZTV8S20639C2__8S20639C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
Class_Descriptor cd_S20639C8 = {  "S20639C8", // class name
  bases_S20639C8, 6,
  &(vtc_S20639C8[0]), // expected_vtbl_contents
  &(vtt_S20639C8[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S20639C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20639C8),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C8),7, //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  S20639C11  : virtual S20639C2 , virtual S20639C8 , S20639C9 {
  void *s20639c11f0;
  short s20639c11f1[2];
  long double s20639c11f2[2];
  char s20639c11f3;
  ::S20639C2 s20639c11f4;
  long double s20639c11f5;
  ::S20639C9 s20639c11f6;
  virtual void  v8(); // _ZN9S20639C112v8Ev
  ~S20639C11(); // tgen
  S20639C11(); // tgen
};
//SIG(-1 S20639C11) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S20639C11()
{
  extern Class_Descriptor cd_S20639C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S20639C11, buf);
    S20639C11 *dp, &lv = *(dp=new (buf) S20639C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S20639C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C11)");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(1072,800), "S20639C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(1072,800), "S20639C11");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*), ABISELECT(1072,800), "S20639C11");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(896,660), "S20639C11");
    check_base_class_offset(lv, (S20639C2*), ABISELECT(896,660), "S20639C11");
    check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(896,660), "S20639C11");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(896,660), "S20639C11");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*), ABISELECT(896,660), "S20639C11");
    /*is_ambiguous_... S20639C8::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(1212,904), "S20639C11");
    /*is_ambiguous_... S20639C8::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(1344,988), "S20639C11");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(1344,988), "S20639C11");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*), ABISELECT(1344,988), "S20639C11");
    check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(1080,804), "S20639C11");
    check_base_class_offset(lv, (S20639C8*), ABISELECT(1080,804), "S20639C11");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*), 0, "S20639C11");
    check_field_offset(lv, s20639c11f0, ABISELECT(136,100), "S20639C11.s20639c11f0");
    check_field_offset(lv, s20639c11f1, ABISELECT(144,104), "S20639C11.s20639c11f1");
    check_field_offset(lv, s20639c11f2, ABISELECT(160,108), "S20639C11.s20639c11f2");
    check_field_offset(lv, s20639c11f3, ABISELECT(192,132), "S20639C11.s20639c11f3");
    check_field_offset(lv, s20639c11f4, ABISELECT(208,136), "S20639C11.s20639c11f4");
    check_field_offset(lv, s20639c11f5, ABISELECT(400,280), "S20639C11.s20639c11f5");
    check_field_offset(lv, s20639c11f6, ABISELECT(416,292), "S20639C11.s20639c11f6");
    test_class_info(&lv, &cd_S20639C11);
    dp->~S20639C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C11(Test_S20639C11, "S20639C11", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN9S20639C11C1Ev();
extern void _ZN9S20639C11D1Ev();
Name_Map name_map_S20639C11[] = {
  NSPAIR(_ZN9S20639C11C1Ev),
  NSPAIR(_ZN9S20639C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
static Base_Class bases_S20639C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C4,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C9,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20639C11[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY vtc_S20639C11[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern VTBL_ENTRY _ZTV9S20639C11[];
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C9__A1__9S20639C11[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C9__A1__9S20639C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C9__A1__9S20639C11[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__9S20639C11[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__9S20639C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__9S20639C11[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__9S20639C11[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__9S20639C11[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C11[] = {
  {&(_ZTV9S20639C11[6]),  6,32},
  {&(_tg__ZTV8S20639C9__A1__9S20639C11[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C9__A1__9S20639C11[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C9__A1__9S20639C11[4]),  4,6},
  {&(_ZTV9S20639C11[13]),  13,32},
  {&(_ZTV9S20639C11[23]),  23,32},
  {&(_ZTV9S20639C11[30]),  30,32},
  {&(_tg__ZTV8S20639C2__9S20639C11[3]),  3,5},
  {&(_tg__ZTV8S20639C8__9S20639C11[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__9S20639C11[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__9S20639C11[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__9S20639C11[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__9S20639C11[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__9S20639C11[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
Class_Descriptor cd_S20639C11 = {  "S20639C11", // class name
  bases_S20639C11, 8,
  &(vtc_S20639C11[0]), // expected_vtbl_contents
  &(vtt_S20639C11[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI9S20639C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20639C11),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20639C11),14, //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  S20639C7  : virtual S20639C4 , S20639C8 , virtual S20639C11 {
  int s20639c7f0;
  char s20639c7f1;
  unsigned char s20639c7f2:1;
  virtual void  v9(); // _ZN8S20639C72v9Ev
  ~S20639C7(); // tgen
  S20639C7(); // tgen
};
//SIG(-1 S20639C7) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S20639C7()
{
  extern Class_Descriptor cd_S20639C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S20639C7, buf);
    S20639C7 *dp, &lv = *(dp=new (buf) S20639C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S20639C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C7)");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*), ABISELECT(272,192), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(272,192), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(272,192), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(272,192), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(272,192), "S20639C7");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(272,192), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(132,100), "S20639C7");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(608,456), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(608,456), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(608,456), "S20639C7");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(608,456), "S20639C7");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(432,316), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(432,316), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(432,316), "S20639C7");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(432,316), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(432,316), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(432,316), "S20639C7");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(432,316), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), 0, "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*), 0, "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(1652,1220), "S20639C7");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(1520,1120), "S20639C7");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(1520,1120), "S20639C7");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(624,460), "S20639C7");
    check_base_class_offset(lv, (S20639C11*), ABISELECT(624,460), "S20639C7");
    check_field_offset(lv, s20639c7f0, ABISELECT(252,184), "S20639C7.s20639c7f0");
    check_field_offset(lv, s20639c7f1, ABISELECT(256,188), "S20639C7.s20639c7f1");
    set_bf_and_test(lv, s20639c7f2, ABISELECT(257,189), 0, 1, 1, "S20639C7");
    test_class_info(&lv, &cd_S20639C7);
    dp->~S20639C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C7(Test_S20639C7, "S20639C7", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN8S20639C7C1Ev();
extern void _ZN8S20639C7D1Ev();
Name_Map name_map_S20639C7[] = {
  NSPAIR(_ZN8S20639C7C1Ev),
  NSPAIR(_ZN8S20639C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
static Base_Class bases_S20639C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20639C4,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20639C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C8,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C7[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY vtc_S20639C7[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern VTBL_ENTRY _ZTV8S20639C7[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__8S20639C7[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__8S20639C7[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__8S20639C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__8S20639C7[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A__8S20639C7[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A__8S20639C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A2__8S20639C7[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C7[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__8S20639C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__8S20639C7[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__8S20639C7[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A1__8S20639C7[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C7[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A1__8S20639C7[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A1__8S20639C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C7[] = {
  {&(_ZTV8S20639C7[7]),  7,45},
  {&(_tg__ZTV8S20639C8__A__8S20639C7[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__8S20639C7[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__8S20639C7[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__8S20639C7[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A__8S20639C7[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A__8S20639C7[5]),  5,7},
  {&(_ZTV8S20639C7[15]),  15,45},
  {&(_ZTV8S20639C7[22]),  22,45},
  {&(_ZTV8S20639C7[32]),  32,45},
  {&(_ZTV8S20639C7[42]),  42,45},
  {&(_tg__ZTV8S20639C2__8S20639C7[3]),  3,5},
  {&(_tg__ZTV9S20639C11__8S20639C7[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A2__8S20639C7[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C7[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C7[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__8S20639C7[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__8S20639C7[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__8S20639C7[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A1__8S20639C7[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C7[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C7[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A1__8S20639C7[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A1__8S20639C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
Class_Descriptor cd_S20639C7 = {  "S20639C7", // class name
  bases_S20639C7, 12,
  &(vtc_S20639C7[0]), // expected_vtbl_contents
  &(vtt_S20639C7[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI8S20639C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20639C7),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C7),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C6  : virtual S20639C4 , S20639C7 , S20639C9 , S20639C2 , S20639C8 {
  int s20639c6f0;
  int s20639c6f1[6];
  void *s20639c6f2;
  void *s20639c6f3;
  int s20639c6f4[9];
  char s20639c6f5;
  void *s20639c6f6;
  char s20639c6f7;
  void *s20639c6f8;
  short s20639c6f9;
  virtual void  v10(); // _ZN8S20639C63v10Ev
  virtual void  v11(); // _ZN8S20639C63v11Ev
  ~S20639C6(); // tgen
  S20639C6(); // tgen
};
//SIG(-1 S20639C6) C1{ VBC2{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ VBC2 BC4{ BC5{ m Fi} VBC2 VBC6{ VBC5 BC2 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC2 v5 FL[8] Fp[7] Fs} v6 v7 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v8 Fp Fs[2] FD[2] Fc FC6 FD FC7} v9 Fi Fc Fc:1} BC7 BC6 BC4 v1 v2 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs}


void  S20639C6 ::v10(){vfunc_called(this, "_ZN8S20639C63v10Ev");}
void  S20639C6 ::v11(){vfunc_called(this, "_ZN8S20639C63v11Ev");}
S20639C6 ::~S20639C6(){ note_dtor("S20639C6", this);} // tgen
S20639C6 ::S20639C6(){ note_ctor("S20639C6", this);} // tgen

static void Test_S20639C6()
{
  extern Class_Descriptor cd_S20639C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(154,456)];
    init_test(&cd_S20639C6, buf);
    S20639C6 *dp, &lv = *(dp=new (buf) S20639C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2448,1820), "sizeof(S20639C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C6)");
    /*is_ambiguous_... S20639C6::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(944,708), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(132,100), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(1280,972), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(1104,832), "S20639C6");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(1104,832), "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), 0, "S20639C6");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), 0, "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(2324,1736), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(2192,1636), "S20639C6");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(2192,1636), "S20639C6");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(1296,976), "S20639C6");
    check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(1296,976), "S20639C6");
    check_base_class_offset(lv, (S20639C7*), 0, "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*), ABISELECT(264,192), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(400,292), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*), ABISELECT(400,292), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(708,532), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(576,432), "S20639C6");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*), ABISELECT(576,432), "S20639C6");
    check_field_offset(lv, s20639c6f0, ABISELECT(828,616), "S20639C6.s20639c6f0");
    check_field_offset(lv, s20639c6f1, ABISELECT(832,620), "S20639C6.s20639c6f1");
    check_field_offset(lv, s20639c6f2, ABISELECT(856,644), "S20639C6.s20639c6f2");
    check_field_offset(lv, s20639c6f3, ABISELECT(864,648), "S20639C6.s20639c6f3");
    check_field_offset(lv, s20639c6f4, ABISELECT(872,652), "S20639C6.s20639c6f4");
    check_field_offset(lv, s20639c6f5, ABISELECT(908,688), "S20639C6.s20639c6f5");
    check_field_offset(lv, s20639c6f6, ABISELECT(912,692), "S20639C6.s20639c6f6");
    check_field_offset(lv, s20639c6f7, ABISELECT(920,696), "S20639C6.s20639c6f7");
    check_field_offset(lv, s20639c6f8, ABISELECT(928,700), "S20639C6.s20639c6f8");
    check_field_offset(lv, s20639c6f9, ABISELECT(936,704), "S20639C6.s20639c6f9");
    test_class_info(&lv, &cd_S20639C6);
    dp->~S20639C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C6(Test_S20639C6, "S20639C6", ABISELECT(2448,1820));

#else // __cplusplus

extern void _ZN8S20639C6C1Ev();
extern void _ZN8S20639C6D1Ev();
Name_Map name_map_S20639C6[] = {
  NSPAIR(_ZN8S20639C6C1Ev),
  NSPAIR(_ZN8S20639C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
static Base_Class bases_S20639C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20639C4,    ABISELECT(944,708), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(1280,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C4,    ABISELECT(1104,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(1104,832), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20639C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C8,    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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2324,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(2192,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(2192,1636), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(1296,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(1296,976), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20639C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20639C9,    ABISELECT(264,192), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20639C4,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(400,292), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(576,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(576,432), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C6[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C63v10Ev();
extern void _ZN8S20639C63v11Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY vtc_S20639C6[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v11Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern VTBL_ENTRY _ZTV8S20639C6[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__8S20639C6[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__8S20639C6[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__8S20639C6[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__8S20639C6[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__8S20639C6[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C9__A3__8S20639C6[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C9__A3__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C9__A3__8S20639C6[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__A__8S20639C6[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__8S20639C6[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A4__8S20639C6[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A4__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A4__8S20639C6[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A__8S20639C6[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C6[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C6[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A2__8S20639C6[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C6[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__8S20639C6[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__8S20639C6[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C6[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A1__8S20639C6[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C6[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A1__8S20639C6[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A1__8S20639C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C6[] = {
  {&(_ZTV8S20639C6[7]),  7,66},
  {&(_tg__ZTV8S20639C7__8S20639C6[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__8S20639C6[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__8S20639C6[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__8S20639C6[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__8S20639C6[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__8S20639C6[8]),  8,11},
  {&(_tg__ZTV8S20639C9__A3__8S20639C6[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C9__A3__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C9__A3__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C2__A__8S20639C6[3]),  3,5},
  {&(_tg__ZTV8S20639C8__A__8S20639C6[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A4__8S20639C6[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A4__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A4__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A__8S20639C6[5]),  5,7},
  {&(_ZTV8S20639C6[36]),  36,66},
  {&(_ZTV8S20639C6[43]),  43,66},
  {&(_ZTV8S20639C6[53]),  53,66},
  {&(_ZTV8S20639C6[63]),  63,66},
  {&(_ZTV8S20639C6[18]),  18,66},
  {&(_ZTV8S20639C6[22]),  22,66},
  {&(_ZTV8S20639C6[29]),  29,66},
  {&(_tg__ZTV8S20639C2__8S20639C6[3]),  3,5},
  {&(_tg__ZTV9S20639C11__8S20639C6[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A2__8S20639C6[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__8S20639C6[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A1__8S20639C6[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A1__8S20639C6[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C6[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A1__8S20639C6[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A1__8S20639C6[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20639C6[];
extern  VTBL_ENTRY _ZTV8S20639C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C6[];
Class_Descriptor cd_S20639C6 = {  "S20639C6", // class name
  bases_S20639C6, 19,
  &(vtc_S20639C6[0]), // expected_vtbl_contents
  &(vtt_S20639C6[0]), // expected_vtt_contents
  ABISELECT(2448,1820), // object size
  NSPAIRA(_ZTI8S20639C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20639C6),66, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C6),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C13  : S20639C9 {
  __tsi64 s20639c13f0;
  ::S20639C2 s20639c13f1;
  short s20639c13f2;
  char s20639c13f3;
  int s20639c13f4;
  int s20639c13f5;
  void *s20639c13f6;
  ::S7223C9_nt s20639c13f7;
  int s20639c13f8;
  __tsi64 s20639c13f9;
  virtual void  v12(); // _ZN9S20639C133v12Ev
  ~S20639C13(); // tgen
  S20639C13(); // tgen
};
//SIG(-1 S20639C13) C1{ BC2{ VBC3{ m Fi} VBC4{ VBC3 BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 v4 FL[8] Fp[7] Fs} v1 FL FC4 Fs Fc Fi[2] Fp FC6{} Fi FL}


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

static void Test_S20639C13()
{
  extern Class_Descriptor cd_S20639C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,139)];
    init_test(&cd_S20639C13, buf);
    S20639C13 *dp, &lv = *(dp=new (buf) S20639C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,552), "sizeof(S20639C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C13)");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*), ABISELECT(376,284), "S20639C13");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(376,284), "S20639C13");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(384,288), "S20639C13");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*), ABISELECT(384,288), "S20639C13");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*), ABISELECT(560,428), "S20639C13");
    check_base_class_offset(lv, (S20639C9*), 0, "S20639C13");
    check_field_offset(lv, s20639c13f0, ABISELECT(136,100), "S20639C13.s20639c13f0");
    check_field_offset(lv, s20639c13f1, ABISELECT(144,108), "S20639C13.s20639c13f1");
    check_field_offset(lv, s20639c13f2, ABISELECT(336,252), "S20639C13.s20639c13f2");
    check_field_offset(lv, s20639c13f3, ABISELECT(338,254), "S20639C13.s20639c13f3");
    check_field_offset(lv, s20639c13f4, ABISELECT(340,256), "S20639C13.s20639c13f4");
    check_field_offset(lv, s20639c13f5, ABISELECT(344,260), "S20639C13.s20639c13f5");
    check_field_offset(lv, s20639c13f6, ABISELECT(352,264), "S20639C13.s20639c13f6");
    check_field_offset(lv, s20639c13f7, ABISELECT(360,268), "S20639C13.s20639c13f7");
    check_field_offset(lv, s20639c13f8, ABISELECT(364,272), "S20639C13.s20639c13f8");
    check_field_offset(lv, s20639c13f9, ABISELECT(368,276), "S20639C13.s20639c13f9");
    test_class_info(&lv, &cd_S20639C13);
    dp->~S20639C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C13(Test_S20639C13, "S20639C13", ABISELECT(720,552));

#else // __cplusplus

extern void _ZN9S20639C13C1Ev();
extern void _ZN9S20639C13D1Ev();
Name_Map name_map_S20639C13[] = {
  NSPAIR(_ZN9S20639C13C1Ev),
  NSPAIR(_ZN9S20639C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
static Base_Class bases_S20639C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(384,288), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(560,428), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20639C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20639C13[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY vtc_S20639C13[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern VTBL_ENTRY _ZTV9S20639C13[];
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C9__9S20639C13[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C9__9S20639C13[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C9__9S20639C13[] = {
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C13[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C13[] = {
  {&(_ZTV9S20639C13[5]),  5,20},
  {&(_tg__ZTV8S20639C9__9S20639C13[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C9__9S20639C13[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C9__9S20639C13[4]),  4,6},
  {&(_ZTV9S20639C13[12]),  12,20},
  {&(_ZTV9S20639C13[18]),  18,20},
  {&(_tg__ZTV8S20639C2__9S20639C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20639C13[];
extern  VTBL_ENTRY _ZTV9S20639C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C13[];
Class_Descriptor cd_S20639C13 = {  "S20639C13", // class name
  bases_S20639C13, 5,
  &(vtc_S20639C13[0]), // expected_vtbl_contents
  &(vtt_S20639C13[0]), // expected_vtt_contents
  ABISELECT(720,552), // object size
  NSPAIRA(_ZTI9S20639C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20639C13),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20639C13),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C15  : virtual S20639C7 {
  ::S20639C7 s20639c15f0;
  short s20639c15f1:5;
  long s20639c15f2;
  virtual  ~S20639C15(); // _ZN9S20639C15D2Ev
  S20639C15(); // tgen
};
//SIG(-1 S20639C15) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S20639C15()
{
  extern Class_Descriptor cd_S20639C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S20639C15, buf);
    S20639C15 *dp, &lv = *(dp=new (buf) S20639C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S20639C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C15)");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(2080,1508), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(2080,1508), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(2080,1508), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(2080,1508), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(2080,1508), "S20639C15");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(2080,1508), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(1940,1416), "S20639C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(2416,1772), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(2416,1772), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(2416,1772), "S20639C15");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(2416,1772), "S20639C15");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(2240,1632), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(2240,1632), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(2240,1632), "S20639C15");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(2240,1632), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(2240,1632), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(2240,1632), "S20639C15");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(2240,1632), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(1808,1316), "S20639C15");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), ABISELECT(1808,1316), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(3460,2536), "S20639C15");
    /*is_ambiguous_... S20639C15::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(3328,2436), "S20639C15");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(3328,2436), "S20639C15");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(2432,1776), "S20639C15");
    check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(2432,1776), "S20639C15");
    check_base_class_offset(lv, (S20639C7*), ABISELECT(1808,1316), "S20639C15");
    check_field_offset(lv, s20639c15f0, ABISELECT(16,4), "S20639C15.s20639c15f0");
    set_bf_and_test(lv, s20639c15f1, ABISELECT(1792,1308), 0, 5, 1, "S20639C15");
    set_bf_and_test(lv, s20639c15f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S20639C15");
    check_field_offset(lv, s20639c15f2, ABISELECT(1800,1312), "S20639C15.s20639c15f2");
    test_class_info(&lv, &cd_S20639C15);
    dp->~S20639C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C15(Test_S20639C15, "S20639C15", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN9S20639C15C1Ev();
extern void _ZN9S20639C15D2Ev();
Name_Map name_map_S20639C15[] = {
  NSPAIR(_ZN9S20639C15C1Ev),
  NSPAIR(_ZN9S20639C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
static Base_Class bases_S20639C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20639C4,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C4,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20639C7,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20639C15[];
extern void _ZN9S20639C15D1Ev();
extern void _ZN9S20639C15D0Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY vtc_S20639C15[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN9S20639C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C15D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern VTBL_ENTRY _ZTV9S20639C15[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C15[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__9S20639C15[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__9S20639C15[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__9S20639C15[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__9S20639C15[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C15[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C15[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A2__9S20639C15[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A2__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__9S20639C15[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__9S20639C15[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__9S20639C15[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C15[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A1__9S20639C15[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A1__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__9S20639C15[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A1__9S20639C15[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A1__9S20639C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C15[] = {
  {&(_ZTV9S20639C15[8]),  8,59},
  {&(_ZTV9S20639C15[21]),  21,59},
  {&(_ZTV9S20639C15[29]),  29,59},
  {&(_ZTV9S20639C15[36]),  36,59},
  {&(_ZTV9S20639C15[46]),  46,59},
  {&(_ZTV9S20639C15[56]),  56,59},
  {&(_tg__ZTV8S20639C7__9S20639C15[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__9S20639C15[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__9S20639C15[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__9S20639C15[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__9S20639C15[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__9S20639C15[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__9S20639C15[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__9S20639C15[8]),  8,11},
  {&(_tg__ZTV8S20639C2__9S20639C15[3]),  3,5},
  {&(_tg__ZTV9S20639C11__9S20639C15[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A2__9S20639C15[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A2__9S20639C15[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__9S20639C15[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__9S20639C15[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A1__9S20639C15[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A1__9S20639C15[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A1__9S20639C15[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A1__9S20639C15[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A1__9S20639C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20639C15[];
extern  VTBL_ENTRY _ZTV9S20639C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C15[];
Class_Descriptor cd_S20639C15 = {  "S20639C15", // class name
  bases_S20639C15, 13,
  &(vtc_S20639C15[0]), // expected_vtbl_contents
  &(vtt_S20639C15[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI9S20639C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20639C15),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20639C15),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C12  : S20639C13 , virtual S20639C15 , S20639C8 {
  ::S20639C13 s20639c12f0[9];
  int s20639c12f1;
  short s20639c12f2:16;
  ::S20639C9 s20639c12f3;
  int s20639c12f4;
  short s20639c12f5;
  void *s20639c12f6;
  __tsi64 s20639c12f7;
  ::S20639C2 s20639c12f8;
  ~S20639C12(); // tgen
  S20639C12(); // tgen
};
//SIG(-1 S20639C12) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ VBC4 BC6{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 v3 FL[8] Fp[7] Fs} v4 FL FC5 Fs Fc Fi[2] Fp FC7{} Fi FL} VBC8{ VBC9{ VBC6 BC10{ BC4 VBC6 VBC5 BC3 v5 v6 FU11{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC12{ VBC5 VBC10 BC3 v7 Fp Fs[2] FD[2] Fc FC5 FD FC3} v8 Fi Fc Fc:1} vd FC9 Fs:5 Fl} BC10 FC2[9] Fi Fs:16 FC3 Fi Fs Fp FL FC5}


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

static void Test_S20639C12()
{
  extern Class_Descriptor cd_S20639C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(715,2150)];
    init_test(&cd_S20639C12, buf);
    S20639C12 *dp, &lv = *(dp=new (buf) S20639C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11424,8596), "sizeof(S20639C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C12)");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C13*), ABISELECT(7840,5976), "S20639C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(7840,5976), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(7840,5976), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(7840,5976), "S20639C12");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(7840,5976), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(7840,5976), "S20639C12");
    check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(7856,5980), "S20639C12");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C13*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(7856,5980), "S20639C12");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(7856,5980), "S20639C12");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C13*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(8032,6120), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(8032,6120), "S20639C12");
    check_base_class_offset(lv, (S20639C9*)(S20639C13*), 0, "S20639C12");
    check_base_class_offset(lv, (S20639C13*), 0, "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(10132,7660), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(10000,7560), "S20639C12");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), ABISELECT(10000,7560), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(11300,8512), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(11168,8412), "S20639C12");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(11168,8412), "S20639C12");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(10272,7752), "S20639C12");
    check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(10272,7752), "S20639C12");
    check_base_class_offset(lv, (S20639C7*)(S20639C15*), ABISELECT(10000,7560), "S20639C12");
    check_base_class_offset(lv, (S20639C15*), ABISELECT(8192,6244), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(508,384), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(376,284), "S20639C12");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*), ABISELECT(376,284), "S20639C12");
    check_field_offset(lv, s20639c12f0, ABISELECT(640,468), "S20639C12.s20639c12f0");
    check_field_offset(lv, s20639c12f1, ABISELECT(7120,5436), "S20639C12.s20639c12f1");
    set_bf_and_test(lv, s20639c12f2, ABISELECT(7124,5440), 0, 16, 1, "S20639C12");
    set_bf_and_test(lv, s20639c12f2, ABISELECT(7124,5440), 0, 16, hide_sll(1LL<<15), "S20639C12");
    check_field_offset(lv, s20639c12f3, ABISELECT(7136,5444), "S20639C12.s20639c12f3");
    check_field_offset(lv, s20639c12f4, ABISELECT(7616,5812), "S20639C12.s20639c12f4");
    check_field_offset(lv, s20639c12f5, ABISELECT(7620,5816), "S20639C12.s20639c12f5");
    check_field_offset(lv, s20639c12f6, ABISELECT(7624,5820), "S20639C12.s20639c12f6");
    check_field_offset(lv, s20639c12f7, ABISELECT(7632,5824), "S20639C12.s20639c12f7");
    check_field_offset(lv, s20639c12f8, ABISELECT(7648,5832), "S20639C12.s20639c12f8");
    test_class_info(&lv, &cd_S20639C12);
    dp->~S20639C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C12(Test_S20639C12, "S20639C12", ABISELECT(11424,8596));

#else // __cplusplus

extern void _ZN9S20639C12C1Ev();
extern void _ZN9S20639C12D1Ev();
Name_Map name_map_S20639C12[] = {
  NSPAIR(_ZN9S20639C12C1Ev),
  NSPAIR(_ZN9S20639C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C13;
extern VTBL_ENTRY _ZTI9S20639C13[];
extern  VTBL_ENTRY _ZTV9S20639C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C15;
extern VTBL_ENTRY _ZTI9S20639C15[];
extern  VTBL_ENTRY _ZTV9S20639C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
static Base_Class bases_S20639C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(7840,5976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C4,    ABISELECT(7856,5980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C2,    ABISELECT(7856,5980), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(8032,6120), //bcp->offset
    28, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20639C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20639C13,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(10132,7660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(10000,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(10000,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(11300,8512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C9,    ABISELECT(11168,8412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(11168,8412), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(10272,7752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(10272,7752), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20639C7,    ABISELECT(10000,7560), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20639C15,    ABISELECT(8192,6244), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(508,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
    18, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(376,284), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20639C12[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void _ZN9S20639C12D1Ev();
extern void _ZN9S20639C12D0Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev)();
extern void ABISELECT(_ZThn8192_N9S20639C12D1Ev,_ZThn6244_N9S20639C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev)();
extern void ABISELECT(_ZThn8192_N9S20639C12D0Ev,_ZThn6244_N9S20639C12D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY vtc_S20639C12[] = {
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D0Ev,
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  ABISELECT(-8192,-6244),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6244),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7560),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7752),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8412),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern VTBL_ENTRY _ZTV9S20639C12[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C13__9S20639C12[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C13__9S20639C12[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C13__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C13__9S20639C12[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C13__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C13__9S20639C12[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__9S20639C12[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A4__9S20639C12[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A4__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A4__9S20639C12[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A__9S20639C12[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C12[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN9S20639C15D1Ev();
extern void _ZN9S20639C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C15__9S20639C12[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN9S20639C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C15D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C15__9S20639C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__9S20639C15__9S20639C12[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C15__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C15__9S20639C12[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C15__9S20639C12[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C12[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__9S20639C12[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__A1__9S20639C12[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A1__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A1__9S20639C12[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__9S20639C12[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__9S20639C12[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__9S20639C12[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__9S20639C12[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C12[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A3__9S20639C12[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A3__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A3__9S20639C12[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__9S20639C12[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__9S20639C12[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C12[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A2__9S20639C12[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A2__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A2__9S20639C12[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A1__9S20639C12[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A1__9S20639C12[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C12[] = {
  {&(_ZTV9S20639C12[9]),  9,81},
  {&(_tg__ZTV9S20639C13__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C99S20639C13__9S20639C12[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C13__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C13__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C13__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C13__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A__9S20639C12[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A4__9S20639C12[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A4__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A4__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A__9S20639C12[5]),  5,7},
  {&(_ZTV9S20639C12[26]),  26,81},
  {&(_ZTV9S20639C12[32]),  32,81},
  {&(_ZTV9S20639C12[43]),  43,81},
  {&(_ZTV9S20639C12[56]),  56,81},
  {&(_ZTV9S20639C12[68]),  68,81},
  {&(_ZTV9S20639C12[78]),  78,81},
  {&(_ZTV9S20639C12[18]),  18,81},
  {&(_tg__ZTV8S20639C2__9S20639C12[3]),  3,5},
  {&(_tg__ZTV9S20639C15__9S20639C12[8]),  8,10},
  {&(_tg__ZTV8S20639C7__9S20639C15__9S20639C12[11]),  11,15},
  {&(_tg__ZTV8S20639C4__9S20639C15__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C15__9S20639C12[5]),  5,7},
  {&(_tg__ZTV9S20639C11__9S20639C15__9S20639C12[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C15__9S20639C12[8]),  8,11},
  {&(_tg__ZTV8S20639C7__9S20639C12[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__9S20639C12[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__A1__9S20639C12[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A1__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A1__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__9S20639C12[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__9S20639C12[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__9S20639C12[8]),  8,11},
  {&(_tg__ZTV9S20639C11__9S20639C12[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A3__9S20639C12[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A3__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A3__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__9S20639C12[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A1__9S20639C12[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A2__9S20639C12[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A2__9S20639C12[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A2__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A1__9S20639C12[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A1__9S20639C12[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20639C12[];
extern  VTBL_ENTRY _ZTV9S20639C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C12[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S20639C12D0Ev,_ZThn6244_N9S20639C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S20639C12D1Ev,_ZThn6244_N9S20639C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20639C12 = {  "S20639C12", // class name
  bases_S20639C12, 19,
  &(vtc_S20639C12[0]), // expected_vtbl_contents
  &(vtt_S20639C12[0]), // expected_vtt_contents
  ABISELECT(11424,8596), // object size
  NSPAIRA(_ZTI9S20639C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20639C12),81, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20639C12),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C16  : S20639C2 , virtual S20639C4 , virtual S20639C8 , S1538C9_nt , virtual S20639C12 {
  int s20639c16f0;
  void *s20639c16f1;
  char s20639c16f2;
  unsigned int s20639c16f3:1;
  void *s20639c16f4;
  ::S20639C12 s20639c16f5;
  ::S1538C9_nt s20639c16f6[6];
  void *s20639c16f7;
  ::S20639C15 s20639c16f8;
  int s20639c16f9:5;
  __tsi64 s20639c16f10;
  virtual  ~S20639C16(); // _ZN9S20639C16D2Ev
  virtual void  v14(); // _ZN9S20639C163v14Ev
  S20639C16(); // tgen
};
//SIG(-1 S20639C16) C1{ BC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC3 VBC8{ BC9{ BC6 v7 FL FC2 Fs Fc Fi Fi Fp FC10{} Fi FL} VBC11{ VBC12{ VBC4 BC5 VBC13{ VBC2 VBC5 BC6 v8 Fp Fs[2] FD[2] Fc FC2 FD FC6} v9 Fi Fc Fc:1} vd FC12 Fs:5 Fl} BC5 FC9[9] Fi Fs:16 FC6 Fi Fs Fp FL FC2} vd v1 Fi Fp Fc Fi:1 Fp FC8 FC3[6] Fp FC11 Fi:5 FL}


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

static void Test_S20639C16()
{
  extern Class_Descriptor cd_S20639C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1669,5004)];
    init_test(&cd_S20639C16, buf);
    S20639C16 *dp, &lv = *(dp=new (buf) S20639C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26688,20012), "sizeof(S20639C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C16)");
    /*is_ambiguous_... S20639C16::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(15264,11416), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(15264,11416), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(15264,11416), "S20639C16");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(15264,11416), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(15264,11416), "S20639C16");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(15264,11416), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(15264,11416), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), 0, "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*), 0, "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C12*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(15280,11420), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(15572,11644), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(15696,11728), "S20639C16");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(15696,11728), "S20639C16");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C12*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(15696,11728), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(15440,11544), "S20639C16");
    /*is_ambiguous_... S20639C16::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*), ABISELECT(15440,11544), "S20639C16");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(15440,11544), "S20639C16");
    /*is_ambiguous_... S20639C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S20639C16");
    check_base_class_offset(lv, (S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(15872,11868), "S20639C16");
    check_base_class_offset(lv, (S20639C13*)(S20639C12*), ABISELECT(15872,11868), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(25652,19260), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(25520,19160), "S20639C16");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), ABISELECT(25520,19160), "S20639C16");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(25792,19352), "S20639C16");
    check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(25792,19352), "S20639C16");
    check_base_class_offset(lv, (S20639C7*)(S20639C15*), ABISELECT(25520,19160), "S20639C16");
    check_base_class_offset(lv, (S20639C15*)(S20639C12*), ABISELECT(23712,17844), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C12*), ABISELECT(16380,12252), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(16248,12152), "S20639C16");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C12*), ABISELECT(16248,12152), "S20639C16");
    check_base_class_offset(lv, (S20639C12*), ABISELECT(15872,11868), "S20639C16");
    check_field_offset(lv, s20639c16f0, ABISELECT(180,144), "S20639C16.s20639c16f0");
    check_field_offset(lv, s20639c16f1, ABISELECT(184,148), "S20639C16.s20639c16f1");
    check_field_offset(lv, s20639c16f2, ABISELECT(192,152), "S20639C16.s20639c16f2");
    set_bf_and_test(lv, s20639c16f3, ABISELECT(193,153), 0, 1, 1, "S20639C16");
    check_field_offset(lv, s20639c16f4, ABISELECT(200,156), "S20639C16.s20639c16f4");
    check_field_offset(lv, s20639c16f5, ABISELECT(208,160), "S20639C16.s20639c16f5");
    check_field_offset(lv, s20639c16f6, ABISELECT(11632,8756), "S20639C16.s20639c16f6");
    check_field_offset(lv, s20639c16f7, ABISELECT(11656,8780), "S20639C16.s20639c16f7");
    check_field_offset(lv, s20639c16f8, ABISELECT(11664,8784), "S20639C16.s20639c16f8");
    set_bf_and_test(lv, s20639c16f9, ABISELECT(15248,11404), 0, 5, 1, "S20639C16");
    set_bf_and_test(lv, s20639c16f9, ABISELECT(15248,11404), 0, 5, hide_sll(1LL<<4), "S20639C16");
    check_field_offset(lv, s20639c16f10, ABISELECT(15256,11408), "S20639C16.s20639c16f10");
    test_class_info(&lv, &cd_S20639C16);
    dp->~S20639C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C16(Test_S20639C16, "S20639C16", ABISELECT(26688,20012));

#else // __cplusplus

extern void _ZN9S20639C16C1Ev();
extern void _ZN9S20639C16D2Ev();
Name_Map name_map_S20639C16[] = {
  NSPAIR(_ZN9S20639C16C1Ev),
  NSPAIR(_ZN9S20639C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C13;
extern VTBL_ENTRY _ZTI9S20639C13[];
extern  VTBL_ENTRY _ZTV9S20639C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C15;
extern VTBL_ENTRY _ZTI9S20639C15[];
extern  VTBL_ENTRY _ZTV9S20639C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C12;
extern VTBL_ENTRY _ZTI9S20639C12[];
extern  VTBL_ENTRY _ZTV9S20639C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C12[];
static Base_Class bases_S20639C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15264,11416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20639C2,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20639C4,    ABISELECT(15280,11420), //bcp->offset
    15, //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
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(15572,11644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C4,    ABISELECT(15696,11728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C2,    ABISELECT(15696,11728), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(15440,11544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(15440,11544), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 0},
  {&cd_S20639C9,    ABISELECT(15872,11868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C13,    ABISELECT(15872,11868), //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25652,19260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(25520,19160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(25520,19160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(25792,19352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(25792,19352), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20639C7,    ABISELECT(25520,19160), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20639C15,    ABISELECT(23712,17844), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16380,12252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(16248,12152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(16248,12152), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20639C12,    ABISELECT(15872,11868), //bcp->offset
    39, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20639C16[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN9S20639C16D1Ev();
extern void _ZN9S20639C16D0Ev();
extern void _ZN9S20639C163v14Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N9S20639C16D1Ev,_ZTv0_n48_N9S20639C16D1Ev)();
extern void ABISELECT(_ZThn15872_N9S20639C16D1Ev,_ZThn11868_N9S20639C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20639C16D0Ev,_ZTv0_n48_N9S20639C16D0Ev)();
extern void ABISELECT(_ZThn15872_N9S20639C16D0Ev,_ZThn11868_N9S20639C16D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void ABISELECT(_ZTv0_n72_N9S20639C16D1Ev,_ZTv0_n36_N9S20639C16D1Ev)();
extern void ABISELECT(_ZThn23712_N9S20639C16D1Ev,_ZThn17844_N9S20639C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20639C16D0Ev,_ZTv0_n36_N9S20639C16D0Ev)();
extern void ABISELECT(_ZThn23712_N9S20639C16D0Ev,_ZThn17844_N9S20639C16D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY vtc_S20639C16[] = {
  ABISELECT(25792,19352),
  ABISELECT(25520,19160),
  ABISELECT(23712,17844),
  ABISELECT(15872,11868),
  ABISELECT(15696,11728),
  ABISELECT(15440,11544),
  ABISELECT(15280,11420),
  ABISELECT(15264,11416),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  (VTBL_ENTRY)&_ZN9S20639C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20639C163v14Ev,
  0,
  0,
  ABISELECT(-15280,-11420),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15440,-11544),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15696,-11728),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15872,-11868),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15872,-11868),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20639C16D1Ev,_ZTv0_n48_N9S20639C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20639C16D0Ev,_ZTv0_n48_N9S20639C16D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16248,-12152),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  ABISELECT(-23712,-17844),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23712,-17844),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C16D1Ev,_ZTv0_n36_N9S20639C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C16D0Ev,_ZTv0_n36_N9S20639C16D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25520,-19160),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25792,-19352),
  (VTBL_ENTRY)&(_ZTI9S20639C16[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern VTBL_ENTRY _ZTV9S20639C16[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__A__9S20639C16[] = {
  ABISELECT(15264,11416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__9S20639C16[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__9S20639C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__9S20639C16[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__A1__9S20639C16[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void _ZN9S20639C12D1Ev();
extern void _ZN9S20639C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C12__9S20639C16[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C139S20639C12__9S20639C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C139S20639C12__A1__9S20639C16[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C139S20639C12__A1__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C139S20639C12__A1__9S20639C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C139S20639C12__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C139S20639C12__9S20639C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C89S20639C12__A2__9S20639C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C89S20639C12__A4__9S20639C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C89S20639C12__A4__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C89S20639C12__A4__9S20639C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C89S20639C12__A2__9S20639C16[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C89S20639C12__A2__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C12__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C12__9S20639C16[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev)();
extern void ABISELECT(_ZThn7840_N9S20639C12D1Ev,_ZThn5976_N9S20639C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev)();
extern void ABISELECT(_ZThn7840_N9S20639C12D0Ev,_ZThn5976_N9S20639C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20639C15__9S20639C12__9S20639C16[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev),
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C12__9S20639C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C12__9S20639C16[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-9920,-7484),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C12__9S20639C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__9S20639C12__9S20639C16[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN9S20639C15D1Ev();
extern void _ZN9S20639C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C15__9S20639C16[] = {
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN9S20639C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C15D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C15__9S20639C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__9S20639C15__9S20639C16[] = {
  0,
  0,
  ABISELECT(8432,6424),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C15__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6116),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C15__9S20639C16[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C15__9S20639C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6300),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C16[] = {
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__A1__9S20639C16[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__A2__9S20639C16[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A2__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A2__9S20639C16[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__A1__9S20639C16[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__A1__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__9S20639C16[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__9S20639C16[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__9S20639C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7616),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C16[] = {
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A3__9S20639C16[] = {
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A3__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A3__9S20639C16[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__9S20639C16[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__9S20639C16[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7808),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__9S20639C16[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
static  VTT_ENTRY vtt_S20639C16[] = {
  {&(_ZTV9S20639C16[10]),  10,101},
  {&(_tg__ZTV8S20639C2__A__9S20639C16[3]),  3,5},
  {&(_ZTV9S20639C16[19]),  19,101},
  {&(_ZTV9S20639C16[29]),  29,101},
  {&(_ZTV9S20639C16[37]),  37,101},
  {&(_ZTV9S20639C16[53]),  53,101},
  {&(_ZTV9S20639C16[74]),  74,101},
  {&(_ZTV9S20639C16[87]),  87,101},
  {&(_ZTV9S20639C16[99]),  99,101},
  {&(_ZTV9S20639C16[62]),  62,101},
  {&(_tg__ZTV8S20639C8__9S20639C16[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__9S20639C16[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C2__A1__9S20639C16[3]),  3,5},
  {&(_tg__ZTV9S20639C12__9S20639C16[9]),  9,13},
  {&(_tg__ZTV9S20639C139S20639C12__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C99S20639C139S20639C12__A1__9S20639C16[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C139S20639C12__A1__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C139S20639C12__A1__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C139S20639C12__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C139S20639C12__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C89S20639C12__A2__9S20639C16[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C89S20639C12__A4__9S20639C16[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C89S20639C12__A4__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C89S20639C12__A4__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C89S20639C12__A2__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C89S20639C12__A2__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C2__9S20639C12__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C12__9S20639C16[4]),  4,6},
  {&(_tg__ZTV9S20639C15__9S20639C12__9S20639C16[9]),  9,11},
  {&(_tg__ZTV8S20639C7__9S20639C12__9S20639C16[11]),  11,15},
  {&(_tg__ZTV9S20639C11__9S20639C12__9S20639C16[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C12__9S20639C16[8]),  8,11},
  {&(_tg__ZTV8S20639C8__A__9S20639C12__9S20639C16[5]),  5,8},
  {&(_tg__ZTV9S20639C15__9S20639C16[8]),  8,10},
  {&(_tg__ZTV8S20639C7__9S20639C15__9S20639C16[11]),  11,15},
  {&(_tg__ZTV8S20639C4__9S20639C15__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C15__9S20639C16[5]),  5,7},
  {&(_tg__ZTV9S20639C11__9S20639C15__9S20639C16[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C15__9S20639C16[8]),  8,11},
  {&(_tg__ZTV8S20639C7__9S20639C16[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__A1__9S20639C16[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__A2__9S20639C16[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A2__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A2__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__A1__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__A1__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__9S20639C16[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__9S20639C16[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__9S20639C16[8]),  8,11},
  {&(_tg__ZTV9S20639C11__9S20639C16[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A3__9S20639C16[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A3__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A3__9S20639C16[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__9S20639C16[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__9S20639C16[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__9S20639C16[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20639C16[];
extern  VTBL_ENTRY _ZTV9S20639C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C16[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20639C12D0Ev,_ZThn5976_N9S20639C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20639C12D1Ev,_ZThn5976_N9S20639C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C16D0Ev,_ZTv0_n36_N9S20639C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S20639C16D0Ev,_ZThn17844_N9S20639C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C16D1Ev,_ZTv0_n36_N9S20639C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S20639C16D1Ev,_ZThn17844_N9S20639C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20639C16D0Ev,_ZTv0_n48_N9S20639C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N9S20639C16D0Ev,_ZThn11868_N9S20639C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20639C16D1Ev,_ZTv0_n48_N9S20639C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N9S20639C16D1Ev,_ZThn11868_N9S20639C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20639C16 = {  "S20639C16", // class name
  bases_S20639C16, 23,
  &(vtc_S20639C16[0]), // expected_vtbl_contents
  &(vtt_S20639C16[0]), // expected_vtt_contents
  ABISELECT(26688,20012), // object size
  NSPAIRA(_ZTI9S20639C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20639C16),101, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20639C16),61, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C5  : virtual S20639C6 , S20639C2 , S20639C7 , virtual S20639C12 {
  ::S20639C16 s20639c5f0;
  void *s20639c5f1;
  char s20639c5f2[7];
  char  :0;
  ::S1538C9_nt s20639c5f4;
  int s20639c5f5[7];
  ~S20639C5(); // tgen
  S20639C5(); // tgen
};
//SIG(-1 S20639C5) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ VBC3 BC5{ BC6{ m Fi} VBC3 VBC7{ VBC6 BC3 Fi Fs[2] FL} BC8{ VBC6 VBC7 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC10{ VBC7 VBC5 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} BC8 BC7 BC5 v8 v9 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC7 BC4 VBC11{ BC12{ BC8 v10 FL FC7 Fs Fc Fi Fi Fp FC13{} Fi FL} VBC14{ VBC4 vd FC4 Fs:5 Fl} BC5 FC12[9] Fi Fs:16 FC8 Fi Fs Fp FL FC7} FC15{ BC7 VBC3 VBC5 BC6 VBC11 vd v11 Fi Fp Fc Fi:1 Fp FC11 FC6[6] Fp FC14 Fi:5 FL} Fp Fc[7] Fc:0 FC6 Fi[7]}


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

static void Test_S20639C5()
{
  extern Class_Descriptor cd_S20639C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2473,7424)];
    init_test(&cd_S20639C5, buf);
    S20639C5 *dp, &lv = *(dp=new (buf) S20639C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39552,29692), "sizeof(S20639C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C5)");
    /*is_ambiguous_... S20639C6::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C12*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(28128,21096), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(27316,20488), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C6*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*)(S20639C6*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(28464,21360), "S20639C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(28464,21360), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28288,21220), "S20639C5");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C6*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C6*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(28288,21220), "S20639C5");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C12*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(28288,21220), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(27184,20388), "S20639C5");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(27184,20388), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(29508,22124), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(29376,22024), "S20639C5");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(29376,22024), "S20639C5");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(28480,21364), "S20639C5");
    check_base_class_offset(lv, (S20639C11*)(S20639C7*)(S20639C6*), ABISELECT(28480,21364), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(28480,21364), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(28480,21364), "S20639C5");
    check_base_class_offset(lv, (S20639C7*)(S20639C6*), ABISELECT(27184,20388), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C6*), ABISELECT(27448,20580), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*)(S20639C6*), ABISELECT(27584,20680), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C6*), ABISELECT(27584,20680), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C6*), ABISELECT(27892,20920), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(27760,20820), "S20639C5");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C6*), ABISELECT(27760,20820), "S20639C5");
    check_base_class_offset(lv, (S20639C6*), ABISELECT(27184,20388), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), 0, "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*), 0, "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(308,240), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(176,140), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), ABISELECT(176,140), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C7*), ABISELECT(176,140), "S20639C5");
    check_base_class_offset(lv, (S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(29632,22208), "S20639C5");
    check_base_class_offset(lv, (S20639C13*)(S20639C12*), ABISELECT(29632,22208), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(39412,29600), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(39280,29500), "S20639C5");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), ABISELECT(39280,29500), "S20639C5");
    check_base_class_offset(lv, (S20639C7*)(S20639C15*), ABISELECT(39280,29500), "S20639C5");
    check_base_class_offset(lv, (S20639C15*)(S20639C12*), ABISELECT(37472,28184), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C12*), ABISELECT(30140,22592), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(30008,22492), "S20639C5");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C12*), ABISELECT(30008,22492), "S20639C5");
    check_base_class_offset(lv, (S20639C12*), ABISELECT(29632,22208), "S20639C5");
    check_field_offset(lv, s20639c5f0, ABISELECT(448,332), "S20639C5.s20639c5f0");
    check_field_offset(lv, s20639c5f1, ABISELECT(27136,20344), "S20639C5.s20639c5f1");
    check_field_offset(lv, s20639c5f2, ABISELECT(27144,20348), "S20639C5.s20639c5f2");
    check_field_offset(lv, s20639c5f4, ABISELECT(27152,20356), "S20639C5.s20639c5f4");
    check_field_offset(lv, s20639c5f5, ABISELECT(27156,20360), "S20639C5.s20639c5f5");
    test_class_info(&lv, &cd_S20639C5);
    dp->~S20639C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C5(Test_S20639C5, "S20639C5", ABISELECT(39552,29692));

#else // __cplusplus

extern void _ZN8S20639C5C1Ev();
extern void _ZN8S20639C5D1Ev();
Name_Map name_map_S20639C5[] = {
  NSPAIR(_ZN8S20639C5C1Ev),
  NSPAIR(_ZN8S20639C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C6;
extern VTBL_ENTRY _ZTI8S20639C6[];
extern  VTBL_ENTRY _ZTV8S20639C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C6[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C13;
extern VTBL_ENTRY _ZTI9S20639C13[];
extern  VTBL_ENTRY _ZTV9S20639C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C15;
extern VTBL_ENTRY _ZTI9S20639C15[];
extern  VTBL_ENTRY _ZTV9S20639C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C12;
extern VTBL_ENTRY _ZTI9S20639C12[];
extern  VTBL_ENTRY _ZTV9S20639C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C12[];
static Base_Class bases_S20639C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20639C4,    ABISELECT(28128,21096), //bcp->offset
    66, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(27316,20488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(28464,21360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20639C4,    ABISELECT(28288,21220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C2,    ABISELECT(28288,21220), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(27184,20388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(27184,20388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(29508,22124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(29376,22024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(29376,22024), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(28480,21364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(28480,21364), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20639C7,    ABISELECT(27184,20388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(27448,20580), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20639C4,    ABISELECT(27584,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(27584,20680), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(27892,20920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(27760,20820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(27760,20820), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20639C6,    ABISELECT(27184,20388), //bcp->offset
    26, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20639C2,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(308,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
    24, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20639C7,    ABISELECT(176,140), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20639C9,    ABISELECT(29632,22208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20639C13,    ABISELECT(29632,22208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(39412,29600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(39280,29500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(39280,29500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20639C7,    ABISELECT(39280,29500), //bcp->offset
    137, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20639C15,    ABISELECT(37472,28184), //bcp->offset
    126, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(30140,22592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(30008,22492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    35, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(30008,22492), //bcp->offset
    118, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20639C12,    ABISELECT(29632,22208), //bcp->offset
    100, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C5[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C5D1Ev();
extern void _ZN8S20639C5D0Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C63v10Ev();
extern void _ZN8S20639C63v11Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S20639C5D1Ev,_ZTv0_n48_N8S20639C5D1Ev)();
extern void ABISELECT(_ZThn29632_N8S20639C5D1Ev,_ZThn22208_N8S20639C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20639C5D0Ev,_ZTv0_n48_N8S20639C5D0Ev)();
extern void ABISELECT(_ZThn29632_N8S20639C5D0Ev,_ZThn22208_N8S20639C5D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void ABISELECT(_ZTv0_n72_N8S20639C5D1Ev,_ZTv0_n36_N8S20639C5D1Ev)();
extern void ABISELECT(_ZThn37472_N8S20639C5D1Ev,_ZThn28184_N8S20639C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20639C5D0Ev,_ZTv0_n36_N8S20639C5D0Ev)();
extern void ABISELECT(_ZThn37472_N8S20639C5D0Ev,_ZThn28184_N8S20639C5D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY vtc_S20639C5[] = {
  ABISELECT(39280,29500),
  ABISELECT(37472,28184),
  ABISELECT(29632,22208),
  ABISELECT(29376,22024),
  ABISELECT(28480,21364),
  ABISELECT(28288,21220),
  ABISELECT(28128,21096),
  ABISELECT(27184,20388),
  ABISELECT(28464,21360),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20639C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20639C5D0Ev,
  ABISELECT(29200,21884),
  ABISELECT(28304,21224),
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  ABISELECT(-27184,-20388),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v11Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-27448,-20580),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  ABISELECT(880,680),
  ABISELECT(-27584,-20680),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-27760,-20820),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-28128,-21096),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28288,-21220),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28480,-21364),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29376,-22024),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-29632,-22208),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  ABISELECT(-29632,-22208),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20639C5D1Ev,_ZTv0_n48_N8S20639C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20639C5D0Ev,_ZTv0_n48_N8S20639C5D0Ev),
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-30008,-22492),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  ABISELECT(-37472,-28184),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-9008,-6824),
  ABISELECT(-9184,-6964),
  ABISELECT(-9344,-7088),
  ABISELECT(1808,1316),
  ABISELECT(-37472,-28184),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20639C5D1Ev,_ZTv0_n36_N8S20639C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20639C5D0Ev,_ZTv0_n36_N8S20639C5D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  ABISELECT(-39280,-29500),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern VTBL_ENTRY _ZTV8S20639C5[];
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__A__8S20639C5[] = {
  ABISELECT(28464,21360),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__A__8S20639C5[] = {
  ABISELECT(29200,21884),
  ABISELECT(28304,21224),
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__A3__8S20639C5[] = {
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__A5__8S20639C5[] = {
  ABISELECT(27952,20956),
  ABISELECT(28112,21080),
  ABISELECT(28288,21220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A5__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A5__8S20639C5[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__A3__8S20639C5[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__A3__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__A__8S20639C5[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__A__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__A__8S20639C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-28304,-21224),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__A__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-29200,-21884),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C63v10Ev();
extern void _ZN8S20639C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C6__8S20639C5[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v11Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C78S20639C6__8S20639C5[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C78S20639C6__8S20639C5[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C78S20639C6__8S20639C5[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C78S20639C6__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C6__A3__8S20639C5[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C6__A3__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C6__A3__8S20639C5[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C28S20639C6__A1__8S20639C5[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C6__A2__8S20639C5[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C6__A4__8S20639C5[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C6__A4__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C6__A4__8S20639C5[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C6__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C6__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C6__8S20639C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C6__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C9__A3__8S20639C6__8S20639C5[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__A__8S20639C6__8S20639C5[] = {
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__8S20639C6__8S20639C5[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C5[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C5[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A2__8S20639C5[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__8S20639C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A1__8S20639C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A1__8S20639C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A1__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void _ZN9S20639C12D1Ev();
extern void _ZN9S20639C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C12__8S20639C5[] = {
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C139S20639C12__8S20639C5[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C139S20639C12__A6__8S20639C5[] = {
  ABISELECT(-1504,-1112),
  ABISELECT(-1344,-988),
  ABISELECT(-1168,-848),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C139S20639C12__A6__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C139S20639C12__A6__8S20639C5[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C139S20639C12__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C139S20639C12__8S20639C5[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C89S20639C12__A5__8S20639C5[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C89S20639C12__A8__8S20639C5[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C89S20639C12__A8__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C89S20639C12__A8__8S20639C5[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C89S20639C12__A5__8S20639C5[] = {
  0,
  0,
  ABISELECT(1880,1396),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C89S20639C12__A5__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1720,1272),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C12__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1344,988),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C12__8S20639C5[] = {
  0,
  0,
  ABISELECT(1504,1112),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev)();
extern void ABISELECT(_ZThn7840_N9S20639C12D1Ev,_ZThn5976_N9S20639C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev)();
extern void ABISELECT(_ZThn7840_N9S20639C12D0Ev,_ZThn5976_N9S20639C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20639C15__9S20639C12__8S20639C5[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-9008,-6824),
  ABISELECT(-9184,-6964),
  ABISELECT(-9344,-7088),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev),
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C12__8S20639C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C12__8S20639C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(1152,844),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C12__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__9S20639C12__8S20639C5[] = {
  ABISELECT(-1880,-1396),
  ABISELECT(-1720,-1272),
  ABISELECT(-1544,-1132),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN9S20639C15D1Ev();
extern void _ZN9S20639C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C15__8S20639C5[] = {
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-9008,-6824),
  ABISELECT(-9184,-6964),
  ABISELECT(-9344,-7088),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN9S20639C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C15D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C15__8S20639C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__9S20639C15__8S20639C5[] = {
  0,
  0,
  ABISELECT(9344,7088),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C15__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(9184,6964),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C15__8S20639C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(8992,6820),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C15__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(8096,6160),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__A2__8S20639C5[] = {
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__A4__8S20639C5[] = {
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__A7__8S20639C5[] = {
  ABISELECT(-11152,-8404),
  ABISELECT(-10992,-8280),
  ABISELECT(-10816,-8140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A7__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A7__8S20639C5[] = {
  0,
  0,
  ABISELECT(11152,8404),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__A4__8S20639C5[] = {
  0,
  0,
  ABISELECT(11152,8404),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__A4__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(11152,8404),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__A2__8S20639C5[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(10800,8136),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__A2__8S20639C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(9904,7476),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
static  VTT_ENTRY vtt_S20639C5[] = {
  {&(_ZTV8S20639C5[11]),  11,152},
  {&(_tg__ZTV8S20639C2__A__8S20639C5[3]),  3,5},
  {&(_tg__ZTV8S20639C7__A__8S20639C5[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__A3__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__A5__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A5__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A5__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__A3__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__A3__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__A__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__A__8S20639C5[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__A__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__A__8S20639C5[8]),  8,11},
  {&(_ZTV8S20639C5[41]),  41,152},
  {&(_ZTV8S20639C5[70]),  70,152},
  {&(_ZTV8S20639C5[77]),  77,152},
  {&(_ZTV8S20639C5[87]),  87,152},
  {&(_ZTV8S20639C5[97]),  97,152},
  {&(_ZTV8S20639C5[52]),  52,152},
  {&(_ZTV8S20639C5[56]),  56,152},
  {&(_ZTV8S20639C5[63]),  63,152},
  {&(_ZTV8S20639C5[22]),  22,152},
  {&(_ZTV8S20639C5[114]),  114,152},
  {&(_ZTV8S20639C5[135]),  135,152},
  {&(_ZTV8S20639C5[148]),  148,152},
  {&(_ZTV8S20639C5[123]),  123,152},
  {&(_tg__ZTV8S20639C6__8S20639C5[7]),  7,13},
  {&(_tg__ZTV8S20639C78S20639C6__8S20639C5[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C78S20639C6__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C78S20639C6__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C78S20639C6__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C78S20639C6__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C78S20639C6__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C78S20639C6__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C78S20639C6__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C78S20639C6__8S20639C5[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C78S20639C6__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C78S20639C6__8S20639C5[8]),  8,11},
  {&(_tg__ZTV8S20639C98S20639C6__A3__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C6__A3__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C6__A3__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C28S20639C6__A1__8S20639C5[3]),  3,5},
  {&(_tg__ZTV8S20639C88S20639C6__A2__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C6__A4__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C6__A4__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C6__A4__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C6__A2__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C6__A2__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C6__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C6__8S20639C5[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C6__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C6__8S20639C5[8]),  8,11},
  {&(_tg__ZTV8S20639C9__A3__8S20639C6__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__A__8S20639C6__8S20639C5[3]),  3,5},
  {&(_tg__ZTV8S20639C8__A__8S20639C6__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C2__8S20639C5[3]),  3,5},
  {&(_tg__ZTV9S20639C11__8S20639C5[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A2__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__8S20639C5[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A1__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A1__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A1__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A1__8S20639C5[5]),  5,7},
  {&(_tg__ZTV9S20639C12__8S20639C5[9]),  9,13},
  {&(_tg__ZTV9S20639C139S20639C12__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C99S20639C139S20639C12__A6__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C139S20639C12__A6__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C139S20639C12__A6__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C139S20639C12__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C139S20639C12__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C89S20639C12__A5__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C89S20639C12__A8__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C89S20639C12__A8__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C89S20639C12__A8__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C89S20639C12__A5__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C89S20639C12__A5__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C2__9S20639C12__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C12__8S20639C5[4]),  4,6},
  {&(_tg__ZTV9S20639C15__9S20639C12__8S20639C5[9]),  9,11},
  {&(_tg__ZTV8S20639C7__9S20639C12__8S20639C5[11]),  11,15},
  {&(_tg__ZTV9S20639C11__9S20639C12__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C12__8S20639C5[8]),  8,11},
  {&(_tg__ZTV8S20639C8__A__9S20639C12__8S20639C5[5]),  5,8},
  {&(_tg__ZTV9S20639C15__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C7__9S20639C15__8S20639C5[11]),  11,15},
  {&(_tg__ZTV8S20639C4__9S20639C15__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C15__8S20639C5[5]),  5,7},
  {&(_tg__ZTV9S20639C11__9S20639C15__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C15__8S20639C5[8]),  8,11},
  {&(_tg__ZTV8S20639C7__A2__8S20639C5[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__A4__8S20639C5[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__A7__8S20639C5[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A7__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A7__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__A4__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__A4__8S20639C5[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__A2__8S20639C5[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__A2__8S20639C5[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__A2__8S20639C5[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__A2__8S20639C5[8]),  8,11},
};
extern VTBL_ENTRY _ZTI8S20639C5[];
extern  VTBL_ENTRY _ZTV8S20639C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C5[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20639C12D0Ev,_ZThn5976_N9S20639C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20639C12D1Ev,_ZThn5976_N9S20639C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20639C5D0Ev,_ZTv0_n36_N8S20639C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S20639C5D0Ev,_ZThn28184_N8S20639C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20639C5D1Ev,_ZTv0_n36_N8S20639C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37472_N8S20639C5D1Ev,_ZThn28184_N8S20639C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20639C5D0Ev,_ZTv0_n48_N8S20639C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S20639C5D0Ev,_ZThn22208_N8S20639C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20639C5D1Ev,_ZTv0_n48_N8S20639C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29632_N8S20639C5D1Ev,_ZThn22208_N8S20639C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20639C5 = {  "S20639C5", // class name
  bases_S20639C5, 37,
  &(vtc_S20639C5[0]), // expected_vtbl_contents
  &(vtt_S20639C5[0]), // expected_vtt_contents
  ABISELECT(39552,29692), // object size
  NSPAIRA(_ZTI8S20639C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20639C5),152, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C5),106, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20639C17  {
  __tsi64 s20639c17f0;
  __tsi64 s20639c17f1;
  ::S20639C15 s20639c17f2;
  int s20639c17f3;
  void  mf20639c17(); // _ZN9S20639C1710mf20639c17Ev
};
//SIG(-1 S20639C17) C1{ m FL[2] FC2{ VBC3{ VBC4{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC5{ BC6{ m Fi} VBC4 VBC7{ VBC6 BC4 Fi Fs[2] FL} BC8{ VBC6 VBC7 VBC4 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC10{ VBC7 VBC5 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} vd FC3 Fs:5 Fl} Fi}


void  S20639C17 ::mf20639c17(){}

static void Test_S20639C17()
{
  {
    init_simple_test("S20639C17");
    static S20639C17 lv;
    check2(sizeof(lv), ABISELECT(3616,2640), "sizeof(S20639C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C17)");
    check_field_offset(lv, s20639c17f0, 0, "S20639C17.s20639c17f0");
    check_field_offset(lv, s20639c17f1, 8, "S20639C17.s20639c17f1");
    check_field_offset(lv, s20639c17f2, 16, "S20639C17.s20639c17f2");
    check_field_offset(lv, s20639c17f3, ABISELECT(3600,2636), "S20639C17.s20639c17f3");
  }
}
static Arrange_To_Call_Me vS20639C17(Test_S20639C17, "S20639C17", ABISELECT(3616,2640));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S20639C17[];
VTBL_ENTRY *P__ZTI9S20639C17 = _ZTI9S20639C17; 
Class_Descriptor cd_S20639C17 = {  "S20639C17", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(3616,2640), // object size
  NSPAIRA(_ZTI9S20639C17),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  S20639C18  {
  ::S20639C8 s20639c18f0;
  short s20639c18f1;
  void *s20639c18f2;
  __tsi64 s20639c18f3:64;
  int s20639c18f4[9];
  int s20639c18f5[9];
  virtual  ~S20639C18(); // _ZN9S20639C18D1Ev
  virtual void  v13(); // _ZN9S20639C183v13Ev
  S20639C18(); // tgen
};
//SIG(-1 S20639C18) C1{ vd v1 FC2{ BC3{ m Fi} VBC4{ v4 v5 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC5{ VBC3 BC4 Fi Fs[2] FL} BC6{ VBC3 VBC5 VBC4 v6 FL[8] Fp[7] Fs} v2 v3 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} Fs Fp FL:64 Fi[9] Fi[9]}


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

static void Test_S20639C18()
{
  extern Class_Descriptor cd_S20639C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,137)];
    init_test(&cd_S20639C18, buf);
    S20639C18 *dp, &lv = *(dp=new (buf) S20639C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,544), "sizeof(S20639C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C18)");
    check_field_offset(lv, s20639c18f0, ABISELECT(16,4), "S20639C18.s20639c18f0");
    check_field_offset(lv, s20639c18f1, ABISELECT(624,456), "S20639C18.s20639c18f1");
    check_field_offset(lv, s20639c18f2, ABISELECT(632,460), "S20639C18.s20639c18f2");
    set_bf_and_test(lv, s20639c18f3, ABISELECT(640,464), 0, 64, 1, "S20639C18");
    set_bf_and_test(lv, s20639c18f3, ABISELECT(640,464), 0, 64, hide_sll(1LL<<63), "S20639C18");
    check_field_offset(lv, s20639c18f4, ABISELECT(648,472), "S20639C18.s20639c18f4");
    check_field_offset(lv, s20639c18f5, ABISELECT(684,508), "S20639C18.s20639c18f5");
    test_class_info(&lv, &cd_S20639C18);
    dp->~S20639C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C18(Test_S20639C18, "S20639C18", ABISELECT(720,544));

#else // __cplusplus

extern void _ZN9S20639C18C1Ev();
extern void _ZN9S20639C18D1Ev();
Name_Map name_map_S20639C18[] = {
  NSPAIR(_ZN9S20639C18C1Ev),
  NSPAIR(_ZN9S20639C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20639C18[];
extern void _ZN9S20639C18D1Ev();
extern void _ZN9S20639C18D0Ev();
extern void _ZN9S20639C183v13Ev();
static  VTBL_ENTRY vtc_S20639C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C18[0]),
  (VTBL_ENTRY)&_ZN9S20639C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20639C183v13Ev,
};
extern VTBL_ENTRY _ZTI9S20639C18[];
extern  VTBL_ENTRY _ZTV9S20639C18[];
Class_Descriptor cd_S20639C18 = {  "S20639C18", // class name
  0,0,//no base classes
  &(vtc_S20639C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(720,544), // object size
  NSPAIRA(_ZTI9S20639C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20639C18),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  S20639C1  : virtual S20639C2 , virtual S20639C5 , virtual S20639C17 , S20639C18 , S20639C8 {
  void *s20639c1f0;
  int s20639c1f1;
  int s20639c1f2;
  int s20639c1f3;
  char s20639c1f4;
  __tsi64 s20639c1f5;
  virtual void  v1(); // _ZN8S20639C12v1Ev
  virtual void  v2(); // _ZN8S20639C12v2Ev
  ~S20639C1(); // tgen
  S20639C1(); // tgen
};
//SIG(1 S20639C1) C1{ VBC2{ VBC3{ m Fi} BC4{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ VBC6{ VBC4 BC7{ VBC4 BC8{ BC3 VBC4 VBC2 BC9{ VBC3 VBC2 VBC4 v5 FL[8] Fp[7] Fs} v6 v7 FU10{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC11{ VBC2 VBC8 BC9 v8 Fp Fs[2] FD[2] Fc FC2 FD FC9} v9 Fi Fc Fc:1} BC9 BC2 BC8 v10 v11 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} BC2 BC7 VBC12{ BC13{ BC9 v12 FL FC2 Fs Fc Fi Fi Fp FC14{} Fi FL} VBC15{ VBC7 vd FC7 Fs:5 Fl} BC8 FC13[9] Fi Fs:16 FC9 Fi Fs Fp FL FC2} FC16{ BC2 VBC4 VBC8 BC3 VBC12 vd v14 Fi Fp Fc Fi:1 Fp FC12 FC3[6] Fp FC15 Fi:5 FL} Fp Fc[7] Fc:0 FC3 Fi[7]} VBC17{ m FL FL FC15 Fi} BC18{ vd v13 FC8 Fs Fp FL:64 Fi[9] Fi[9]} BC8 v1 v2 Fp Fi Fi Fi Fc FL}


void  S20639C1 ::v1(){vfunc_called(this, "_ZN8S20639C12v1Ev");}
void  S20639C1 ::v2(){vfunc_called(this, "_ZN8S20639C12v2Ev");}
S20639C1 ::~S20639C1(){ note_dtor("S20639C1", this);} // tgen
S20639C1 ::S20639C1(){ note_ctor("S20639C1", this);} // tgen

static void Test_S20639C1()
{
  extern Class_Descriptor cd_S20639C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2762,8273)];
    init_test(&cd_S20639C1, buf);
    S20639C1 *dp, &lv = *(dp=new (buf) S20639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(44176,33088), "sizeof(S20639C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20639C1)");
    /*is_ambiguous_... S20639C1::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C11*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C6*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*)(S20639C6*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C2*)(S20639C5*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(1184,896), "S20639C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C9*)(S20639C8*), ABISELECT(1184,896), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(1008,756), "S20639C1");
    check_base_class_offset(lv, (S20639C2*)(S20639C11*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C11*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C6*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C6*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(1008,756), "S20639C1");
    check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C7*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*)(S20639C12*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C8*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C9*)(S20639C8*), ABISELECT(1008,756), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C11*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*)(S20639C5*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C9::S20639C4 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C7*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C7*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*)(S20639C12*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C8*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C9*)(S20639C8*), ABISELECT(29328,21996), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28516,21388), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28384,21288), "S20639C1");
    /*is_ambiguous_... S20639C7::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*)(S20639C6*), ABISELECT(28384,21288), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(30516,22880), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(30384,22780), "S20639C1");
    check_base_class_offset(lv, (S20639C8*)(S20639C11*), ABISELECT(30384,22780), "S20639C1");
    /*is_ambiguous_... S20639C11::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C11*), ABISELECT(29488,22120), "S20639C1");
    check_base_class_offset(lv, (S20639C11*)(S20639C7*)(S20639C6*), ABISELECT(29488,22120), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C11*)(S20639C7*)(S20639C5*), ABISELECT(29488,22120), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C11*)(S20639C7*), ABISELECT(29488,22120), "S20639C1");
    check_base_class_offset(lv, (S20639C7*)(S20639C6*), ABISELECT(28384,21288), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C9 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C6*), ABISELECT(28648,21480), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*)(S20639C6*), ABISELECT(28784,21580), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C6*), ABISELECT(28784,21580), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C6*), ABISELECT(29092,21820), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C6*), ABISELECT(28960,21720), "S20639C1");
    /*is_ambiguous_... S20639C6::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C6*), ABISELECT(28960,21720), "S20639C1");
    check_base_class_offset(lv, (S20639C6*)(S20639C5*), ABISELECT(28384,21288), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C4*)(S20639C2*)(S20639C5*), ABISELECT(1200,900), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C2 */ AMB_check_base_class_offset(lv, (S20639C2*)(S20639C5*), ABISELECT(1200,900), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(1508,1140), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(1376,1040), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*)(S20639C5*), ABISELECT(1376,1040), "S20639C1");
    /*is_ambiguous_... S20639C5::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C7*)(S20639C5*), ABISELECT(1376,1040), "S20639C1");
    check_base_class_offset(lv, (S20639C9*)(S20639C13*)(S20639C12*), ABISELECT(30640,22964), "S20639C1");
    check_base_class_offset(lv, (S20639C13*)(S20639C12*), ABISELECT(30640,22964), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C7*), ABISELECT(40420,30356), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C7*), ABISELECT(40288,30256), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C7 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C7*), ABISELECT(40288,30256), "S20639C1");
    check_base_class_offset(lv, (S20639C7*)(S20639C15*), ABISELECT(40288,30256), "S20639C1");
    check_base_class_offset(lv, (S20639C15*)(S20639C12*), ABISELECT(38480,28940), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*)(S20639C12*), ABISELECT(31148,23348), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*)(S20639C12*), ABISELECT(31016,23248), "S20639C1");
    /*is_ambiguous_... S20639C12::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*)(S20639C12*), ABISELECT(31016,23248), "S20639C1");
    check_base_class_offset(lv, (S20639C12*)(S20639C5*), ABISELECT(30640,22964), "S20639C1");
    check_base_class_offset(lv, (S20639C5*), ABISELECT(1200,900), "S20639C1");
    check_base_class_offset(lv, (S20639C17*), ABISELECT(40560,30448), "S20639C1");
    check_base_class_offset(lv, (S20639C18*), 0, "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S20639C8*), ABISELECT(852,644), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C9*)(S20639C8*), ABISELECT(720,544), "S20639C1");
    /*is_ambiguous_... S20639C1::S20639C8 */ AMB_check_base_class_offset(lv, (S20639C8*), ABISELECT(720,544), "S20639C1");
    check_field_offset(lv, s20639c1f0, ABISELECT(976,728), "S20639C1.s20639c1f0");
    check_field_offset(lv, s20639c1f1, ABISELECT(984,732), "S20639C1.s20639c1f1");
    check_field_offset(lv, s20639c1f2, ABISELECT(988,736), "S20639C1.s20639c1f2");
    check_field_offset(lv, s20639c1f3, ABISELECT(992,740), "S20639C1.s20639c1f3");
    check_field_offset(lv, s20639c1f4, ABISELECT(996,744), "S20639C1.s20639c1f4");
    check_field_offset(lv, s20639c1f5, ABISELECT(1000,748), "S20639C1.s20639c1f5");
    test_class_info(&lv, &cd_S20639C1);
    dp->~S20639C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20639C1(Test_S20639C1, "S20639C1", ABISELECT(44176,33088));

#else // __cplusplus

extern void _ZN8S20639C1C1Ev();
extern void _ZN8S20639C1D1Ev();
Name_Map name_map_S20639C1[] = {
  NSPAIR(_ZN8S20639C1C1Ev),
  NSPAIR(_ZN8S20639C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C11;
extern VTBL_ENTRY _ZTI9S20639C11[];
extern  VTBL_ENTRY _ZTV9S20639C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C11[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C6;
extern VTBL_ENTRY _ZTI8S20639C6[];
extern  VTBL_ENTRY _ZTV8S20639C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C6[];
extern Class_Descriptor cd_S20639C4;
extern VTBL_ENTRY _ZTI8S20639C4[];
extern  VTBL_ENTRY _ZTV8S20639C4[];
extern Class_Descriptor cd_S20639C2;
extern VTBL_ENTRY _ZTI8S20639C2[];
extern  VTBL_ENTRY _ZTV8S20639C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C2[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C13;
extern VTBL_ENTRY _ZTI9S20639C13[];
extern  VTBL_ENTRY _ZTV9S20639C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C7;
extern VTBL_ENTRY _ZTI8S20639C7[];
extern  VTBL_ENTRY _ZTV8S20639C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C7[];
extern Class_Descriptor cd_S20639C15;
extern VTBL_ENTRY _ZTI9S20639C15[];
extern  VTBL_ENTRY _ZTV9S20639C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C15[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
extern Class_Descriptor cd_S20639C12;
extern VTBL_ENTRY _ZTI9S20639C12[];
extern  VTBL_ENTRY _ZTV9S20639C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20639C12[];
extern Class_Descriptor cd_S20639C5;
extern VTBL_ENTRY _ZTI8S20639C5[];
extern  VTBL_ENTRY _ZTV8S20639C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C5[];
extern Class_Descriptor cd_S20639C17;
extern VTBL_ENTRY _ZTI9S20639C17[];
extern Class_Descriptor cd_S20639C18;
extern VTBL_ENTRY _ZTI9S20639C18[];
extern  VTBL_ENTRY _ZTV9S20639C18[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S20639C9;
extern VTBL_ENTRY _ZTI8S20639C9[];
extern  VTBL_ENTRY _ZTV8S20639C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C9[];
extern Class_Descriptor cd_S20639C8;
extern VTBL_ENTRY _ZTI8S20639C8[];
extern  VTBL_ENTRY _ZTV8S20639C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C8[];
static Base_Class bases_S20639C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1184,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
    2, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(1008,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(1008,756), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C4,    ABISELECT(29328,21996), //bcp->offset
    106, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(28516,21388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(28384,21288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(28384,21288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(30516,22880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(30384,22780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(30384,22780), //bcp->offset
    122, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20639C9,    ABISELECT(29488,22120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20639C11,    ABISELECT(29488,22120), //bcp->offset
    112, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20639C7,    ABISELECT(28384,21288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(28648,21480), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20639C4,    ABISELECT(28784,21580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20639C2,    ABISELECT(28784,21580), //bcp->offset
    93, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(29092,21820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(28960,21720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(28960,21720), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20639C6,    ABISELECT(28384,21288), //bcp->offset
    66, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20639C4,    ABISELECT(1200,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20639C2,    ABISELECT(1200,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(1508,1140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(1376,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(1376,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20639C7,    ABISELECT(1376,1040), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20639C9,    ABISELECT(30640,22964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20639C13,    ABISELECT(30640,22964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(40420,30356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(40288,30256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(40288,30256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    31, //immediately_derived
  0, 0},
  {&cd_S20639C7,    ABISELECT(40288,30256), //bcp->offset
    170, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20639C15,    ABISELECT(38480,28940), //bcp->offset
    159, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(31148,23348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(31016,23248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(31016,23248), //bcp->offset
    151, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20639C12,    ABISELECT(30640,22964), //bcp->offset
    133, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20639C5,    ABISELECT(1200,900), //bcp->offset
    33, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C17,    ABISELECT(40560,30448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20639C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(852,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20639C9,    ABISELECT(720,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20639C8,    ABISELECT(720,544), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20639C1[];
extern void _ZN8S20639C1D1Ev();
extern void _ZN8S20639C1D0Ev();
extern void _ZN9S20639C183v13Ev();
extern void _ZN8S20639C12v1Ev();
extern void _ZN8S20639C12v2Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void ABISELECT(_ZTv0_n112_N8S20639C1D1Ev,_ZTv0_n56_N8S20639C1D1Ev)();
extern void ABISELECT(_ZThn1200_N8S20639C1D1Ev,_ZThn900_N8S20639C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20639C1D0Ev,_ZTv0_n56_N8S20639C1D0Ev)();
extern void ABISELECT(_ZThn1200_N8S20639C1D0Ev,_ZThn900_N8S20639C1D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C63v10Ev();
extern void _ZN8S20639C63v11Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S20639C1D1Ev,_ZTv0_n48_N8S20639C1D1Ev)();
extern void ABISELECT(_ZThn30640_N8S20639C1D1Ev,_ZThn22964_N8S20639C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20639C1D0Ev,_ZTv0_n48_N8S20639C1D0Ev)();
extern void ABISELECT(_ZThn30640_N8S20639C1D0Ev,_ZThn22964_N8S20639C1D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void ABISELECT(_ZTv0_n72_N8S20639C1D1Ev,_ZTv0_n36_N8S20639C1D1Ev)();
extern void ABISELECT(_ZThn38480_N8S20639C1D1Ev,_ZThn28940_N8S20639C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20639C1D0Ev,_ZTv0_n36_N8S20639C1D0Ev)();
extern void ABISELECT(_ZThn38480_N8S20639C1D0Ev,_ZThn28940_N8S20639C1D0Ev)() __attribute__((weak));
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY vtc_S20639C1[] = {
  ABISELECT(40560,30448),
  ABISELECT(40288,30256),
  ABISELECT(38480,28940),
  ABISELECT(30640,22964),
  ABISELECT(30384,22780),
  ABISELECT(29488,22120),
  ABISELECT(29328,21996),
  ABISELECT(28384,21288),
  ABISELECT(1200,900),
  ABISELECT(1184,896),
  ABISELECT(1008,756),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20639C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20639C183v13Ev,
  (VTBL_ENTRY)&_ZN8S20639C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20639C12v2Ev,
  ABISELECT(28608,21452),
  ABISELECT(288,212),
  ABISELECT(464,352),
  ABISELECT(-720,-544),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1008,-756),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  ABISELECT(176,140),
  ABISELECT(176,140),
  ABISELECT(176,140),
  ABISELECT(176,140),
  ABISELECT(-1200,-900),
  0,
  0,
  ABISELECT(39088,29356),
  ABISELECT(37280,28040),
  ABISELECT(29440,22064),
  ABISELECT(29184,21880),
  ABISELECT(28288,21220),
  ABISELECT(-192,-144),
  ABISELECT(28128,21096),
  ABISELECT(27184,20388),
  ABISELECT(-16,-4),
  ABISELECT(-1200,-900),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20639C1D1Ev,_ZTv0_n56_N8S20639C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20639C1D0Ev,_ZTv0_n56_N8S20639C1D0Ev),
  ABISELECT(29008,21740),
  ABISELECT(28112,21080),
  ABISELECT(27952,20956),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  ABISELECT(-1376,-1040),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20532),
  ABISELECT(-27200,-20392),
  ABISELECT(-28384,-21288),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v11Ev,
  ABISELECT(680,516),
  ABISELECT(-27640,-20724),
  ABISELECT(-27464,-20584),
  ABISELECT(-28648,-21480),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  ABISELECT(-27600,-20684),
  ABISELECT(-28784,-21580),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  ABISELECT(368,276),
  ABISELECT(-27952,-20964),
  ABISELECT(-27776,-20824),
  ABISELECT(-28960,-21720),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  0,
  0,
  ABISELECT(-29328,-21996),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(-29488,-22120),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(-30384,-22780),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-30640,-22964),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22208),
  ABISELECT(-29456,-22068),
  ABISELECT(-30640,-22964),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20639C1D1Ev,_ZTv0_n48_N8S20639C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20639C1D0Ev,_ZTv0_n48_N8S20639C1D0Ev),
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22492),
  ABISELECT(-29832,-22352),
  ABISELECT(-31016,-23248),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  ABISELECT(-38480,-28940),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-37296,-28044),
  ABISELECT(-37472,-28184),
  ABISELECT(-9152,-6944),
  ABISELECT(1808,1316),
  ABISELECT(-38480,-28940),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20639C1D1Ev,_ZTv0_n36_N8S20639C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20639C1D0Ev,_ZTv0_n36_N8S20639C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  ABISELECT(-40288,-30256),
  (VTBL_ENTRY)&(_ZTI8S20639C1[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern VTBL_ENTRY _ZTV8S20639C1[];
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__8S20639C1[] = {
  ABISELECT(28608,21452),
  ABISELECT(288,212),
  ABISELECT(464,352),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A9__8S20639C1[] = {
  ABISELECT(28608,21452),
  ABISELECT(288,212),
  ABISELECT(464,352),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A9__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A9__8S20639C1[] = {
  0,
  0,
  ABISELECT(-28608,-21452),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A__8S20639C1[] = {
  0,
  0,
  ABISELECT(-28608,-21452),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C1[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
extern void _ZN8S20639C5D1Ev();
extern void _ZN8S20639C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C5__8S20639C1[] = {
  ABISELECT(39088,29356),
  ABISELECT(37280,28040),
  ABISELECT(29440,22064),
  ABISELECT(29184,21880),
  ABISELECT(28288,21220),
  ABISELECT(-192,-144),
  ABISELECT(28128,21096),
  ABISELECT(27184,20388),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20639C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20639C5D0Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C28S20639C5__A2__8S20639C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C78S20639C5__A1__8S20639C1[] = {
  ABISELECT(29008,21740),
  ABISELECT(28112,21080),
  ABISELECT(27952,20956),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C78S20639C5__A3__8S20639C1[] = {
  ABISELECT(27952,20956),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C78S20639C5__A5__8S20639C1[] = {
  ABISELECT(27952,20956),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C78S20639C5__A5__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(368,284),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C78S20639C5__A5__8S20639C1[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C78S20639C5__A3__8S20639C1[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C78S20639C5__A3__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(368,284),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C78S20639C5__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(-27952,-20956),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C78S20639C5__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(368,284),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C78S20639C5__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(-28112,-21080),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C78S20639C5__A1__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(-29008,-21740),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C63v10Ev();
extern void _ZN8S20639C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C6__8S20639C5__8S20639C1[] = {
  ABISELECT(400,292),
  ABISELECT(400,292),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20532),
  ABISELECT(-27200,-20392),
  ABISELECT(-27184,-20388),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v11Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C5__8S20639C1[] = {
  0,
  0,
  ABISELECT(-28128,-21096),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C5__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C5__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(-28288,-21220),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C5__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(-29184,-21880),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C6__A3__8S20639C5__8S20639C1[] = {
  ABISELECT(680,516),
  ABISELECT(-27640,-20724),
  ABISELECT(-27464,-20584),
  ABISELECT(-27448,-20580),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C28S20639C6__A1__8S20639C5__8S20639C1[] = {
  ABISELECT(-27600,-20684),
  ABISELECT(-27584,-20680),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C6__A2__8S20639C5__8S20639C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20964),
  ABISELECT(-27776,-20824),
  ABISELECT(-27760,-20820),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__A__8S20639C5__8S20639C1[] = {
  ABISELECT(29008,21740),
  ABISELECT(28112,21080),
  ABISELECT(27952,20956),
  ABISELECT(-368,-284),
  ABISELECT(-192,-144),
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S20639C5D1Ev,_ZTv0_n48_N8S20639C5D1Ev)();
extern void ABISELECT(_ZThn29440_N8S20639C5D1Ev,_ZThn22064_N8S20639C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20639C5D0Ev,_ZTv0_n48_N8S20639C5D0Ev)();
extern void ABISELECT(_ZThn29440_N8S20639C5D0Ev,_ZThn22064_N8S20639C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20639C12__8S20639C5__8S20639C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-29440,-22064),
  0,
  0,
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22208),
  ABISELECT(-29456,-22068),
  ABISELECT(-29440,-22064),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20639C5D1Ev,_ZTv0_n48_N8S20639C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20639C5D0Ev,_ZTv0_n48_N8S20639C5D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S20639C5D1Ev,_ZTv0_n36_N8S20639C5D1Ev)();
extern void ABISELECT(_ZThn37280_N8S20639C5D1Ev,_ZThn28040_N8S20639C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20639C5D0Ev,_ZTv0_n36_N8S20639C5D0Ev)();
extern void ABISELECT(_ZThn37280_N8S20639C5D0Ev,_ZThn28040_N8S20639C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20639C15__8S20639C5__8S20639C1[] = {
  ABISELECT(-37280,-28040),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-37296,-28044),
  ABISELECT(-37472,-28184),
  ABISELECT(-9152,-6944),
  ABISELECT(1808,1316),
  ABISELECT(-37280,-28040),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20639C5D1Ev,_ZTv0_n36_N8S20639C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20639C5D0Ev,_ZTv0_n36_N8S20639C5D0Ev),
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__A2__8S20639C5__8S20639C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  ABISELECT(-39088,-29356),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C89S20639C12__A5__8S20639C5__8S20639C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22492),
  ABISELECT(-29832,-22352),
  ABISELECT(-29816,-22348),
  (VTBL_ENTRY)&(_ZTI8S20639C5[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
extern void _ZN8S20639C63v10Ev();
extern void _ZN8S20639C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C6__8S20639C1[] = {
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20532),
  ABISELECT(-27200,-20392),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20639C63v11Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C78S20639C6__8S20639C1[] = {
  ABISELECT(2000,1492),
  ABISELECT(1104,832),
  ABISELECT(944,708),
  ABISELECT(-27376,-20532),
  ABISELECT(-27200,-20392),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C78S20639C6__8S20639C1[] = {
  ABISELECT(944,708),
  ABISELECT(-27376,-20532),
  ABISELECT(-27200,-20392),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C78S20639C6__8S20639C1[] = {
  ABISELECT(944,708),
  ABISELECT(-27376,-20532),
  ABISELECT(-27200,-20392),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20532),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20532),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20532),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C78S20639C6__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(-2000,-1492),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C6__A3__8S20639C1[] = {
  ABISELECT(680,516),
  ABISELECT(-27640,-20724),
  ABISELECT(-27464,-20584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C6__A3__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27640,20724),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C6__A3__8S20639C1[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C28S20639C6__A1__8S20639C1[] = {
  ABISELECT(-27600,-20684),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C2[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C6__A2__8S20639C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20964),
  ABISELECT(-27776,-20824),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C6__A4__8S20639C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20964),
  ABISELECT(-27776,-20824),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C6__A4__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27952,20964),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C6__A4__8S20639C1[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C6__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C6__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27952,20964),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(27376,20532),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C6__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C6__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(-2000,-1492),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C9__A3__8S20639C6__8S20639C1[] = {
  ABISELECT(680,516),
  ABISELECT(-27640,-20724),
  ABISELECT(-27464,-20584),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__A__8S20639C6__8S20639C1[] = {
  ABISELECT(-27600,-20684),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__8S20639C6__8S20639C1[] = {
  ABISELECT(368,276),
  ABISELECT(-27952,-20964),
  ABISELECT(-27776,-20824),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI8S20639C6[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C1[] = {
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C11__A2__8S20639C1[] = {
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(28480,21364),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C11__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(28480,21364),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__9S20639C11__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C11__8S20639C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI9S20639C11[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C1[] = {
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C8__A1__8S20639C1[] = {
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29376,22024),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(1056,784),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C8__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(1056,784),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C8__A1__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29376,22024),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
extern void _ZN9S20639C12D1Ev();
extern void _ZN9S20639C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C12__8S20639C1[] = {
  ABISELECT(-256,-184),
  ABISELECT(-1152,-844),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22208),
  ABISELECT(-29456,-22068),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C12D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C139S20639C12__8S20639C1[] = {
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22208),
  ABISELECT(-29456,-22068),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C133v12Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C99S20639C139S20639C12__A6__8S20639C1[] = {
  ABISELECT(-1312,-968),
  ABISELECT(-29632,-22208),
  ABISELECT(-29456,-22068),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C99S20639C139S20639C12__A6__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29632,22208),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C99S20639C139S20639C12__A6__8S20639C1[] = {
  0,
  0,
  ABISELECT(1312,968),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C139S20639C12__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29632,22208),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C139S20639C12__8S20639C1[] = {
  0,
  0,
  ABISELECT(1312,968),
  (VTBL_ENTRY)&(_ZTI9S20639C13[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C89S20639C12__A5__8S20639C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22492),
  ABISELECT(-29832,-22352),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C89S20639C12__A8__8S20639C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22492),
  ABISELECT(-29832,-22352),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C89S20639C12__A8__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(30008,22492),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C89S20639C12__A8__8S20639C1[] = {
  0,
  0,
  ABISELECT(1688,1252),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C89S20639C12__A5__8S20639C1[] = {
  0,
  0,
  ABISELECT(1688,1252),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C89S20639C12__A5__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(30008,22492),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C12__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(29632,22208),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__9S20639C12__8S20639C1[] = {
  0,
  0,
  ABISELECT(1312,968),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev)();
extern void ABISELECT(_ZThn7840_N9S20639C12D1Ev,_ZThn5976_N9S20639C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev)();
extern void ABISELECT(_ZThn7840_N9S20639C12D0Ev,_ZThn5976_N9S20639C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20639C15__9S20639C12__8S20639C1[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-37296,-28044),
  ABISELECT(-37472,-28184),
  ABISELECT(-9152,-6944),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev),
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C12__8S20639C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C12__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(1152,844),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C12__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A__9S20639C12__8S20639C1[] = {
  ABISELECT(-1688,-1252),
  ABISELECT(-30008,-22492),
  ABISELECT(-29832,-22352),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S20639C12[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN9S20639C15D1Ev();
extern void _ZN9S20639C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C15__8S20639C1[] = {
  ABISELECT(-8096,-6160),
  ABISELECT(-8992,-6820),
  ABISELECT(-37296,-28044),
  ABISELECT(-37472,-28184),
  ABISELECT(-9152,-6944),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN9S20639C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20639C15D0Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__9S20639C15__8S20639C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__9S20639C15__8S20639C1[] = {
  0,
  0,
  ABISELECT(9152,6944),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__9S20639C15__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(37472,28184),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__9S20639C15__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(8992,6820),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__9S20639C15__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(8096,6160),
  (VTBL_ENTRY)&(_ZTI9S20639C15[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
extern void _ZN8S20639C72v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C7__A2__8S20639C1[] = {
  ABISELECT(-9904,-7476),
  ABISELECT(-10800,-8136),
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
  (VTBL_ENTRY)&_ZN8S20639C72v9Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C88S20639C7__A4__8S20639C1[] = {
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
extern void _ZN8S20639C92v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C98S20639C88S20639C7__A7__8S20639C1[] = {
  ABISELECT(-10960,-8260),
  ABISELECT(-39280,-29500),
  ABISELECT(-39104,-29360),
  0,
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A7__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(39280,29500),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A7__8S20639C1[] = {
  0,
  0,
  ABISELECT(10960,8260),
  (VTBL_ENTRY)&(_ZTI8S20639C9[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C88S20639C7__A4__8S20639C1[] = {
  0,
  0,
  ABISELECT(10960,8260),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C88S20639C7__A4__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(39280,29500),
  (VTBL_ENTRY)&(_ZTI8S20639C8[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C4__8S20639C7__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(10960,8260),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C42v3Ev();
extern void _ZN8S20639C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C2__8S20639C7__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(39280,29500),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20639C42v4Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN9S20639C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20639C11__8S20639C7__A2__8S20639C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-160,-124),
  ABISELECT(-28480,-21364),
  ABISELECT(-28304,-21224),
  ABISELECT(10800,8136),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN9S20639C112v8Ev,
};
extern void _ZN8S20639C92v5Ev();
extern void _ZN8S20639C82v6Ev();
extern void _ZN8S20639C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20639C8__A1__8S20639C7__A2__8S20639C1[] = {
  0,
  0,
  0,
  ABISELECT(-1056,-784),
  ABISELECT(-29376,-22024),
  ABISELECT(-29200,-21884),
  ABISELECT(9904,7476),
  (VTBL_ENTRY)&(_ZTI8S20639C7[0]),
  (VTBL_ENTRY)&_ZN8S20639C92v5Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v6Ev,
  (VTBL_ENTRY)&_ZN8S20639C82v7Ev,
};
static  VTT_ENTRY vtt_S20639C1[] = {
  {&(_ZTV8S20639C1[13]),  13,185},
  {&(_tg__ZTV8S20639C8__A__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A9__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A9__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A9__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A__8S20639C1[5]),  5,7},
  {&(_ZTV8S20639C1[31]),  31,185},
  {&(_ZTV8S20639C1[51]),  51,185},
  {&(_ZTV8S20639C1[81]),  81,185},
  {&(_ZTV8S20639C1[110]),  110,185},
  {&(_ZTV8S20639C1[120]),  120,185},
  {&(_ZTV8S20639C1[130]),  130,185},
  {&(_ZTV8S20639C1[92]),  92,185},
  {&(_ZTV8S20639C1[96]),  96,185},
  {&(_ZTV8S20639C1[103]),  103,185},
  {&(_ZTV8S20639C1[62]),  62,185},
  {&(_ZTV8S20639C1[147]),  147,185},
  {&(_ZTV8S20639C1[168]),  168,185},
  {&(_ZTV8S20639C1[181]),  181,185},
  {&(_ZTV8S20639C1[156]),  156,185},
  {&(_ZTV8S20639C1[23]),  23,185},
  {&(_tg__ZTV8S20639C2__8S20639C1[3]),  3,5},
  {&(_tg__ZTV8S20639C5__8S20639C1[11]),  11,15},
  {&(_tg__ZTV8S20639C28S20639C5__A2__8S20639C1[3]),  3,5},
  {&(_tg__ZTV8S20639C78S20639C5__A1__8S20639C1[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C78S20639C5__A3__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C78S20639C5__A5__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C78S20639C5__A5__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C78S20639C5__A5__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C78S20639C5__A3__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C78S20639C5__A3__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C78S20639C5__A1__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C78S20639C5__A1__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C78S20639C5__A1__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C78S20639C5__A1__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C6__8S20639C5__8S20639C1[15]),  15,21},
  {&(_tg__ZTV8S20639C4__8S20639C5__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C5__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C5__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C5__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C98S20639C6__A3__8S20639C5__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C28S20639C6__A1__8S20639C5__8S20639C1[3]),  3,5},
  {&(_tg__ZTV8S20639C88S20639C6__A2__8S20639C5__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C7__A__8S20639C5__8S20639C1[7]),  7,11},
  {&(_tg__ZTV9S20639C12__8S20639C5__8S20639C1[14]),  14,18},
  {&(_tg__ZTV9S20639C15__8S20639C5__8S20639C1[9]),  9,11},
  {&(_tg__ZTV8S20639C7__A2__8S20639C5__8S20639C1[11]),  11,15},
  {&(_tg__ZTV8S20639C89S20639C12__A5__8S20639C5__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C6__8S20639C1[7]),  7,13},
  {&(_tg__ZTV8S20639C78S20639C6__8S20639C1[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C78S20639C6__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C78S20639C6__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C78S20639C6__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C78S20639C6__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C78S20639C6__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C78S20639C6__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C78S20639C6__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C78S20639C6__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C78S20639C6__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C78S20639C6__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C98S20639C6__A3__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C6__A3__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C6__A3__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C28S20639C6__A1__8S20639C1[3]),  3,5},
  {&(_tg__ZTV8S20639C88S20639C6__A2__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C6__A4__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C6__A4__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C6__A4__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C6__A2__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C6__A2__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C6__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C6__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C6__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C6__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C9__A3__8S20639C6__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__A__8S20639C6__8S20639C1[3]),  3,5},
  {&(_tg__ZTV8S20639C8__A__8S20639C6__8S20639C1[5]),  5,8},
  {&(_tg__ZTV9S20639C11__8S20639C1[6]),  6,8},
  {&(_tg__ZTV8S20639C99S20639C11__A2__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C11__A2__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C11__A2__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C11__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C8__9S20639C11__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C4__A1__9S20639C11__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C8__A1__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C8__A1__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C8__A1__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C8__A1__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C8__A1__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C8__A1__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C12__8S20639C1[9]),  9,13},
  {&(_tg__ZTV9S20639C139S20639C12__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C99S20639C139S20639C12__A6__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C99S20639C139S20639C12__A6__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C99S20639C139S20639C12__A6__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C139S20639C12__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C139S20639C12__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C89S20639C12__A5__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C89S20639C12__A8__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C89S20639C12__A8__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C89S20639C12__A8__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C89S20639C12__A5__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C89S20639C12__A5__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C2__9S20639C12__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__9S20639C12__8S20639C1[4]),  4,6},
  {&(_tg__ZTV9S20639C15__9S20639C12__8S20639C1[9]),  9,11},
  {&(_tg__ZTV8S20639C7__9S20639C12__8S20639C1[11]),  11,15},
  {&(_tg__ZTV9S20639C11__9S20639C12__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C12__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C8__A__9S20639C12__8S20639C1[5]),  5,8},
  {&(_tg__ZTV9S20639C15__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C7__9S20639C15__8S20639C1[11]),  11,15},
  {&(_tg__ZTV8S20639C4__9S20639C15__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__9S20639C15__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C11__9S20639C15__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__9S20639C15__8S20639C1[8]),  8,11},
  {&(_tg__ZTV8S20639C7__A2__8S20639C1[7]),  7,11},
  {&(_tg__ZTV8S20639C88S20639C7__A4__8S20639C1[5]),  5,8},
  {&(_tg__ZTV8S20639C98S20639C88S20639C7__A7__8S20639C1[5]),  5,6},
  {&(_tg__ZTV8S20639C2__8S20639C98S20639C88S20639C7__A7__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__A1__8S20639C98S20639C88S20639C7__A7__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C4__8S20639C88S20639C7__A4__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C88S20639C7__A4__8S20639C1[5]),  5,7},
  {&(_tg__ZTV8S20639C4__8S20639C7__A2__8S20639C1[4]),  4,6},
  {&(_tg__ZTV8S20639C2__8S20639C7__A2__8S20639C1[5]),  5,7},
  {&(_tg__ZTV9S20639C11__8S20639C7__A2__8S20639C1[8]),  8,10},
  {&(_tg__ZTV8S20639C8__A1__8S20639C7__A2__8S20639C1[8]),  8,11},
};
extern VTBL_ENTRY _ZTI8S20639C1[];
extern  VTBL_ENTRY _ZTV8S20639C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20639C1[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D0Ev,_ZTv0_n36_N9S20639C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20639C12D0Ev,_ZThn5976_N9S20639C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20639C12D1Ev,_ZTv0_n36_N9S20639C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S20639C12D1Ev,_ZThn5976_N9S20639C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20639C5D0Ev,_ZTv0_n36_N8S20639C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37280_N8S20639C5D0Ev,_ZThn28040_N8S20639C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20639C5D1Ev,_ZTv0_n36_N8S20639C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37280_N8S20639C5D1Ev,_ZThn28040_N8S20639C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20639C5D0Ev,_ZTv0_n48_N8S20639C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29440_N8S20639C5D0Ev,_ZThn22064_N8S20639C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20639C5D1Ev,_ZTv0_n48_N8S20639C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29440_N8S20639C5D1Ev,_ZThn22064_N8S20639C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20639C1D0Ev,_ZTv0_n36_N8S20639C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38480_N8S20639C1D0Ev,_ZThn28940_N8S20639C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20639C1D1Ev,_ZTv0_n36_N8S20639C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38480_N8S20639C1D1Ev,_ZThn28940_N8S20639C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20639C1D0Ev,_ZTv0_n48_N8S20639C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30640_N8S20639C1D0Ev,_ZThn22964_N8S20639C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20639C1D1Ev,_ZTv0_n48_N8S20639C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30640_N8S20639C1D1Ev,_ZThn22964_N8S20639C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20639C1D0Ev,_ZTv0_n56_N8S20639C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S20639C1D0Ev,_ZThn900_N8S20639C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20639C1D1Ev,_ZTv0_n56_N8S20639C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S20639C1D1Ev,_ZThn900_N8S20639C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20639C1 = {  "S20639C1", // class name
  bases_S20639C1, 43,
  &(vtc_S20639C1[0]), // expected_vtbl_contents
  &(vtt_S20639C1[0]), // expected_vtt_contents
  ABISELECT(44176,33088), // object size
  NSPAIRA(_ZTI8S20639C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20639C1),185, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20639C1),128, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C6  {
  __tsi64 s19094c6f0[9];
  void *s19094c6f1;
  long double s19094c6f2;
  void *s19094c6f3;
  char s19094c6f4;
  short s19094c6f5[6];
  void *s19094c6f6;
  char s19094c6f7:4;
  void *s19094c6f8;
  virtual void  v2(); // _ZN8S19094C62v2Ev
  virtual void  v3(); // _ZN8S19094C62v3Ev
  ~S19094C6(); // tgen
  S19094C6(); // tgen
};
//SIG(-1 S19094C6) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S19094C6 ::v2(){vfunc_called(this, "_ZN8S19094C62v2Ev");}
void  S19094C6 ::v3(){vfunc_called(this, "_ZN8S19094C62v3Ev");}
S19094C6 ::~S19094C6(){ note_dtor("S19094C6", this);} // tgen
S19094C6 ::S19094C6(){ note_ctor("S19094C6", this);} // tgen

static void Test_S19094C6()
{
  extern Class_Descriptor cd_S19094C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S19094C6, buf);
    S19094C6 *dp, &lv = *(dp=new (buf) S19094C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S19094C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C6)");
    check_field_offset(lv, s19094c6f0, ABISELECT(8,4), "S19094C6.s19094c6f0");
    check_field_offset(lv, s19094c6f1, ABISELECT(80,76), "S19094C6.s19094c6f1");
    check_field_offset(lv, s19094c6f2, ABISELECT(96,80), "S19094C6.s19094c6f2");
    check_field_offset(lv, s19094c6f3, ABISELECT(112,92), "S19094C6.s19094c6f3");
    check_field_offset(lv, s19094c6f4, ABISELECT(120,96), "S19094C6.s19094c6f4");
    check_field_offset(lv, s19094c6f5, ABISELECT(122,98), "S19094C6.s19094c6f5");
    check_field_offset(lv, s19094c6f6, ABISELECT(136,112), "S19094C6.s19094c6f6");
    set_bf_and_test(lv, s19094c6f7, ABISELECT(144,116), 0, 4, 1, "S19094C6");
    set_bf_and_test(lv, s19094c6f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S19094C6");
    check_field_offset(lv, s19094c6f8, ABISELECT(152,120), "S19094C6.s19094c6f8");
    test_class_info(&lv, &cd_S19094C6);
    dp->~S19094C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C6(Test_S19094C6, "S19094C6", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S19094C6C1Ev();
extern void _ZN8S19094C6D1Ev();
Name_Map name_map_S19094C6[] = {
  NSPAIR(_ZN8S19094C6C1Ev),
  NSPAIR(_ZN8S19094C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19094C6[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY vtc_S19094C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C6[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
Class_Descriptor cd_S19094C6 = {  "S19094C6", // class name
  0,0,//no base classes
  &(vtc_S19094C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S19094C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19094C6),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  S19094C4  : virtual S1538C9_nt , S19094C6 {
  int s19094c4f0;
  short s19094c4f1[2];
  __tsi64 s19094c4f2;
  ~S19094C4(); // tgen
  S19094C4(); // tgen
};
//SIG(-1 S19094C4) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S19094C4()
{
  extern Class_Descriptor cd_S19094C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S19094C4, buf);
    S19094C4 *dp, &lv = *(dp=new (buf) S19094C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S19094C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C4)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S19094C4");
    check_base_class_offset(lv, (S19094C6*), 0, "S19094C4");
    check_field_offset(lv, s19094c4f0, ABISELECT(160,124), "S19094C4.s19094c4f0");
    check_field_offset(lv, s19094c4f1, ABISELECT(164,128), "S19094C4.s19094c4f1");
    check_field_offset(lv, s19094c4f2, ABISELECT(168,132), "S19094C4.s19094c4f2");
    test_class_info(&lv, &cd_S19094C4);
    dp->~S19094C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C4(Test_S19094C4, "S19094C4", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN8S19094C4C1Ev();
extern void _ZN8S19094C4D1Ev();
Name_Map name_map_S19094C4[] = {
  NSPAIR(_ZN8S19094C4C1Ev),
  NSPAIR(_ZN8S19094C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
static Base_Class bases_S19094C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19094C4[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY vtc_S19094C4[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19094C4[];
static  VTT_ENTRY vtt_S19094C4[] = {
  {&(_ZTV8S19094C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
Class_Descriptor cd_S19094C4 = {  "S19094C4", // class name
  bases_S19094C4, 2,
  &(vtc_S19094C4[0]), // expected_vtbl_contents
  &(vtt_S19094C4[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI8S19094C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19094C4),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19094C4),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C8  : virtual S1538C9_nt , virtual S19094C4 , virtual S19094C6 {
  __tsi64 s19094c8f0[8];
  void *s19094c8f1[7];
  short s19094c8f2;
  virtual void  v4(); // _ZN8S19094C82v4Ev
  ~S19094C8(); // tgen
  S19094C8(); // tgen
};
//SIG(-1 S19094C8) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S19094C8()
{
  extern Class_Descriptor cd_S19094C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S19094C8, buf);
    S19094C8 *dp, &lv = *(dp=new (buf) S19094C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S19094C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C8)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19094C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(132,100), "S19094C8");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(144,104), "S19094C8");
    check_base_class_offset(lv, (S19094C4*), ABISELECT(144,104), "S19094C8");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*), ABISELECT(320,244), "S19094C8");
    check_field_offset(lv, s19094c8f0, ABISELECT(8,4), "S19094C8.s19094c8f0");
    check_field_offset(lv, s19094c8f1, ABISELECT(72,68), "S19094C8.s19094c8f1");
    check_field_offset(lv, s19094c8f2, ABISELECT(128,96), "S19094C8.s19094c8f2");
    test_class_info(&lv, &cd_S19094C8);
    dp->~S19094C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C8(Test_S19094C8, "S19094C8", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN8S19094C8C1Ev();
extern void _ZN8S19094C8D1Ev();
Name_Map name_map_S19094C8[] = {
  NSPAIR(_ZN8S19094C8C1Ev),
  NSPAIR(_ZN8S19094C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
static Base_Class bases_S19094C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C6,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C6,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19094C8[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY vtc_S19094C8[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19094C8[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C8[] = {
  {&(_ZTV8S19094C8[5]),  5,19},
  {&(_ZTV8S19094C8[11]),  11,19},
  {&(_ZTV8S19094C8[17]),  17,19},
  {&(_tg__ZTV8S19094C4__8S19094C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
Class_Descriptor cd_S19094C8 = {  "S19094C8", // class name
  bases_S19094C8, 4,
  &(vtc_S19094C8[0]), // expected_vtbl_contents
  &(vtt_S19094C8[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI8S19094C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19094C8),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19094C8),4, //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  S19094C7  : S1538C9_nt , virtual S19094C6 , virtual S19094C4 , S19094C8 {
  ::S7223C13 s19094c7f0;
  __tsi64 s19094c7f1:10;
  int s19094c7f2[9];
  int s19094c7f3;
  virtual void  v5(); // _ZN8S19094C72v5Ev
  virtual void  v6(); // _ZN8S19094C72v6Ev
  ~S19094C7(); // tgen
  S19094C7(); // tgen
};
//SIG(-1 S19094C7) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi}


void  S19094C7 ::v5(){vfunc_called(this, "_ZN8S19094C72v5Ev");}
void  S19094C7 ::v6(){vfunc_called(this, "_ZN8S19094C72v6Ev");}
S19094C7 ::~S19094C7(){ note_dtor("S19094C7", this);} // tgen
S19094C7 ::S19094C7(){ note_ctor("S19094C7", this);} // tgen

static void Test_S19094C7()
{
  extern Class_Descriptor cd_S19094C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S19094C7, buf);
    S19094C7 *dp, &lv = *(dp=new (buf) S19094C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S19094C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C7)");
    /*is_ambiguous_... S19094C7::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19094C7");
    /*is_ambiguous_... S19094C7::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*), ABISELECT(256,184), "S19094C7");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*), ABISELECT(256,184), "S19094C7");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(592,448), "S19094C7");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*), ABISELECT(592,448), "S19094C7");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(416,308), "S19094C7");
    check_base_class_offset(lv, (S19094C4*), ABISELECT(416,308), "S19094C7");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*), ABISELECT(416,308), "S19094C7");
    check_base_class_offset(lv, (S19094C8*), 0, "S19094C7");
    check_field_offset(lv, s19094c7f0, ABISELECT(136,104), "S19094C7.s19094c7f0");
    set_bf_and_test(lv, s19094c7f1, ABISELECT(208,140), 0, 10, 1, "S19094C7");
    set_bf_and_test(lv, s19094c7f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S19094C7");
    check_field_offset(lv, s19094c7f2, ABISELECT(212,144), "S19094C7.s19094c7f2");
    check_field_offset(lv, s19094c7f3, ABISELECT(248,180), "S19094C7.s19094c7f3");
    test_class_info(&lv, &cd_S19094C7);
    dp->~S19094C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C7(Test_S19094C7, "S19094C7", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S19094C7C1Ev();
extern void _ZN8S19094C7D1Ev();
Name_Map name_map_S19094C7[] = {
  NSPAIR(_ZN8S19094C7C1Ev),
  NSPAIR(_ZN8S19094C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
static Base_Class bases_S19094C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19094C6,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S19094C6,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19094C7[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY vtc_S19094C7[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19094C7[];
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C8__8S19094C7[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C8__8S19094C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C8__8S19094C7[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C7[] = {
  {&(_ZTV8S19094C7[5]),  5,21},
  {&(_tg__ZTV8S19094C8__8S19094C7[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C8__8S19094C7[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C8__8S19094C7[4]),  4,6},
  {&(_ZTV8S19094C7[12]),  12,21},
  {&(_ZTV8S19094C7[19]),  19,21},
  {&(_tg__ZTV8S19094C4__8S19094C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
Class_Descriptor cd_S19094C7 = {  "S19094C7", // class name
  bases_S19094C7, 6,
  &(vtc_S19094C7[0]), // expected_vtbl_contents
  &(vtt_S19094C7[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S19094C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19094C7),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19094C7),7, //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  S19094C11  : S19094C8 {
  __tsi64 s19094c11f0;
  ::S19094C4 s19094c11f1;
  short s19094c11f2;
  char s19094c11f3;
  int s19094c11f4;
  int s19094c11f5;
  void *s19094c11f6;
  ::S7223C9_nt s19094c11f7;
  int s19094c11f8;
  __tsi64 s19094c11f9;
  virtual void  v7(); // _ZN9S19094C112v7Ev
  ~S19094C11(); // tgen
  S19094C11(); // tgen
};
//SIG(-1 S19094C11) C1{ BC2{ VBC3{ m Fi} VBC4{ VBC3 BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 v4 FL[8] Fp[7] Fs} v1 FL FC4 Fs Fc Fi[2] Fp FC6{} Fi FL}


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

static void Test_S19094C11()
{
  extern Class_Descriptor cd_S19094C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,139)];
    init_test(&cd_S19094C11, buf);
    S19094C11 *dp, &lv = *(dp=new (buf) S19094C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,552), "sizeof(S19094C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C11)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*), ABISELECT(376,284), "S19094C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(376,284), "S19094C11");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(384,288), "S19094C11");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*), ABISELECT(384,288), "S19094C11");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*), ABISELECT(560,428), "S19094C11");
    check_base_class_offset(lv, (S19094C8*), 0, "S19094C11");
    check_field_offset(lv, s19094c11f0, ABISELECT(136,100), "S19094C11.s19094c11f0");
    check_field_offset(lv, s19094c11f1, ABISELECT(144,108), "S19094C11.s19094c11f1");
    check_field_offset(lv, s19094c11f2, ABISELECT(336,252), "S19094C11.s19094c11f2");
    check_field_offset(lv, s19094c11f3, ABISELECT(338,254), "S19094C11.s19094c11f3");
    check_field_offset(lv, s19094c11f4, ABISELECT(340,256), "S19094C11.s19094c11f4");
    check_field_offset(lv, s19094c11f5, ABISELECT(344,260), "S19094C11.s19094c11f5");
    check_field_offset(lv, s19094c11f6, ABISELECT(352,264), "S19094C11.s19094c11f6");
    check_field_offset(lv, s19094c11f7, ABISELECT(360,268), "S19094C11.s19094c11f7");
    check_field_offset(lv, s19094c11f8, ABISELECT(364,272), "S19094C11.s19094c11f8");
    check_field_offset(lv, s19094c11f9, ABISELECT(368,276), "S19094C11.s19094c11f9");
    test_class_info(&lv, &cd_S19094C11);
    dp->~S19094C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C11(Test_S19094C11, "S19094C11", ABISELECT(720,552));

#else // __cplusplus

extern void _ZN9S19094C11C1Ev();
extern void _ZN9S19094C11D1Ev();
Name_Map name_map_S19094C11[] = {
  NSPAIR(_ZN9S19094C11C1Ev),
  NSPAIR(_ZN9S19094C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
static Base_Class bases_S19094C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19094C6,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(384,288), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19094C6,    ABISELECT(560,428), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19094C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19094C11[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY vtc_S19094C11[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19094C11[];
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C8__9S19094C11[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C8__9S19094C11[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C8__9S19094C11[] = {
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C11[] = {
  {&(_ZTV9S19094C11[5]),  5,20},
  {&(_tg__ZTV8S19094C8__9S19094C11[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C8__9S19094C11[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C8__9S19094C11[4]),  4,6},
  {&(_ZTV9S19094C11[12]),  12,20},
  {&(_ZTV9S19094C11[18]),  18,20},
  {&(_tg__ZTV8S19094C4__9S19094C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19094C11[];
extern  VTBL_ENTRY _ZTV9S19094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C11[];
Class_Descriptor cd_S19094C11 = {  "S19094C11", // class name
  bases_S19094C11, 5,
  &(vtc_S19094C11[0]), // expected_vtbl_contents
  &(vtt_S19094C11[0]), // expected_vtt_contents
  ABISELECT(720,552), // object size
  NSPAIRA(_ZTI9S19094C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19094C11),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19094C11),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C15  : virtual S19094C4 , virtual S19094C7 , S19094C8 {
  void *s19094c15f0;
  short s19094c15f1[2];
  long double s19094c15f2[2];
  char s19094c15f3;
  ::S19094C4 s19094c15f4;
  long double s19094c15f5;
  ::S19094C8 s19094c15f6;
  virtual void  v8(); // _ZN9S19094C152v8Ev
  ~S19094C15(); // tgen
  S19094C15(); // tgen
};
//SIG(-1 S19094C15) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S19094C15()
{
  extern Class_Descriptor cd_S19094C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S19094C15, buf);
    S19094C15 *dp, &lv = *(dp=new (buf) S19094C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S19094C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C15)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(1072,800), "S19094C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(1072,800), "S19094C15");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*), ABISELECT(1072,800), "S19094C15");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(896,660), "S19094C15");
    check_base_class_offset(lv, (S19094C4*), ABISELECT(896,660), "S19094C15");
    check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(896,660), "S19094C15");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(896,660), "S19094C15");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*), ABISELECT(896,660), "S19094C15");
    /*is_ambiguous_... S19094C7::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(1212,904), "S19094C15");
    /*is_ambiguous_... S19094C7::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(1344,988), "S19094C15");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(1344,988), "S19094C15");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*), ABISELECT(1344,988), "S19094C15");
    check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(1080,804), "S19094C15");
    check_base_class_offset(lv, (S19094C7*), ABISELECT(1080,804), "S19094C15");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*), 0, "S19094C15");
    check_field_offset(lv, s19094c15f0, ABISELECT(136,100), "S19094C15.s19094c15f0");
    check_field_offset(lv, s19094c15f1, ABISELECT(144,104), "S19094C15.s19094c15f1");
    check_field_offset(lv, s19094c15f2, ABISELECT(160,108), "S19094C15.s19094c15f2");
    check_field_offset(lv, s19094c15f3, ABISELECT(192,132), "S19094C15.s19094c15f3");
    check_field_offset(lv, s19094c15f4, ABISELECT(208,136), "S19094C15.s19094c15f4");
    check_field_offset(lv, s19094c15f5, ABISELECT(400,280), "S19094C15.s19094c15f5");
    check_field_offset(lv, s19094c15f6, ABISELECT(416,292), "S19094C15.s19094c15f6");
    test_class_info(&lv, &cd_S19094C15);
    dp->~S19094C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C15(Test_S19094C15, "S19094C15", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN9S19094C15C1Ev();
extern void _ZN9S19094C15D1Ev();
Name_Map name_map_S19094C15[] = {
  NSPAIR(_ZN9S19094C15C1Ev),
  NSPAIR(_ZN9S19094C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
static Base_Class bases_S19094C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19094C6,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19094C6,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19094C15[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY vtc_S19094C15[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19094C15[];
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C8__A1__9S19094C15[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C8__A1__9S19094C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C8__A1__9S19094C15[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__9S19094C15[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__9S19094C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__9S19094C15[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__9S19094C15[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__9S19094C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C15[] = {
  {&(_ZTV9S19094C15[6]),  6,32},
  {&(_tg__ZTV8S19094C8__A1__9S19094C15[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C8__A1__9S19094C15[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C8__A1__9S19094C15[4]),  4,6},
  {&(_ZTV9S19094C15[13]),  13,32},
  {&(_ZTV9S19094C15[23]),  23,32},
  {&(_ZTV9S19094C15[30]),  30,32},
  {&(_tg__ZTV8S19094C4__9S19094C15[3]),  3,5},
  {&(_tg__ZTV8S19094C7__9S19094C15[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__9S19094C15[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__9S19094C15[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__9S19094C15[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__9S19094C15[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__9S19094C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
Class_Descriptor cd_S19094C15 = {  "S19094C15", // class name
  bases_S19094C15, 8,
  &(vtc_S19094C15[0]), // expected_vtbl_contents
  &(vtt_S19094C15[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI9S19094C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19094C15),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19094C15),14, //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  S19094C14  : virtual S19094C6 , S19094C7 , virtual S19094C15 {
  int s19094c14f0;
  char s19094c14f1;
  unsigned char s19094c14f2:1;
  virtual void  v9(); // _ZN9S19094C142v9Ev
  ~S19094C14(); // tgen
  S19094C14(); // tgen
};
//SIG(-1 S19094C14) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S19094C14()
{
  extern Class_Descriptor cd_S19094C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S19094C14, buf);
    S19094C14 *dp, &lv = *(dp=new (buf) S19094C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S19094C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C14)");
    /*is_ambiguous_... S19094C14::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*), ABISELECT(272,192), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(272,192), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(272,192), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(272,192), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(272,192), "S19094C14");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C15*), ABISELECT(272,192), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(132,100), "S19094C14");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(608,456), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(608,456), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(608,456), "S19094C14");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C15*), ABISELECT(608,456), "S19094C14");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(432,316), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(432,316), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(432,316), "S19094C14");
    check_base_class_offset(lv, (S19094C4*)(S19094C15*), ABISELECT(432,316), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(432,316), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(432,316), "S19094C14");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C15*), ABISELECT(432,316), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), 0, "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*), 0, "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(1652,1220), "S19094C14");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(1520,1120), "S19094C14");
    check_base_class_offset(lv, (S19094C7*)(S19094C15*), ABISELECT(1520,1120), "S19094C14");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C15*), ABISELECT(624,460), "S19094C14");
    check_base_class_offset(lv, (S19094C15*), ABISELECT(624,460), "S19094C14");
    check_field_offset(lv, s19094c14f0, ABISELECT(252,184), "S19094C14.s19094c14f0");
    check_field_offset(lv, s19094c14f1, ABISELECT(256,188), "S19094C14.s19094c14f1");
    set_bf_and_test(lv, s19094c14f2, ABISELECT(257,189), 0, 1, 1, "S19094C14");
    test_class_info(&lv, &cd_S19094C14);
    dp->~S19094C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C14(Test_S19094C14, "S19094C14", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN9S19094C14C1Ev();
extern void _ZN9S19094C14D1Ev();
Name_Map name_map_S19094C14[] = {
  NSPAIR(_ZN9S19094C14C1Ev),
  NSPAIR(_ZN9S19094C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C15;
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
static Base_Class bases_S19094C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19094C6,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19094C6,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19094C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19094C7,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19094C15,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19094C14[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY vtc_S19094C14[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern VTBL_ENTRY _ZTV9S19094C14[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A__9S19094C14[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__9S19094C14[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__9S19094C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__9S19094C14[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__A__9S19094C14[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__A__9S19094C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C14[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C14[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C15__A2__9S19094C14[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C15__A2__9S19094C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A2__9S19094C14[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15__9S19094C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15__9S19094C14[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C15__9S19094C14[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C14[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__A1__9S19094C14[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__A1__9S19094C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A1__9S19094C14[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__A1__9S19094C14[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__A1__9S19094C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C14[] = {
  {&(_ZTV9S19094C14[7]),  7,45},
  {&(_tg__ZTV8S19094C7__A__9S19094C14[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__9S19094C14[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__9S19094C14[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__9S19094C14[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__A__9S19094C14[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__A__9S19094C14[5]),  5,7},
  {&(_ZTV9S19094C14[15]),  15,45},
  {&(_ZTV9S19094C14[22]),  22,45},
  {&(_ZTV9S19094C14[32]),  32,45},
  {&(_ZTV9S19094C14[42]),  42,45},
  {&(_tg__ZTV8S19094C4__9S19094C14[3]),  3,5},
  {&(_tg__ZTV9S19094C15__9S19094C14[6]),  6,8},
  {&(_tg__ZTV8S19094C89S19094C15__A2__9S19094C14[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C15__A2__9S19094C14[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A2__9S19094C14[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C15__9S19094C14[5]),  5,7},
  {&(_tg__ZTV8S19094C7__9S19094C15__9S19094C14[8]),  8,11},
  {&(_tg__ZTV8S19094C6__A1__9S19094C15__9S19094C14[4]),  4,6},
  {&(_tg__ZTV8S19094C7__A1__9S19094C14[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__A1__9S19094C14[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__A1__9S19094C14[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A1__9S19094C14[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__A1__9S19094C14[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__A1__9S19094C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19094C14[];
extern  VTBL_ENTRY _ZTV9S19094C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C14[];
Class_Descriptor cd_S19094C14 = {  "S19094C14", // class name
  bases_S19094C14, 12,
  &(vtc_S19094C14[0]), // expected_vtbl_contents
  &(vtt_S19094C14[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI9S19094C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19094C14),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19094C14),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C13  : virtual S19094C14 {
  ::S19094C14 s19094c13f0;
  short s19094c13f1:5;
  long s19094c13f2;
  virtual  ~S19094C13(); // _ZN9S19094C13D2Ev
  S19094C13(); // tgen
};
//SIG(-1 S19094C13) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S19094C13()
{
  extern Class_Descriptor cd_S19094C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S19094C13, buf);
    S19094C13 *dp, &lv = *(dp=new (buf) S19094C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S19094C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C13)");
    /*is_ambiguous_... S19094C14::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C14*), ABISELECT(2080,1508), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C14*), ABISELECT(2080,1508), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(2080,1508), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(2080,1508), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(2080,1508), "S19094C13");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C15*), ABISELECT(2080,1508), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C14*), ABISELECT(1940,1416), "S19094C13");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(2416,1772), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(2416,1772), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(2416,1772), "S19094C13");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C15*), ABISELECT(2416,1772), "S19094C13");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(2240,1632), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C14*), ABISELECT(2240,1632), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(2240,1632), "S19094C13");
    check_base_class_offset(lv, (S19094C4*)(S19094C15*), ABISELECT(2240,1632), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(2240,1632), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(2240,1632), "S19094C13");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C15*), ABISELECT(2240,1632), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(1808,1316), "S19094C13");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C14*), ABISELECT(1808,1316), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(3460,2536), "S19094C13");
    /*is_ambiguous_... S19094C13::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(3328,2436), "S19094C13");
    check_base_class_offset(lv, (S19094C7*)(S19094C15*), ABISELECT(3328,2436), "S19094C13");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C15*), ABISELECT(2432,1776), "S19094C13");
    check_base_class_offset(lv, (S19094C15*)(S19094C14*), ABISELECT(2432,1776), "S19094C13");
    check_base_class_offset(lv, (S19094C14*), ABISELECT(1808,1316), "S19094C13");
    check_field_offset(lv, s19094c13f0, ABISELECT(16,4), "S19094C13.s19094c13f0");
    set_bf_and_test(lv, s19094c13f1, ABISELECT(1792,1308), 0, 5, 1, "S19094C13");
    set_bf_and_test(lv, s19094c13f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S19094C13");
    check_field_offset(lv, s19094c13f2, ABISELECT(1800,1312), "S19094C13.s19094c13f2");
    test_class_info(&lv, &cd_S19094C13);
    dp->~S19094C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C13(Test_S19094C13, "S19094C13", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN9S19094C13C1Ev();
extern void _ZN9S19094C13D2Ev();
Name_Map name_map_S19094C13[] = {
  NSPAIR(_ZN9S19094C13C1Ev),
  NSPAIR(_ZN9S19094C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C15;
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
extern Class_Descriptor cd_S19094C14;
extern VTBL_ENTRY _ZTI9S19094C14[];
extern  VTBL_ENTRY _ZTV9S19094C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C14[];
static Base_Class bases_S19094C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19094C6,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C6,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19094C15,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19094C14,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19094C13[];
extern void _ZN9S19094C13D1Ev();
extern void _ZN9S19094C13D0Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY vtc_S19094C13[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN9S19094C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C13D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern VTBL_ENTRY _ZTV9S19094C13[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C13[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C14__9S19094C13[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C14__9S19094C13[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C14__9S19094C13[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C14__9S19094C13[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C13[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C13[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C15__A2__9S19094C13[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C15__A2__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A2__9S19094C13[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15__9S19094C13[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C15__9S19094C13[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C13[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__A1__9S19094C13[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__A1__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A1__9S19094C13[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__A1__9S19094C13[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__A1__9S19094C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C13[] = {
  {&(_ZTV9S19094C13[8]),  8,59},
  {&(_ZTV9S19094C13[21]),  21,59},
  {&(_ZTV9S19094C13[29]),  29,59},
  {&(_ZTV9S19094C13[36]),  36,59},
  {&(_ZTV9S19094C13[46]),  46,59},
  {&(_ZTV9S19094C13[56]),  56,59},
  {&(_tg__ZTV9S19094C14__9S19094C13[7]),  7,11},
  {&(_tg__ZTV8S19094C79S19094C14__9S19094C13[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C14__9S19094C13[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__9S19094C13[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C14__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C14__9S19094C13[5]),  5,7},
  {&(_tg__ZTV8S19094C6__9S19094C14__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C14__9S19094C13[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C14__9S19094C13[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C14__9S19094C13[8]),  8,11},
  {&(_tg__ZTV8S19094C4__9S19094C13[3]),  3,5},
  {&(_tg__ZTV9S19094C15__9S19094C13[6]),  6,8},
  {&(_tg__ZTV8S19094C89S19094C15__A2__9S19094C13[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C15__A2__9S19094C13[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A2__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C15__9S19094C13[5]),  5,7},
  {&(_tg__ZTV8S19094C7__9S19094C15__9S19094C13[8]),  8,11},
  {&(_tg__ZTV8S19094C6__A1__9S19094C15__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C7__A1__9S19094C13[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__A1__9S19094C13[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__A1__9S19094C13[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A1__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__A1__9S19094C13[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__A1__9S19094C13[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19094C13[];
extern  VTBL_ENTRY _ZTV9S19094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C13[];
Class_Descriptor cd_S19094C13 = {  "S19094C13", // class name
  bases_S19094C13, 13,
  &(vtc_S19094C13[0]), // expected_vtbl_contents
  &(vtt_S19094C13[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI9S19094C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19094C13),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19094C13),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C10  : S19094C11 , virtual S19094C13 , S19094C7 {
  ::S19094C11 s19094c10f0[9];
  int s19094c10f1;
  short s19094c10f2:16;
  ::S19094C8 s19094c10f3;
  int s19094c10f4;
  short s19094c10f5;
  void *s19094c10f6;
  long s19094c10f7;
  ::S19094C4 s19094c10f8;
  ~S19094C10(); // tgen
  S19094C10(); // tgen
};
//SIG(-1 S19094C10) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ VBC4 BC6{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 v3 FL[8] Fp[7] Fs} v4 FL FC5 Fs Fc Fi[2] Fp FC7{} Fi FL} VBC8{ VBC9{ VBC6 BC10{ BC4 VBC6 VBC5 BC3 v5 v6 FU11{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC12{ VBC5 VBC10 BC3 v7 Fp Fs[2] FD[2] Fc FC5 FD FC3} v8 Fi Fc Fc:1} vd FC9 Fs:5 Fl} BC10 FC2[9] Fi Fs:16 FC3 Fi Fs Fp Fl FC5}


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

static void Test_S19094C10()
{
  extern Class_Descriptor cd_S19094C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(715,2149)];
    init_test(&cd_S19094C10, buf);
    S19094C10 *dp, &lv = *(dp=new (buf) S19094C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11424,8592), "sizeof(S19094C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C10)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C11*), ABISELECT(7840,5972), "S19094C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(7840,5972), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(7840,5972), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(7840,5972), "S19094C10");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C15*), ABISELECT(7840,5972), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(7840,5972), "S19094C10");
    check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(7856,5976), "S19094C10");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C11*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C14*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(7856,5976), "S19094C10");
    check_base_class_offset(lv, (S19094C4*)(S19094C15*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C15*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(7856,5976), "S19094C10");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C11*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C14*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C14*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C15*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(8032,6116), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(8032,6116), "S19094C10");
    check_base_class_offset(lv, (S19094C8*)(S19094C11*), 0, "S19094C10");
    check_base_class_offset(lv, (S19094C11*), 0, "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C14*), ABISELECT(10132,7656), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(10000,7556), "S19094C10");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C14*), ABISELECT(10000,7556), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(11300,8508), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(11168,8408), "S19094C10");
    check_base_class_offset(lv, (S19094C7*)(S19094C15*), ABISELECT(11168,8408), "S19094C10");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C15*), ABISELECT(10272,7748), "S19094C10");
    check_base_class_offset(lv, (S19094C15*)(S19094C14*), ABISELECT(10272,7748), "S19094C10");
    check_base_class_offset(lv, (S19094C14*)(S19094C13*), ABISELECT(10000,7556), "S19094C10");
    check_base_class_offset(lv, (S19094C13*), ABISELECT(8192,6240), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(508,384), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(376,284), "S19094C10");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*), ABISELECT(376,284), "S19094C10");
    check_field_offset(lv, s19094c10f0, ABISELECT(640,468), "S19094C10.s19094c10f0");
    check_field_offset(lv, s19094c10f1, ABISELECT(7120,5436), "S19094C10.s19094c10f1");
    set_bf_and_test(lv, s19094c10f2, ABISELECT(7124,5440), 0, 16, 1, "S19094C10");
    set_bf_and_test(lv, s19094c10f2, ABISELECT(7124,5440), 0, 16, hide_sll(1LL<<15), "S19094C10");
    check_field_offset(lv, s19094c10f3, ABISELECT(7136,5444), "S19094C10.s19094c10f3");
    check_field_offset(lv, s19094c10f4, ABISELECT(7616,5812), "S19094C10.s19094c10f4");
    check_field_offset(lv, s19094c10f5, ABISELECT(7620,5816), "S19094C10.s19094c10f5");
    check_field_offset(lv, s19094c10f6, ABISELECT(7624,5820), "S19094C10.s19094c10f6");
    check_field_offset(lv, s19094c10f7, ABISELECT(7632,5824), "S19094C10.s19094c10f7");
    check_field_offset(lv, s19094c10f8, ABISELECT(7648,5828), "S19094C10.s19094c10f8");
    test_class_info(&lv, &cd_S19094C10);
    dp->~S19094C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C10(Test_S19094C10, "S19094C10", ABISELECT(11424,8592));

#else // __cplusplus

extern void _ZN9S19094C10C1Ev();
extern void _ZN9S19094C10D1Ev();
Name_Map name_map_S19094C10[] = {
  NSPAIR(_ZN9S19094C10C1Ev),
  NSPAIR(_ZN9S19094C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C11;
extern VTBL_ENTRY _ZTI9S19094C11[];
extern  VTBL_ENTRY _ZTV9S19094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C15;
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
extern Class_Descriptor cd_S19094C14;
extern VTBL_ENTRY _ZTI9S19094C14[];
extern  VTBL_ENTRY _ZTV9S19094C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C14[];
extern Class_Descriptor cd_S19094C13;
extern VTBL_ENTRY _ZTI9S19094C13[];
extern  VTBL_ENTRY _ZTV9S19094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
static Base_Class bases_S19094C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(7840,5972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C6,    ABISELECT(7856,5976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C4,    ABISELECT(7856,5976), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19094C6,    ABISELECT(8032,6116), //bcp->offset
    28, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19094C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19094C11,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(10132,7656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(10000,7556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(10000,7556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(11300,8508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C8,    ABISELECT(11168,8408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(11168,8408), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(10272,7748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19094C15,    ABISELECT(10272,7748), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19094C14,    ABISELECT(10000,7556), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19094C13,    ABISELECT(8192,6240), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(508,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
    18, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(376,284), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19094C10[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void _ZN9S19094C10D1Ev();
extern void _ZN9S19094C10D0Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev)();
extern void ABISELECT(_ZThn8192_N9S19094C10D1Ev,_ZThn6240_N9S19094C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev)();
extern void ABISELECT(_ZThn8192_N9S19094C10D0Ev,_ZThn6240_N9S19094C10D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY vtc_S19094C10[] = {
  ABISELECT(11168,8408),
  ABISELECT(10272,7748),
  ABISELECT(10000,7556),
  ABISELECT(8192,6240),
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D0Ev,
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  ABISELECT(-8192,-6240),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6240),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7556),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7748),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8408),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern VTBL_ENTRY _ZTV9S19094C10[];
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C11__9S19094C10[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C11__9S19094C10[] = {
  ABISELECT(8032,6116),
  ABISELECT(7856,5976),
  ABISELECT(7840,5972),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C11__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C11__9S19094C10[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C11__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5976),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C11__9S19094C10[] = {
  0,
  0,
  ABISELECT(-8032,-6116),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A__9S19094C10[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__A4__9S19094C10[] = {
  ABISELECT(7656,5832),
  ABISELECT(7480,5692),
  ABISELECT(7464,5688),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__A4__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A4__9S19094C10[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__A__9S19094C10[] = {
  0,
  0,
  ABISELECT(-7656,-5832),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__A__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5692),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C10[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN9S19094C13D1Ev();
extern void _ZN9S19094C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C13__9S19094C10[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN9S19094C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C13D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C13__9S19094C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C13__9S19094C10[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C13__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C13__9S19094C10[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C13__9S19094C10[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C10[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C14__9S19094C10[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C14__A1__9S19094C10[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A1__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A1__9S19094C10[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C14__9S19094C10[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C14__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C14__9S19094C10[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C14__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C14__9S19094C10[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C14__9S19094C10[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C10[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C15__A3__9S19094C10[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C15__A3__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__9S19094C10[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15__9S19094C10[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C15__9S19094C10[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C10[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__A2__9S19094C10[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__A2__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A2__9S19094C10[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__A1__9S19094C10[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__A1__9S19094C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C10[] = {
  {&(_ZTV9S19094C10[9]),  9,81},
  {&(_tg__ZTV9S19094C11__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C89S19094C11__9S19094C10[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C11__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C11__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C11__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C11__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C7__A__9S19094C10[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__A4__9S19094C10[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__A4__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A4__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__A__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__A__9S19094C10[5]),  5,7},
  {&(_ZTV9S19094C10[26]),  26,81},
  {&(_ZTV9S19094C10[32]),  32,81},
  {&(_ZTV9S19094C10[43]),  43,81},
  {&(_ZTV9S19094C10[56]),  56,81},
  {&(_ZTV9S19094C10[68]),  68,81},
  {&(_ZTV9S19094C10[78]),  78,81},
  {&(_ZTV9S19094C10[18]),  18,81},
  {&(_tg__ZTV8S19094C4__9S19094C10[3]),  3,5},
  {&(_tg__ZTV9S19094C13__9S19094C10[8]),  8,10},
  {&(_tg__ZTV9S19094C14__9S19094C13__9S19094C10[11]),  11,15},
  {&(_tg__ZTV8S19094C6__9S19094C13__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C13__9S19094C10[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C13__9S19094C10[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C13__9S19094C10[8]),  8,11},
  {&(_tg__ZTV9S19094C14__9S19094C10[7]),  7,11},
  {&(_tg__ZTV8S19094C79S19094C14__9S19094C10[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C14__A1__9S19094C10[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A1__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A1__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C14__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C14__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__9S19094C14__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C14__9S19094C10[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C14__9S19094C10[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C14__9S19094C10[8]),  8,11},
  {&(_tg__ZTV9S19094C15__9S19094C10[6]),  6,8},
  {&(_tg__ZTV8S19094C89S19094C15__A3__9S19094C10[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C15__A3__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C15__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C7__9S19094C15__9S19094C10[8]),  8,11},
  {&(_tg__ZTV8S19094C6__A1__9S19094C15__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C7__A1__9S19094C10[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__A2__9S19094C10[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__A2__9S19094C10[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__A2__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__A1__9S19094C10[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__A1__9S19094C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19094C10[];
extern  VTBL_ENTRY _ZTV9S19094C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C10[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S19094C10D0Ev,_ZThn6240_N9S19094C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S19094C10D1Ev,_ZThn6240_N9S19094C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19094C10 = {  "S19094C10", // class name
  bases_S19094C10, 19,
  &(vtc_S19094C10[0]), // expected_vtbl_contents
  &(vtt_S19094C10[0]), // expected_vtt_contents
  ABISELECT(11424,8592), // object size
  NSPAIRA(_ZTI9S19094C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19094C10),81, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19094C10),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C3  : S19094C4 , virtual S19094C6 , virtual S19094C7 , S1538C9_nt , virtual S19094C10 {
  int s19094c3f0;
  void *s19094c3f1;
  char s19094c3f2;
  unsigned int s19094c3f3:1;
  void *s19094c3f4;
  ::S19094C10 s19094c3f5;
  ::S1538C9_nt s19094c3f6[6];
  void *s19094c3f7;
  ::S19094C13 s19094c3f8;
  __tsi64 s19094c3f9:5;
  long s19094c3f10;
  virtual  ~S19094C3(); // _ZN8S19094C3D2Ev
  virtual void  v10(); // _ZN8S19094C33v10Ev
  S19094C3(); // tgen
};
//SIG(-1 S19094C3) C1{ BC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC3 VBC8{ BC9{ BC6 v7 FL FC2 Fs Fc Fi Fi Fp FC10{} Fi FL} VBC11{ VBC12{ VBC4 BC5 VBC13{ VBC2 VBC5 BC6 v8 Fp Fs[2] FD[2] Fc FC2 FD FC6} v9 Fi Fc Fc:1} vd FC12 Fs:5 Fl} BC5 FC9[9] Fi Fs:16 FC6 Fi Fs Fp Fl FC2} vd v1 Fi Fp Fc Fi:1 Fp FC8 FC3[6] Fp FC11 FL:5 Fl}


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

static void Test_S19094C3()
{
  extern Class_Descriptor cd_S19094C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1669,5001)];
    init_test(&cd_S19094C3, buf);
    S19094C3 *dp, &lv = *(dp=new (buf) S19094C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26688,20000), "sizeof(S19094C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C3)");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(15264,11408), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(15264,11408), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(15264,11408), "S19094C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15264,11408), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(15264,11408), "S19094C3");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C15*), ABISELECT(15264,11408), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(15264,11408), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*), 0, "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C4*), 0, "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C14*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C14*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C15*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C10*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(15280,11412), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(15572,11636), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(15696,11720), "S19094C3");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C14*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(15696,11720), "S19094C3");
    check_base_class_offset(lv, (S19094C4*)(S19094C15*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C15*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C10*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(15696,11720), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(15440,11536), "S19094C3");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*), ABISELECT(15440,11536), "S19094C3");
    check_base_class_offset(lv, (S19094C7*)(S19094C15*), ABISELECT(15440,11536), "S19094C3");
    /*is_ambiguous_... S19094C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S19094C3");
    check_base_class_offset(lv, (S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15872,11860), "S19094C3");
    check_base_class_offset(lv, (S19094C11*)(S19094C10*), ABISELECT(15872,11860), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C14*), ABISELECT(25652,19248), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(25520,19148), "S19094C3");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C14*), ABISELECT(25520,19148), "S19094C3");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C15*), ABISELECT(25792,19340), "S19094C3");
    check_base_class_offset(lv, (S19094C15*)(S19094C14*), ABISELECT(25792,19340), "S19094C3");
    check_base_class_offset(lv, (S19094C14*)(S19094C13*), ABISELECT(25520,19148), "S19094C3");
    check_base_class_offset(lv, (S19094C13*)(S19094C10*), ABISELECT(23712,17832), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C10*), ABISELECT(16380,12244), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(16248,12144), "S19094C3");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C10*), ABISELECT(16248,12144), "S19094C3");
    check_base_class_offset(lv, (S19094C10*), ABISELECT(15872,11860), "S19094C3");
    check_field_offset(lv, s19094c3f0, ABISELECT(180,144), "S19094C3.s19094c3f0");
    check_field_offset(lv, s19094c3f1, ABISELECT(184,148), "S19094C3.s19094c3f1");
    check_field_offset(lv, s19094c3f2, ABISELECT(192,152), "S19094C3.s19094c3f2");
    set_bf_and_test(lv, s19094c3f3, ABISELECT(193,153), 0, 1, 1, "S19094C3");
    check_field_offset(lv, s19094c3f4, ABISELECT(200,156), "S19094C3.s19094c3f4");
    check_field_offset(lv, s19094c3f5, ABISELECT(208,160), "S19094C3.s19094c3f5");
    check_field_offset(lv, s19094c3f6, ABISELECT(11632,8752), "S19094C3.s19094c3f6");
    check_field_offset(lv, s19094c3f7, ABISELECT(11656,8776), "S19094C3.s19094c3f7");
    check_field_offset(lv, s19094c3f8, ABISELECT(11664,8780), "S19094C3.s19094c3f8");
    set_bf_and_test(lv, s19094c3f9, ABISELECT(15248,11400), 0, 5, 1, "S19094C3");
    set_bf_and_test(lv, s19094c3f9, ABISELECT(15248,11400), 0, 5, hide_sll(1LL<<4), "S19094C3");
    check_field_offset(lv, s19094c3f10, ABISELECT(15256,11404), "S19094C3.s19094c3f10");
    test_class_info(&lv, &cd_S19094C3);
    dp->~S19094C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C3(Test_S19094C3, "S19094C3", ABISELECT(26688,20000));

#else // __cplusplus

extern void _ZN8S19094C3C1Ev();
extern void _ZN8S19094C3D2Ev();
Name_Map name_map_S19094C3[] = {
  NSPAIR(_ZN8S19094C3C1Ev),
  NSPAIR(_ZN8S19094C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C11;
extern VTBL_ENTRY _ZTI9S19094C11[];
extern  VTBL_ENTRY _ZTV9S19094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C15;
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
extern Class_Descriptor cd_S19094C14;
extern VTBL_ENTRY _ZTI9S19094C14[];
extern  VTBL_ENTRY _ZTV9S19094C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C14[];
extern Class_Descriptor cd_S19094C13;
extern VTBL_ENTRY _ZTI9S19094C13[];
extern  VTBL_ENTRY _ZTV9S19094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C10;
extern VTBL_ENTRY _ZTI9S19094C10[];
extern  VTBL_ENTRY _ZTV9S19094C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C10[];
static Base_Class bases_S19094C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15264,11408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19094C4,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19094C6,    ABISELECT(15280,11412), //bcp->offset
    15, //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
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(15572,11636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C6,    ABISELECT(15696,11720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C4,    ABISELECT(15696,11720), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(15440,11536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(15440,11536), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19094C8,    ABISELECT(15872,11860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19094C11,    ABISELECT(15872,11860), //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25652,19248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(25520,19148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(25520,19148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(25792,19340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19094C15,    ABISELECT(25792,19340), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19094C14,    ABISELECT(25520,19148), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19094C13,    ABISELECT(23712,17832), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16380,12244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(16248,12144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(16248,12144), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19094C10,    ABISELECT(15872,11860), //bcp->offset
    39, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19094C3[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C3D1Ev();
extern void _ZN8S19094C3D0Ev();
extern void _ZN8S19094C33v10Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev)();
extern void ABISELECT(_ZThn15872_N8S19094C3D1Ev,_ZThn11860_N8S19094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev)();
extern void ABISELECT(_ZThn15872_N8S19094C3D0Ev,_ZThn11860_N8S19094C3D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev)();
extern void ABISELECT(_ZThn23712_N8S19094C3D1Ev,_ZThn17832_N8S19094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev)();
extern void ABISELECT(_ZThn23712_N8S19094C3D0Ev,_ZThn17832_N8S19094C3D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY vtc_S19094C3[] = {
  ABISELECT(25792,19340),
  ABISELECT(25520,19148),
  ABISELECT(23712,17832),
  ABISELECT(15872,11860),
  ABISELECT(15696,11720),
  ABISELECT(15440,11536),
  ABISELECT(15280,11412),
  ABISELECT(15264,11408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
  0,
  0,
  ABISELECT(-15280,-11412),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15440,-11536),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15696,-11720),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15872,-11860),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15872,-11860),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16248,-12144),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  ABISELECT(-23712,-17832),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23712,-17832),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25520,-19148),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25792,-19340),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern VTBL_ENTRY _ZTV8S19094C3[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A__8S19094C3[] = {
  ABISELECT(15264,11408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C3[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__8S19094C3[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__8S19094C3[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__8S19094C3[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C3[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void _ZN9S19094C10D1Ev();
extern void _ZN9S19094C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C3[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C119S19094C10__8S19094C3[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C119S19094C10__A1__8S19094C3[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C119S19094C10__A1__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C119S19094C10__A1__8S19094C3[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C119S19094C10__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C119S19094C10__8S19094C3[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C3[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C10__A4__8S19094C3[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C10__A4__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C10__A4__8S19094C3[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C10__A2__8S19094C3[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C10__A2__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C10__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C10__8S19094C3[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev)();
extern void ABISELECT(_ZThn7840_N9S19094C10D1Ev,_ZThn5972_N9S19094C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev)();
extern void ABISELECT(_ZThn7840_N9S19094C10D0Ev,_ZThn5972_N9S19094C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C13__9S19094C10__8S19094C3[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C10__8S19094C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C10__8S19094C3[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-9920,-7480),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C10__8S19094C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A__9S19094C10__8S19094C3[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN9S19094C13D1Ev();
extern void _ZN9S19094C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C3[] = {
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN9S19094C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C13D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C13__8S19094C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C13__8S19094C3[] = {
  0,
  0,
  ABISELECT(8432,6420),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C13__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6112),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C13__8S19094C3[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C13__8S19094C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6296),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C3[] = {
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C14__A1__8S19094C3[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C14__A2__8S19094C3[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A2__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A2__8S19094C3[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C14__A1__8S19094C3[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C14__A1__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C14__8S19094C3[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C14__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C14__8S19094C3[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C14__8S19094C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7612),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C3[] = {
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C15__A3__8S19094C3[] = {
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C15__A3__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__8S19094C3[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15__8S19094C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15__8S19094C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7804),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C15__8S19094C3[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C3[] = {
  {&(_ZTV8S19094C3[10]),  10,101},
  {&(_tg__ZTV8S19094C4__A__8S19094C3[3]),  3,5},
  {&(_ZTV8S19094C3[19]),  19,101},
  {&(_ZTV8S19094C3[29]),  29,101},
  {&(_ZTV8S19094C3[37]),  37,101},
  {&(_ZTV8S19094C3[53]),  53,101},
  {&(_ZTV8S19094C3[74]),  74,101},
  {&(_ZTV8S19094C3[87]),  87,101},
  {&(_ZTV8S19094C3[99]),  99,101},
  {&(_ZTV8S19094C3[62]),  62,101},
  {&(_tg__ZTV8S19094C7__8S19094C3[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__8S19094C3[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C4__A1__8S19094C3[3]),  3,5},
  {&(_tg__ZTV9S19094C10__8S19094C3[9]),  9,13},
  {&(_tg__ZTV9S19094C119S19094C10__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C89S19094C119S19094C10__A1__8S19094C3[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C119S19094C10__A1__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C119S19094C10__A1__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C119S19094C10__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C119S19094C10__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C3[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C10__A4__8S19094C3[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C10__A4__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C10__A4__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C10__A2__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C10__A2__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C4__9S19094C10__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C10__8S19094C3[4]),  4,6},
  {&(_tg__ZTV9S19094C13__9S19094C10__8S19094C3[9]),  9,11},
  {&(_tg__ZTV9S19094C14__9S19094C10__8S19094C3[11]),  11,15},
  {&(_tg__ZTV9S19094C15__9S19094C10__8S19094C3[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C10__8S19094C3[8]),  8,11},
  {&(_tg__ZTV8S19094C7__A__9S19094C10__8S19094C3[5]),  5,8},
  {&(_tg__ZTV9S19094C13__8S19094C3[8]),  8,10},
  {&(_tg__ZTV9S19094C14__9S19094C13__8S19094C3[11]),  11,15},
  {&(_tg__ZTV8S19094C6__9S19094C13__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C13__8S19094C3[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C13__8S19094C3[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C13__8S19094C3[8]),  8,11},
  {&(_tg__ZTV9S19094C14__8S19094C3[7]),  7,11},
  {&(_tg__ZTV8S19094C79S19094C14__A1__8S19094C3[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C14__A2__8S19094C3[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A2__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A2__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C14__A1__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C14__A1__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__9S19094C14__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C14__8S19094C3[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C14__8S19094C3[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C14__8S19094C3[8]),  8,11},
  {&(_tg__ZTV9S19094C15__8S19094C3[6]),  6,8},
  {&(_tg__ZTV8S19094C89S19094C15__A3__8S19094C3[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C15__A3__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__8S19094C3[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C15__8S19094C3[5]),  5,7},
  {&(_tg__ZTV8S19094C7__9S19094C15__8S19094C3[8]),  8,11},
  {&(_tg__ZTV8S19094C6__A1__9S19094C15__8S19094C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19094C3[];
extern  VTBL_ENTRY _ZTV8S19094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C3[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19094C10D0Ev,_ZThn5972_N9S19094C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19094C10D1Ev,_ZThn5972_N9S19094C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S19094C3D0Ev,_ZThn17832_N8S19094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S19094C3D1Ev,_ZThn17832_N8S19094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S19094C3D0Ev,_ZThn11860_N8S19094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S19094C3D1Ev,_ZThn11860_N8S19094C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19094C3 = {  "S19094C3", // class name
  bases_S19094C3, 23,
  &(vtc_S19094C3[0]), // expected_vtbl_contents
  &(vtt_S19094C3[0]), // expected_vtt_contents
  ABISELECT(26688,20000), // object size
  NSPAIRA(_ZTI8S19094C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19094C3),101, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19094C3),61, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C2  : S19094C3 {
  void *s19094c2f0;
  __tsi64 s19094c2f1;
  void *s19094c2f2;
  void *s19094c2f3;
  ::S7223C9_nt s19094c2f4;
  long s19094c2f5;
  long double s19094c2f6;
  virtual void  v11(); // _ZN8S19094C23v11Ev
  ~S19094C2(); // tgen
  S19094C2(); // tgen
};
//SIG(-1 S19094C2) C1{ BC2{ BC3{ VBC4{ m Fi} BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 VBC6{ BC4 VBC5 VBC3 BC7{ VBC4 VBC3 VBC5 v4 FL[8] Fp[7] Fs} v5 v6 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC4 VBC9{ BC10{ BC7 v7 FL FC3 Fs Fc Fi Fi Fp FC11{} Fi FL} VBC12{ VBC13{ VBC5 BC6 VBC14{ VBC3 VBC6 BC7 v8 Fp Fs[2] FD[2] Fc FC3 FD FC7} v9 Fi Fc Fc:1} vd FC13 Fs:5 Fl} BC6 FC10[9] Fi Fs:16 FC7 Fi Fs Fp Fl FC3} vd v10 Fi Fp Fc Fi:1 Fp FC9 FC4[6] Fp FC12 FL:5 Fl} v1 Fp FL Fp Fp FC11 Fl FD}


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

static void Test_S19094C2()
{
  extern Class_Descriptor cd_S19094C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1673,5011)];
    init_test(&cd_S19094C2, buf);
    S19094C2 *dp, &lv = *(dp=new (buf) S19094C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26752,20040), "sizeof(S19094C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C2)");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*)(S19094C3*), ABISELECT(15328,11448), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(15328,11448), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(15328,11448), "S19094C2");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15328,11448), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(15328,11448), "S19094C2");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C15*), ABISELECT(15328,11448), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(15328,11448), "S19094C2");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*)(S19094C3*), 0, "S19094C2");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C3*), 0, "S19094C2");
    /*is_ambiguous_... S19094C3::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C3*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C14*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C14*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C15*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C10*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(15344,11452), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(15636,11676), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(15760,11760), "S19094C2");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C14*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(15760,11760), "S19094C2");
    check_base_class_offset(lv, (S19094C4*)(S19094C15*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C15*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C10*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(15760,11760), "S19094C2");
    /*is_ambiguous_... S19094C2::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(15504,11576), "S19094C2");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C3*), ABISELECT(15504,11576), "S19094C2");
    check_base_class_offset(lv, (S19094C7*)(S19094C15*), ABISELECT(15504,11576), "S19094C2");
    /*is_ambiguous_... S19094C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C3*), ABISELECT(176,140), "S19094C2");
    check_base_class_offset(lv, (S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(15936,11900), "S19094C2");
    check_base_class_offset(lv, (S19094C11*)(S19094C10*), ABISELECT(15936,11900), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C14*), ABISELECT(25716,19288), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(25584,19188), "S19094C2");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C14*), ABISELECT(25584,19188), "S19094C2");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C15*), ABISELECT(25856,19380), "S19094C2");
    check_base_class_offset(lv, (S19094C15*)(S19094C14*), ABISELECT(25856,19380), "S19094C2");
    check_base_class_offset(lv, (S19094C14*)(S19094C13*), ABISELECT(25584,19188), "S19094C2");
    check_base_class_offset(lv, (S19094C13*)(S19094C10*), ABISELECT(23776,17872), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C10*), ABISELECT(16444,12284), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(16312,12184), "S19094C2");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C10*), ABISELECT(16312,12184), "S19094C2");
    check_base_class_offset(lv, (S19094C10*)(S19094C3*), ABISELECT(15936,11900), "S19094C2");
    check_base_class_offset(lv, (S19094C3*), 0, "S19094C2");
    check_field_offset(lv, s19094c2f0, ABISELECT(15264,11408), "S19094C2.s19094c2f0");
    check_field_offset(lv, s19094c2f1, ABISELECT(15272,11412), "S19094C2.s19094c2f1");
    check_field_offset(lv, s19094c2f2, ABISELECT(15280,11420), "S19094C2.s19094c2f2");
    check_field_offset(lv, s19094c2f3, ABISELECT(15288,11424), "S19094C2.s19094c2f3");
    check_field_offset(lv, s19094c2f4, ABISELECT(15296,11428), "S19094C2.s19094c2f4");
    check_field_offset(lv, s19094c2f5, ABISELECT(15304,11432), "S19094C2.s19094c2f5");
    check_field_offset(lv, s19094c2f6, ABISELECT(15312,11436), "S19094C2.s19094c2f6");
    test_class_info(&lv, &cd_S19094C2);
    dp->~S19094C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C2(Test_S19094C2, "S19094C2", ABISELECT(26752,20040));

#else // __cplusplus

extern void _ZN8S19094C2C1Ev();
extern void _ZN8S19094C2D1Ev();
Name_Map name_map_S19094C2[] = {
  NSPAIR(_ZN8S19094C2C1Ev),
  NSPAIR(_ZN8S19094C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C11;
extern VTBL_ENTRY _ZTI9S19094C11[];
extern  VTBL_ENTRY _ZTV9S19094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C15;
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
extern Class_Descriptor cd_S19094C14;
extern VTBL_ENTRY _ZTI9S19094C14[];
extern  VTBL_ENTRY _ZTV9S19094C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C14[];
extern Class_Descriptor cd_S19094C13;
extern VTBL_ENTRY _ZTI9S19094C13[];
extern  VTBL_ENTRY _ZTV9S19094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C10;
extern VTBL_ENTRY _ZTI9S19094C10[];
extern  VTBL_ENTRY _ZTV9S19094C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C10[];
extern Class_Descriptor cd_S19094C3;
extern VTBL_ENTRY _ZTI8S19094C3[];
extern  VTBL_ENTRY _ZTV8S19094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C3[];
static Base_Class bases_S19094C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15328,11448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19094C4,    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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19094C6,    ABISELECT(15344,11452), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(15636,11676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C6,    ABISELECT(15760,11760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C4,    ABISELECT(15760,11760), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(15504,11576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(15504,11576), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    23, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(15936,11900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19094C11,    ABISELECT(15936,11900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25716,19288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(25584,19188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(25584,19188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(25856,19380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19094C15,    ABISELECT(25856,19380), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19094C14,    ABISELECT(25584,19188), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19094C13,    ABISELECT(23776,17872), //bcp->offset
    66, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16444,12284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(16312,12184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(16312,12184), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19094C10,    ABISELECT(15936,11900), //bcp->offset
    40, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19094C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19094C2[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C2D1Ev();
extern void _ZN8S19094C2D0Ev();
extern void _ZN8S19094C33v10Ev();
extern void _ZN8S19094C23v11Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C2D1Ev,_ZTv0_n48_N8S19094C2D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C2D1Ev,_ZThn11900_N8S19094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19094C2D0Ev,_ZTv0_n48_N8S19094C2D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C2D0Ev,_ZThn11900_N8S19094C2D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S19094C2D1Ev,_ZTv0_n36_N8S19094C2D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C2D1Ev,_ZThn17872_N8S19094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19094C2D0Ev,_ZTv0_n36_N8S19094C2D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C2D0Ev,_ZThn17872_N8S19094C2D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY vtc_S19094C2[] = {
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19094C23v11Ev,
  0,
  0,
  ABISELECT(-15344,-11452),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11576),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11760),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11900),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11900),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C2D1Ev,_ZTv0_n48_N8S19094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C2D0Ev,_ZTv0_n48_N8S19094C2D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12184),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  ABISELECT(-23776,-17872),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17872),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C2D1Ev,_ZTv0_n36_N8S19094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C2D0Ev,_ZTv0_n36_N8S19094C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25584,-19188),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25856,-19380),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern VTBL_ENTRY _ZTV8S19094C2[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C3D1Ev();
extern void _ZN8S19094C3D0Ev();
extern void _ZN8S19094C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C3__8S19094C2[] = {
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C48S19094C3__8S19094C2[] = {
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C3__8S19094C2[] = {
  0,
  0,
  ABISELECT(-15344,-11452),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C3__8S19094C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11576),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C3__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11760),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C3D1Ev,_ZThn11900_N8S19094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C3D0Ev,_ZThn11900_N8S19094C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C3__8S19094C2[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11900),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11900),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C3D1Ev,_ZThn17872_N8S19094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C3D0Ev,_ZThn17872_N8S19094C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C3__8S19094C2[] = {
  ABISELECT(-23776,-17872),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17872),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C3__8S19094C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25584,-19188),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C3__8S19094C2[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25856,-19380),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C3__8S19094C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12184),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C2[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__8S19094C2[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__8S19094C2[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__8S19094C2[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C2[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void _ZN9S19094C10D1Ev();
extern void _ZN9S19094C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C2[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C119S19094C10__8S19094C2[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C119S19094C10__A1__8S19094C2[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C119S19094C10__A1__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C119S19094C10__A1__8S19094C2[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C119S19094C10__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C119S19094C10__8S19094C2[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C10__A4__8S19094C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C10__A4__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C10__A4__8S19094C2[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C10__A2__8S19094C2[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C10__A2__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C10__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C10__8S19094C2[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev)();
extern void ABISELECT(_ZThn7840_N9S19094C10D1Ev,_ZThn5972_N9S19094C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev)();
extern void ABISELECT(_ZThn7840_N9S19094C10D0Ev,_ZThn5972_N9S19094C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C13__9S19094C10__8S19094C2[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C10__8S19094C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C10__8S19094C2[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-9920,-7480),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C10__8S19094C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A__9S19094C10__8S19094C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN9S19094C13D1Ev();
extern void _ZN9S19094C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C2[] = {
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN9S19094C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C13D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C13__8S19094C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C13__8S19094C2[] = {
  0,
  0,
  ABISELECT(8432,6420),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C13__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6112),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C13__8S19094C2[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C13__8S19094C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6296),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C2[] = {
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C14__A1__8S19094C2[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C14__A2__8S19094C2[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A2__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A2__8S19094C2[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C14__A1__8S19094C2[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C14__A1__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C14__8S19094C2[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C14__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C14__8S19094C2[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C14__8S19094C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7612),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C2[] = {
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C15__A3__8S19094C2[] = {
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C15__A3__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__8S19094C2[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15__8S19094C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15__8S19094C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7804),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C15__8S19094C2[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
static  VTT_ENTRY vtt_S19094C2[] = {
  {&(_ZTV8S19094C2[10]),  10,102},
  {&(_tg__ZTV8S19094C3__8S19094C2[10]),  10,15},
  {&(_tg__ZTV8S19094C48S19094C3__8S19094C2[3]),  3,5},
  {&(_tg__ZTV8S19094C6__A1__8S19094C3__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C7__8S19094C3__8S19094C2[8]),  8,11},
  {&(_tg__ZTV8S19094C4__A1__8S19094C3__8S19094C2[5]),  5,7},
  {&(_tg__ZTV9S19094C10__8S19094C3__8S19094C2[14]),  14,18},
  {&(_tg__ZTV9S19094C13__8S19094C3__8S19094C2[9]),  9,11},
  {&(_tg__ZTV9S19094C14__8S19094C3__8S19094C2[11]),  11,15},
  {&(_tg__ZTV9S19094C15__8S19094C3__8S19094C2[8]),  8,10},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C3__8S19094C2[5]),  5,8},
  {&(_ZTV8S19094C2[20]),  20,102},
  {&(_ZTV8S19094C2[30]),  30,102},
  {&(_ZTV8S19094C2[38]),  38,102},
  {&(_ZTV8S19094C2[54]),  54,102},
  {&(_ZTV8S19094C2[75]),  75,102},
  {&(_ZTV8S19094C2[88]),  88,102},
  {&(_ZTV8S19094C2[100]),  100,102},
  {&(_ZTV8S19094C2[63]),  63,102},
  {&(_tg__ZTV8S19094C7__8S19094C2[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__8S19094C2[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C4__A1__8S19094C2[3]),  3,5},
  {&(_tg__ZTV9S19094C10__8S19094C2[9]),  9,13},
  {&(_tg__ZTV9S19094C119S19094C10__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C89S19094C119S19094C10__A1__8S19094C2[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C119S19094C10__A1__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C119S19094C10__A1__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C119S19094C10__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C119S19094C10__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C2[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C10__A4__8S19094C2[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C10__A4__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C10__A4__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C10__A2__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C10__A2__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C4__9S19094C10__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C10__8S19094C2[4]),  4,6},
  {&(_tg__ZTV9S19094C13__9S19094C10__8S19094C2[9]),  9,11},
  {&(_tg__ZTV9S19094C14__9S19094C10__8S19094C2[11]),  11,15},
  {&(_tg__ZTV9S19094C15__9S19094C10__8S19094C2[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C10__8S19094C2[8]),  8,11},
  {&(_tg__ZTV8S19094C7__A__9S19094C10__8S19094C2[5]),  5,8},
  {&(_tg__ZTV9S19094C13__8S19094C2[8]),  8,10},
  {&(_tg__ZTV9S19094C14__9S19094C13__8S19094C2[11]),  11,15},
  {&(_tg__ZTV8S19094C6__9S19094C13__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C13__8S19094C2[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C13__8S19094C2[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C13__8S19094C2[8]),  8,11},
  {&(_tg__ZTV9S19094C14__8S19094C2[7]),  7,11},
  {&(_tg__ZTV8S19094C79S19094C14__A1__8S19094C2[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C14__A2__8S19094C2[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A2__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A2__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C14__A1__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C14__A1__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__9S19094C14__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C14__8S19094C2[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C14__8S19094C2[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C14__8S19094C2[8]),  8,11},
  {&(_tg__ZTV9S19094C15__8S19094C2[6]),  6,8},
  {&(_tg__ZTV8S19094C89S19094C15__A3__8S19094C2[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C15__A3__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__8S19094C2[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C15__8S19094C2[5]),  5,7},
  {&(_tg__ZTV8S19094C7__9S19094C15__8S19094C2[8]),  8,11},
  {&(_tg__ZTV8S19094C6__A1__9S19094C15__8S19094C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19094C2[];
extern  VTBL_ENTRY _ZTV8S19094C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C2[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19094C10D0Ev,_ZThn5972_N9S19094C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19094C10D1Ev,_ZThn5972_N9S19094C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C3D0Ev,_ZThn17872_N8S19094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C3D1Ev,_ZThn17872_N8S19094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C3D0Ev,_ZThn11900_N8S19094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C3D1Ev,_ZThn11900_N8S19094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C2D0Ev,_ZTv0_n36_N8S19094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C2D0Ev,_ZThn17872_N8S19094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C2D1Ev,_ZTv0_n36_N8S19094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C2D1Ev,_ZThn17872_N8S19094C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C2D0Ev,_ZTv0_n48_N8S19094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C2D0Ev,_ZThn11900_N8S19094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C2D1Ev,_ZTv0_n48_N8S19094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C2D1Ev,_ZThn11900_N8S19094C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19094C2 = {  "S19094C2", // class name
  bases_S19094C2, 24,
  &(vtc_S19094C2[0]), // expected_vtbl_contents
  &(vtt_S19094C2[0]), // expected_vtt_contents
  ABISELECT(26752,20040), // object size
  NSPAIRA(_ZTI8S19094C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19094C2),102, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19094C2),70, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19094C1  : virtual S19094C2 , virtual S19094C3 , S19094C6 {
  ::S20640C6 s19094c1f0;
  int s19094c1f1;
  __tsi64 s19094c1f2;
  short s19094c1f3;
  ::S19094C13 s19094c1f4;
  void *s19094c1f5;
  void *s19094c1f6;
  int s19094c1f7[9];
  virtual void  v1(); // _ZN8S19094C12v1Ev
  ~S19094C1(); // tgen
  S19094C1(); // tgen
};
//SIG(1 S19094C1) C1{ VBC2{ BC3{ BC4{ VBC5{ m Fi} BC6{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 VBC7{ BC5 VBC6 VBC4 BC8{ VBC5 VBC4 VBC6 v4 FL[8] Fp[7] Fs} v5 v6 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC5 VBC10{ BC11{ BC8 v7 FL FC4 Fs Fc Fi Fi Fp FC12{} Fi FL} VBC13{ VBC14{ VBC6 BC7 VBC15{ VBC4 VBC7 BC8 v8 Fp Fs[2] FD[2] Fc FC4 FD FC8} v9 Fi Fc Fc:1} vd FC14 Fs:5 Fl} BC7 FC11[9] Fi Fs:16 FC8 Fi Fs Fp Fl FC4} vd v10 Fi Fp Fc Fi:1 Fp FC10 FC5[6] Fp FC13 FL:5 Fl} v11 Fp FL Fp Fp FC12 Fl FD} VBC3 BC6 v1 FC16{ VBC17{ v14 v15 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC18{ VBC17 BC19{ BC5 VBC17 VBC20{ VBC5 BC17 Fi Fs[2] FL} BC21{ VBC5 VBC20 VBC17 v16 FL[8] Fp[7] Fs} v17 v18 FU9 FL:10 Fi[9] Fi} VBC22{ VBC20 VBC19 BC21 v19 Fp Fs[2] FD[2] Fc FC20 FD FC21} v20 Fi Fc Fc:1} BC21 BC20 BC19 v12 v13 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} Fi FL Fs FC13 Fp Fp Fi[9]}


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

static void Test_S19094C1()
{
  extern Class_Descriptor cd_S19094C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3020,9019)];
    init_test(&cd_S19094C1, buf);
    S19094C1 *dp, &lv = *(dp=new (buf) S19094C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48304,36072), "sizeof(S19094C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19094C1)");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*)(S19094C3*)(S19094C2*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*), ABISELECT(21616,16072), "S19094C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C15*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C4*)(S19094C3*), ABISELECT(21616,16072), "S19094C1");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*)(S19094C3*)(S19094C2*), ABISELECT(6288,4624), "S19094C1");
    /*is_ambiguous_... S19094C3::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C3*)(S19094C2*), ABISELECT(6288,4624), "S19094C1");
    /*is_ambiguous_... S19094C3::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C3*)(S19094C2*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C8::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C14*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C14*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C15*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C7*)(S19094C10*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C3*), ABISELECT(21632,16076), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*), ABISELECT(21924,16300), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C4 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*), ABISELECT(22048,16384), "S19094C1");
    check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C14*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(22048,16384), "S19094C1");
    check_base_class_offset(lv, (S19094C4*)(S19094C15*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C15*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C7*)(S19094C10*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(22048,16384), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*), ABISELECT(21792,16200), "S19094C1");
    /*is_ambiguous_... S19094C3::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C3*)(S19094C2*), ABISELECT(21792,16200), "S19094C1");
    check_base_class_offset(lv, (S19094C7*)(S19094C15*), ABISELECT(21792,16200), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C3*), ABISELECT(21792,16200), "S19094C1");
    /*is_ambiguous_... S19094C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C3*)(S19094C2*), ABISELECT(6464,4764), "S19094C1");
    check_base_class_offset(lv, (S19094C8*)(S19094C11*)(S19094C10*), ABISELECT(22224,16524), "S19094C1");
    check_base_class_offset(lv, (S19094C11*)(S19094C10*), ABISELECT(22224,16524), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C14*), ABISELECT(32004,23912), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C14*), ABISELECT(31872,23812), "S19094C1");
    /*is_ambiguous_... S19094C14::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C14*), ABISELECT(31872,23812), "S19094C1");
    /*is_ambiguous_... S19094C15::S19094C8 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C15*), ABISELECT(32144,24004), "S19094C1");
    check_base_class_offset(lv, (S19094C15*)(S19094C14*), ABISELECT(32144,24004), "S19094C1");
    check_base_class_offset(lv, (S19094C14*)(S19094C13*), ABISELECT(31872,23812), "S19094C1");
    check_base_class_offset(lv, (S19094C13*)(S19094C10*), ABISELECT(30064,22496), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C7*)(S19094C10*), ABISELECT(22732,16908), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C8*)(S19094C7*)(S19094C10*), ABISELECT(22600,16808), "S19094C1");
    /*is_ambiguous_... S19094C10::S19094C7 */ AMB_check_base_class_offset(lv, (S19094C7*)(S19094C10*), ABISELECT(22600,16808), "S19094C1");
    check_base_class_offset(lv, (S19094C10*)(S19094C3*)(S19094C2*), ABISELECT(22224,16524), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S19094C10*)(S19094C3*), ABISELECT(22224,16524), "S19094C1");
    check_base_class_offset(lv, (S19094C3*)(S19094C2*), ABISELECT(6288,4624), "S19094C1");
    check_base_class_offset(lv, (S19094C2*), ABISELECT(6288,4624), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S19094C6*)(S19094C4*)(S19094C3*), ABISELECT(33040,24664), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S19094C4*)(S19094C3*), ABISELECT(33040,24664), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19094C3*), ABISELECT(33216,24804), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C3 */ AMB_check_base_class_offset(lv, (S19094C3*), ABISELECT(33040,24664), "S19094C1");
    /*is_ambiguous_... S19094C1::S19094C6 */ AMB_check_base_class_offset(lv, (S19094C6*), 0, "S19094C1");
    check_field_offset(lv, s19094c1f0, ABISELECT(160,124), "S19094C1.s19094c1f0");
    check_field_offset(lv, s19094c1f1, ABISELECT(2608,1944), "S19094C1.s19094c1f1");
    check_field_offset(lv, s19094c1f2, ABISELECT(2616,1948), "S19094C1.s19094c1f2");
    check_field_offset(lv, s19094c1f3, ABISELECT(2624,1956), "S19094C1.s19094c1f3");
    check_field_offset(lv, s19094c1f4, ABISELECT(2640,1960), "S19094C1.s19094c1f4");
    check_field_offset(lv, s19094c1f5, ABISELECT(6224,4580), "S19094C1.s19094c1f5");
    check_field_offset(lv, s19094c1f6, ABISELECT(6232,4584), "S19094C1.s19094c1f6");
    check_field_offset(lv, s19094c1f7, ABISELECT(6240,4588), "S19094C1.s19094c1f7");
    test_class_info(&lv, &cd_S19094C1);
    dp->~S19094C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19094C1(Test_S19094C1, "S19094C1", ABISELECT(48304,36072));

#else // __cplusplus

extern void _ZN8S19094C1C1Ev();
extern void _ZN8S19094C1D1Ev();
Name_Map name_map_S19094C1[] = {
  NSPAIR(_ZN8S19094C1C1Ev),
  NSPAIR(_ZN8S19094C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C11;
extern VTBL_ENTRY _ZTI9S19094C11[];
extern  VTBL_ENTRY _ZTV9S19094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C15;
extern VTBL_ENTRY _ZTI9S19094C15[];
extern  VTBL_ENTRY _ZTV9S19094C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C15[];
extern Class_Descriptor cd_S19094C14;
extern VTBL_ENTRY _ZTI9S19094C14[];
extern  VTBL_ENTRY _ZTV9S19094C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C14[];
extern Class_Descriptor cd_S19094C13;
extern VTBL_ENTRY _ZTI9S19094C13[];
extern  VTBL_ENTRY _ZTV9S19094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C8;
extern VTBL_ENTRY _ZTI8S19094C8[];
extern  VTBL_ENTRY _ZTV8S19094C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C8[];
extern Class_Descriptor cd_S19094C7;
extern VTBL_ENTRY _ZTI8S19094C7[];
extern  VTBL_ENTRY _ZTV8S19094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C7[];
extern Class_Descriptor cd_S19094C10;
extern VTBL_ENTRY _ZTI9S19094C10[];
extern  VTBL_ENTRY _ZTV9S19094C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19094C10[];
extern Class_Descriptor cd_S19094C3;
extern VTBL_ENTRY _ZTI8S19094C3[];
extern  VTBL_ENTRY _ZTV8S19094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C3[];
extern Class_Descriptor cd_S19094C2;
extern VTBL_ENTRY _ZTI8S19094C2[];
extern  VTBL_ENTRY _ZTV8S19094C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C2[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
extern Class_Descriptor cd_S19094C4;
extern VTBL_ENTRY _ZTI8S19094C4[];
extern  VTBL_ENTRY _ZTV8S19094C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19094C3;
extern VTBL_ENTRY _ZTI8S19094C3[];
extern  VTBL_ENTRY _ZTV8S19094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C3[];
extern Class_Descriptor cd_S19094C6;
extern VTBL_ENTRY _ZTI8S19094C6[];
extern  VTBL_ENTRY _ZTV8S19094C6[];
static Base_Class bases_S19094C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(21616,16072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19094C6,    ABISELECT(6288,4624), //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(6288,4624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19094C6,    ABISELECT(21632,16076), //bcp->offset
    38, //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
    7, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(21924,16300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C6,    ABISELECT(22048,16384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C4,    ABISELECT(22048,16384), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19094C8,    ABISELECT(21792,16200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(21792,16200), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(6464,4764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(22224,16524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19094C11,    ABISELECT(22224,16524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(32004,23912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(31872,23812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(31872,23812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19094C8,    ABISELECT(32144,24004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19094C15,    ABISELECT(32144,24004), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19094C14,    ABISELECT(31872,23812), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19094C13,    ABISELECT(30064,22496), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(22732,16908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C8,    ABISELECT(22600,16808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19094C7,    ABISELECT(22600,16808), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19094C10,    ABISELECT(22224,16524), //bcp->offset
    62, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19094C3,    ABISELECT(6288,4624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19094C2,    ABISELECT(6288,4624), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C6,    ABISELECT(33040,24664), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S19094C4,    ABISELECT(33040,24664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(33216,24804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19094C3,    ABISELECT(33040,24664), //bcp->offset
    124, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19094C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19094C1[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C12v1Ev();
extern void _ZN8S19094C1D1Ev();
extern void _ZN8S19094C1D0Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void ABISELECT(_ZTv0_n104_N8S19094C1D1Ev,_ZTv0_n52_N8S19094C1D1Ev)();
extern void ABISELECT(_ZThn6288_N8S19094C1D1Ev,_ZThn4624_N8S19094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19094C1D0Ev,_ZTv0_n52_N8S19094C1D0Ev)();
extern void ABISELECT(_ZThn6288_N8S19094C1D0Ev,_ZThn4624_N8S19094C1D0Ev)() __attribute__((weak));
extern void _ZN8S19094C33v10Ev();
extern void _ZN8S19094C23v11Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C1D1Ev,_ZTv0_n48_N8S19094C1D1Ev)();
extern void ABISELECT(_ZThn22224_N8S19094C1D1Ev,_ZThn16524_N8S19094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19094C1D0Ev,_ZTv0_n48_N8S19094C1D0Ev)();
extern void ABISELECT(_ZThn22224_N8S19094C1D0Ev,_ZThn16524_N8S19094C1D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S19094C1D1Ev,_ZTv0_n36_N8S19094C1D1Ev)();
extern void ABISELECT(_ZThn30064_N8S19094C1D1Ev,_ZThn22496_N8S19094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19094C1D0Ev,_ZTv0_n36_N8S19094C1D0Ev)();
extern void ABISELECT(_ZThn30064_N8S19094C1D0Ev,_ZThn22496_N8S19094C1D0Ev)() __attribute__((weak));
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void ABISELECT(_ZTv0_n104_N8S19094C1D1Ev,_ZTv0_n52_N8S19094C1D1Ev)();
extern void ABISELECT(_ZThn33040_N8S19094C1D1Ev,_ZThn24664_N8S19094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19094C1D0Ev,_ZTv0_n52_N8S19094C1D0Ev)();
extern void ABISELECT(_ZThn33040_N8S19094C1D0Ev,_ZThn24664_N8S19094C1D0Ev)() __attribute__((weak));
extern void _ZN8S19094C33v10Ev();
static  VTBL_ENTRY vtc_S19094C1[] = {
  ABISELECT(33040,24664),
  ABISELECT(32144,24004),
  ABISELECT(31872,23812),
  ABISELECT(30064,22496),
  ABISELECT(22224,16524),
  ABISELECT(22048,16384),
  ABISELECT(21792,16200),
  ABISELECT(21632,16076),
  ABISELECT(21616,16072),
  ABISELECT(6288,4624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19094C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C1D0Ev,
  0,
  0,
  ABISELECT(-6288,-4624),
  0,
  0,
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  ABISELECT(-6288,-4624),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19094C1D1Ev,_ZTv0_n52_N8S19094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19094C1D0Ev,_ZTv0_n52_N8S19094C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19094C23v11Ev,
  0,
  0,
  ABISELECT(-21632,-16076),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-21792,-16200),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-22048,-16384),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-22224,-16524),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-22224,-16524),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C1D1Ev,_ZTv0_n48_N8S19094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C1D0Ev,_ZTv0_n48_N8S19094C1D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-22600,-16808),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  ABISELECT(-30064,-22496),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-30064,-22496),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C1D1Ev,_ZTv0_n36_N8S19094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C1D0Ev,_ZTv0_n36_N8S19094C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-31872,-23812),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-32144,-24004),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
  0,
  ABISELECT(-33040,-24664),
  0,
  0,
  ABISELECT(-896,-660),
  ABISELECT(-1168,-852),
  ABISELECT(-2976,-2168),
  ABISELECT(-10816,-8140),
  ABISELECT(-10992,-8280),
  ABISELECT(-11248,-8464),
  ABISELECT(-11408,-8588),
  ABISELECT(-11424,-8592),
  ABISELECT(-33040,-24664),
  (VTBL_ENTRY)&(_ZTI8S19094C1[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19094C1D1Ev,_ZTv0_n52_N8S19094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19094C1D0Ev,_ZTv0_n52_N8S19094C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S19094C1[];
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C2D1Ev();
extern void _ZN8S19094C2D0Ev();
extern void _ZN8S19094C33v10Ev();
extern void _ZN8S19094C23v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C2__8S19094C1[] = {
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19094C23v11Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C3D1Ev();
extern void _ZN8S19094C3D0Ev();
extern void _ZN8S19094C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C38S19094C2__8S19094C1[] = {
  ABISELECT(25856,19380),
  ABISELECT(25584,19188),
  ABISELECT(23776,17872),
  ABISELECT(15936,11900),
  ABISELECT(15760,11760),
  ABISELECT(15504,11576),
  ABISELECT(15344,11452),
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C48S19094C38S19094C2__8S19094C1[] = {
  ABISELECT(15328,11448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C38S19094C2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-15344,-11452),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C38S19094C2__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11576),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C38S19094C2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11760),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C3D1Ev,_ZThn11900_N8S19094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C3D0Ev,_ZThn11900_N8S19094C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C38S19094C2__8S19094C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11900),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11900),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C3D1Ev,_ZThn17872_N8S19094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C3D0Ev,_ZThn17872_N8S19094C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C38S19094C2__8S19094C1[] = {
  ABISELECT(-23776,-17872),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17872),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C38S19094C2__8S19094C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25584,-19188),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C38S19094C2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25856,-19380),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C38S19094C2__8S19094C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12184),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-15344,-11452),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C2__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11576),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11760),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C2D1Ev,_ZTv0_n48_N8S19094C2D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C2D1Ev,_ZThn11900_N8S19094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19094C2D0Ev,_ZTv0_n48_N8S19094C2D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19094C2D0Ev,_ZThn11900_N8S19094C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C2__8S19094C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11900),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11900),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C2D1Ev,_ZTv0_n48_N8S19094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C2D0Ev,_ZTv0_n48_N8S19094C2D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19094C2D1Ev,_ZTv0_n36_N8S19094C2D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C2D1Ev,_ZThn17872_N8S19094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19094C2D0Ev,_ZTv0_n36_N8S19094C2D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19094C2D0Ev,_ZThn17872_N8S19094C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C2__8S19094C1[] = {
  ABISELECT(-23776,-17872),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17872),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C2D1Ev,_ZTv0_n36_N8S19094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C2D0Ev,_ZTv0_n36_N8S19094C2D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C2__8S19094C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-25584,-19188),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-25856,-19380),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C2__8S19094C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12184),
  (VTBL_ENTRY)&(_ZTI8S19094C2[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C1[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C7__8S19094C1[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C7__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C7__8S19094C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C7__8S19094C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C7__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C1[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void _ZN9S19094C10D1Ev();
extern void _ZN9S19094C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C1[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C10D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C119S19094C10__8S19094C1[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C119S19094C10__A1__8S19094C1[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C119S19094C10__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C119S19094C10__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C119S19094C10__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C119S19094C10__8S19094C1[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19094C11[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C10__A4__8S19094C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C10__A4__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C10__A4__8S19094C1[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C10__A2__8S19094C1[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C10__A2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C10__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C10__8S19094C1[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev)();
extern void ABISELECT(_ZThn7840_N9S19094C10D1Ev,_ZThn5972_N9S19094C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev)();
extern void ABISELECT(_ZThn7840_N9S19094C10D0Ev,_ZThn5972_N9S19094C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19094C13__9S19094C10__8S19094C1[] = {
  ABISELECT(-7840,-5972),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5972),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C10__8S19094C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-9648,-7288),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C10__8S19094C1[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-9920,-7480),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C10__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A__9S19094C10__8S19094C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19094C10[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN9S19094C13D1Ev();
extern void _ZN9S19094C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C1[] = {
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN9S19094C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19094C13D0Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__9S19094C13__8S19094C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C13__8S19094C1[] = {
  0,
  0,
  ABISELECT(8432,6420),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C13__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6112),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C13__8S19094C1[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C13__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6296),
  (VTBL_ENTRY)&(_ZTI9S19094C13[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C1[] = {
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C14__A1__8S19094C1[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C88S19094C79S19094C14__A2__8S19094C1[] = {
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A2__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A2__8S19094C1[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__8S19094C79S19094C14__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C79S19094C14__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI8S19094C7[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__9S19094C14__8S19094C1[] = {
  0,
  0,
  ABISELECT(10240,7736),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C14__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7428),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__9S19094C14__8S19094C1[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__A1__9S19094C14__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7612),
  (VTBL_ENTRY)&(_ZTI9S19094C14[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C1[] = {
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C89S19094C15__A3__8S19094C1[] = {
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__8S19094C89S19094C15__A3__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__8S19094C1[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI8S19094C8[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__9S19094C15__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7620),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__9S19094C15__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7804),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__9S19094C15__8S19094C1[] = {
  0,
  0,
  ABISELECT(10512,7928),
  (VTBL_ENTRY)&(_ZTI9S19094C15[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
extern void _ZN8S19094C3D1Ev();
extern void _ZN8S19094C3D0Ev();
extern void _ZN8S19094C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C3__A1__8S19094C1[] = {
  ABISELECT(-896,-660),
  ABISELECT(-1168,-852),
  ABISELECT(-2976,-2168),
  ABISELECT(-10816,-8140),
  ABISELECT(-10992,-8280),
  ABISELECT(-11248,-8464),
  ABISELECT(-11408,-8588),
  ABISELECT(-11424,-8592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19094C33v10Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C48S19094C3__A2__8S19094C1[] = {
  ABISELECT(-11424,-8592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19094C4[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C6__A1__8S19094C3__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(11408,8588),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C7__8S19094C3__A1__8S19094C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(11248,8464),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
extern void _ZN8S19094C62v2Ev();
extern void _ZN8S19094C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C4__A1__8S19094C3__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10992,8280),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19094C62v3Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev)();
extern void ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19094C10__8S19094C3__A1__8S19094C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(10816,8140),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7480),
  ABISELECT(9648,7288),
  ABISELECT(7840,5972),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(10816,8140),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19094C13__8S19094C3__A1__8S19094C1[] = {
  ABISELECT(2976,2168),
  ABISELECT(-8272,-6296),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6424),
  ABISELECT(-8016,-6112),
  ABISELECT(-8432,-6420),
  ABISELECT(1808,1316),
  ABISELECT(2976,2168),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev),
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
extern void _ZN9S19094C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C14__8S19094C3__A1__8S19094C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7612),
  ABISELECT(272,192),
  ABISELECT(-10240,-7736),
  ABISELECT(-9824,-7428),
  ABISELECT(-10256,-7740),
  ABISELECT(1168,852),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19094C142v9Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN9S19094C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19094C15__8S19094C3__A1__8S19094C1[] = {
  0,
  0,
  ABISELECT(-10352,-7804),
  ABISELECT(-10512,-7928),
  ABISELECT(-10096,-7620),
  ABISELECT(-10528,-7932),
  ABISELECT(896,660),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19094C152v8Ev,
};
extern void _ZN8S19094C82v4Ev();
extern void _ZN8S19094C72v5Ev();
extern void _ZN8S19094C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19094C79S19094C10__A2__8S19094C3__A1__8S19094C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(10440,7856),
  (VTBL_ENTRY)&(_ZTI8S19094C3[0]),
  (VTBL_ENTRY)&_ZN8S19094C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19094C72v6Ev,
};
static  VTT_ENTRY vtt_S19094C1[] = {
  {&(_ZTV8S19094C1[12]),  12,143},
  {&(_ZTV8S19094C1[32]),  32,143},
  {&(_ZTV8S19094C1[42]),  42,143},
  {&(_ZTV8S19094C1[52]),  52,143},
  {&(_ZTV8S19094C1[60]),  60,143},
  {&(_ZTV8S19094C1[76]),  76,143},
  {&(_ZTV8S19094C1[97]),  97,143},
  {&(_ZTV8S19094C1[110]),  110,143},
  {&(_ZTV8S19094C1[122]),  122,143},
  {&(_ZTV8S19094C1[85]),  85,143},
  {&(_ZTV8S19094C1[138]),  138,143},
  {&(_tg__ZTV8S19094C2__8S19094C1[10]),  10,16},
  {&(_tg__ZTV8S19094C38S19094C2__8S19094C1[10]),  10,15},
  {&(_tg__ZTV8S19094C48S19094C38S19094C2__8S19094C1[3]),  3,5},
  {&(_tg__ZTV8S19094C6__A1__8S19094C38S19094C2__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C7__8S19094C38S19094C2__8S19094C1[8]),  8,11},
  {&(_tg__ZTV8S19094C4__A1__8S19094C38S19094C2__8S19094C1[5]),  5,7},
  {&(_tg__ZTV9S19094C10__8S19094C38S19094C2__8S19094C1[14]),  14,18},
  {&(_tg__ZTV9S19094C13__8S19094C38S19094C2__8S19094C1[9]),  9,11},
  {&(_tg__ZTV9S19094C14__8S19094C38S19094C2__8S19094C1[11]),  11,15},
  {&(_tg__ZTV9S19094C15__8S19094C38S19094C2__8S19094C1[8]),  8,10},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C38S19094C2__8S19094C1[5]),  5,8},
  {&(_tg__ZTV8S19094C6__A1__8S19094C2__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C7__8S19094C2__8S19094C1[8]),  8,11},
  {&(_tg__ZTV8S19094C4__A1__8S19094C2__8S19094C1[5]),  5,7},
  {&(_tg__ZTV9S19094C10__8S19094C2__8S19094C1[14]),  14,18},
  {&(_tg__ZTV9S19094C13__8S19094C2__8S19094C1[9]),  9,11},
  {&(_tg__ZTV9S19094C14__8S19094C2__8S19094C1[11]),  11,15},
  {&(_tg__ZTV9S19094C15__8S19094C2__8S19094C1[8]),  8,10},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C2__8S19094C1[5]),  5,8},
  {&(_tg__ZTV8S19094C7__8S19094C1[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C7__8S19094C1[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C7__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C7__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C7__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C7__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C4__A1__8S19094C1[3]),  3,5},
  {&(_tg__ZTV9S19094C10__8S19094C1[9]),  9,13},
  {&(_tg__ZTV9S19094C119S19094C10__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C89S19094C119S19094C10__A1__8S19094C1[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C119S19094C10__A1__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C119S19094C10__A1__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C119S19094C10__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C119S19094C10__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C1[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C10__A4__8S19094C1[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C10__A4__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C10__A4__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C10__A2__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C10__A2__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C4__9S19094C10__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__9S19094C10__8S19094C1[4]),  4,6},
  {&(_tg__ZTV9S19094C13__9S19094C10__8S19094C1[9]),  9,11},
  {&(_tg__ZTV9S19094C14__9S19094C10__8S19094C1[11]),  11,15},
  {&(_tg__ZTV9S19094C15__9S19094C10__8S19094C1[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C10__8S19094C1[8]),  8,11},
  {&(_tg__ZTV8S19094C7__A__9S19094C10__8S19094C1[5]),  5,8},
  {&(_tg__ZTV9S19094C13__8S19094C1[8]),  8,10},
  {&(_tg__ZTV9S19094C14__9S19094C13__8S19094C1[11]),  11,15},
  {&(_tg__ZTV8S19094C6__9S19094C13__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C13__8S19094C1[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C13__8S19094C1[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C13__8S19094C1[8]),  8,11},
  {&(_tg__ZTV9S19094C14__8S19094C1[7]),  7,11},
  {&(_tg__ZTV8S19094C79S19094C14__A1__8S19094C1[5]),  5,8},
  {&(_tg__ZTV8S19094C88S19094C79S19094C14__A2__8S19094C1[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C88S19094C79S19094C14__A2__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C88S19094C79S19094C14__A2__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C6__8S19094C79S19094C14__A1__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__8S19094C79S19094C14__A1__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__9S19094C14__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C14__8S19094C1[5]),  5,7},
  {&(_tg__ZTV9S19094C15__9S19094C14__8S19094C1[8]),  8,10},
  {&(_tg__ZTV8S19094C7__A1__9S19094C14__8S19094C1[8]),  8,11},
  {&(_tg__ZTV9S19094C15__8S19094C1[6]),  6,8},
  {&(_tg__ZTV8S19094C89S19094C15__A3__8S19094C1[5]),  5,6},
  {&(_tg__ZTV8S19094C4__8S19094C89S19094C15__A3__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C6__A1__8S19094C89S19094C15__A3__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C4__9S19094C15__8S19094C1[5]),  5,7},
  {&(_tg__ZTV8S19094C7__9S19094C15__8S19094C1[8]),  8,11},
  {&(_tg__ZTV8S19094C6__A1__9S19094C15__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C3__A1__8S19094C1[10]),  10,15},
  {&(_tg__ZTV8S19094C48S19094C3__A2__8S19094C1[3]),  3,5},
  {&(_tg__ZTV8S19094C6__A1__8S19094C3__A1__8S19094C1[4]),  4,6},
  {&(_tg__ZTV8S19094C7__8S19094C3__A1__8S19094C1[8]),  8,11},
  {&(_tg__ZTV8S19094C4__A1__8S19094C3__A1__8S19094C1[5]),  5,7},
  {&(_tg__ZTV9S19094C10__8S19094C3__A1__8S19094C1[14]),  14,18},
  {&(_tg__ZTV9S19094C13__8S19094C3__A1__8S19094C1[9]),  9,11},
  {&(_tg__ZTV9S19094C14__8S19094C3__A1__8S19094C1[11]),  11,15},
  {&(_tg__ZTV9S19094C15__8S19094C3__A1__8S19094C1[8]),  8,10},
  {&(_tg__ZTV8S19094C79S19094C10__A2__8S19094C3__A1__8S19094C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19094C1[];
extern  VTBL_ENTRY _ZTV8S19094C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19094C1[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D0Ev,_ZTv0_n36_N9S19094C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19094C10D0Ev,_ZThn5972_N9S19094C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19094C10D1Ev,_ZTv0_n36_N9S19094C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19094C10D1Ev,_ZThn5972_N9S19094C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C2D0Ev,_ZTv0_n36_N8S19094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C2D0Ev,_ZThn17872_N8S19094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C2D1Ev,_ZTv0_n36_N8S19094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C2D1Ev,_ZThn17872_N8S19094C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C2D0Ev,_ZTv0_n48_N8S19094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C2D0Ev,_ZThn11900_N8S19094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C2D1Ev,_ZTv0_n48_N8S19094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C2D1Ev,_ZThn11900_N8S19094C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C3D0Ev,_ZTv0_n36_N8S19094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C3D0Ev,_ZThn17872_N8S19094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C3D1Ev,_ZTv0_n36_N8S19094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19094C3D1Ev,_ZThn17872_N8S19094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C3D0Ev,_ZTv0_n48_N8S19094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C3D0Ev,_ZThn11900_N8S19094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C3D1Ev,_ZTv0_n48_N8S19094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19094C3D1Ev,_ZThn11900_N8S19094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C1D0Ev,_ZTv0_n36_N8S19094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30064_N8S19094C1D0Ev,_ZThn22496_N8S19094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19094C1D1Ev,_ZTv0_n36_N8S19094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30064_N8S19094C1D1Ev,_ZThn22496_N8S19094C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C1D0Ev,_ZTv0_n48_N8S19094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22224_N8S19094C1D0Ev,_ZThn16524_N8S19094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19094C1D1Ev,_ZTv0_n48_N8S19094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22224_N8S19094C1D1Ev,_ZThn16524_N8S19094C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19094C1D0Ev,_ZTv0_n52_N8S19094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33040_N8S19094C1D0Ev,_ZThn24664_N8S19094C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6288_N8S19094C1D0Ev,_ZThn4624_N8S19094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19094C1D1Ev,_ZTv0_n52_N8S19094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33040_N8S19094C1D1Ev,_ZThn24664_N8S19094C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6288_N8S19094C1D1Ev,_ZThn4624_N8S19094C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19094C1 = {  "S19094C1", // class name
  bases_S19094C1, 30,
  &(vtc_S19094C1[0]), // expected_vtbl_contents
  &(vtt_S19094C1[0]), // expected_vtt_contents
  ABISELECT(48304,36072), // object size
  NSPAIRA(_ZTI8S19094C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19094C1),143, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19094C1),91, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C6  {
  __tsi64 s19093c6f0[9];
  void *s19093c6f1;
  long double s19093c6f2;
  void *s19093c6f3;
  char s19093c6f4;
  short s19093c6f5[6];
  void *s19093c6f6;
  char s19093c6f7:4;
  void *s19093c6f8;
  virtual void  v2(); // _ZN8S19093C62v2Ev
  virtual void  v3(); // _ZN8S19093C62v3Ev
  ~S19093C6(); // tgen
  S19093C6(); // tgen
};
//SIG(-1 S19093C6) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S19093C6 ::v2(){vfunc_called(this, "_ZN8S19093C62v2Ev");}
void  S19093C6 ::v3(){vfunc_called(this, "_ZN8S19093C62v3Ev");}
S19093C6 ::~S19093C6(){ note_dtor("S19093C6", this);} // tgen
S19093C6 ::S19093C6(){ note_ctor("S19093C6", this);} // tgen

static void Test_S19093C6()
{
  extern Class_Descriptor cd_S19093C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S19093C6, buf);
    S19093C6 *dp, &lv = *(dp=new (buf) S19093C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S19093C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C6)");
    check_field_offset(lv, s19093c6f0, ABISELECT(8,4), "S19093C6.s19093c6f0");
    check_field_offset(lv, s19093c6f1, ABISELECT(80,76), "S19093C6.s19093c6f1");
    check_field_offset(lv, s19093c6f2, ABISELECT(96,80), "S19093C6.s19093c6f2");
    check_field_offset(lv, s19093c6f3, ABISELECT(112,92), "S19093C6.s19093c6f3");
    check_field_offset(lv, s19093c6f4, ABISELECT(120,96), "S19093C6.s19093c6f4");
    check_field_offset(lv, s19093c6f5, ABISELECT(122,98), "S19093C6.s19093c6f5");
    check_field_offset(lv, s19093c6f6, ABISELECT(136,112), "S19093C6.s19093c6f6");
    set_bf_and_test(lv, s19093c6f7, ABISELECT(144,116), 0, 4, 1, "S19093C6");
    set_bf_and_test(lv, s19093c6f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S19093C6");
    check_field_offset(lv, s19093c6f8, ABISELECT(152,120), "S19093C6.s19093c6f8");
    test_class_info(&lv, &cd_S19093C6);
    dp->~S19093C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C6(Test_S19093C6, "S19093C6", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S19093C6C1Ev();
extern void _ZN8S19093C6D1Ev();
Name_Map name_map_S19093C6[] = {
  NSPAIR(_ZN8S19093C6C1Ev),
  NSPAIR(_ZN8S19093C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19093C6[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY vtc_S19093C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C6[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
Class_Descriptor cd_S19093C6 = {  "S19093C6", // class name
  0,0,//no base classes
  &(vtc_S19093C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S19093C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19093C6),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  S19093C4  : virtual S1538C9_nt , S19093C6 {
  int s19093c4f0;
  short s19093c4f1[2];
  __tsi64 s19093c4f2;
  ~S19093C4(); // tgen
  S19093C4(); // tgen
};
//SIG(-1 S19093C4) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S19093C4()
{
  extern Class_Descriptor cd_S19093C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S19093C4, buf);
    S19093C4 *dp, &lv = *(dp=new (buf) S19093C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S19093C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C4)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S19093C4");
    check_base_class_offset(lv, (S19093C6*), 0, "S19093C4");
    check_field_offset(lv, s19093c4f0, ABISELECT(160,124), "S19093C4.s19093c4f0");
    check_field_offset(lv, s19093c4f1, ABISELECT(164,128), "S19093C4.s19093c4f1");
    check_field_offset(lv, s19093c4f2, ABISELECT(168,132), "S19093C4.s19093c4f2");
    test_class_info(&lv, &cd_S19093C4);
    dp->~S19093C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C4(Test_S19093C4, "S19093C4", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN8S19093C4C1Ev();
extern void _ZN8S19093C4D1Ev();
Name_Map name_map_S19093C4[] = {
  NSPAIR(_ZN8S19093C4C1Ev),
  NSPAIR(_ZN8S19093C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
static Base_Class bases_S19093C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19093C4[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY vtc_S19093C4[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19093C4[];
static  VTT_ENTRY vtt_S19093C4[] = {
  {&(_ZTV8S19093C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
Class_Descriptor cd_S19093C4 = {  "S19093C4", // class name
  bases_S19093C4, 2,
  &(vtc_S19093C4[0]), // expected_vtbl_contents
  &(vtt_S19093C4[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI8S19093C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19093C4),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19093C4),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C8  : virtual S1538C9_nt , virtual S19093C4 , virtual S19093C6 {
  __tsi64 s19093c8f0[8];
  void *s19093c8f1[7];
  short s19093c8f2;
  virtual void  v4(); // _ZN8S19093C82v4Ev
  ~S19093C8(); // tgen
  S19093C8(); // tgen
};
//SIG(-1 S19093C8) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S19093C8()
{
  extern Class_Descriptor cd_S19093C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S19093C8, buf);
    S19093C8 *dp, &lv = *(dp=new (buf) S19093C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S19093C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C8)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19093C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(132,100), "S19093C8");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(144,104), "S19093C8");
    check_base_class_offset(lv, (S19093C4*), ABISELECT(144,104), "S19093C8");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*), ABISELECT(320,244), "S19093C8");
    check_field_offset(lv, s19093c8f0, ABISELECT(8,4), "S19093C8.s19093c8f0");
    check_field_offset(lv, s19093c8f1, ABISELECT(72,68), "S19093C8.s19093c8f1");
    check_field_offset(lv, s19093c8f2, ABISELECT(128,96), "S19093C8.s19093c8f2");
    test_class_info(&lv, &cd_S19093C8);
    dp->~S19093C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C8(Test_S19093C8, "S19093C8", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN8S19093C8C1Ev();
extern void _ZN8S19093C8D1Ev();
Name_Map name_map_S19093C8[] = {
  NSPAIR(_ZN8S19093C8C1Ev),
  NSPAIR(_ZN8S19093C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
static Base_Class bases_S19093C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C6,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C6,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19093C8[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY vtc_S19093C8[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19093C8[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C8[] = {
  {&(_ZTV8S19093C8[5]),  5,19},
  {&(_ZTV8S19093C8[11]),  11,19},
  {&(_ZTV8S19093C8[17]),  17,19},
  {&(_tg__ZTV8S19093C4__8S19093C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
Class_Descriptor cd_S19093C8 = {  "S19093C8", // class name
  bases_S19093C8, 4,
  &(vtc_S19093C8[0]), // expected_vtbl_contents
  &(vtt_S19093C8[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI8S19093C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19093C8),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19093C8),4, //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  S19093C7  : S1538C9_nt , virtual S19093C6 , virtual S19093C4 , S19093C8 {
  ::S7223C13 s19093c7f0;
  int s19093c7f1:10;
  int s19093c7f2[9];
  int s19093c7f3;
  virtual void  v5(); // _ZN8S19093C72v5Ev
  virtual void  v6(); // _ZN8S19093C72v6Ev
  ~S19093C7(); // tgen
  S19093C7(); // tgen
};
//SIG(-1 S19093C7) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi}


void  S19093C7 ::v5(){vfunc_called(this, "_ZN8S19093C72v5Ev");}
void  S19093C7 ::v6(){vfunc_called(this, "_ZN8S19093C72v6Ev");}
S19093C7 ::~S19093C7(){ note_dtor("S19093C7", this);} // tgen
S19093C7 ::S19093C7(){ note_ctor("S19093C7", this);} // tgen

static void Test_S19093C7()
{
  extern Class_Descriptor cd_S19093C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S19093C7, buf);
    S19093C7 *dp, &lv = *(dp=new (buf) S19093C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S19093C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C7)");
    /*is_ambiguous_... S19093C7::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19093C7");
    /*is_ambiguous_... S19093C7::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*), ABISELECT(256,184), "S19093C7");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*), ABISELECT(256,184), "S19093C7");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(592,448), "S19093C7");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*), ABISELECT(592,448), "S19093C7");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(416,308), "S19093C7");
    check_base_class_offset(lv, (S19093C4*), ABISELECT(416,308), "S19093C7");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*), ABISELECT(416,308), "S19093C7");
    check_base_class_offset(lv, (S19093C8*), 0, "S19093C7");
    check_field_offset(lv, s19093c7f0, ABISELECT(136,104), "S19093C7.s19093c7f0");
    set_bf_and_test(lv, s19093c7f1, ABISELECT(208,140), 0, 10, 1, "S19093C7");
    set_bf_and_test(lv, s19093c7f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S19093C7");
    check_field_offset(lv, s19093c7f2, ABISELECT(212,144), "S19093C7.s19093c7f2");
    check_field_offset(lv, s19093c7f3, ABISELECT(248,180), "S19093C7.s19093c7f3");
    test_class_info(&lv, &cd_S19093C7);
    dp->~S19093C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C7(Test_S19093C7, "S19093C7", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S19093C7C1Ev();
extern void _ZN8S19093C7D1Ev();
Name_Map name_map_S19093C7[] = {
  NSPAIR(_ZN8S19093C7C1Ev),
  NSPAIR(_ZN8S19093C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
static Base_Class bases_S19093C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19093C6,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S19093C6,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19093C7[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY vtc_S19093C7[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19093C7[];
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C8__8S19093C7[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C8__8S19093C7[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C8__8S19093C7[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C7[] = {
  {&(_ZTV8S19093C7[5]),  5,21},
  {&(_tg__ZTV8S19093C8__8S19093C7[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C8__8S19093C7[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C8__8S19093C7[4]),  4,6},
  {&(_ZTV8S19093C7[12]),  12,21},
  {&(_ZTV8S19093C7[19]),  19,21},
  {&(_tg__ZTV8S19093C4__8S19093C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
Class_Descriptor cd_S19093C7 = {  "S19093C7", // class name
  bases_S19093C7, 6,
  &(vtc_S19093C7[0]), // expected_vtbl_contents
  &(vtt_S19093C7[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S19093C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19093C7),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19093C7),7, //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  S19093C11  : S19093C8 {
  __tsi64 s19093c11f0;
  ::S19093C4 s19093c11f1;
  short s19093c11f2;
  char s19093c11f3;
  int s19093c11f4;
  int s19093c11f5;
  void *s19093c11f6;
  ::S7223C9_nt s19093c11f7;
  int s19093c11f8;
  __tsi64 s19093c11f9;
  virtual void  v7(); // _ZN9S19093C112v7Ev
  ~S19093C11(); // tgen
  S19093C11(); // tgen
};
//SIG(-1 S19093C11) C1{ BC2{ VBC3{ m Fi} VBC4{ VBC3 BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 v4 FL[8] Fp[7] Fs} v1 FL FC4 Fs Fc Fi[2] Fp FC6{} Fi FL}


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

static void Test_S19093C11()
{
  extern Class_Descriptor cd_S19093C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,139)];
    init_test(&cd_S19093C11, buf);
    S19093C11 *dp, &lv = *(dp=new (buf) S19093C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,552), "sizeof(S19093C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C11)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*), ABISELECT(376,284), "S19093C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(376,284), "S19093C11");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(384,288), "S19093C11");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*), ABISELECT(384,288), "S19093C11");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*), ABISELECT(560,428), "S19093C11");
    check_base_class_offset(lv, (S19093C8*), 0, "S19093C11");
    check_field_offset(lv, s19093c11f0, ABISELECT(136,100), "S19093C11.s19093c11f0");
    check_field_offset(lv, s19093c11f1, ABISELECT(144,108), "S19093C11.s19093c11f1");
    check_field_offset(lv, s19093c11f2, ABISELECT(336,252), "S19093C11.s19093c11f2");
    check_field_offset(lv, s19093c11f3, ABISELECT(338,254), "S19093C11.s19093c11f3");
    check_field_offset(lv, s19093c11f4, ABISELECT(340,256), "S19093C11.s19093c11f4");
    check_field_offset(lv, s19093c11f5, ABISELECT(344,260), "S19093C11.s19093c11f5");
    check_field_offset(lv, s19093c11f6, ABISELECT(352,264), "S19093C11.s19093c11f6");
    check_field_offset(lv, s19093c11f7, ABISELECT(360,268), "S19093C11.s19093c11f7");
    check_field_offset(lv, s19093c11f8, ABISELECT(364,272), "S19093C11.s19093c11f8");
    check_field_offset(lv, s19093c11f9, ABISELECT(368,276), "S19093C11.s19093c11f9");
    test_class_info(&lv, &cd_S19093C11);
    dp->~S19093C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C11(Test_S19093C11, "S19093C11", ABISELECT(720,552));

#else // __cplusplus

extern void _ZN9S19093C11C1Ev();
extern void _ZN9S19093C11D1Ev();
Name_Map name_map_S19093C11[] = {
  NSPAIR(_ZN9S19093C11C1Ev),
  NSPAIR(_ZN9S19093C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
static Base_Class bases_S19093C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19093C6,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(384,288), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19093C6,    ABISELECT(560,428), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19093C11[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY vtc_S19093C11[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19093C11[];
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C8__9S19093C11[] = {
  ABISELECT(560,428),
  ABISELECT(384,288),
  ABISELECT(376,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C8__9S19093C11[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C8__9S19093C11[] = {
  0,
  0,
  ABISELECT(-560,-428),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C11[] = {
  {&(_ZTV9S19093C11[5]),  5,20},
  {&(_tg__ZTV8S19093C8__9S19093C11[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C8__9S19093C11[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C8__9S19093C11[4]),  4,6},
  {&(_ZTV9S19093C11[12]),  12,20},
  {&(_ZTV9S19093C11[18]),  18,20},
  {&(_tg__ZTV8S19093C4__9S19093C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19093C11[];
extern  VTBL_ENTRY _ZTV9S19093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C11[];
Class_Descriptor cd_S19093C11 = {  "S19093C11", // class name
  bases_S19093C11, 5,
  &(vtc_S19093C11[0]), // expected_vtbl_contents
  &(vtt_S19093C11[0]), // expected_vtt_contents
  ABISELECT(720,552), // object size
  NSPAIRA(_ZTI9S19093C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19093C11),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19093C11),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C15  : virtual S19093C4 , virtual S19093C7 , S19093C8 {
  void *s19093c15f0;
  short s19093c15f1[2];
  long double s19093c15f2[2];
  char s19093c15f3;
  ::S19093C4 s19093c15f4;
  long double s19093c15f5;
  ::S19093C8 s19093c15f6;
  virtual void  v8(); // _ZN9S19093C152v8Ev
  ~S19093C15(); // tgen
  S19093C15(); // tgen
};
//SIG(-1 S19093C15) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S19093C15()
{
  extern Class_Descriptor cd_S19093C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S19093C15, buf);
    S19093C15 *dp, &lv = *(dp=new (buf) S19093C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S19093C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C15)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(1072,800), "S19093C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(1072,800), "S19093C15");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*), ABISELECT(1072,800), "S19093C15");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(896,660), "S19093C15");
    check_base_class_offset(lv, (S19093C4*), ABISELECT(896,660), "S19093C15");
    check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(896,660), "S19093C15");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(896,660), "S19093C15");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*), ABISELECT(896,660), "S19093C15");
    /*is_ambiguous_... S19093C7::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(1212,904), "S19093C15");
    /*is_ambiguous_... S19093C7::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(1344,988), "S19093C15");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(1344,988), "S19093C15");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*), ABISELECT(1344,988), "S19093C15");
    check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(1080,804), "S19093C15");
    check_base_class_offset(lv, (S19093C7*), ABISELECT(1080,804), "S19093C15");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*), 0, "S19093C15");
    check_field_offset(lv, s19093c15f0, ABISELECT(136,100), "S19093C15.s19093c15f0");
    check_field_offset(lv, s19093c15f1, ABISELECT(144,104), "S19093C15.s19093c15f1");
    check_field_offset(lv, s19093c15f2, ABISELECT(160,108), "S19093C15.s19093c15f2");
    check_field_offset(lv, s19093c15f3, ABISELECT(192,132), "S19093C15.s19093c15f3");
    check_field_offset(lv, s19093c15f4, ABISELECT(208,136), "S19093C15.s19093c15f4");
    check_field_offset(lv, s19093c15f5, ABISELECT(400,280), "S19093C15.s19093c15f5");
    check_field_offset(lv, s19093c15f6, ABISELECT(416,292), "S19093C15.s19093c15f6");
    test_class_info(&lv, &cd_S19093C15);
    dp->~S19093C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C15(Test_S19093C15, "S19093C15", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN9S19093C15C1Ev();
extern void _ZN9S19093C15D1Ev();
Name_Map name_map_S19093C15[] = {
  NSPAIR(_ZN9S19093C15C1Ev),
  NSPAIR(_ZN9S19093C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
static Base_Class bases_S19093C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19093C6,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19093C6,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19093C15[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY vtc_S19093C15[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19093C15[];
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C8__A1__9S19093C15[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C8__A1__9S19093C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C8__A1__9S19093C15[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__9S19093C15[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__9S19093C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__9S19093C15[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__9S19093C15[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__9S19093C15[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C15[] = {
  {&(_ZTV9S19093C15[6]),  6,32},
  {&(_tg__ZTV8S19093C8__A1__9S19093C15[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C8__A1__9S19093C15[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C8__A1__9S19093C15[4]),  4,6},
  {&(_ZTV9S19093C15[13]),  13,32},
  {&(_ZTV9S19093C15[23]),  23,32},
  {&(_ZTV9S19093C15[30]),  30,32},
  {&(_tg__ZTV8S19093C4__9S19093C15[3]),  3,5},
  {&(_tg__ZTV8S19093C7__9S19093C15[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__9S19093C15[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__9S19093C15[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__9S19093C15[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__9S19093C15[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__9S19093C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
Class_Descriptor cd_S19093C15 = {  "S19093C15", // class name
  bases_S19093C15, 8,
  &(vtc_S19093C15[0]), // expected_vtbl_contents
  &(vtt_S19093C15[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI9S19093C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19093C15),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19093C15),14, //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  S19093C14  : virtual S19093C6 , S19093C7 , virtual S19093C15 {
  int s19093c14f0;
  char s19093c14f1;
  unsigned char s19093c14f2:1;
  virtual void  v9(); // _ZN9S19093C142v9Ev
  ~S19093C14(); // tgen
  S19093C14(); // tgen
};
//SIG(-1 S19093C14) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S19093C14()
{
  extern Class_Descriptor cd_S19093C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S19093C14, buf);
    S19093C14 *dp, &lv = *(dp=new (buf) S19093C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S19093C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C14)");
    /*is_ambiguous_... S19093C14::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*), ABISELECT(272,192), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(272,192), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(272,192), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(272,192), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(272,192), "S19093C14");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C15*), ABISELECT(272,192), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(132,100), "S19093C14");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(608,456), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(608,456), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(608,456), "S19093C14");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C15*), ABISELECT(608,456), "S19093C14");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(432,316), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(432,316), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(432,316), "S19093C14");
    check_base_class_offset(lv, (S19093C4*)(S19093C15*), ABISELECT(432,316), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(432,316), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(432,316), "S19093C14");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C15*), ABISELECT(432,316), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), 0, "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*), 0, "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(1652,1220), "S19093C14");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(1520,1120), "S19093C14");
    check_base_class_offset(lv, (S19093C7*)(S19093C15*), ABISELECT(1520,1120), "S19093C14");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C15*), ABISELECT(624,460), "S19093C14");
    check_base_class_offset(lv, (S19093C15*), ABISELECT(624,460), "S19093C14");
    check_field_offset(lv, s19093c14f0, ABISELECT(252,184), "S19093C14.s19093c14f0");
    check_field_offset(lv, s19093c14f1, ABISELECT(256,188), "S19093C14.s19093c14f1");
    set_bf_and_test(lv, s19093c14f2, ABISELECT(257,189), 0, 1, 1, "S19093C14");
    test_class_info(&lv, &cd_S19093C14);
    dp->~S19093C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C14(Test_S19093C14, "S19093C14", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN9S19093C14C1Ev();
extern void _ZN9S19093C14D1Ev();
Name_Map name_map_S19093C14[] = {
  NSPAIR(_ZN9S19093C14C1Ev),
  NSPAIR(_ZN9S19093C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C15;
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
static Base_Class bases_S19093C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19093C6,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19093C6,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19093C7,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19093C8,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19093C15,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19093C14[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY vtc_S19093C14[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern VTBL_ENTRY _ZTV9S19093C14[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A__9S19093C14[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__9S19093C14[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__9S19093C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__9S19093C14[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__A__9S19093C14[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__A__9S19093C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C14[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C14[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C15__A2__9S19093C14[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C15__A2__9S19093C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A2__9S19093C14[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15__9S19093C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15__9S19093C14[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C15__9S19093C14[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C14[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__A1__9S19093C14[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__A1__9S19093C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A1__9S19093C14[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__A1__9S19093C14[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__A1__9S19093C14[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C14[] = {
  {&(_ZTV9S19093C14[7]),  7,45},
  {&(_tg__ZTV8S19093C7__A__9S19093C14[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__9S19093C14[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__9S19093C14[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__9S19093C14[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__A__9S19093C14[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__A__9S19093C14[5]),  5,7},
  {&(_ZTV9S19093C14[15]),  15,45},
  {&(_ZTV9S19093C14[22]),  22,45},
  {&(_ZTV9S19093C14[32]),  32,45},
  {&(_ZTV9S19093C14[42]),  42,45},
  {&(_tg__ZTV8S19093C4__9S19093C14[3]),  3,5},
  {&(_tg__ZTV9S19093C15__9S19093C14[6]),  6,8},
  {&(_tg__ZTV8S19093C89S19093C15__A2__9S19093C14[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C15__A2__9S19093C14[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A2__9S19093C14[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C15__9S19093C14[5]),  5,7},
  {&(_tg__ZTV8S19093C7__9S19093C15__9S19093C14[8]),  8,11},
  {&(_tg__ZTV8S19093C6__A1__9S19093C15__9S19093C14[4]),  4,6},
  {&(_tg__ZTV8S19093C7__A1__9S19093C14[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__A1__9S19093C14[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__A1__9S19093C14[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A1__9S19093C14[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__A1__9S19093C14[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__A1__9S19093C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19093C14[];
extern  VTBL_ENTRY _ZTV9S19093C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C14[];
Class_Descriptor cd_S19093C14 = {  "S19093C14", // class name
  bases_S19093C14, 12,
  &(vtc_S19093C14[0]), // expected_vtbl_contents
  &(vtt_S19093C14[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI9S19093C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19093C14),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19093C14),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C13  : virtual S19093C14 {
  ::S19093C14 s19093c13f0;
  short s19093c13f1:5;
  long s19093c13f2;
  virtual  ~S19093C13(); // _ZN9S19093C13D2Ev
  S19093C13(); // tgen
};
//SIG(-1 S19093C13) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S19093C13()
{
  extern Class_Descriptor cd_S19093C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S19093C13, buf);
    S19093C13 *dp, &lv = *(dp=new (buf) S19093C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S19093C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C13)");
    /*is_ambiguous_... S19093C14::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C14*), ABISELECT(2080,1508), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C14*), ABISELECT(2080,1508), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(2080,1508), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(2080,1508), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(2080,1508), "S19093C13");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C15*), ABISELECT(2080,1508), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C14*), ABISELECT(1940,1416), "S19093C13");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(2416,1772), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(2416,1772), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(2416,1772), "S19093C13");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C15*), ABISELECT(2416,1772), "S19093C13");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(2240,1632), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C14*), ABISELECT(2240,1632), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(2240,1632), "S19093C13");
    check_base_class_offset(lv, (S19093C4*)(S19093C15*), ABISELECT(2240,1632), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(2240,1632), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(2240,1632), "S19093C13");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C15*), ABISELECT(2240,1632), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(1808,1316), "S19093C13");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C14*), ABISELECT(1808,1316), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(3460,2536), "S19093C13");
    /*is_ambiguous_... S19093C13::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(3328,2436), "S19093C13");
    check_base_class_offset(lv, (S19093C7*)(S19093C15*), ABISELECT(3328,2436), "S19093C13");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C15*), ABISELECT(2432,1776), "S19093C13");
    check_base_class_offset(lv, (S19093C15*)(S19093C14*), ABISELECT(2432,1776), "S19093C13");
    check_base_class_offset(lv, (S19093C14*), ABISELECT(1808,1316), "S19093C13");
    check_field_offset(lv, s19093c13f0, ABISELECT(16,4), "S19093C13.s19093c13f0");
    set_bf_and_test(lv, s19093c13f1, ABISELECT(1792,1308), 0, 5, 1, "S19093C13");
    set_bf_and_test(lv, s19093c13f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S19093C13");
    check_field_offset(lv, s19093c13f2, ABISELECT(1800,1312), "S19093C13.s19093c13f2");
    test_class_info(&lv, &cd_S19093C13);
    dp->~S19093C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C13(Test_S19093C13, "S19093C13", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN9S19093C13C1Ev();
extern void _ZN9S19093C13D2Ev();
Name_Map name_map_S19093C13[] = {
  NSPAIR(_ZN9S19093C13C1Ev),
  NSPAIR(_ZN9S19093C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C15;
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
extern Class_Descriptor cd_S19093C14;
extern VTBL_ENTRY _ZTI9S19093C14[];
extern  VTBL_ENTRY _ZTV9S19093C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C14[];
static Base_Class bases_S19093C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19093C6,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C6,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19093C15,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19093C14,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19093C13[];
extern void _ZN9S19093C13D1Ev();
extern void _ZN9S19093C13D0Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY vtc_S19093C13[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN9S19093C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C13D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern VTBL_ENTRY _ZTV9S19093C13[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C13[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C14__9S19093C13[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C14__9S19093C13[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C14__9S19093C13[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C14__9S19093C13[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C13[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C13[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C15__A2__9S19093C13[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C15__A2__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A2__9S19093C13[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15__9S19093C13[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C15__9S19093C13[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C13[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__A1__9S19093C13[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__A1__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A1__9S19093C13[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__A1__9S19093C13[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__A1__9S19093C13[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C13[] = {
  {&(_ZTV9S19093C13[8]),  8,59},
  {&(_ZTV9S19093C13[21]),  21,59},
  {&(_ZTV9S19093C13[29]),  29,59},
  {&(_ZTV9S19093C13[36]),  36,59},
  {&(_ZTV9S19093C13[46]),  46,59},
  {&(_ZTV9S19093C13[56]),  56,59},
  {&(_tg__ZTV9S19093C14__9S19093C13[7]),  7,11},
  {&(_tg__ZTV8S19093C79S19093C14__9S19093C13[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C14__9S19093C13[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__9S19093C13[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C14__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C14__9S19093C13[5]),  5,7},
  {&(_tg__ZTV8S19093C6__9S19093C14__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C14__9S19093C13[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C14__9S19093C13[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C14__9S19093C13[8]),  8,11},
  {&(_tg__ZTV8S19093C4__9S19093C13[3]),  3,5},
  {&(_tg__ZTV9S19093C15__9S19093C13[6]),  6,8},
  {&(_tg__ZTV8S19093C89S19093C15__A2__9S19093C13[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C15__A2__9S19093C13[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A2__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C15__9S19093C13[5]),  5,7},
  {&(_tg__ZTV8S19093C7__9S19093C15__9S19093C13[8]),  8,11},
  {&(_tg__ZTV8S19093C6__A1__9S19093C15__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C7__A1__9S19093C13[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__A1__9S19093C13[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__A1__9S19093C13[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A1__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__A1__9S19093C13[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__A1__9S19093C13[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19093C13[];
extern  VTBL_ENTRY _ZTV9S19093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C13[];
Class_Descriptor cd_S19093C13 = {  "S19093C13", // class name
  bases_S19093C13, 13,
  &(vtc_S19093C13[0]), // expected_vtbl_contents
  &(vtt_S19093C13[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI9S19093C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19093C13),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19093C13),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C10  : S19093C11 , virtual S19093C13 , S19093C7 {
  ::S19093C11 s19093c10f0[9];
  int s19093c10f1;
  short s19093c10f2:16;
  ::S19093C8 s19093c10f3;
  int s19093c10f4;
  short s19093c10f5;
  void *s19093c10f6;
  __tsi64 s19093c10f7;
  ::S19093C4 s19093c10f8;
  ~S19093C10(); // tgen
  S19093C10(); // tgen
};
//SIG(-1 S19093C10) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ VBC4 BC6{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 v3 FL[8] Fp[7] Fs} v4 FL FC5 Fs Fc Fi[2] Fp FC7{} Fi FL} VBC8{ VBC9{ VBC6 BC10{ BC4 VBC6 VBC5 BC3 v5 v6 FU11{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC12{ VBC5 VBC10 BC3 v7 Fp Fs[2] FD[2] Fc FC5 FD FC3} v8 Fi Fc Fc:1} vd FC9 Fs:5 Fl} BC10 FC2[9] Fi Fs:16 FC3 Fi Fs Fp FL FC5}


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

static void Test_S19093C10()
{
  extern Class_Descriptor cd_S19093C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(715,2150)];
    init_test(&cd_S19093C10, buf);
    S19093C10 *dp, &lv = *(dp=new (buf) S19093C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11424,8596), "sizeof(S19093C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C10)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C11*), ABISELECT(7840,5976), "S19093C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(7840,5976), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(7840,5976), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(7840,5976), "S19093C10");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C15*), ABISELECT(7840,5976), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(7840,5976), "S19093C10");
    check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(7856,5980), "S19093C10");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C11*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C14*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(7856,5980), "S19093C10");
    check_base_class_offset(lv, (S19093C4*)(S19093C15*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C15*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(7856,5980), "S19093C10");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C11*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C14*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C14*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C15*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(8032,6120), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(8032,6120), "S19093C10");
    check_base_class_offset(lv, (S19093C8*)(S19093C11*), 0, "S19093C10");
    check_base_class_offset(lv, (S19093C11*), 0, "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C14*), ABISELECT(10132,7660), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(10000,7560), "S19093C10");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C14*), ABISELECT(10000,7560), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(11300,8512), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(11168,8412), "S19093C10");
    check_base_class_offset(lv, (S19093C7*)(S19093C15*), ABISELECT(11168,8412), "S19093C10");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C15*), ABISELECT(10272,7752), "S19093C10");
    check_base_class_offset(lv, (S19093C15*)(S19093C14*), ABISELECT(10272,7752), "S19093C10");
    check_base_class_offset(lv, (S19093C14*)(S19093C13*), ABISELECT(10000,7560), "S19093C10");
    check_base_class_offset(lv, (S19093C13*), ABISELECT(8192,6244), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(508,384), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(376,284), "S19093C10");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*), ABISELECT(376,284), "S19093C10");
    check_field_offset(lv, s19093c10f0, ABISELECT(640,468), "S19093C10.s19093c10f0");
    check_field_offset(lv, s19093c10f1, ABISELECT(7120,5436), "S19093C10.s19093c10f1");
    set_bf_and_test(lv, s19093c10f2, ABISELECT(7124,5440), 0, 16, 1, "S19093C10");
    set_bf_and_test(lv, s19093c10f2, ABISELECT(7124,5440), 0, 16, hide_sll(1LL<<15), "S19093C10");
    check_field_offset(lv, s19093c10f3, ABISELECT(7136,5444), "S19093C10.s19093c10f3");
    check_field_offset(lv, s19093c10f4, ABISELECT(7616,5812), "S19093C10.s19093c10f4");
    check_field_offset(lv, s19093c10f5, ABISELECT(7620,5816), "S19093C10.s19093c10f5");
    check_field_offset(lv, s19093c10f6, ABISELECT(7624,5820), "S19093C10.s19093c10f6");
    check_field_offset(lv, s19093c10f7, ABISELECT(7632,5824), "S19093C10.s19093c10f7");
    check_field_offset(lv, s19093c10f8, ABISELECT(7648,5832), "S19093C10.s19093c10f8");
    test_class_info(&lv, &cd_S19093C10);
    dp->~S19093C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C10(Test_S19093C10, "S19093C10", ABISELECT(11424,8596));

#else // __cplusplus

extern void _ZN9S19093C10C1Ev();
extern void _ZN9S19093C10D1Ev();
Name_Map name_map_S19093C10[] = {
  NSPAIR(_ZN9S19093C10C1Ev),
  NSPAIR(_ZN9S19093C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C11;
extern VTBL_ENTRY _ZTI9S19093C11[];
extern  VTBL_ENTRY _ZTV9S19093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C15;
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
extern Class_Descriptor cd_S19093C14;
extern VTBL_ENTRY _ZTI9S19093C14[];
extern  VTBL_ENTRY _ZTV9S19093C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C14[];
extern Class_Descriptor cd_S19093C13;
extern VTBL_ENTRY _ZTI9S19093C13[];
extern  VTBL_ENTRY _ZTV9S19093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
static Base_Class bases_S19093C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(7840,5976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C6,    ABISELECT(7856,5980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C4,    ABISELECT(7856,5980), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19093C6,    ABISELECT(8032,6120), //bcp->offset
    28, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19093C11,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(10132,7660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(10000,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(10000,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(11300,8512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C8,    ABISELECT(11168,8412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(11168,8412), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(10272,7752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19093C15,    ABISELECT(10272,7752), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19093C14,    ABISELECT(10000,7560), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19093C13,    ABISELECT(8192,6244), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(508,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
    18, //immediately_derived
  0, 0},
  {&cd_S19093C8,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(376,284), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19093C10[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void _ZN9S19093C10D1Ev();
extern void _ZN9S19093C10D0Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev)();
extern void ABISELECT(_ZThn8192_N9S19093C10D1Ev,_ZThn6244_N9S19093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev)();
extern void ABISELECT(_ZThn8192_N9S19093C10D0Ev,_ZThn6244_N9S19093C10D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY vtc_S19093C10[] = {
  ABISELECT(11168,8412),
  ABISELECT(10272,7752),
  ABISELECT(10000,7560),
  ABISELECT(8192,6244),
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D0Ev,
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  ABISELECT(-8192,-6244),
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  ABISELECT(-8192,-6244),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-10000,-7560),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-10272,-7752),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-11168,-8412),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern VTBL_ENTRY _ZTV9S19093C10[];
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C11__9S19093C10[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C11__9S19093C10[] = {
  ABISELECT(8032,6120),
  ABISELECT(7856,5980),
  ABISELECT(7840,5976),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C11__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C11__9S19093C10[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C11__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7856,-5980),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C11__9S19093C10[] = {
  0,
  0,
  ABISELECT(-8032,-6120),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A__9S19093C10[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__A4__9S19093C10[] = {
  ABISELECT(7656,5836),
  ABISELECT(7480,5696),
  ABISELECT(7464,5692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__A4__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A4__9S19093C10[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__A__9S19093C10[] = {
  0,
  0,
  ABISELECT(-7656,-5836),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__A__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7480,-5696),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C10[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN9S19093C13D1Ev();
extern void _ZN9S19093C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C13__9S19093C10[] = {
  ABISELECT(2976,2168),
  ABISELECT(2080,1508),
  ABISELECT(-352,-268),
  ABISELECT(-336,-264),
  ABISELECT(-160,-124),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN9S19093C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C13D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C13__9S19093C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C13__9S19093C10[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C13__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C13__9S19093C10[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C13__9S19093C10[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-2976,-2168),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C10[] = {
  ABISELECT(1168,852),
  ABISELECT(272,192),
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C14__9S19093C10[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C14__A1__9S19093C10[] = {
  ABISELECT(-1968,-1440),
  ABISELECT(-2144,-1580),
  ABISELECT(-2160,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A1__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A1__9S19093C10[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C14__9S19093C10[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C14__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C14__9S19093C10[] = {
  0,
  0,
  ABISELECT(1968,1440),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C14__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2144,1580),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C14__9S19093C10[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C14__9S19093C10[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-1168,-852),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C10[] = {
  ABISELECT(896,660),
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C15__A3__9S19093C10[] = {
  ABISELECT(-2240,-1632),
  ABISELECT(-2416,-1772),
  ABISELECT(-2432,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C15__A3__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__9S19093C10[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(2416,1772),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15__9S19093C10[] = {
  0,
  0,
  0,
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C15__9S19093C10[] = {
  0,
  0,
  ABISELECT(2240,1632),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C10[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__A2__9S19093C10[] = {
  ABISELECT(-3136,-2292),
  ABISELECT(-3312,-2432),
  ABISELECT(-3328,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__A2__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A2__9S19093C10[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__A1__9S19093C10[] = {
  0,
  0,
  ABISELECT(3136,2292),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__A1__9S19093C10[] = {
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(3312,2432),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C10[] = {
  {&(_ZTV9S19093C10[9]),  9,81},
  {&(_tg__ZTV9S19093C11__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C89S19093C11__9S19093C10[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C11__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C11__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C11__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C11__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C7__A__9S19093C10[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__A4__9S19093C10[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__A4__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A4__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__A__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__A__9S19093C10[5]),  5,7},
  {&(_ZTV9S19093C10[26]),  26,81},
  {&(_ZTV9S19093C10[32]),  32,81},
  {&(_ZTV9S19093C10[43]),  43,81},
  {&(_ZTV9S19093C10[56]),  56,81},
  {&(_ZTV9S19093C10[68]),  68,81},
  {&(_ZTV9S19093C10[78]),  78,81},
  {&(_ZTV9S19093C10[18]),  18,81},
  {&(_tg__ZTV8S19093C4__9S19093C10[3]),  3,5},
  {&(_tg__ZTV9S19093C13__9S19093C10[8]),  8,10},
  {&(_tg__ZTV9S19093C14__9S19093C13__9S19093C10[11]),  11,15},
  {&(_tg__ZTV8S19093C6__9S19093C13__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C13__9S19093C10[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C13__9S19093C10[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C13__9S19093C10[8]),  8,11},
  {&(_tg__ZTV9S19093C14__9S19093C10[7]),  7,11},
  {&(_tg__ZTV8S19093C79S19093C14__9S19093C10[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C14__A1__9S19093C10[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A1__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A1__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C14__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C14__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__9S19093C14__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C14__9S19093C10[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C14__9S19093C10[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C14__9S19093C10[8]),  8,11},
  {&(_tg__ZTV9S19093C15__9S19093C10[6]),  6,8},
  {&(_tg__ZTV8S19093C89S19093C15__A3__9S19093C10[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C15__A3__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C15__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C7__9S19093C15__9S19093C10[8]),  8,11},
  {&(_tg__ZTV8S19093C6__A1__9S19093C15__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C7__A1__9S19093C10[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__A2__9S19093C10[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__A2__9S19093C10[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__A2__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__A1__9S19093C10[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__A1__9S19093C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19093C10[];
extern  VTBL_ENTRY _ZTV9S19093C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C10[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S19093C10D0Ev,_ZThn6244_N9S19093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8192_N9S19093C10D1Ev,_ZThn6244_N9S19093C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19093C10 = {  "S19093C10", // class name
  bases_S19093C10, 19,
  &(vtc_S19093C10[0]), // expected_vtbl_contents
  &(vtt_S19093C10[0]), // expected_vtt_contents
  ABISELECT(11424,8596), // object size
  NSPAIRA(_ZTI9S19093C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19093C10),81, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19093C10),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C3  : S19093C4 , virtual S19093C6 , virtual S19093C7 , S1538C9_nt , virtual S19093C10 {
  int s19093c3f0;
  void *s19093c3f1;
  char s19093c3f2;
  unsigned int s19093c3f3:1;
  void *s19093c3f4;
  ::S19093C10 s19093c3f5;
  ::S1538C9_nt s19093c3f6[6];
  void *s19093c3f7;
  ::S19093C13 s19093c3f8;
  int s19093c3f9:5;
  __tsi64 s19093c3f10;
  virtual  ~S19093C3(); // _ZN8S19093C3D2Ev
  virtual void  v10(); // _ZN8S19093C33v10Ev
  S19093C3(); // tgen
};
//SIG(-1 S19093C3) C1{ BC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC3 VBC8{ BC9{ BC6 v7 FL FC2 Fs Fc Fi Fi Fp FC10{} Fi FL} VBC11{ VBC12{ VBC4 BC5 VBC13{ VBC2 VBC5 BC6 v8 Fp Fs[2] FD[2] Fc FC2 FD FC6} v9 Fi Fc Fc:1} vd FC12 Fs:5 Fl} BC5 FC9[9] Fi Fs:16 FC6 Fi Fs Fp FL FC2} vd v1 Fi Fp Fc Fi:1 Fp FC8 FC3[6] Fp FC11 Fi:5 FL}


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

static void Test_S19093C3()
{
  extern Class_Descriptor cd_S19093C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1669,5004)];
    init_test(&cd_S19093C3, buf);
    S19093C3 *dp, &lv = *(dp=new (buf) S19093C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26688,20012), "sizeof(S19093C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C3)");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(15264,11416), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(15264,11416), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(15264,11416), "S19093C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15264,11416), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(15264,11416), "S19093C3");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C15*), ABISELECT(15264,11416), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(15264,11416), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*), 0, "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C4*), 0, "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C14*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C14*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C15*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C10*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(15280,11420), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(15572,11644), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(15696,11728), "S19093C3");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C14*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(15696,11728), "S19093C3");
    check_base_class_offset(lv, (S19093C4*)(S19093C15*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C15*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C10*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(15696,11728), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(15440,11544), "S19093C3");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*), ABISELECT(15440,11544), "S19093C3");
    check_base_class_offset(lv, (S19093C7*)(S19093C15*), ABISELECT(15440,11544), "S19093C3");
    /*is_ambiguous_... S19093C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S19093C3");
    check_base_class_offset(lv, (S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15872,11868), "S19093C3");
    check_base_class_offset(lv, (S19093C11*)(S19093C10*), ABISELECT(15872,11868), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C14*), ABISELECT(25652,19260), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(25520,19160), "S19093C3");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C14*), ABISELECT(25520,19160), "S19093C3");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C15*), ABISELECT(25792,19352), "S19093C3");
    check_base_class_offset(lv, (S19093C15*)(S19093C14*), ABISELECT(25792,19352), "S19093C3");
    check_base_class_offset(lv, (S19093C14*)(S19093C13*), ABISELECT(25520,19160), "S19093C3");
    check_base_class_offset(lv, (S19093C13*)(S19093C10*), ABISELECT(23712,17844), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C10*), ABISELECT(16380,12252), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(16248,12152), "S19093C3");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C10*), ABISELECT(16248,12152), "S19093C3");
    check_base_class_offset(lv, (S19093C10*), ABISELECT(15872,11868), "S19093C3");
    check_field_offset(lv, s19093c3f0, ABISELECT(180,144), "S19093C3.s19093c3f0");
    check_field_offset(lv, s19093c3f1, ABISELECT(184,148), "S19093C3.s19093c3f1");
    check_field_offset(lv, s19093c3f2, ABISELECT(192,152), "S19093C3.s19093c3f2");
    set_bf_and_test(lv, s19093c3f3, ABISELECT(193,153), 0, 1, 1, "S19093C3");
    check_field_offset(lv, s19093c3f4, ABISELECT(200,156), "S19093C3.s19093c3f4");
    check_field_offset(lv, s19093c3f5, ABISELECT(208,160), "S19093C3.s19093c3f5");
    check_field_offset(lv, s19093c3f6, ABISELECT(11632,8756), "S19093C3.s19093c3f6");
    check_field_offset(lv, s19093c3f7, ABISELECT(11656,8780), "S19093C3.s19093c3f7");
    check_field_offset(lv, s19093c3f8, ABISELECT(11664,8784), "S19093C3.s19093c3f8");
    set_bf_and_test(lv, s19093c3f9, ABISELECT(15248,11404), 0, 5, 1, "S19093C3");
    set_bf_and_test(lv, s19093c3f9, ABISELECT(15248,11404), 0, 5, hide_sll(1LL<<4), "S19093C3");
    check_field_offset(lv, s19093c3f10, ABISELECT(15256,11408), "S19093C3.s19093c3f10");
    test_class_info(&lv, &cd_S19093C3);
    dp->~S19093C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C3(Test_S19093C3, "S19093C3", ABISELECT(26688,20012));

#else // __cplusplus

extern void _ZN8S19093C3C1Ev();
extern void _ZN8S19093C3D2Ev();
Name_Map name_map_S19093C3[] = {
  NSPAIR(_ZN8S19093C3C1Ev),
  NSPAIR(_ZN8S19093C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C11;
extern VTBL_ENTRY _ZTI9S19093C11[];
extern  VTBL_ENTRY _ZTV9S19093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C15;
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
extern Class_Descriptor cd_S19093C14;
extern VTBL_ENTRY _ZTI9S19093C14[];
extern  VTBL_ENTRY _ZTV9S19093C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C14[];
extern Class_Descriptor cd_S19093C13;
extern VTBL_ENTRY _ZTI9S19093C13[];
extern  VTBL_ENTRY _ZTV9S19093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C10;
extern VTBL_ENTRY _ZTI9S19093C10[];
extern  VTBL_ENTRY _ZTV9S19093C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C10[];
static Base_Class bases_S19093C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15264,11416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19093C4,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19093C6,    ABISELECT(15280,11420), //bcp->offset
    15, //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
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(15572,11644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C6,    ABISELECT(15696,11728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C4,    ABISELECT(15696,11728), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(15440,11544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(15440,11544), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19093C8,    ABISELECT(15872,11868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19093C11,    ABISELECT(15872,11868), //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25652,19260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(25520,19160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(25520,19160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19093C8,    ABISELECT(25792,19352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19093C15,    ABISELECT(25792,19352), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19093C14,    ABISELECT(25520,19160), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19093C13,    ABISELECT(23712,17844), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16380,12252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(16248,12152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(16248,12152), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19093C10,    ABISELECT(15872,11868), //bcp->offset
    39, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19093C3[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C3D1Ev();
extern void _ZN8S19093C3D0Ev();
extern void _ZN8S19093C33v10Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev)();
extern void ABISELECT(_ZThn15872_N8S19093C3D1Ev,_ZThn11868_N8S19093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev)();
extern void ABISELECT(_ZThn15872_N8S19093C3D0Ev,_ZThn11868_N8S19093C3D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev)();
extern void ABISELECT(_ZThn23712_N8S19093C3D1Ev,_ZThn17844_N8S19093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev)();
extern void ABISELECT(_ZThn23712_N8S19093C3D0Ev,_ZThn17844_N8S19093C3D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY vtc_S19093C3[] = {
  ABISELECT(25792,19352),
  ABISELECT(25520,19160),
  ABISELECT(23712,17844),
  ABISELECT(15872,11868),
  ABISELECT(15696,11728),
  ABISELECT(15440,11544),
  ABISELECT(15280,11420),
  ABISELECT(15264,11416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
  0,
  0,
  ABISELECT(-15280,-11420),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15440,-11544),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15696,-11728),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15872,-11868),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15872,-11868),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16248,-12152),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  ABISELECT(-23712,-17844),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23712,-17844),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25520,-19160),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25792,-19352),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern VTBL_ENTRY _ZTV8S19093C3[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A__8S19093C3[] = {
  ABISELECT(15264,11416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C3[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__8S19093C3[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__8S19093C3[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__8S19093C3[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C3[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void _ZN9S19093C10D1Ev();
extern void _ZN9S19093C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C3[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C119S19093C10__8S19093C3[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C119S19093C10__A1__8S19093C3[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C119S19093C10__A1__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C119S19093C10__A1__8S19093C3[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C119S19093C10__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C119S19093C10__8S19093C3[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C3[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C10__A4__8S19093C3[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C10__A4__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C10__A4__8S19093C3[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C10__A2__8S19093C3[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C10__A2__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C10__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C10__8S19093C3[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev)();
extern void ABISELECT(_ZThn7840_N9S19093C10D1Ev,_ZThn5976_N9S19093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev)();
extern void ABISELECT(_ZThn7840_N9S19093C10D0Ev,_ZThn5976_N9S19093C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C13__9S19093C10__8S19093C3[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C10__8S19093C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C10__8S19093C3[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-9920,-7484),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C10__8S19093C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A__9S19093C10__8S19093C3[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN9S19093C13D1Ev();
extern void _ZN9S19093C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C3[] = {
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN9S19093C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C13D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C13__8S19093C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C13__8S19093C3[] = {
  0,
  0,
  ABISELECT(8432,6424),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C13__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6116),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C13__8S19093C3[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C13__8S19093C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6300),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C3[] = {
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C14__A1__8S19093C3[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C14__A2__8S19093C3[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A2__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A2__8S19093C3[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C14__A1__8S19093C3[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C14__A1__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C14__8S19093C3[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C14__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C14__8S19093C3[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C14__8S19093C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7616),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C3[] = {
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C15__A3__8S19093C3[] = {
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C15__A3__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__8S19093C3[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15__8S19093C3[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15__8S19093C3[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7808),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C15__8S19093C3[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C3[] = {
  {&(_ZTV8S19093C3[10]),  10,101},
  {&(_tg__ZTV8S19093C4__A__8S19093C3[3]),  3,5},
  {&(_ZTV8S19093C3[19]),  19,101},
  {&(_ZTV8S19093C3[29]),  29,101},
  {&(_ZTV8S19093C3[37]),  37,101},
  {&(_ZTV8S19093C3[53]),  53,101},
  {&(_ZTV8S19093C3[74]),  74,101},
  {&(_ZTV8S19093C3[87]),  87,101},
  {&(_ZTV8S19093C3[99]),  99,101},
  {&(_ZTV8S19093C3[62]),  62,101},
  {&(_tg__ZTV8S19093C7__8S19093C3[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__8S19093C3[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C4__A1__8S19093C3[3]),  3,5},
  {&(_tg__ZTV9S19093C10__8S19093C3[9]),  9,13},
  {&(_tg__ZTV9S19093C119S19093C10__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C89S19093C119S19093C10__A1__8S19093C3[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C119S19093C10__A1__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C119S19093C10__A1__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C119S19093C10__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C119S19093C10__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C3[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C10__A4__8S19093C3[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C10__A4__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C10__A4__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C10__A2__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C10__A2__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C4__9S19093C10__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C10__8S19093C3[4]),  4,6},
  {&(_tg__ZTV9S19093C13__9S19093C10__8S19093C3[9]),  9,11},
  {&(_tg__ZTV9S19093C14__9S19093C10__8S19093C3[11]),  11,15},
  {&(_tg__ZTV9S19093C15__9S19093C10__8S19093C3[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C10__8S19093C3[8]),  8,11},
  {&(_tg__ZTV8S19093C7__A__9S19093C10__8S19093C3[5]),  5,8},
  {&(_tg__ZTV9S19093C13__8S19093C3[8]),  8,10},
  {&(_tg__ZTV9S19093C14__9S19093C13__8S19093C3[11]),  11,15},
  {&(_tg__ZTV8S19093C6__9S19093C13__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C13__8S19093C3[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C13__8S19093C3[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C13__8S19093C3[8]),  8,11},
  {&(_tg__ZTV9S19093C14__8S19093C3[7]),  7,11},
  {&(_tg__ZTV8S19093C79S19093C14__A1__8S19093C3[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C14__A2__8S19093C3[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A2__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A2__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C14__A1__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C14__A1__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__9S19093C14__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C14__8S19093C3[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C14__8S19093C3[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C14__8S19093C3[8]),  8,11},
  {&(_tg__ZTV9S19093C15__8S19093C3[6]),  6,8},
  {&(_tg__ZTV8S19093C89S19093C15__A3__8S19093C3[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C15__A3__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__8S19093C3[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C15__8S19093C3[5]),  5,7},
  {&(_tg__ZTV8S19093C7__9S19093C15__8S19093C3[8]),  8,11},
  {&(_tg__ZTV8S19093C6__A1__9S19093C15__8S19093C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19093C3[];
extern  VTBL_ENTRY _ZTV8S19093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C3[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19093C10D0Ev,_ZThn5976_N9S19093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19093C10D1Ev,_ZThn5976_N9S19093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S19093C3D0Ev,_ZThn17844_N8S19093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S19093C3D1Ev,_ZThn17844_N8S19093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S19093C3D0Ev,_ZThn11868_N8S19093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15872_N8S19093C3D1Ev,_ZThn11868_N8S19093C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19093C3 = {  "S19093C3", // class name
  bases_S19093C3, 23,
  &(vtc_S19093C3[0]), // expected_vtbl_contents
  &(vtt_S19093C3[0]), // expected_vtt_contents
  ABISELECT(26688,20012), // object size
  NSPAIRA(_ZTI8S19093C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19093C3),101, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19093C3),61, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C2  : S19093C3 {
  void *s19093c2f0;
  __tsi64 s19093c2f1;
  void *s19093c2f2;
  void *s19093c2f3;
  ::S7223C9_nt s19093c2f4;
  __tsi64 s19093c2f5;
  long double s19093c2f6;
  virtual void  v11(); // _ZN8S19093C23v11Ev
  ~S19093C2(); // tgen
  S19093C2(); // tgen
};
//SIG(-1 S19093C2) C1{ BC2{ BC3{ VBC4{ m Fi} BC5{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5 VBC6{ BC4 VBC5 VBC3 BC7{ VBC4 VBC3 VBC5 v4 FL[8] Fp[7] Fs} v5 v6 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC4 VBC9{ BC10{ BC7 v7 FL FC3 Fs Fc Fi Fi Fp FC11{} Fi FL} VBC12{ VBC13{ VBC5 BC6 VBC14{ VBC3 VBC6 BC7 v8 Fp Fs[2] FD[2] Fc FC3 FD FC7} v9 Fi Fc Fc:1} vd FC13 Fs:5 Fl} BC6 FC10[9] Fi Fs:16 FC7 Fi Fs Fp FL FC3} vd v10 Fi Fp Fc Fi:1 Fp FC9 FC4[6] Fp FC12 Fi:5 FL} v1 Fp FL Fp Fp FC11 FL FD}


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

static void Test_S19093C2()
{
  extern Class_Descriptor cd_S19093C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1673,5015)];
    init_test(&cd_S19093C2, buf);
    S19093C2 *dp, &lv = *(dp=new (buf) S19093C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(26752,20056), "sizeof(S19093C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C2)");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*)(S19093C3*), ABISELECT(15328,11460), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(15328,11460), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(15328,11460), "S19093C2");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15328,11460), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(15328,11460), "S19093C2");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C15*), ABISELECT(15328,11460), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(15328,11460), "S19093C2");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*)(S19093C3*), 0, "S19093C2");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C3*), 0, "S19093C2");
    /*is_ambiguous_... S19093C3::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C3*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C14*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C14*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C15*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C10*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(15344,11464), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(15636,11688), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(15760,11772), "S19093C2");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C14*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(15760,11772), "S19093C2");
    check_base_class_offset(lv, (S19093C4*)(S19093C15*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C15*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C10*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(15760,11772), "S19093C2");
    /*is_ambiguous_... S19093C2::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(15504,11588), "S19093C2");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C3*), ABISELECT(15504,11588), "S19093C2");
    check_base_class_offset(lv, (S19093C7*)(S19093C15*), ABISELECT(15504,11588), "S19093C2");
    /*is_ambiguous_... S19093C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C3*), ABISELECT(176,140), "S19093C2");
    check_base_class_offset(lv, (S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(15936,11912), "S19093C2");
    check_base_class_offset(lv, (S19093C11*)(S19093C10*), ABISELECT(15936,11912), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C14*), ABISELECT(25716,19304), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(25584,19204), "S19093C2");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C14*), ABISELECT(25584,19204), "S19093C2");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C15*), ABISELECT(25856,19396), "S19093C2");
    check_base_class_offset(lv, (S19093C15*)(S19093C14*), ABISELECT(25856,19396), "S19093C2");
    check_base_class_offset(lv, (S19093C14*)(S19093C13*), ABISELECT(25584,19204), "S19093C2");
    check_base_class_offset(lv, (S19093C13*)(S19093C10*), ABISELECT(23776,17888), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C10*), ABISELECT(16444,12296), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(16312,12196), "S19093C2");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C10*), ABISELECT(16312,12196), "S19093C2");
    check_base_class_offset(lv, (S19093C10*)(S19093C3*), ABISELECT(15936,11912), "S19093C2");
    check_base_class_offset(lv, (S19093C3*), 0, "S19093C2");
    check_field_offset(lv, s19093c2f0, ABISELECT(15264,11416), "S19093C2.s19093c2f0");
    check_field_offset(lv, s19093c2f1, ABISELECT(15272,11420), "S19093C2.s19093c2f1");
    check_field_offset(lv, s19093c2f2, ABISELECT(15280,11428), "S19093C2.s19093c2f2");
    check_field_offset(lv, s19093c2f3, ABISELECT(15288,11432), "S19093C2.s19093c2f3");
    check_field_offset(lv, s19093c2f4, ABISELECT(15296,11436), "S19093C2.s19093c2f4");
    check_field_offset(lv, s19093c2f5, ABISELECT(15304,11440), "S19093C2.s19093c2f5");
    check_field_offset(lv, s19093c2f6, ABISELECT(15312,11448), "S19093C2.s19093c2f6");
    test_class_info(&lv, &cd_S19093C2);
    dp->~S19093C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C2(Test_S19093C2, "S19093C2", ABISELECT(26752,20056));

#else // __cplusplus

extern void _ZN8S19093C2C1Ev();
extern void _ZN8S19093C2D1Ev();
Name_Map name_map_S19093C2[] = {
  NSPAIR(_ZN8S19093C2C1Ev),
  NSPAIR(_ZN8S19093C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C11;
extern VTBL_ENTRY _ZTI9S19093C11[];
extern  VTBL_ENTRY _ZTV9S19093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C15;
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
extern Class_Descriptor cd_S19093C14;
extern VTBL_ENTRY _ZTI9S19093C14[];
extern  VTBL_ENTRY _ZTV9S19093C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C14[];
extern Class_Descriptor cd_S19093C13;
extern VTBL_ENTRY _ZTI9S19093C13[];
extern  VTBL_ENTRY _ZTV9S19093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C10;
extern VTBL_ENTRY _ZTI9S19093C10[];
extern  VTBL_ENTRY _ZTV9S19093C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C10[];
extern Class_Descriptor cd_S19093C3;
extern VTBL_ENTRY _ZTI8S19093C3[];
extern  VTBL_ENTRY _ZTV8S19093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C3[];
static Base_Class bases_S19093C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(15328,11460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19093C4,    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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19093C6,    ABISELECT(15344,11464), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(15636,11688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C6,    ABISELECT(15760,11772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C4,    ABISELECT(15760,11772), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(15504,11588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(15504,11588), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(176,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
    23, //immediately_derived
  0, 0},
  {&cd_S19093C8,    ABISELECT(15936,11912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19093C11,    ABISELECT(15936,11912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(25716,19304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(25584,19204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(25584,19204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19093C8,    ABISELECT(25856,19396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19093C15,    ABISELECT(25856,19396), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19093C14,    ABISELECT(25584,19204), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19093C13,    ABISELECT(23776,17888), //bcp->offset
    66, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(16444,12296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(16312,12196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(16312,12196), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19093C10,    ABISELECT(15936,11912), //bcp->offset
    40, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19093C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19093C2[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C2D1Ev();
extern void _ZN8S19093C2D0Ev();
extern void _ZN8S19093C33v10Ev();
extern void _ZN8S19093C23v11Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C2D1Ev,_ZTv0_n48_N8S19093C2D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C2D1Ev,_ZThn11912_N8S19093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19093C2D0Ev,_ZTv0_n48_N8S19093C2D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C2D0Ev,_ZThn11912_N8S19093C2D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S19093C2D1Ev,_ZTv0_n36_N8S19093C2D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C2D1Ev,_ZThn17888_N8S19093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19093C2D0Ev,_ZTv0_n36_N8S19093C2D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C2D0Ev,_ZThn17888_N8S19093C2D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY vtc_S19093C2[] = {
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19093C23v11Ev,
  0,
  0,
  ABISELECT(-15344,-11464),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11588),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11772),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11912),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11912),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C2D1Ev,_ZTv0_n48_N8S19093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C2D0Ev,_ZTv0_n48_N8S19093C2D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12196),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  ABISELECT(-23776,-17888),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17888),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C2D1Ev,_ZTv0_n36_N8S19093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C2D0Ev,_ZTv0_n36_N8S19093C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25584,-19204),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25856,-19396),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern VTBL_ENTRY _ZTV8S19093C2[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C3D1Ev();
extern void _ZN8S19093C3D0Ev();
extern void _ZN8S19093C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C3__8S19093C2[] = {
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C48S19093C3__8S19093C2[] = {
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C3__8S19093C2[] = {
  0,
  0,
  ABISELECT(-15344,-11464),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C3__8S19093C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11588),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C3__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11772),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C3D1Ev,_ZThn11912_N8S19093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C3D0Ev,_ZThn11912_N8S19093C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C3__8S19093C2[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11912),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11912),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C3D1Ev,_ZThn17888_N8S19093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C3D0Ev,_ZThn17888_N8S19093C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C3__8S19093C2[] = {
  ABISELECT(-23776,-17888),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17888),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C3__8S19093C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25584,-19204),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C3__8S19093C2[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25856,-19396),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C3__8S19093C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12196),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C2[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__8S19093C2[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__8S19093C2[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__8S19093C2[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C2[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void _ZN9S19093C10D1Ev();
extern void _ZN9S19093C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C2[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C119S19093C10__8S19093C2[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C119S19093C10__A1__8S19093C2[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C119S19093C10__A1__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C119S19093C10__A1__8S19093C2[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C119S19093C10__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C119S19093C10__8S19093C2[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C10__A4__8S19093C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C10__A4__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C10__A4__8S19093C2[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C10__A2__8S19093C2[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C10__A2__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C10__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C10__8S19093C2[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev)();
extern void ABISELECT(_ZThn7840_N9S19093C10D1Ev,_ZThn5976_N9S19093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev)();
extern void ABISELECT(_ZThn7840_N9S19093C10D0Ev,_ZThn5976_N9S19093C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C13__9S19093C10__8S19093C2[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C10__8S19093C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C10__8S19093C2[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-9920,-7484),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C10__8S19093C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A__9S19093C10__8S19093C2[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN9S19093C13D1Ev();
extern void _ZN9S19093C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C2[] = {
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN9S19093C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C13D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C13__8S19093C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C13__8S19093C2[] = {
  0,
  0,
  ABISELECT(8432,6424),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C13__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6116),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C13__8S19093C2[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C13__8S19093C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6300),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C2[] = {
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C14__A1__8S19093C2[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C14__A2__8S19093C2[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A2__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A2__8S19093C2[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C14__A1__8S19093C2[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C14__A1__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C14__8S19093C2[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C14__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C14__8S19093C2[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C14__8S19093C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7616),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C2[] = {
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C15__A3__8S19093C2[] = {
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C15__A3__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__8S19093C2[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15__8S19093C2[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15__8S19093C2[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7808),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C15__8S19093C2[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
static  VTT_ENTRY vtt_S19093C2[] = {
  {&(_ZTV8S19093C2[10]),  10,102},
  {&(_tg__ZTV8S19093C3__8S19093C2[10]),  10,15},
  {&(_tg__ZTV8S19093C48S19093C3__8S19093C2[3]),  3,5},
  {&(_tg__ZTV8S19093C6__A1__8S19093C3__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C7__8S19093C3__8S19093C2[8]),  8,11},
  {&(_tg__ZTV8S19093C4__A1__8S19093C3__8S19093C2[5]),  5,7},
  {&(_tg__ZTV9S19093C10__8S19093C3__8S19093C2[14]),  14,18},
  {&(_tg__ZTV9S19093C13__8S19093C3__8S19093C2[9]),  9,11},
  {&(_tg__ZTV9S19093C14__8S19093C3__8S19093C2[11]),  11,15},
  {&(_tg__ZTV9S19093C15__8S19093C3__8S19093C2[8]),  8,10},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C3__8S19093C2[5]),  5,8},
  {&(_ZTV8S19093C2[20]),  20,102},
  {&(_ZTV8S19093C2[30]),  30,102},
  {&(_ZTV8S19093C2[38]),  38,102},
  {&(_ZTV8S19093C2[54]),  54,102},
  {&(_ZTV8S19093C2[75]),  75,102},
  {&(_ZTV8S19093C2[88]),  88,102},
  {&(_ZTV8S19093C2[100]),  100,102},
  {&(_ZTV8S19093C2[63]),  63,102},
  {&(_tg__ZTV8S19093C7__8S19093C2[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__8S19093C2[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C4__A1__8S19093C2[3]),  3,5},
  {&(_tg__ZTV9S19093C10__8S19093C2[9]),  9,13},
  {&(_tg__ZTV9S19093C119S19093C10__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C89S19093C119S19093C10__A1__8S19093C2[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C119S19093C10__A1__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C119S19093C10__A1__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C119S19093C10__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C119S19093C10__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C2[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C10__A4__8S19093C2[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C10__A4__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C10__A4__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C10__A2__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C10__A2__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C4__9S19093C10__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C10__8S19093C2[4]),  4,6},
  {&(_tg__ZTV9S19093C13__9S19093C10__8S19093C2[9]),  9,11},
  {&(_tg__ZTV9S19093C14__9S19093C10__8S19093C2[11]),  11,15},
  {&(_tg__ZTV9S19093C15__9S19093C10__8S19093C2[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C10__8S19093C2[8]),  8,11},
  {&(_tg__ZTV8S19093C7__A__9S19093C10__8S19093C2[5]),  5,8},
  {&(_tg__ZTV9S19093C13__8S19093C2[8]),  8,10},
  {&(_tg__ZTV9S19093C14__9S19093C13__8S19093C2[11]),  11,15},
  {&(_tg__ZTV8S19093C6__9S19093C13__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C13__8S19093C2[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C13__8S19093C2[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C13__8S19093C2[8]),  8,11},
  {&(_tg__ZTV9S19093C14__8S19093C2[7]),  7,11},
  {&(_tg__ZTV8S19093C79S19093C14__A1__8S19093C2[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C14__A2__8S19093C2[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A2__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A2__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C14__A1__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C14__A1__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__9S19093C14__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C14__8S19093C2[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C14__8S19093C2[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C14__8S19093C2[8]),  8,11},
  {&(_tg__ZTV9S19093C15__8S19093C2[6]),  6,8},
  {&(_tg__ZTV8S19093C89S19093C15__A3__8S19093C2[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C15__A3__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__8S19093C2[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C15__8S19093C2[5]),  5,7},
  {&(_tg__ZTV8S19093C7__9S19093C15__8S19093C2[8]),  8,11},
  {&(_tg__ZTV8S19093C6__A1__9S19093C15__8S19093C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19093C2[];
extern  VTBL_ENTRY _ZTV8S19093C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C2[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19093C10D0Ev,_ZThn5976_N9S19093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19093C10D1Ev,_ZThn5976_N9S19093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C3D0Ev,_ZThn17888_N8S19093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C3D1Ev,_ZThn17888_N8S19093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C3D0Ev,_ZThn11912_N8S19093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C3D1Ev,_ZThn11912_N8S19093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C2D0Ev,_ZTv0_n36_N8S19093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C2D0Ev,_ZThn17888_N8S19093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C2D1Ev,_ZTv0_n36_N8S19093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C2D1Ev,_ZThn17888_N8S19093C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C2D0Ev,_ZTv0_n48_N8S19093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C2D0Ev,_ZThn11912_N8S19093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C2D1Ev,_ZTv0_n48_N8S19093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C2D1Ev,_ZThn11912_N8S19093C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19093C2 = {  "S19093C2", // class name
  bases_S19093C2, 24,
  &(vtc_S19093C2[0]), // expected_vtbl_contents
  &(vtt_S19093C2[0]), // expected_vtt_contents
  ABISELECT(26752,20056), // object size
  NSPAIRA(_ZTI8S19093C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19093C2),102, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19093C2),70, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19093C1  : virtual S19093C2 , virtual S19093C3 , S19093C6 {
  ::S20639C6 s19093c1f0;
  int s19093c1f1;
  __tsi64 s19093c1f2;
  short s19093c1f3;
  ::S19093C13 s19093c1f4;
  void *s19093c1f5;
  void *s19093c1f6;
  int s19093c1f7[9];
  virtual void  v1(); // _ZN8S19093C12v1Ev
  ~S19093C1(); // tgen
  S19093C1(); // tgen
};
//SIG(1 S19093C1) C1{ VBC2{ BC3{ BC4{ VBC5{ m Fi} BC6{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC6 VBC7{ BC5 VBC6 VBC4 BC8{ VBC5 VBC4 VBC6 v4 FL[8] Fp[7] Fs} v5 v6 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC5 VBC10{ BC11{ BC8 v7 FL FC4 Fs Fc Fi Fi Fp FC12{} Fi FL} VBC13{ VBC14{ VBC6 BC7 VBC15{ VBC4 VBC7 BC8 v8 Fp Fs[2] FD[2] Fc FC4 FD FC8} v9 Fi Fc Fc:1} vd FC14 Fs:5 Fl} BC7 FC11[9] Fi Fs:16 FC8 Fi Fs Fp FL FC4} vd v10 Fi Fp Fc Fi:1 Fp FC10 FC5[6] Fp FC13 Fi:5 FL} v11 Fp FL Fp Fp FC12 FL FD} VBC3 BC6 v1 FC16{ VBC17{ v14 v15 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC18{ VBC17 BC19{ BC5 VBC17 VBC20{ VBC5 BC17 Fi Fs[2] FL} BC21{ VBC5 VBC20 VBC17 v16 FL[8] Fp[7] Fs} v17 v18 FU9 Fi:10 Fi[9] Fi} VBC22{ VBC20 VBC19 BC21 v19 Fp Fs[2] FD[2] Fc FC20 FD FC21} v20 Fi Fc Fc:1} BC21 BC20 BC19 v12 v13 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} Fi FL Fs FC13 Fp Fp Fi[9]}


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

static void Test_S19093C1()
{
  extern Class_Descriptor cd_S19093C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3020,9025)];
    init_test(&cd_S19093C1, buf);
    S19093C1 *dp, &lv = *(dp=new (buf) S19093C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48304,36096), "sizeof(S19093C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19093C1)");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*)(S19093C3*)(S19093C2*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C4 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*), ABISELECT(21616,16084), "S19093C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C15*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C4*)(S19093C3*), ABISELECT(21616,16084), "S19093C1");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*)(S19093C3*)(S19093C2*), ABISELECT(6288,4624), "S19093C1");
    /*is_ambiguous_... S19093C3::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C3*)(S19093C2*), ABISELECT(6288,4624), "S19093C1");
    /*is_ambiguous_... S19093C3::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C3*)(S19093C2*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C8::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C14*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C14*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C15*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C7*)(S19093C10*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C3*), ABISELECT(21632,16088), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*), ABISELECT(21924,16312), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C4 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*), ABISELECT(22048,16396), "S19093C1");
    check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C14*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(22048,16396), "S19093C1");
    check_base_class_offset(lv, (S19093C4*)(S19093C15*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C15*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C7*)(S19093C10*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(22048,16396), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*), ABISELECT(21792,16212), "S19093C1");
    /*is_ambiguous_... S19093C3::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C3*)(S19093C2*), ABISELECT(21792,16212), "S19093C1");
    check_base_class_offset(lv, (S19093C7*)(S19093C15*), ABISELECT(21792,16212), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C3*), ABISELECT(21792,16212), "S19093C1");
    /*is_ambiguous_... S19093C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C3*)(S19093C2*), ABISELECT(6464,4764), "S19093C1");
    check_base_class_offset(lv, (S19093C8*)(S19093C11*)(S19093C10*), ABISELECT(22224,16536), "S19093C1");
    check_base_class_offset(lv, (S19093C11*)(S19093C10*), ABISELECT(22224,16536), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C14*), ABISELECT(32004,23928), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C14*), ABISELECT(31872,23828), "S19093C1");
    /*is_ambiguous_... S19093C14::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C14*), ABISELECT(31872,23828), "S19093C1");
    /*is_ambiguous_... S19093C15::S19093C8 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C15*), ABISELECT(32144,24020), "S19093C1");
    check_base_class_offset(lv, (S19093C15*)(S19093C14*), ABISELECT(32144,24020), "S19093C1");
    check_base_class_offset(lv, (S19093C14*)(S19093C13*), ABISELECT(31872,23828), "S19093C1");
    check_base_class_offset(lv, (S19093C13*)(S19093C10*), ABISELECT(30064,22512), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C7*)(S19093C10*), ABISELECT(22732,16920), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C8*)(S19093C7*)(S19093C10*), ABISELECT(22600,16820), "S19093C1");
    /*is_ambiguous_... S19093C10::S19093C7 */ AMB_check_base_class_offset(lv, (S19093C7*)(S19093C10*), ABISELECT(22600,16820), "S19093C1");
    check_base_class_offset(lv, (S19093C10*)(S19093C3*)(S19093C2*), ABISELECT(22224,16536), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S19093C10*)(S19093C3*), ABISELECT(22224,16536), "S19093C1");
    check_base_class_offset(lv, (S19093C3*)(S19093C2*), ABISELECT(6288,4624), "S19093C1");
    check_base_class_offset(lv, (S19093C2*), ABISELECT(6288,4624), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S19093C6*)(S19093C4*)(S19093C3*), ABISELECT(33040,24680), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S19093C4*)(S19093C3*), ABISELECT(33040,24680), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19093C3*), ABISELECT(33216,24820), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C3 */ AMB_check_base_class_offset(lv, (S19093C3*), ABISELECT(33040,24680), "S19093C1");
    /*is_ambiguous_... S19093C1::S19093C6 */ AMB_check_base_class_offset(lv, (S19093C6*), 0, "S19093C1");
    check_field_offset(lv, s19093c1f0, ABISELECT(160,124), "S19093C1.s19093c1f0");
    check_field_offset(lv, s19093c1f1, ABISELECT(2608,1944), "S19093C1.s19093c1f1");
    check_field_offset(lv, s19093c1f2, ABISELECT(2616,1948), "S19093C1.s19093c1f2");
    check_field_offset(lv, s19093c1f3, ABISELECT(2624,1956), "S19093C1.s19093c1f3");
    check_field_offset(lv, s19093c1f4, ABISELECT(2640,1960), "S19093C1.s19093c1f4");
    check_field_offset(lv, s19093c1f5, ABISELECT(6224,4580), "S19093C1.s19093c1f5");
    check_field_offset(lv, s19093c1f6, ABISELECT(6232,4584), "S19093C1.s19093c1f6");
    check_field_offset(lv, s19093c1f7, ABISELECT(6240,4588), "S19093C1.s19093c1f7");
    test_class_info(&lv, &cd_S19093C1);
    dp->~S19093C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19093C1(Test_S19093C1, "S19093C1", ABISELECT(48304,36096));

#else // __cplusplus

extern void _ZN8S19093C1C1Ev();
extern void _ZN8S19093C1D1Ev();
Name_Map name_map_S19093C1[] = {
  NSPAIR(_ZN8S19093C1C1Ev),
  NSPAIR(_ZN8S19093C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C11;
extern VTBL_ENTRY _ZTI9S19093C11[];
extern  VTBL_ENTRY _ZTV9S19093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C11[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C15;
extern VTBL_ENTRY _ZTI9S19093C15[];
extern  VTBL_ENTRY _ZTV9S19093C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C15[];
extern Class_Descriptor cd_S19093C14;
extern VTBL_ENTRY _ZTI9S19093C14[];
extern  VTBL_ENTRY _ZTV9S19093C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C14[];
extern Class_Descriptor cd_S19093C13;
extern VTBL_ENTRY _ZTI9S19093C13[];
extern  VTBL_ENTRY _ZTV9S19093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C13[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C8;
extern VTBL_ENTRY _ZTI8S19093C8[];
extern  VTBL_ENTRY _ZTV8S19093C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C8[];
extern Class_Descriptor cd_S19093C7;
extern VTBL_ENTRY _ZTI8S19093C7[];
extern  VTBL_ENTRY _ZTV8S19093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C7[];
extern Class_Descriptor cd_S19093C10;
extern VTBL_ENTRY _ZTI9S19093C10[];
extern  VTBL_ENTRY _ZTV9S19093C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19093C10[];
extern Class_Descriptor cd_S19093C3;
extern VTBL_ENTRY _ZTI8S19093C3[];
extern  VTBL_ENTRY _ZTV8S19093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C3[];
extern Class_Descriptor cd_S19093C2;
extern VTBL_ENTRY _ZTI8S19093C2[];
extern  VTBL_ENTRY _ZTV8S19093C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C2[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
extern Class_Descriptor cd_S19093C4;
extern VTBL_ENTRY _ZTI8S19093C4[];
extern  VTBL_ENTRY _ZTV8S19093C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19093C3;
extern VTBL_ENTRY _ZTI8S19093C3[];
extern  VTBL_ENTRY _ZTV8S19093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C3[];
extern Class_Descriptor cd_S19093C6;
extern VTBL_ENTRY _ZTI8S19093C6[];
extern  VTBL_ENTRY _ZTV8S19093C6[];
static Base_Class bases_S19093C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(21616,16084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19093C6,    ABISELECT(6288,4624), //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(6288,4624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19093C6,    ABISELECT(21632,16088), //bcp->offset
    38, //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
    7, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(21924,16312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C6,    ABISELECT(22048,16396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C4,    ABISELECT(22048,16396), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19093C8,    ABISELECT(21792,16212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(21792,16212), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(6464,4764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(22224,16536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19093C11,    ABISELECT(22224,16536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(32004,23928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(31872,23828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(31872,23828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19093C8,    ABISELECT(32144,24020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19093C15,    ABISELECT(32144,24020), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19093C14,    ABISELECT(31872,23828), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19093C13,    ABISELECT(30064,22512), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(22732,16920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C8,    ABISELECT(22600,16820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19093C7,    ABISELECT(22600,16820), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19093C10,    ABISELECT(22224,16536), //bcp->offset
    62, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19093C3,    ABISELECT(6288,4624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19093C2,    ABISELECT(6288,4624), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C6,    ABISELECT(33040,24680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S19093C4,    ABISELECT(33040,24680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(33216,24820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19093C3,    ABISELECT(33040,24680), //bcp->offset
    124, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19093C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19093C1[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C12v1Ev();
extern void _ZN8S19093C1D1Ev();
extern void _ZN8S19093C1D0Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void ABISELECT(_ZTv0_n104_N8S19093C1D1Ev,_ZTv0_n52_N8S19093C1D1Ev)();
extern void ABISELECT(_ZThn6288_N8S19093C1D1Ev,_ZThn4624_N8S19093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19093C1D0Ev,_ZTv0_n52_N8S19093C1D0Ev)();
extern void ABISELECT(_ZThn6288_N8S19093C1D0Ev,_ZThn4624_N8S19093C1D0Ev)() __attribute__((weak));
extern void _ZN8S19093C33v10Ev();
extern void _ZN8S19093C23v11Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C1D1Ev,_ZTv0_n48_N8S19093C1D1Ev)();
extern void ABISELECT(_ZThn22224_N8S19093C1D1Ev,_ZThn16536_N8S19093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19093C1D0Ev,_ZTv0_n48_N8S19093C1D0Ev)();
extern void ABISELECT(_ZThn22224_N8S19093C1D0Ev,_ZThn16536_N8S19093C1D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N8S19093C1D1Ev,_ZTv0_n36_N8S19093C1D1Ev)();
extern void ABISELECT(_ZThn30064_N8S19093C1D1Ev,_ZThn22512_N8S19093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19093C1D0Ev,_ZTv0_n36_N8S19093C1D0Ev)();
extern void ABISELECT(_ZThn30064_N8S19093C1D0Ev,_ZThn22512_N8S19093C1D0Ev)() __attribute__((weak));
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void ABISELECT(_ZTv0_n104_N8S19093C1D1Ev,_ZTv0_n52_N8S19093C1D1Ev)();
extern void ABISELECT(_ZThn33040_N8S19093C1D1Ev,_ZThn24680_N8S19093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19093C1D0Ev,_ZTv0_n52_N8S19093C1D0Ev)();
extern void ABISELECT(_ZThn33040_N8S19093C1D0Ev,_ZThn24680_N8S19093C1D0Ev)() __attribute__((weak));
extern void _ZN8S19093C33v10Ev();
static  VTBL_ENTRY vtc_S19093C1[] = {
  ABISELECT(33040,24680),
  ABISELECT(32144,24020),
  ABISELECT(31872,23828),
  ABISELECT(30064,22512),
  ABISELECT(22224,16536),
  ABISELECT(22048,16396),
  ABISELECT(21792,16212),
  ABISELECT(21632,16088),
  ABISELECT(21616,16084),
  ABISELECT(6288,4624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19093C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C1D0Ev,
  0,
  0,
  ABISELECT(-6288,-4624),
  0,
  0,
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  ABISELECT(-6288,-4624),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19093C1D1Ev,_ZTv0_n52_N8S19093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19093C1D0Ev,_ZTv0_n52_N8S19093C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19093C23v11Ev,
  0,
  0,
  ABISELECT(-21632,-16088),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-21792,-16212),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-22048,-16396),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-22224,-16536),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-22224,-16536),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C1D1Ev,_ZTv0_n48_N8S19093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C1D0Ev,_ZTv0_n48_N8S19093C1D0Ev),
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-22600,-16820),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  ABISELECT(-30064,-22512),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-30064,-22512),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C1D1Ev,_ZTv0_n36_N8S19093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C1D0Ev,_ZTv0_n36_N8S19093C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-31872,-23828),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-32144,-24020),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
  0,
  ABISELECT(-33040,-24680),
  0,
  0,
  ABISELECT(-896,-660),
  ABISELECT(-1168,-852),
  ABISELECT(-2976,-2168),
  ABISELECT(-10816,-8144),
  ABISELECT(-10992,-8284),
  ABISELECT(-11248,-8468),
  ABISELECT(-11408,-8592),
  ABISELECT(-11424,-8596),
  ABISELECT(-33040,-24680),
  (VTBL_ENTRY)&(_ZTI8S19093C1[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19093C1D1Ev,_ZTv0_n52_N8S19093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19093C1D0Ev,_ZTv0_n52_N8S19093C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S19093C1[];
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C2D1Ev();
extern void _ZN8S19093C2D0Ev();
extern void _ZN8S19093C33v10Ev();
extern void _ZN8S19093C23v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C2__8S19093C1[] = {
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19093C23v11Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C3D1Ev();
extern void _ZN8S19093C3D0Ev();
extern void _ZN8S19093C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C38S19093C2__8S19093C1[] = {
  ABISELECT(25856,19396),
  ABISELECT(25584,19204),
  ABISELECT(23776,17888),
  ABISELECT(15936,11912),
  ABISELECT(15760,11772),
  ABISELECT(15504,11588),
  ABISELECT(15344,11464),
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C48S19093C38S19093C2__8S19093C1[] = {
  ABISELECT(15328,11460),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C38S19093C2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-15344,-11464),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C38S19093C2__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11588),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C38S19093C2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11772),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C3D1Ev,_ZThn11912_N8S19093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C3D0Ev,_ZThn11912_N8S19093C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C38S19093C2__8S19093C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11912),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11912),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C3D1Ev,_ZThn17888_N8S19093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C3D0Ev,_ZThn17888_N8S19093C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C38S19093C2__8S19093C1[] = {
  ABISELECT(-23776,-17888),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17888),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C38S19093C2__8S19093C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25584,-19204),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C38S19093C2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25856,-19396),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C38S19093C2__8S19093C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12196),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-15344,-11464),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C2__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(-15504,-11588),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-15760,-11772),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C2D1Ev,_ZTv0_n48_N8S19093C2D1Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C2D1Ev,_ZThn11912_N8S19093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19093C2D0Ev,_ZTv0_n48_N8S19093C2D0Ev)();
extern void ABISELECT(_ZThn15936_N8S19093C2D0Ev,_ZThn11912_N8S19093C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C2__8S19093C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(-15936,-11912),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(-15936,-11912),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C2D1Ev,_ZTv0_n48_N8S19093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C2D0Ev,_ZTv0_n48_N8S19093C2D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19093C2D1Ev,_ZTv0_n36_N8S19093C2D1Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C2D1Ev,_ZThn17888_N8S19093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19093C2D0Ev,_ZTv0_n36_N8S19093C2D0Ev)();
extern void ABISELECT(_ZThn23776_N8S19093C2D0Ev,_ZThn17888_N8S19093C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C2__8S19093C1[] = {
  ABISELECT(-23776,-17888),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-23776,-17888),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C2D1Ev,_ZTv0_n36_N8S19093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C2D0Ev,_ZTv0_n36_N8S19093C2D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C2__8S19093C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-25584,-19204),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-25856,-19396),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C2__8S19093C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-16312,-12196),
  (VTBL_ENTRY)&(_ZTI8S19093C2[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C1[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C7__8S19093C1[] = {
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C7__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C7__8S19093C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C7__8S19093C1[] = {
  0,
  0,
  ABISELECT(160,124),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C7__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C1[] = {
  ABISELECT(-432,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void _ZN9S19093C10D1Ev();
extern void _ZN9S19093C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C1[] = {
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C10D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C119S19093C10__8S19093C1[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C119S19093C10__A1__8S19093C1[] = {
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C119S19093C10__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C119S19093C10__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C119S19093C10__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C119S19093C10__8S19093C1[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19093C11[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C10__A4__8S19093C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C10__A4__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C10__A4__8S19093C1[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C10__A2__8S19093C1[] = {
  0,
  0,
  ABISELECT(968,732),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C10__A2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(552,424),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C10__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C10__8S19093C1[] = {
  0,
  0,
  ABISELECT(592,448),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev)();
extern void ABISELECT(_ZThn7840_N9S19093C10D1Ev,_ZThn5976_N9S19093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev)();
extern void ABISELECT(_ZThn7840_N9S19093C10D0Ev,_ZThn5976_N9S19093C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19093C13__9S19093C10__8S19093C1[] = {
  ABISELECT(-7840,-5976),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(-7840,-5976),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C10__8S19093C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-9648,-7292),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C10__8S19093C1[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-9920,-7484),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C10__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(432,324),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A__9S19093C10__8S19093C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(-376,-284),
  (VTBL_ENTRY)&(_ZTI9S19093C10[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN9S19093C13D1Ev();
extern void _ZN9S19093C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C1[] = {
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN9S19093C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19093C13D0Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__9S19093C13__8S19093C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C13__8S19093C1[] = {
  0,
  0,
  ABISELECT(8432,6424),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C13__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(8016,6116),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C13__8S19093C1[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C13__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(8272,6300),
  (VTBL_ENTRY)&(_ZTI9S19093C13[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C1[] = {
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C14__A1__8S19093C1[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C88S19093C79S19093C14__A2__8S19093C1[] = {
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A2__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A2__8S19093C1[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__8S19093C79S19093C14__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C79S19093C14__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI8S19093C7[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__9S19093C14__8S19093C1[] = {
  0,
  0,
  ABISELECT(10240,7740),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C14__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(9824,7432),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__9S19093C14__8S19093C1[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__A1__9S19093C14__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10080,7616),
  (VTBL_ENTRY)&(_ZTI9S19093C14[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C1[] = {
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C89S19093C15__A3__8S19093C1[] = {
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__8S19093C89S19093C15__A3__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__8S19093C1[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI8S19093C8[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__9S19093C15__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10096,7624),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__9S19093C15__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(10352,7808),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__9S19093C15__8S19093C1[] = {
  0,
  0,
  ABISELECT(10512,7932),
  (VTBL_ENTRY)&(_ZTI9S19093C15[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
extern void _ZN8S19093C3D1Ev();
extern void _ZN8S19093C3D0Ev();
extern void _ZN8S19093C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C3__A1__8S19093C1[] = {
  ABISELECT(-896,-660),
  ABISELECT(-1168,-852),
  ABISELECT(-2976,-2168),
  ABISELECT(-10816,-8144),
  ABISELECT(-10992,-8284),
  ABISELECT(-11248,-8468),
  ABISELECT(-11408,-8592),
  ABISELECT(-11424,-8596),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19093C33v10Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C48S19093C3__A2__8S19093C1[] = {
  ABISELECT(-11424,-8596),
  0,
  (VTBL_ENTRY)&(_ZTI8S19093C4[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C6__A1__8S19093C3__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(11408,8592),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C7__8S19093C3__A1__8S19093C1[] = {
  0,
  0,
  0,
  ABISELECT(-160,-124),
  ABISELECT(256,184),
  ABISELECT(-176,-128),
  ABISELECT(11248,8468),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
extern void _ZN8S19093C62v2Ev();
extern void _ZN8S19093C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C4__A1__8S19093C3__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(-432,-312),
  ABISELECT(10992,8284),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C62v2Ev,
  (VTBL_ENTRY)&_ZN8S19093C62v3Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C112v7Ev();
extern void ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev)();
extern void ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19093C10__8S19093C3__A1__8S19093C1[] = {
  ABISELECT(376,284),
  ABISELECT(376,284),
  ABISELECT(10816,8144),
  0,
  0,
  ABISELECT(-432,-324),
  ABISELECT(9920,7484),
  ABISELECT(9648,7292),
  ABISELECT(7840,5976),
  ABISELECT(-592,-448),
  ABISELECT(-176,-140),
  ABISELECT(-608,-452),
  ABISELECT(10816,8144),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19093C13__8S19093C3__A1__8S19093C1[] = {
  ABISELECT(2976,2168),
  ABISELECT(-8272,-6300),
  ABISELECT(2080,1508),
  ABISELECT(-8448,-6428),
  ABISELECT(-8016,-6116),
  ABISELECT(-8432,-6424),
  ABISELECT(1808,1316),
  ABISELECT(2976,2168),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev),
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
extern void _ZN9S19093C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C14__8S19093C3__A1__8S19093C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-10080,-7616),
  ABISELECT(272,192),
  ABISELECT(-10240,-7740),
  ABISELECT(-9824,-7432),
  ABISELECT(-10256,-7744),
  ABISELECT(1168,852),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19093C142v9Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN9S19093C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19093C15__8S19093C3__A1__8S19093C1[] = {
  0,
  0,
  ABISELECT(-10352,-7808),
  ABISELECT(-10512,-7932),
  ABISELECT(-10096,-7624),
  ABISELECT(-10528,-7936),
  ABISELECT(896,660),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN9S19093C152v8Ev,
};
extern void _ZN8S19093C82v4Ev();
extern void _ZN8S19093C72v5Ev();
extern void _ZN8S19093C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19093C79S19093C10__A2__8S19093C3__A1__8S19093C1[] = {
  ABISELECT(-968,-732),
  ABISELECT(-552,-424),
  ABISELECT(-984,-736),
  ABISELECT(10440,7860),
  (VTBL_ENTRY)&(_ZTI8S19093C3[0]),
  (VTBL_ENTRY)&_ZN8S19093C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19093C72v6Ev,
};
static  VTT_ENTRY vtt_S19093C1[] = {
  {&(_ZTV8S19093C1[12]),  12,143},
  {&(_ZTV8S19093C1[32]),  32,143},
  {&(_ZTV8S19093C1[42]),  42,143},
  {&(_ZTV8S19093C1[52]),  52,143},
  {&(_ZTV8S19093C1[60]),  60,143},
  {&(_ZTV8S19093C1[76]),  76,143},
  {&(_ZTV8S19093C1[97]),  97,143},
  {&(_ZTV8S19093C1[110]),  110,143},
  {&(_ZTV8S19093C1[122]),  122,143},
  {&(_ZTV8S19093C1[85]),  85,143},
  {&(_ZTV8S19093C1[138]),  138,143},
  {&(_tg__ZTV8S19093C2__8S19093C1[10]),  10,16},
  {&(_tg__ZTV8S19093C38S19093C2__8S19093C1[10]),  10,15},
  {&(_tg__ZTV8S19093C48S19093C38S19093C2__8S19093C1[3]),  3,5},
  {&(_tg__ZTV8S19093C6__A1__8S19093C38S19093C2__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C7__8S19093C38S19093C2__8S19093C1[8]),  8,11},
  {&(_tg__ZTV8S19093C4__A1__8S19093C38S19093C2__8S19093C1[5]),  5,7},
  {&(_tg__ZTV9S19093C10__8S19093C38S19093C2__8S19093C1[14]),  14,18},
  {&(_tg__ZTV9S19093C13__8S19093C38S19093C2__8S19093C1[9]),  9,11},
  {&(_tg__ZTV9S19093C14__8S19093C38S19093C2__8S19093C1[11]),  11,15},
  {&(_tg__ZTV9S19093C15__8S19093C38S19093C2__8S19093C1[8]),  8,10},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C38S19093C2__8S19093C1[5]),  5,8},
  {&(_tg__ZTV8S19093C6__A1__8S19093C2__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C7__8S19093C2__8S19093C1[8]),  8,11},
  {&(_tg__ZTV8S19093C4__A1__8S19093C2__8S19093C1[5]),  5,7},
  {&(_tg__ZTV9S19093C10__8S19093C2__8S19093C1[14]),  14,18},
  {&(_tg__ZTV9S19093C13__8S19093C2__8S19093C1[9]),  9,11},
  {&(_tg__ZTV9S19093C14__8S19093C2__8S19093C1[11]),  11,15},
  {&(_tg__ZTV9S19093C15__8S19093C2__8S19093C1[8]),  8,10},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C2__8S19093C1[5]),  5,8},
  {&(_tg__ZTV8S19093C7__8S19093C1[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C7__8S19093C1[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C7__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C7__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C7__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C7__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C4__A1__8S19093C1[3]),  3,5},
  {&(_tg__ZTV9S19093C10__8S19093C1[9]),  9,13},
  {&(_tg__ZTV9S19093C119S19093C10__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C89S19093C119S19093C10__A1__8S19093C1[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C119S19093C10__A1__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C119S19093C10__A1__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C119S19093C10__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C119S19093C10__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C1[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C10__A4__8S19093C1[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C10__A4__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C10__A4__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C10__A2__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C10__A2__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C4__9S19093C10__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__9S19093C10__8S19093C1[4]),  4,6},
  {&(_tg__ZTV9S19093C13__9S19093C10__8S19093C1[9]),  9,11},
  {&(_tg__ZTV9S19093C14__9S19093C10__8S19093C1[11]),  11,15},
  {&(_tg__ZTV9S19093C15__9S19093C10__8S19093C1[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C10__8S19093C1[8]),  8,11},
  {&(_tg__ZTV8S19093C7__A__9S19093C10__8S19093C1[5]),  5,8},
  {&(_tg__ZTV9S19093C13__8S19093C1[8]),  8,10},
  {&(_tg__ZTV9S19093C14__9S19093C13__8S19093C1[11]),  11,15},
  {&(_tg__ZTV8S19093C6__9S19093C13__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C13__8S19093C1[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C13__8S19093C1[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C13__8S19093C1[8]),  8,11},
  {&(_tg__ZTV9S19093C14__8S19093C1[7]),  7,11},
  {&(_tg__ZTV8S19093C79S19093C14__A1__8S19093C1[5]),  5,8},
  {&(_tg__ZTV8S19093C88S19093C79S19093C14__A2__8S19093C1[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C88S19093C79S19093C14__A2__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C88S19093C79S19093C14__A2__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C6__8S19093C79S19093C14__A1__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__8S19093C79S19093C14__A1__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__9S19093C14__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C14__8S19093C1[5]),  5,7},
  {&(_tg__ZTV9S19093C15__9S19093C14__8S19093C1[8]),  8,10},
  {&(_tg__ZTV8S19093C7__A1__9S19093C14__8S19093C1[8]),  8,11},
  {&(_tg__ZTV9S19093C15__8S19093C1[6]),  6,8},
  {&(_tg__ZTV8S19093C89S19093C15__A3__8S19093C1[5]),  5,6},
  {&(_tg__ZTV8S19093C4__8S19093C89S19093C15__A3__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C6__A1__8S19093C89S19093C15__A3__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C4__9S19093C15__8S19093C1[5]),  5,7},
  {&(_tg__ZTV8S19093C7__9S19093C15__8S19093C1[8]),  8,11},
  {&(_tg__ZTV8S19093C6__A1__9S19093C15__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C3__A1__8S19093C1[10]),  10,15},
  {&(_tg__ZTV8S19093C48S19093C3__A2__8S19093C1[3]),  3,5},
  {&(_tg__ZTV8S19093C6__A1__8S19093C3__A1__8S19093C1[4]),  4,6},
  {&(_tg__ZTV8S19093C7__8S19093C3__A1__8S19093C1[8]),  8,11},
  {&(_tg__ZTV8S19093C4__A1__8S19093C3__A1__8S19093C1[5]),  5,7},
  {&(_tg__ZTV9S19093C10__8S19093C3__A1__8S19093C1[14]),  14,18},
  {&(_tg__ZTV9S19093C13__8S19093C3__A1__8S19093C1[9]),  9,11},
  {&(_tg__ZTV9S19093C14__8S19093C3__A1__8S19093C1[11]),  11,15},
  {&(_tg__ZTV9S19093C15__8S19093C3__A1__8S19093C1[8]),  8,10},
  {&(_tg__ZTV8S19093C79S19093C10__A2__8S19093C3__A1__8S19093C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19093C1[];
extern  VTBL_ENTRY _ZTV8S19093C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19093C1[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D0Ev,_ZTv0_n36_N9S19093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19093C10D0Ev,_ZThn5976_N9S19093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19093C10D1Ev,_ZTv0_n36_N9S19093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7840_N9S19093C10D1Ev,_ZThn5976_N9S19093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C2D0Ev,_ZTv0_n36_N8S19093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C2D0Ev,_ZThn17888_N8S19093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C2D1Ev,_ZTv0_n36_N8S19093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C2D1Ev,_ZThn17888_N8S19093C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C2D0Ev,_ZTv0_n48_N8S19093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C2D0Ev,_ZThn11912_N8S19093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C2D1Ev,_ZTv0_n48_N8S19093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C2D1Ev,_ZThn11912_N8S19093C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C3D0Ev,_ZTv0_n36_N8S19093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C3D0Ev,_ZThn17888_N8S19093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C3D1Ev,_ZTv0_n36_N8S19093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23776_N8S19093C3D1Ev,_ZThn17888_N8S19093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C3D0Ev,_ZTv0_n48_N8S19093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C3D0Ev,_ZThn11912_N8S19093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C3D1Ev,_ZTv0_n48_N8S19093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn15936_N8S19093C3D1Ev,_ZThn11912_N8S19093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C1D0Ev,_ZTv0_n36_N8S19093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30064_N8S19093C1D0Ev,_ZThn22512_N8S19093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19093C1D1Ev,_ZTv0_n36_N8S19093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30064_N8S19093C1D1Ev,_ZThn22512_N8S19093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C1D0Ev,_ZTv0_n48_N8S19093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22224_N8S19093C1D0Ev,_ZThn16536_N8S19093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19093C1D1Ev,_ZTv0_n48_N8S19093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22224_N8S19093C1D1Ev,_ZThn16536_N8S19093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19093C1D0Ev,_ZTv0_n52_N8S19093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33040_N8S19093C1D0Ev,_ZThn24680_N8S19093C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6288_N8S19093C1D0Ev,_ZThn4624_N8S19093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19093C1D1Ev,_ZTv0_n52_N8S19093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33040_N8S19093C1D1Ev,_ZThn24680_N8S19093C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6288_N8S19093C1D1Ev,_ZThn4624_N8S19093C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19093C1 = {  "S19093C1", // class name
  bases_S19093C1, 30,
  &(vtc_S19093C1[0]), // expected_vtbl_contents
  &(vtt_S19093C1[0]), // expected_vtt_contents
  ABISELECT(48304,36096), // object size
  NSPAIRA(_ZTI8S19093C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19093C1),143, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19093C1),91, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C3_nt  {
  void  mf4062c3(); // _ZN10S4062C3_nt8mf4062c3Ev
  virtual  ~S4062C3_nt(); // _ZN10S4062C3_ntD1Ev
  S4062C3_nt(); // tgen
};
//SIG(-1 S4062C3_nt) C1{ vd m}


void  S4062C3_nt ::mf4062c3(){}
 S4062C3_nt ::~S4062C3_nt(){ note_dtor("S4062C3_nt", this);}
S4062C3_nt ::S4062C3_nt(){ note_ctor("S4062C3_nt", this);} // tgen

//skip512 S4062C3_nt

#else // __cplusplus

extern void _ZN10S4062C3_ntC1Ev();
extern void _ZN10S4062C3_ntD1Ev();
Name_Map name_map_S4062C3_nt[] = {
  NSPAIR(_ZN10S4062C3_ntC1Ev),
  NSPAIR(_ZN10S4062C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4062C3_nt[];
extern void _ZN10S4062C3_ntD1Ev();
extern void _ZN10S4062C3_ntD0Ev();
static  VTBL_ENTRY vtc_S4062C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4062C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4062C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4062C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S4062C3_nt[];
VTBL_ENTRY *P__ZTI10S4062C3_nt = _ZTI10S4062C3_nt; 
extern  VTBL_ENTRY _ZTV10S4062C3_nt[];
Class_Descriptor cd_S4062C3_nt = {  "S4062C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4062C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4062C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4062C3_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  S4062C2_nt  : S4062C3_nt {
  short s4062c2f0[2];
  virtual  ~S4062C2_nt(); // _ZN10S4062C2_ntD1Ev
  virtual void  v2(); // _ZN10S4062C2_nt2v2Ev
  S4062C2_nt(); // tgen
};
//SIG(-1 S4062C2_nt) C1{ BC2{ vd m} vd v1 Fs[2]}


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

//skip512 S4062C2_nt

#else // __cplusplus

extern void _ZN10S4062C2_ntC1Ev();
extern void _ZN10S4062C2_ntD1Ev();
Name_Map name_map_S4062C2_nt[] = {
  NSPAIR(_ZN10S4062C2_ntC1Ev),
  NSPAIR(_ZN10S4062C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4062C3_nt;
extern VTBL_ENTRY _ZTI10S4062C3_nt[];
extern  VTBL_ENTRY _ZTV10S4062C3_nt[];
static Base_Class bases_S4062C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4062C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4062C2_nt[];
extern void _ZN10S4062C2_ntD1Ev();
extern void _ZN10S4062C2_ntD0Ev();
extern void _ZN10S4062C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S4062C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4062C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4062C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4062C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4062C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S4062C2_nt[];
VTBL_ENTRY *P__ZTI10S4062C2_nt = _ZTI10S4062C2_nt; 
extern  VTBL_ENTRY _ZTV10S4062C2_nt[];
Class_Descriptor cd_S4062C2_nt = {  "S4062C2_nt", // class name
  bases_S4062C2_nt, 1,
  &(vtc_S4062C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S4062C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4062C2_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  S4062C4_nt  {
  char s4062c4f0;
  char s4062c4f1[15];
  void  mf4062c4(); // _ZN10S4062C4_nt8mf4062c4Ev
};
//SIG(-1 S4062C4_nt) C1{ m Fc[16]}


void  S4062C4_nt ::mf4062c4(){}

//skip512 S4062C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C6_nt  {
  char s4062c6f0;
  void  mf4062c6(); // _ZN10S4062C6_nt8mf4062c6Ev
};
//SIG(-1 S4062C6_nt) C1{ m Fc}


void  S4062C6_nt ::mf4062c6(){}

//skip512 S4062C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C7_nt  {
  int s4062c7f0;
  short s4062c7f1[2];
  void  mf4062c7(); // _ZN10S4062C7_nt8mf4062c7Ev
};
//SIG(-1 S4062C7_nt) C1{ m Fi Fs[2]}


void  S4062C7_nt ::mf4062c7(){}

//skip512 S4062C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C8_nt  {
  void *s4062c8f0;
  int s4062c8f1[2];
  void  mf4062c8(); // _ZN10S4062C8_nt8mf4062c8Ev
};
//SIG(-1 S4062C8_nt) C1{ m Fp Fi[2]}


void  S4062C8_nt ::mf4062c8(){}

//skip512 S4062C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C10  {
  void *s4062c10f0;
  int s4062c10f1[2];
  void  mf4062c10(); // _ZN8S4062C109mf4062c10Ev
};
//SIG(-1 S4062C10) C1{ m Fp Fi[2]}


void  S4062C10 ::mf4062c10(){}

static void Test_S4062C10()
{
  {
    init_simple_test("S4062C10");
    S4062C10 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4062C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C10)");
    check_field_offset(lv, s4062c10f0, 0, "S4062C10.s4062c10f0");
    check_field_offset(lv, s4062c10f1, ABISELECT(8,4), "S4062C10.s4062c10f1");
  }
}
static Arrange_To_Call_Me vS4062C10(Test_S4062C10, "S4062C10", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C12  {
  void *s4062c12f0;
  int s4062c12f1[2];
  void  mf4062c12(); // _ZN8S4062C129mf4062c12Ev
};
//SIG(-1 S4062C12) C1{ m Fp Fi[2]}


void  S4062C12 ::mf4062c12(){}

static void Test_S4062C12()
{
  {
    init_simple_test("S4062C12");
    S4062C12 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4062C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C12)");
    check_field_offset(lv, s4062c12f0, 0, "S4062C12.s4062c12f0");
    check_field_offset(lv, s4062c12f1, ABISELECT(8,4), "S4062C12.s4062c12f1");
  }
}
static Arrange_To_Call_Me vS4062C12(Test_S4062C12, "S4062C12", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C14  {
  void *s4062c14f0;
  int s4062c14f1[2];
  void  mf4062c14(); // _ZN8S4062C149mf4062c14Ev
};
//SIG(-1 S4062C14) C1{ m Fp Fi[2]}


void  S4062C14 ::mf4062c14(){}

static void Test_S4062C14()
{
  {
    init_simple_test("S4062C14");
    S4062C14 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4062C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C14)");
    check_field_offset(lv, s4062c14f0, 0, "S4062C14.s4062c14f0");
    check_field_offset(lv, s4062c14f1, ABISELECT(8,4), "S4062C14.s4062c14f1");
  }
}
static Arrange_To_Call_Me vS4062C14(Test_S4062C14, "S4062C14", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C16  {
  void *s4062c16f0;
  int s4062c16f1[2];
  void  mf4062c16(); // _ZN8S4062C169mf4062c16Ev
};
//SIG(-1 S4062C16) C1{ m Fp Fi[2]}


void  S4062C16 ::mf4062c16(){}

static void Test_S4062C16()
{
  {
    init_simple_test("S4062C16");
    S4062C16 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4062C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C16)");
    check_field_offset(lv, s4062c16f0, 0, "S4062C16.s4062c16f0");
    check_field_offset(lv, s4062c16f1, ABISELECT(8,4), "S4062C16.s4062c16f1");
  }
}
static Arrange_To_Call_Me vS4062C16(Test_S4062C16, "S4062C16", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C18  {
  void *s4062c18f0;
  int s4062c18f1[2];
  void  mf4062c18(); // _ZN8S4062C189mf4062c18Ev
};
//SIG(-1 S4062C18) C1{ m Fp Fi[2]}


void  S4062C18 ::mf4062c18(){}

static void Test_S4062C18()
{
  {
    init_simple_test("S4062C18");
    S4062C18 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4062C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C18)");
    check_field_offset(lv, s4062c18f0, 0, "S4062C18.s4062c18f0");
    check_field_offset(lv, s4062c18f1, ABISELECT(8,4), "S4062C18.s4062c18f1");
  }
}
static Arrange_To_Call_Me vS4062C18(Test_S4062C18, "S4062C18", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C20  {
  void *s4062c20f0;
  int s4062c20f1[2];
  void  mf4062c20(); // _ZN8S4062C209mf4062c20Ev
};
//SIG(-1 S4062C20) C1{ m Fp Fi[2]}


void  S4062C20 ::mf4062c20(){}

static void Test_S4062C20()
{
  {
    init_simple_test("S4062C20");
    S4062C20 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4062C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C20)");
    check_field_offset(lv, s4062c20f0, 0, "S4062C20.s4062c20f0");
    check_field_offset(lv, s4062c20f1, ABISELECT(8,4), "S4062C20.s4062c20f1");
  }
}
static Arrange_To_Call_Me vS4062C20(Test_S4062C20, "S4062C20", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C23  {
  int s4062c23f0;
  int s4062c23f1[3];
  void  mf4062c23(); // _ZN8S4062C239mf4062c23Ev
};
//SIG(-1 S4062C23) C1{ m Fi[4]}


void  S4062C23 ::mf4062c23(){}

static void Test_S4062C23()
{
  {
    init_simple_test("S4062C23");
    S4062C23 lv;
    check2(sizeof(lv), 16, "sizeof(S4062C23)");
    check2(__alignof__(lv), 4, "__alignof__(S4062C23)");
    check_field_offset(lv, s4062c23f0, 0, "S4062C23.s4062c23f0");
    check_field_offset(lv, s4062c23f1, 4, "S4062C23.s4062c23f1");
  }
}
static Arrange_To_Call_Me vS4062C23(Test_S4062C23, "S4062C23", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C26_nt  {
  short s4062c26f0;
  void  mf4062c26(); // _ZN11S4062C26_nt9mf4062c26Ev
};
//SIG(1 S4062C26_nt) C1{ m Fs}


void  S4062C26_nt ::mf4062c26(){}

//skip512 S4062C26_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C25  {
  int s4062c25f0[4];
  short s4062c25f1;
  int s4062c25f2[2];
  ::S4062C26_nt s4062c25f3[2];
};
//SIG(1 S4062C25) C1{ Fi[4] Fs Fi[2] FC2{ m Fs}[2]}



static void Test_S4062C25()
{
  {
    init_simple_test("S4062C25");
    S4062C25 lv;
    check2(sizeof(lv), 32, "sizeof(S4062C25)");
    check2(__alignof__(lv), 4, "__alignof__(S4062C25)");
    check_field_offset(lv, s4062c25f0, 0, "S4062C25.s4062c25f0");
    check_field_offset(lv, s4062c25f1, 16, "S4062C25.s4062c25f1");
    check_field_offset(lv, s4062c25f2, 20, "S4062C25.s4062c25f2");
    check_field_offset(lv, s4062c25f3, 28, "S4062C25.s4062c25f3");
  }
}
static Arrange_To_Call_Me vS4062C25(Test_S4062C25, "S4062C25", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C24  {
  int s4062c24f0;
  int s4062c24f1[3];
  ::S4062C4_nt s4062c24f2;
  ::S4062C4_nt s4062c24f3;
  ::S4062C4_nt s4062c24f4;
  ::S4062C4_nt s4062c24f5;
  int s4062c24f6[5];
  ::S4062C25 s4062c24f7[6];
  int s4062c24f8[6];
  void  mf4062c24(); // _ZN8S4062C249mf4062c24Ev
};
//SIG(-1 S4062C24) C1{ m Fi[4] FC2{ m Fc[16]} FC2 FC2 FC2 Fi[5] FC3{ Fi[4] Fs Fi[2] FC4{ m Fs}[2]}[6] Fi[6]}


void  S4062C24 ::mf4062c24(){}

static void Test_S4062C24()
{
  {
    init_simple_test("S4062C24");
    S4062C24 lv;
    check2(sizeof(lv), 316, "sizeof(S4062C24)");
    check2(__alignof__(lv), 4, "__alignof__(S4062C24)");
    check_field_offset(lv, s4062c24f0, 0, "S4062C24.s4062c24f0");
    check_field_offset(lv, s4062c24f1, 4, "S4062C24.s4062c24f1");
    check_field_offset(lv, s4062c24f2, 16, "S4062C24.s4062c24f2");
    check_field_offset(lv, s4062c24f3, 32, "S4062C24.s4062c24f3");
    check_field_offset(lv, s4062c24f4, 48, "S4062C24.s4062c24f4");
    check_field_offset(lv, s4062c24f5, 64, "S4062C24.s4062c24f5");
    check_field_offset(lv, s4062c24f6, 80, "S4062C24.s4062c24f6");
    check_field_offset(lv, s4062c24f7, 100, "S4062C24.s4062c24f7");
    check_field_offset(lv, s4062c24f8, 292, "S4062C24.s4062c24f8");
  }
}
static Arrange_To_Call_Me vS4062C24(Test_S4062C24, "S4062C24", 316);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C22  {
  ::S4062C23 s4062c22f0;
  ::S4062C24 s4062c22f1;
};
//SIG(-1 S4062C22) C1{ FC2{ m Fi[4]} FC3{ m Fi[4] FC4{ m Fc[16]} FC4 FC4 FC4 Fi[5] FC5{ Fi[4] Fs Fi[2] FC6{ m Fs}[2]}[6] Fi[6]}}



static void Test_S4062C22()
{
  {
    init_simple_test("S4062C22");
    S4062C22 lv;
    check2(sizeof(lv), 332, "sizeof(S4062C22)");
    check2(__alignof__(lv), 4, "__alignof__(S4062C22)");
    check_field_offset(lv, s4062c22f0, 0, "S4062C22.s4062c22f0");
    check_field_offset(lv, s4062c22f1, 16, "S4062C22.s4062c22f1");
  }
}
static Arrange_To_Call_Me vS4062C22(Test_S4062C22, "S4062C22", 332);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4062C1  : S4062C2_nt {
  void *s4062c1f0;
  ::S4062C4_nt s4062c1f1;
  void *s4062c1f2[2];
  ::S1538C8_nt s4062c1f3;
  ::S1538C8_nt s4062c1f4;
  ::S1538C8_nt s4062c1f5;
  void *s4062c1f6[12];
  int s4062c1f7[3];
  ::S4062C6_nt s4062c1f8;
  ::S4062C6_nt s4062c1f9;
  void *s4062c1f10;
  int s4062c1f11;
  ::S4062C7_nt s4062c1f12;
  ::S4062C6_nt s4062c1f13;
  int s4062c1f14;
  void *s4062c1f15[4];
  ::S4062C8_nt s4062c1f16;
  ::S4062C6_nt s4062c1f17;
  ::S4062C6_nt s4062c1f18;
  ::S4062C6_nt s4062c1f19;
  ::S4062C6_nt s4062c1f20;
  int s4062c1f21[6];
  ::S4062C8_nt s4062c1f22;
  ::S4062C10 s4062c1f23;
  ::S4062C10 s4062c1f24;
  ::S4062C12 s4062c1f25;
  ::S4062C12 s4062c1f26;
  ::S4062C14 s4062c1f27;
  ::S4062C14 s4062c1f28;
  ::S4062C16 s4062c1f29;
  ::S4062C16 s4062c1f30;
  ::S4062C18 s4062c1f31;
  ::S4062C18 s4062c1f32;
  ::S4062C20 s4062c1f33;
  ::S4062C20 s4062c1f34;
  void *s4062c1f35;
  ::S4062C22 s4062c1f36;
  ::S4062C4_nt s4062c1f37[2];
  int s4062c1f38[3];
  ::S4062C6_nt s4062c1f39;
  virtual  ~S4062C1(); // _ZN7S4062C1D1Ev
  virtual void  v1(); // _ZN7S4062C12v1Ev
  S4062C1(); // tgen
};
//SIG(1 S4062C1) C1{ BC2{ BC3{ vd m} vd v2 Fs[2]} vd v1 Fp FC4{ m Fc[16]} Fp[2] FC5{ m Fp Fi[2]} FC5 FC5 Fp[12] Fi[3] FC6{ m Fc} FC6 Fp Fi FC7{ m Fi Fs[2]} FC6 Fi Fp[4] FC8{ m Fp Fi[2]} FC6 FC6 FC6 FC6 Fi[6] FC8 FC9{ m Fp Fi[2]} FC9 FC10{ m Fp Fi[2]} FC10 FC11{ m Fp Fi[2]} FC11 FC12{ m Fp Fi[2]} FC12 FC13{ m Fp Fi[2]} FC13 FC14{ m Fp Fi[2]} FC14 Fp FC15{ FC16{ m Fi[4]} FC17{ m Fi[4] FC4 FC4 FC4 FC4 Fi[5] FC18{ Fi[4] Fs Fi[2] FC19{ m Fs}[2]}[6] Fi[6]}} FC4[2] Fi[3] FC6}


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

static void Test_S4062C1()
{
  extern Class_Descriptor cd_S4062C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(117,190)];
    init_test(&cd_S4062C1, buf);
    S4062C1 *dp, &lv = *(dp=new (buf) S4062C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,756), "sizeof(S4062C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4062C1)");
    check_base_class_offset(lv, (S4062C3_nt*)(S4062C2_nt*), 0, "S4062C1");
    check_base_class_offset(lv, (S4062C2_nt*), 0, "S4062C1");
    check_field_offset(lv, s4062c1f0, ABISELECT(16,8), "S4062C1.s4062c1f0");
    check_field_offset(lv, s4062c1f1, ABISELECT(24,12), "S4062C1.s4062c1f1");
    check_field_offset(lv, s4062c1f2, ABISELECT(40,28), "S4062C1.s4062c1f2");
    check_field_offset(lv, s4062c1f3, ABISELECT(56,36), "S4062C1.s4062c1f3");
    check_field_offset(lv, s4062c1f4, ABISELECT(72,48), "S4062C1.s4062c1f4");
    check_field_offset(lv, s4062c1f5, ABISELECT(88,60), "S4062C1.s4062c1f5");
    check_field_offset(lv, s4062c1f6, ABISELECT(104,72), "S4062C1.s4062c1f6");
    check_field_offset(lv, s4062c1f7, ABISELECT(200,120), "S4062C1.s4062c1f7");
    check_field_offset(lv, s4062c1f8, ABISELECT(212,132), "S4062C1.s4062c1f8");
    check_field_offset(lv, s4062c1f9, ABISELECT(213,133), "S4062C1.s4062c1f9");
    check_field_offset(lv, s4062c1f10, ABISELECT(216,136), "S4062C1.s4062c1f10");
    check_field_offset(lv, s4062c1f11, ABISELECT(224,140), "S4062C1.s4062c1f11");
    check_field_offset(lv, s4062c1f12, ABISELECT(228,144), "S4062C1.s4062c1f12");
    check_field_offset(lv, s4062c1f13, ABISELECT(236,152), "S4062C1.s4062c1f13");
    check_field_offset(lv, s4062c1f14, ABISELECT(240,156), "S4062C1.s4062c1f14");
    check_field_offset(lv, s4062c1f15, ABISELECT(248,160), "S4062C1.s4062c1f15");
    check_field_offset(lv, s4062c1f16, ABISELECT(280,176), "S4062C1.s4062c1f16");
    check_field_offset(lv, s4062c1f17, ABISELECT(296,188), "S4062C1.s4062c1f17");
    check_field_offset(lv, s4062c1f18, ABISELECT(297,189), "S4062C1.s4062c1f18");
    check_field_offset(lv, s4062c1f19, ABISELECT(298,190), "S4062C1.s4062c1f19");
    check_field_offset(lv, s4062c1f20, ABISELECT(299,191), "S4062C1.s4062c1f20");
    check_field_offset(lv, s4062c1f21, ABISELECT(300,192), "S4062C1.s4062c1f21");
    check_field_offset(lv, s4062c1f22, ABISELECT(328,216), "S4062C1.s4062c1f22");
    check_field_offset(lv, s4062c1f23, ABISELECT(344,228), "S4062C1.s4062c1f23");
    check_field_offset(lv, s4062c1f24, ABISELECT(360,240), "S4062C1.s4062c1f24");
    check_field_offset(lv, s4062c1f25, ABISELECT(376,252), "S4062C1.s4062c1f25");
    check_field_offset(lv, s4062c1f26, ABISELECT(392,264), "S4062C1.s4062c1f26");
    check_field_offset(lv, s4062c1f27, ABISELECT(408,276), "S4062C1.s4062c1f27");
    check_field_offset(lv, s4062c1f28, ABISELECT(424,288), "S4062C1.s4062c1f28");
    check_field_offset(lv, s4062c1f29, ABISELECT(440,300), "S4062C1.s4062c1f29");
    check_field_offset(lv, s4062c1f30, ABISELECT(456,312), "S4062C1.s4062c1f30");
    check_field_offset(lv, s4062c1f31, ABISELECT(472,324), "S4062C1.s4062c1f31");
    check_field_offset(lv, s4062c1f32, ABISELECT(488,336), "S4062C1.s4062c1f32");
    check_field_offset(lv, s4062c1f33, ABISELECT(504,348), "S4062C1.s4062c1f33");
    check_field_offset(lv, s4062c1f34, ABISELECT(520,360), "S4062C1.s4062c1f34");
    check_field_offset(lv, s4062c1f35, ABISELECT(536,372), "S4062C1.s4062c1f35");
    check_field_offset(lv, s4062c1f36, ABISELECT(544,376), "S4062C1.s4062c1f36");
    check_field_offset(lv, s4062c1f37, ABISELECT(876,708), "S4062C1.s4062c1f37");
    check_field_offset(lv, s4062c1f38, ABISELECT(908,740), "S4062C1.s4062c1f38");
    check_field_offset(lv, s4062c1f39, ABISELECT(920,752), "S4062C1.s4062c1f39");
    test_class_info(&lv, &cd_S4062C1);
    dp->~S4062C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4062C1(Test_S4062C1, "S4062C1", ABISELECT(928,756));

#else // __cplusplus

extern void _ZN7S4062C1C1Ev();
extern void _ZN7S4062C1D1Ev();
Name_Map name_map_S4062C1[] = {
  NSPAIR(_ZN7S4062C1C1Ev),
  NSPAIR(_ZN7S4062C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4062C3_nt;
extern VTBL_ENTRY _ZTI10S4062C3_nt[];
extern  VTBL_ENTRY _ZTV10S4062C3_nt[];
extern Class_Descriptor cd_S4062C2_nt;
extern VTBL_ENTRY _ZTI10S4062C2_nt[];
extern  VTBL_ENTRY _ZTV10S4062C2_nt[];
static Base_Class bases_S4062C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4062C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4062C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4062C1[];
extern void _ZN7S4062C1D1Ev();
extern void _ZN7S4062C1D0Ev();
extern void _ZN10S4062C2_nt2v2Ev();
extern void _ZN7S4062C12v1Ev();
static  VTBL_ENTRY vtc_S4062C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4062C1[0]),
  (VTBL_ENTRY)&_ZN7S4062C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4062C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4062C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S4062C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4062C1[];
extern  VTBL_ENTRY _ZTV7S4062C1[];
Class_Descriptor cd_S4062C1 = {  "S4062C1", // class name
  bases_S4062C1, 2,
  &(vtc_S4062C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(928,756), // object size
  NSPAIRA(_ZTI7S4062C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4062C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C4  {
  long double s20512c4f0;
  long s20512c4f1;
  virtual void  v10(); // _ZN8S20512C43v10Ev
  virtual void  v11(); // _ZN8S20512C43v11Ev
  virtual void  v12(); // _ZN8S20512C43v12Ev
  virtual void  v13(); // _ZN8S20512C43v13Ev
  virtual void  v14(); // _ZN8S20512C43v14Ev
  virtual void  v15(); // _ZN8S20512C43v15Ev
  ~S20512C4(); // tgen
  S20512C4(); // tgen
};
//SIG(-1 S20512C4) C1{ v1 v2 v3 v4 v5 v6 FD Fl}


void  S20512C4 ::v10(){vfunc_called(this, "_ZN8S20512C43v10Ev");}
void  S20512C4 ::v11(){vfunc_called(this, "_ZN8S20512C43v11Ev");}
void  S20512C4 ::v12(){vfunc_called(this, "_ZN8S20512C43v12Ev");}
void  S20512C4 ::v13(){vfunc_called(this, "_ZN8S20512C43v13Ev");}
void  S20512C4 ::v14(){vfunc_called(this, "_ZN8S20512C43v14Ev");}
void  S20512C4 ::v15(){vfunc_called(this, "_ZN8S20512C43v15Ev");}
S20512C4 ::~S20512C4(){ note_dtor("S20512C4", this);} // tgen
S20512C4 ::S20512C4(){ note_ctor("S20512C4", this);} // tgen

static void Test_S20512C4()
{
  extern Class_Descriptor cd_S20512C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20512C4, buf);
    S20512C4 *dp, &lv = *(dp=new (buf) S20512C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20512C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C4)");
    check_field_offset(lv, s20512c4f0, ABISELECT(16,4), "S20512C4.s20512c4f0");
    check_field_offset(lv, s20512c4f1, ABISELECT(32,16), "S20512C4.s20512c4f1");
    test_class_info(&lv, &cd_S20512C4);
    dp->~S20512C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C4(Test_S20512C4, "S20512C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20512C4C1Ev();
extern void _ZN8S20512C4D1Ev();
Name_Map name_map_S20512C4[] = {
  NSPAIR(_ZN8S20512C4C1Ev),
  NSPAIR(_ZN8S20512C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20512C4[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY vtc_S20512C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C4[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
Class_Descriptor cd_S20512C4 = {  "S20512C4", // class name
  0,0,//no base classes
  &(vtc_S20512C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20512C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20512C4),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  S20512C3  : S20512C4 {
  int s20512c3f0;
  virtual void  v16(); // _ZN8S20512C33v16Ev
  virtual void  v17(); // _ZN8S20512C33v17Ev
  virtual void  v18(); // _ZN8S20512C33v18Ev
  virtual void  v19(); // _ZN8S20512C33v19Ev
  virtual void  v20(); // _ZN8S20512C33v20Ev
  virtual void  v21(); // _ZN8S20512C33v21Ev
  virtual void  v22(); // _ZN8S20512C33v22Ev
  ~S20512C3(); // tgen
  S20512C3(); // tgen
};
//SIG(-1 S20512C3) C1{ BC2{ v8 v9 v10 v11 v12 v13 FD Fl} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20512C3 ::v16(){vfunc_called(this, "_ZN8S20512C33v16Ev");}
void  S20512C3 ::v17(){vfunc_called(this, "_ZN8S20512C33v17Ev");}
void  S20512C3 ::v18(){vfunc_called(this, "_ZN8S20512C33v18Ev");}
void  S20512C3 ::v19(){vfunc_called(this, "_ZN8S20512C33v19Ev");}
void  S20512C3 ::v20(){vfunc_called(this, "_ZN8S20512C33v20Ev");}
void  S20512C3 ::v21(){vfunc_called(this, "_ZN8S20512C33v21Ev");}
void  S20512C3 ::v22(){vfunc_called(this, "_ZN8S20512C33v22Ev");}
S20512C3 ::~S20512C3(){ note_dtor("S20512C3", this);} // tgen
S20512C3 ::S20512C3(){ note_ctor("S20512C3", this);} // tgen

static void Test_S20512C3()
{
  extern Class_Descriptor cd_S20512C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S20512C3, buf);
    S20512C3 *dp, &lv = *(dp=new (buf) S20512C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20512C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C3)");
    check_base_class_offset(lv, (S20512C4*), 0, "S20512C3");
    check_field_offset(lv, s20512c3f0, ABISELECT(40,20), "S20512C3.s20512c3f0");
    test_class_info(&lv, &cd_S20512C3);
    dp->~S20512C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C3(Test_S20512C3, "S20512C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20512C3C1Ev();
extern void _ZN8S20512C3D1Ev();
Name_Map name_map_S20512C3[] = {
  NSPAIR(_ZN8S20512C3C1Ev),
  NSPAIR(_ZN8S20512C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
static Base_Class bases_S20512C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20512C3[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY vtc_S20512C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C3[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
Class_Descriptor cd_S20512C3 = {  "S20512C3", // class name
  bases_S20512C3, 1,
  &(vtc_S20512C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20512C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20512C3),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  S20512C2  : virtual S20512C3 , virtual S20512C4 {
  virtual void  v23(); // _ZN8S20512C23v23Ev
  virtual void  v24(); // _ZN8S20512C23v24Ev
  virtual void  v25(); // _ZN8S20512C23v25Ev
  virtual void  v26(); // _ZN8S20512C23v26Ev
  virtual void  v27(); // _ZN8S20512C23v27Ev
  ~S20512C2(); // tgen
  S20512C2(); // tgen
};
//SIG(-1 S20512C2) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 v11 FD Fl} v12 v13 v14 v15 v16 v17 v18 Fi} VBC3 v1 v2 v3 v4 v5}


void  S20512C2 ::v23(){vfunc_called(this, "_ZN8S20512C23v23Ev");}
void  S20512C2 ::v24(){vfunc_called(this, "_ZN8S20512C23v24Ev");}
void  S20512C2 ::v25(){vfunc_called(this, "_ZN8S20512C23v25Ev");}
void  S20512C2 ::v26(){vfunc_called(this, "_ZN8S20512C23v26Ev");}
void  S20512C2 ::v27(){vfunc_called(this, "_ZN8S20512C23v27Ev");}
S20512C2 ::~S20512C2(){ note_dtor("S20512C2", this);} // tgen
S20512C2 ::S20512C2(){ note_ctor("S20512C2", this);} // tgen

static void Test_S20512C2()
{
  extern Class_Descriptor cd_S20512C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,13)];
    init_test(&cd_S20512C2, buf);
    S20512C2 *dp, &lv = *(dp=new (buf) S20512C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,48), "sizeof(S20512C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C2)");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(16,4), "S20512C2");
    check_base_class_offset(lv, (S20512C3*), ABISELECT(16,4), "S20512C2");
    /*is_ambiguous_... S20512C2::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), ABISELECT(64,28), "S20512C2");
    test_class_info(&lv, &cd_S20512C2);
    dp->~S20512C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C2(Test_S20512C2, "S20512C2", ABISELECT(112,48));

#else // __cplusplus

extern void _ZN8S20512C2C1Ev();
extern void _ZN8S20512C2D1Ev();
Name_Map name_map_S20512C2[] = {
  NSPAIR(_ZN8S20512C2C1Ev),
  NSPAIR(_ZN8S20512C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
static Base_Class bases_S20512C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(16,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(64,28), //bcp->offset
    37, //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 _ZTI8S20512C2[];
extern void _ZN8S20512C23v23Ev();
extern void _ZN8S20512C23v24Ev();
extern void _ZN8S20512C23v25Ev();
extern void _ZN8S20512C23v26Ev();
extern void _ZN8S20512C23v27Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY vtc_S20512C2[] = {
  ABISELECT(64,28),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C2[0]),
  (VTBL_ENTRY)&_ZN8S20512C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20512C2[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20512C2[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern VTBL_ENTRY _ZTV8S20512C2[];
static  VTT_ENTRY vtt_S20512C2[] = {
  {&(_ZTV8S20512C2[4]),  4,51},
  {&(_ZTV8S20512C2[24]),  24,51},
  {&(_ZTV8S20512C2[45]),  45,51},
};
extern VTBL_ENTRY _ZTI8S20512C2[];
extern  VTBL_ENTRY _ZTV8S20512C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C2[];
Class_Descriptor cd_S20512C2 = {  "S20512C2", // class name
  bases_S20512C2, 3,
  &(vtc_S20512C2[0]), // expected_vtbl_contents
  &(vtt_S20512C2[0]), // expected_vtt_contents
  ABISELECT(112,48), // object size
  NSPAIRA(_ZTI8S20512C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20512C2),51, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20512C2),3, //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  S20512C7  : S20512C3 {
  __tsi64 s20512c7f0[2];
  ::S20512C4 s20512c7f1;
  virtual  ~S20512C7(); // _ZN8S20512C7D1Ev
  virtual void  v35(); // _ZN8S20512C73v35Ev
  virtual void  v36(); // _ZN8S20512C73v36Ev
  virtual void  v37(); // _ZN8S20512C73v37Ev
  virtual void  v38(); // _ZN8S20512C73v38Ev
  S20512C7(); // tgen
};
//SIG(-1 S20512C7) C1{ BC2{ BC3{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v1 v2 v3 v4 FL[2] FC3}


 S20512C7 ::~S20512C7(){ note_dtor("S20512C7", this);}
void  S20512C7 ::v35(){vfunc_called(this, "_ZN8S20512C73v35Ev");}
void  S20512C7 ::v36(){vfunc_called(this, "_ZN8S20512C73v36Ev");}
void  S20512C7 ::v37(){vfunc_called(this, "_ZN8S20512C73v37Ev");}
void  S20512C7 ::v38(){vfunc_called(this, "_ZN8S20512C73v38Ev");}
S20512C7 ::S20512C7(){ note_ctor("S20512C7", this);} // tgen

static void Test_S20512C7()
{
  extern Class_Descriptor cd_S20512C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S20512C7, buf);
    S20512C7 *dp, &lv = *(dp=new (buf) S20512C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S20512C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C7)");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*), 0, "S20512C7");
    check_base_class_offset(lv, (S20512C3*), 0, "S20512C7");
    check_field_offset(lv, s20512c7f0, ABISELECT(48,24), "S20512C7.s20512c7f0");
    check_field_offset(lv, s20512c7f1, ABISELECT(64,40), "S20512C7.s20512c7f1");
    test_class_info(&lv, &cd_S20512C7);
    dp->~S20512C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C7(Test_S20512C7, "S20512C7", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S20512C7C1Ev();
extern void _ZN8S20512C7D1Ev();
Name_Map name_map_S20512C7[] = {
  NSPAIR(_ZN8S20512C7C1Ev),
  NSPAIR(_ZN8S20512C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
static Base_Class bases_S20512C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI8S20512C7[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN8S20512C7D1Ev();
extern void _ZN8S20512C7D0Ev();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY vtc_S20512C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C7[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN8S20512C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
Class_Descriptor cd_S20512C7 = {  "S20512C7", // class name
  bases_S20512C7, 2,
  &(vtc_S20512C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S20512C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20512C7),21, //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  S20512C9  : virtual S20512C3 , S20512C4 {
  virtual void  v28(); // _ZN8S20512C93v28Ev
  virtual void  v29(); // _ZN8S20512C93v29Ev
  virtual void  v30(); // _ZN8S20512C93v30Ev
  virtual void  v31(); // _ZN8S20512C93v31Ev
  virtual void  v32(); // _ZN8S20512C93v32Ev
  virtual void  v33(); // _ZN8S20512C93v33Ev
  virtual void  v34(); // _ZN8S20512C93v34Ev
  ~S20512C9(); // tgen
  S20512C9(); // tgen
};
//SIG(-1 S20512C9) C1{ VBC2{ BC3{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} BC3 v1 v2 v3 v4 v5 v6 v7}


void  S20512C9 ::v28(){vfunc_called(this, "_ZN8S20512C93v28Ev");}
void  S20512C9 ::v29(){vfunc_called(this, "_ZN8S20512C93v29Ev");}
void  S20512C9 ::v30(){vfunc_called(this, "_ZN8S20512C93v30Ev");}
void  S20512C9 ::v31(){vfunc_called(this, "_ZN8S20512C93v31Ev");}
void  S20512C9 ::v32(){vfunc_called(this, "_ZN8S20512C93v32Ev");}
void  S20512C9 ::v33(){vfunc_called(this, "_ZN8S20512C93v33Ev");}
void  S20512C9 ::v34(){vfunc_called(this, "_ZN8S20512C93v34Ev");}
S20512C9 ::~S20512C9(){ note_dtor("S20512C9", this);} // tgen
S20512C9 ::S20512C9(){ note_ctor("S20512C9", this);} // tgen

static void Test_S20512C9()
{
  extern Class_Descriptor cd_S20512C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20512C9, buf);
    S20512C9 *dp, &lv = *(dp=new (buf) S20512C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S20512C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C9)");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(48,20), "S20512C9");
    check_base_class_offset(lv, (S20512C3*), ABISELECT(48,20), "S20512C9");
    /*is_ambiguous_... S20512C9::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), 0, "S20512C9");
    test_class_info(&lv, &cd_S20512C9);
    dp->~S20512C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C9(Test_S20512C9, "S20512C9", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN8S20512C9C1Ev();
extern void _ZN8S20512C9D1Ev();
Name_Map name_map_S20512C9[] = {
  NSPAIR(_ZN8S20512C9C1Ev),
  NSPAIR(_ZN8S20512C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
static Base_Class bases_S20512C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(48,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20512C9[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY vtc_S20512C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern VTBL_ENTRY _ZTV8S20512C9[];
static  VTT_ENTRY vtt_S20512C9[] = {
  {&(_ZTV8S20512C9[3]),  3,44},
  {&(_ZTV8S20512C9[31]),  31,44},
};
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
Class_Descriptor cd_S20512C9 = {  "S20512C9", // class name
  bases_S20512C9, 3,
  &(vtc_S20512C9[0]), // expected_vtbl_contents
  &(vtt_S20512C9[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI8S20512C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20512C9),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20512C9),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  S20512C8  : S20512C4 , virtual S20512C3 , S20512C9 , virtual S20512C7 {
  virtual void  v39(); // _ZN8S20512C83v39Ev
  ~S20512C8(); // tgen
  S20512C8(); // tgen
};
//SIG(-1 S20512C8) C1{ BC2{ v2 v3 v4 v5 v6 v7 FD Fl} VBC3{ BC2 v8 v9 v10 v11 v12 v13 v14 Fi} BC4{ VBC3 BC2 v15 v16 v17 v18 v19 v20 v21} VBC5{ BC3 vd v22 v23 v24 v25 FL[2] FC2} v1}


void  S20512C8 ::v39(){vfunc_called(this, "_ZN8S20512C83v39Ev");}
S20512C8 ::~S20512C8(){ note_dtor("S20512C8", this);} // tgen
S20512C8 ::S20512C8(){ note_ctor("S20512C8", this);} // tgen

static void Test_S20512C8()
{
  extern Class_Descriptor cd_S20512C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,32)];
    init_test(&cd_S20512C8, buf);
    S20512C8 *dp, &lv = *(dp=new (buf) S20512C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,124), "sizeof(S20512C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C8)");
    /*is_ambiguous_... S20512C8::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), 0, "S20512C8");
    /*is_ambiguous_... S20512C8::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(96,40), "S20512C8");
    /*is_ambiguous_... S20512C8::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*), ABISELECT(96,40), "S20512C8");
    check_base_class_offset(lv, (S20512C3*)(S20512C9*), ABISELECT(96,40), "S20512C8");
    /*is_ambiguous_... S20512C9::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*), ABISELECT(48,20), "S20512C8");
    check_base_class_offset(lv, (S20512C9*), ABISELECT(48,20), "S20512C8");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(144,64), "S20512C8");
    check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(144,64), "S20512C8");
    check_base_class_offset(lv, (S20512C7*), ABISELECT(144,64), "S20512C8");
    test_class_info(&lv, &cd_S20512C8);
    dp->~S20512C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C8(Test_S20512C8, "S20512C8", ABISELECT(256,124));

#else // __cplusplus

extern void _ZN8S20512C8C1Ev();
extern void _ZN8S20512C8D1Ev();
Name_Map name_map_S20512C8[] = {
  NSPAIR(_ZN8S20512C8C1Ev),
  NSPAIR(_ZN8S20512C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
static Base_Class bases_S20512C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20512C4,    ABISELECT(96,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
    2, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(96,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    15, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(48,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(144,64), //bcp->offset
    57, //bcp->virtual_function_table_offset
    20, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20512C8[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S20512C8D1Ev,_ZThn64_N8S20512C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void ABISELECT(_ZThn144_N8S20512C8D0Ev,_ZThn64_N8S20512C8D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY vtc_S20512C8[] = {
  ABISELECT(144,64),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern VTBL_ENTRY _ZTV8S20512C8[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C9__8S20512C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
static  VTT_ENTRY vtt_S20512C8[] = {
  {&(_ZTV8S20512C8[4]),  4,96},
  {&(_tg__ZTV8S20512C9__8S20512C8[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C9__8S20512C8[15]),  15,28},
  {&(_ZTV8S20512C8[44]),  44,96},
  {&(_ZTV8S20512C8[16]),  16,96},
  {&(_ZTV8S20512C8[77]),  77,96},
};
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20512C8D0Ev,_ZThn64_N8S20512C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20512C8D1Ev,_ZThn64_N8S20512C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C8 = {  "S20512C8", // class name
  bases_S20512C8, 8,
  &(vtc_S20512C8[0]), // expected_vtbl_contents
  &(vtt_S20512C8[0]), // expected_vtt_contents
  ABISELECT(256,124), // object size
  NSPAIRA(_ZTI8S20512C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20512C8),96, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20512C8),6, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C6  : virtual S20512C7 , virtual S20512C8 , S20512C9 , S20512C4 {
  ::S20512C4 s20512c6f0;
  void *s20512c6f1;
  virtual void  v40(); // _ZN8S20512C63v40Ev
  virtual void  v41(); // _ZN8S20512C63v41Ev
  virtual void  v42(); // _ZN8S20512C63v42Ev
  virtual void  v43(); // _ZN8S20512C63v43Ev
  virtual void  v44(); // _ZN8S20512C63v44Ev
  virtual void  v45(); // _ZN8S20512C63v45Ev
  virtual void  v46(); // _ZN8S20512C63v46Ev
  ~S20512C6(); // tgen
  S20512C6(); // tgen
};
//SIG(-1 S20512C6) C1{ VBC2{ BC3{ BC4{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} vd v21 v22 v23 v24 FL[2] FC4} VBC5{ BC4 VBC3 BC6{ VBC3 BC4 v25 v26 v27 v28 v29 v30 v31} VBC2 v32} BC6 BC4 v1 v2 v3 v4 v5 v6 v7 FC4 Fp}


void  S20512C6 ::v40(){vfunc_called(this, "_ZN8S20512C63v40Ev");}
void  S20512C6 ::v41(){vfunc_called(this, "_ZN8S20512C63v41Ev");}
void  S20512C6 ::v42(){vfunc_called(this, "_ZN8S20512C63v42Ev");}
void  S20512C6 ::v43(){vfunc_called(this, "_ZN8S20512C63v43Ev");}
void  S20512C6 ::v44(){vfunc_called(this, "_ZN8S20512C63v44Ev");}
void  S20512C6 ::v45(){vfunc_called(this, "_ZN8S20512C63v45Ev");}
void  S20512C6 ::v46(){vfunc_called(this, "_ZN8S20512C63v46Ev");}
S20512C6 ::~S20512C6(){ note_dtor("S20512C6", this);} // tgen
S20512C6 ::S20512C6(){ note_ctor("S20512C6", this);} // tgen

static void Test_S20512C6()
{
  extern Class_Descriptor cd_S20512C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,48)];
    init_test(&cd_S20512C6, buf);
    S20512C6 *dp, &lv = *(dp=new (buf) S20512C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,188), "sizeof(S20512C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C6)");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(160,64), "S20512C6");
    check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(160,64), "S20512C6");
    check_base_class_offset(lv, (S20512C7*), ABISELECT(160,64), "S20512C6");
    check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(160,64), "S20512C6");
    /*is_ambiguous_... S20512C8::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(272,124), "S20512C6");
    /*is_ambiguous_... S20512C6::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(368,164), "S20512C6");
    /*is_ambiguous_... S20512C8::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(368,164), "S20512C6");
    check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(368,164), "S20512C6");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*), ABISELECT(368,164), "S20512C6");
    /*is_ambiguous_... S20512C9::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(320,144), "S20512C6");
    check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(320,144), "S20512C6");
    check_base_class_offset(lv, (S20512C8*), ABISELECT(272,124), "S20512C6");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*), 0, "S20512C6");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*), 0, "S20512C6");
    /*is_ambiguous_... S20512C6::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), ABISELECT(48,20), "S20512C6");
    check_field_offset(lv, s20512c6f0, ABISELECT(96,40), "S20512C6.s20512c6f0");
    check_field_offset(lv, s20512c6f1, ABISELECT(144,60), "S20512C6.s20512c6f1");
    test_class_info(&lv, &cd_S20512C6);
    dp->~S20512C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C6(Test_S20512C6, "S20512C6", ABISELECT(416,188));

#else // __cplusplus

extern void _ZN8S20512C6C1Ev();
extern void _ZN8S20512C6D1Ev();
Name_Map name_map_S20512C6[] = {
  NSPAIR(_ZN8S20512C6C1Ev),
  NSPAIR(_ZN8S20512C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
static Base_Class bases_S20512C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(160,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(160,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(160,64), //bcp->offset
    35, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(272,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(368,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(368,164), //bcp->offset
    118, //bcp->virtual_function_table_offset
    15, //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, 1},
  {&cd_S20512C4,    ABISELECT(320,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(320,144), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(272,124), //bcp->offset
    74, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20512C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(48,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20512C6[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn64_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn64_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY vtc_S20512C6[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern VTBL_ENTRY _ZTV8S20512C6[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A1__8S20512C6[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C9__A1__8S20512C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__8S20512C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__8S20512C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__8S20512C6[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__8S20512C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
static  VTT_ENTRY vtt_S20512C6[] = {
  {&(_ZTV8S20512C6[5]),  5,146},
  {&(_tg__ZTV8S20512C9__A1__8S20512C6[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C9__A1__8S20512C6[15]),  15,28},
  {&(_ZTV8S20512C6[55]),  55,146},
  {&(_ZTV8S20512C6[93]),  93,146},
  {&(_ZTV8S20512C6[133]),  133,146},
  {&(_ZTV8S20512C6[105]),  105,146},
  {&(_tg__ZTV8S20512C8__8S20512C6[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__8S20512C6[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__8S20512C6[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__8S20512C6[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__8S20512C6[20]),  20,39},
};
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn64_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn64_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C6 = {  "S20512C6", // class name
  bases_S20512C6, 12,
  &(vtc_S20512C6[0]), // expected_vtbl_contents
  &(vtt_S20512C6[0]), // expected_vtt_contents
  ABISELECT(416,188), // object size
  NSPAIRA(_ZTI8S20512C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20512C6),146, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20512C6),13, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C5  : S20512C6 {
  int s20512c5f0;
  ::S7223C9_nt s20512c5f1;
  virtual void  v47(); // _ZN8S20512C53v47Ev
  virtual void  v48(); // _ZN8S20512C53v48Ev
  virtual void  v49(); // _ZN8S20512C53v49Ev
  virtual void  v50(); // _ZN8S20512C53v50Ev
  ~S20512C5(); // tgen
  S20512C5(); // tgen
};
//SIG(-1 S20512C5) C1{ BC2{ VBC3{ BC4{ BC5{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v18 v19 v20 v21 FL[2] FC5} VBC6{ BC5 VBC4 BC7{ VBC4 BC5 v22 v23 v24 v25 v26 v27 v28} VBC3 v29} BC7 BC5 v30 v31 v32 v33 v34 v35 v36 FC5 Fp} v1 v2 v3 v4 Fi FC8{}}


void  S20512C5 ::v47(){vfunc_called(this, "_ZN8S20512C53v47Ev");}
void  S20512C5 ::v48(){vfunc_called(this, "_ZN8S20512C53v48Ev");}
void  S20512C5 ::v49(){vfunc_called(this, "_ZN8S20512C53v49Ev");}
void  S20512C5 ::v50(){vfunc_called(this, "_ZN8S20512C53v50Ev");}
S20512C5 ::~S20512C5(){ note_dtor("S20512C5", this);} // tgen
S20512C5 ::S20512C5(){ note_ctor("S20512C5", this);} // tgen

static void Test_S20512C5()
{
  extern Class_Descriptor cd_S20512C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,50)];
    init_test(&cd_S20512C5, buf);
    S20512C5 *dp, &lv = *(dp=new (buf) S20512C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,196), "sizeof(S20512C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C5)");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(160,72), "S20512C5");
    check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(160,72), "S20512C5");
    check_base_class_offset(lv, (S20512C7*)(S20512C6*), ABISELECT(160,72), "S20512C5");
    check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(160,72), "S20512C5");
    /*is_ambiguous_... S20512C8::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(272,132), "S20512C5");
    /*is_ambiguous_... S20512C5::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(368,172), "S20512C5");
    /*is_ambiguous_... S20512C8::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(368,172), "S20512C5");
    check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(368,172), "S20512C5");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*), ABISELECT(368,172), "S20512C5");
    /*is_ambiguous_... S20512C9::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(320,152), "S20512C5");
    check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(320,152), "S20512C5");
    check_base_class_offset(lv, (S20512C8*)(S20512C6*), ABISELECT(272,132), "S20512C5");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*), 0, "S20512C5");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*), 0, "S20512C5");
    /*is_ambiguous_... S20512C6::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*), ABISELECT(48,20), "S20512C5");
    check_base_class_offset(lv, (S20512C6*), 0, "S20512C5");
    check_field_offset(lv, s20512c5f0, ABISELECT(152,64), "S20512C5.s20512c5f0");
    check_field_offset(lv, s20512c5f1, ABISELECT(156,68), "S20512C5.s20512c5f1");
    test_class_info(&lv, &cd_S20512C5);
    dp->~S20512C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C5(Test_S20512C5, "S20512C5", ABISELECT(416,196));

#else // __cplusplus

extern void _ZN8S20512C5C1Ev();
extern void _ZN8S20512C5D1Ev();
Name_Map name_map_S20512C5[] = {
  NSPAIR(_ZN8S20512C5C1Ev),
  NSPAIR(_ZN8S20512C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
static Base_Class bases_S20512C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(160,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(160,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(160,72), //bcp->offset
    39, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(272,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(368,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(368,172), //bcp->offset
    122, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(320,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(320,152), //bcp->offset
    106, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(272,132), //bcp->offset
    78, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20512C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(48,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C6,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20512C5[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C5D1Ev();
extern void _ZN8S20512C5D0Ev();
extern void _ZN8S20512C53v47Ev();
extern void _ZN8S20512C53v48Ev();
extern void _ZN8S20512C53v49Ev();
extern void _ZN8S20512C53v50Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C5D1Ev,_ZTv0_n64_N8S20512C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S20512C5D1Ev,_ZThn72_N8S20512C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C5D0Ev,_ZTv0_n64_N8S20512C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S20512C5D0Ev,_ZThn72_N8S20512C5D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C5D1Ev,_ZTv0_n48_N8S20512C5D1Ev)();
extern void ABISELECT(_ZThn272_N8S20512C5D1Ev,_ZThn132_N8S20512C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C5D0Ev,_ZTv0_n48_N8S20512C5D0Ev)();
extern void ABISELECT(_ZThn272_N8S20512C5D0Ev,_ZThn132_N8S20512C5D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY vtc_S20512C5[] = {
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v47Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v48Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v49Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v50Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C5D1Ev,_ZTv0_n64_N8S20512C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C5D0Ev,_ZTv0_n64_N8S20512C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C5D1Ev,_ZTv0_n48_N8S20512C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C5D0Ev,_ZTv0_n48_N8S20512C5D0Ev),
  ABISELECT(48,20),
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern VTBL_ENTRY _ZTV8S20512C5[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C6__8S20512C5[] = {
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C6__A1__8S20512C5[] = {
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C6__A1__8S20512C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn72_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn72_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C6__8S20512C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn132_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn132_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6__8S20512C5[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C6__8S20512C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6__8S20512C5[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C5[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C5[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__8S20512C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__8S20512C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__8S20512C5[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__8S20512C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
static  VTT_ENTRY vtt_S20512C5[] = {
  {&(_ZTV8S20512C5[5]),  5,150},
  {&(_tg__ZTV8S20512C6__8S20512C5[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C6__A1__8S20512C5[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C6__A1__8S20512C5[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C6__8S20512C5[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C6__8S20512C5[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C6__8S20512C5[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6__8S20512C5[3]),  3,16},
  {&(_ZTV8S20512C5[59]),  59,150},
  {&(_ZTV8S20512C5[97]),  97,150},
  {&(_ZTV8S20512C5[137]),  137,150},
  {&(_ZTV8S20512C5[109]),  109,150},
  {&(_tg__ZTV8S20512C8__8S20512C5[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C5[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__8S20512C5[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__8S20512C5[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__8S20512C5[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__8S20512C5[20]),  20,39},
};
extern VTBL_ENTRY _ZTI8S20512C5[];
extern  VTBL_ENTRY _ZTV8S20512C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C5[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn132_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn132_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn72_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn72_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C5D0Ev,_ZTv0_n48_N8S20512C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C5D0Ev,_ZThn132_N8S20512C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C5D1Ev,_ZTv0_n48_N8S20512C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C5D1Ev,_ZThn132_N8S20512C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C5D0Ev,_ZTv0_n64_N8S20512C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C5D0Ev,_ZThn72_N8S20512C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C5D1Ev,_ZTv0_n64_N8S20512C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C5D1Ev,_ZThn72_N8S20512C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C5 = {  "S20512C5", // class name
  bases_S20512C5, 13,
  &(vtc_S20512C5[0]), // expected_vtbl_contents
  &(vtt_S20512C5[0]), // expected_vtt_contents
  ABISELECT(416,196), // object size
  NSPAIRA(_ZTI8S20512C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20512C5),150, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20512C5),18, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C12  {
  ::S20512C4 s20512c12f0;
  int s20512c12f1;
  virtual  ~S20512C12(); // _ZN9S20512C12D1Ev
  virtual void  v51(); // _ZN9S20512C123v51Ev
  virtual void  v52(); // _ZN9S20512C123v52Ev
  virtual void  v53(); // _ZN9S20512C123v53Ev
  virtual void  v54(); // _ZN9S20512C123v54Ev
  S20512C12(); // tgen
};
//SIG(-1 S20512C12) C1{ vd v1 v2 v3 v4 FC2{ v5 v6 v7 v8 v9 v10 FD Fl} Fi}


 S20512C12 ::~S20512C12(){ note_dtor("S20512C12", this);}
void  S20512C12 ::v51(){vfunc_called(this, "_ZN9S20512C123v51Ev");}
void  S20512C12 ::v52(){vfunc_called(this, "_ZN9S20512C123v52Ev");}
void  S20512C12 ::v53(){vfunc_called(this, "_ZN9S20512C123v53Ev");}
void  S20512C12 ::v54(){vfunc_called(this, "_ZN9S20512C123v54Ev");}
S20512C12 ::S20512C12(){ note_ctor("S20512C12", this);} // tgen

static void Test_S20512C12()
{
  extern Class_Descriptor cd_S20512C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20512C12, buf);
    S20512C12 *dp, &lv = *(dp=new (buf) S20512C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,28), "sizeof(S20512C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C12)");
    check_field_offset(lv, s20512c12f0, ABISELECT(16,4), "S20512C12.s20512c12f0");
    check_field_offset(lv, s20512c12f1, ABISELECT(64,24), "S20512C12.s20512c12f1");
    test_class_info(&lv, &cd_S20512C12);
    dp->~S20512C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C12(Test_S20512C12, "S20512C12", ABISELECT(80,28));

#else // __cplusplus

extern void _ZN9S20512C12C1Ev();
extern void _ZN9S20512C12D1Ev();
Name_Map name_map_S20512C12[] = {
  NSPAIR(_ZN9S20512C12C1Ev),
  NSPAIR(_ZN9S20512C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20512C12[];
extern void _ZN9S20512C12D1Ev();
extern void _ZN9S20512C12D0Ev();
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY vtc_S20512C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C12[0]),
  (VTBL_ENTRY)&_ZN9S20512C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern VTBL_ENTRY _ZTI9S20512C12[];
extern  VTBL_ENTRY _ZTV9S20512C12[];
Class_Descriptor cd_S20512C12 = {  "S20512C12", // class name
  0,0,//no base classes
  &(vtc_S20512C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,28), // object size
  NSPAIRA(_ZTI9S20512C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20512C12),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  S20512C11  : virtual S20512C12 {
  int s20512c11f0;
  virtual void  v55(); // _ZN9S20512C113v55Ev
  virtual void  v56(); // _ZN9S20512C113v56Ev
  virtual void  v57(); // _ZN9S20512C113v57Ev
  virtual void  v58(); // _ZN9S20512C113v58Ev
  virtual void  v59(); // _ZN9S20512C113v59Ev
  ~S20512C11(); // tgen
  S20512C11(); // tgen
};
//SIG(-1 S20512C11) C1{ VBC2{ vd v6 v7 v8 v9 FC3{ v10 v11 v12 v13 v14 v15 FD Fl} Fi} v1 v2 v3 v4 v5 Fi}


void  S20512C11 ::v55(){vfunc_called(this, "_ZN9S20512C113v55Ev");}
void  S20512C11 ::v56(){vfunc_called(this, "_ZN9S20512C113v56Ev");}
void  S20512C11 ::v57(){vfunc_called(this, "_ZN9S20512C113v57Ev");}
void  S20512C11 ::v58(){vfunc_called(this, "_ZN9S20512C113v58Ev");}
void  S20512C11 ::v59(){vfunc_called(this, "_ZN9S20512C113v59Ev");}
S20512C11 ::~S20512C11(){ note_dtor("S20512C11", this);} // tgen
S20512C11 ::S20512C11(){ note_ctor("S20512C11", this);} // tgen

static void Test_S20512C11()
{
  extern Class_Descriptor cd_S20512C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,10)];
    init_test(&cd_S20512C11, buf);
    S20512C11 *dp, &lv = *(dp=new (buf) S20512C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,36), "sizeof(S20512C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C11)");
    check_base_class_offset(lv, (S20512C12*), ABISELECT(16,8), "S20512C11");
    check_field_offset(lv, s20512c11f0, ABISELECT(8,4), "S20512C11.s20512c11f0");
    test_class_info(&lv, &cd_S20512C11);
    dp->~S20512C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C11(Test_S20512C11, "S20512C11", ABISELECT(96,36));

#else // __cplusplus

extern void _ZN9S20512C11C1Ev();
extern void _ZN9S20512C11D1Ev();
Name_Map name_map_S20512C11[] = {
  NSPAIR(_ZN9S20512C11C1Ev),
  NSPAIR(_ZN9S20512C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C12;
extern VTBL_ENTRY _ZTI9S20512C12[];
extern  VTBL_ENTRY _ZTV9S20512C12[];
static Base_Class bases_S20512C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C12,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20512C11[];
extern void _ZN9S20512C113v55Ev();
extern void _ZN9S20512C113v56Ev();
extern void _ZN9S20512C113v57Ev();
extern void _ZN9S20512C113v58Ev();
extern void _ZN9S20512C113v59Ev();
extern void _ZN9S20512C11D1Ev();
extern void _ZN9S20512C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20512C11D1Ev,_ZTv0_n12_N9S20512C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S20512C11D1Ev,_ZThn8_N9S20512C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C11D0Ev,_ZTv0_n12_N9S20512C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S20512C11D0Ev,_ZThn8_N9S20512C11D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY vtc_S20512C11[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C11[0]),
  (VTBL_ENTRY)&_ZN9S20512C113v55Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v56Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v57Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v58Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v59Ev,
  (VTBL_ENTRY)&_ZN9S20512C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C11D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20512C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C11D1Ev,_ZTv0_n12_N9S20512C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C11D0Ev,_ZTv0_n12_N9S20512C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern VTBL_ENTRY _ZTV9S20512C11[];
static  VTT_ENTRY vtt_S20512C11[] = {
  {&(_ZTV9S20512C11[3]),  3,23},
  {&(_ZTV9S20512C11[17]),  17,23},
};
extern VTBL_ENTRY _ZTI9S20512C11[];
extern  VTBL_ENTRY _ZTV9S20512C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C11[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C11D0Ev,_ZTv0_n12_N9S20512C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20512C11D0Ev,_ZThn8_N9S20512C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C11D1Ev,_ZTv0_n12_N9S20512C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20512C11D1Ev,_ZThn8_N9S20512C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C11 = {  "S20512C11", // class name
  bases_S20512C11, 1,
  &(vtc_S20512C11[0]), // expected_vtbl_contents
  &(vtt_S20512C11[0]), // expected_vtt_contents
  ABISELECT(96,36), // object size
  NSPAIRA(_ZTI9S20512C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20512C11),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20512C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C15  : virtual S20512C4 , S20512C3 , virtual S20512C12 , virtual S20512C6 {
  virtual void  v60(); // _ZN9S20512C153v60Ev
  virtual void  v61(); // _ZN9S20512C153v61Ev
  virtual void  v62(); // _ZN9S20512C153v62Ev
  virtual void  v63(); // _ZN9S20512C153v63Ev
  virtual void  v64(); // _ZN9S20512C153v64Ev
  virtual void  v65(); // _ZN9S20512C153v65Ev
  virtual void  v66(); // _ZN9S20512C153v66Ev
  ~S20512C15(); // tgen
  S20512C15(); // tgen
};
//SIG(-1 S20512C15) C1{ VBC2{ v8 v9 v10 v11 v12 v13 FD Fl} BC3{ BC2 v14 v15 v16 v17 v18 v19 v20 Fi} VBC4{ vd v21 v22 v23 v24 FC2 Fi} VBC5{ VBC6{ BC3 vd v25 v26 v27 v28 FL[2] FC2} VBC7{ BC2 VBC3 BC8{ VBC3 BC2 v29 v30 v31 v32 v33 v34 v35} VBC6 v36} BC8 BC2 v37 v38 v39 v40 v41 v42 v43 FC2 Fp} v1 v2 v3 v4 v5 v6 v7}


void  S20512C15 ::v60(){vfunc_called(this, "_ZN9S20512C153v60Ev");}
void  S20512C15 ::v61(){vfunc_called(this, "_ZN9S20512C153v61Ev");}
void  S20512C15 ::v62(){vfunc_called(this, "_ZN9S20512C153v62Ev");}
void  S20512C15 ::v63(){vfunc_called(this, "_ZN9S20512C153v63Ev");}
void  S20512C15 ::v64(){vfunc_called(this, "_ZN9S20512C153v64Ev");}
void  S20512C15 ::v65(){vfunc_called(this, "_ZN9S20512C153v65Ev");}
void  S20512C15 ::v66(){vfunc_called(this, "_ZN9S20512C153v66Ev");}
S20512C15 ::~S20512C15(){ note_dtor("S20512C15", this);} // tgen
S20512C15 ::S20512C15(){ note_ctor("S20512C15", this);} // tgen

static void Test_S20512C15()
{
  extern Class_Descriptor cd_S20512C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,66)];
    init_test(&cd_S20512C15, buf);
    S20512C15 *dp, &lv = *(dp=new (buf) S20512C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,260), "sizeof(S20512C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C15)");
    /*is_ambiguous_... S20512C15::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), ABISELECT(48,24), "S20512C15");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), 0, "S20512C15");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*), 0, "S20512C15");
    check_base_class_offset(lv, (S20512C12*), ABISELECT(96,44), "S20512C15");
    check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(336,136), "S20512C15");
    check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(336,136), "S20512C15");
    check_base_class_offset(lv, (S20512C7*)(S20512C6*), ABISELECT(336,136), "S20512C15");
    check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(336,136), "S20512C15");
    /*is_ambiguous_... S20512C8::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(448,196), "S20512C15");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(544,236), "S20512C15");
    /*is_ambiguous_... S20512C8::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(544,236), "S20512C15");
    check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(544,236), "S20512C15");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*), ABISELECT(544,236), "S20512C15");
    /*is_ambiguous_... S20512C9::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(496,216), "S20512C15");
    check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(496,216), "S20512C15");
    check_base_class_offset(lv, (S20512C8*)(S20512C6*), ABISELECT(448,196), "S20512C15");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*), ABISELECT(176,72), "S20512C15");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*), ABISELECT(176,72), "S20512C15");
    /*is_ambiguous_... S20512C6::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*), ABISELECT(224,92), "S20512C15");
    check_base_class_offset(lv, (S20512C6*), ABISELECT(176,72), "S20512C15");
    test_class_info(&lv, &cd_S20512C15);
    dp->~S20512C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C15(Test_S20512C15, "S20512C15", ABISELECT(592,260));

#else // __cplusplus

extern void _ZN9S20512C15C1Ev();
extern void _ZN9S20512C15D1Ev();
Name_Map name_map_S20512C15[] = {
  NSPAIR(_ZN9S20512C15C1Ev),
  NSPAIR(_ZN9S20512C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C12;
extern VTBL_ENTRY _ZTI9S20512C12[];
extern  VTBL_ENTRY _ZTV9S20512C12[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
static Base_Class bases_S20512C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20512C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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},
  {&cd_S20512C12,    ABISELECT(96,44), //bcp->offset
    44, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(336,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(336,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(336,136), //bcp->offset
    113, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(448,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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(544,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(544,236), //bcp->offset
    196, //bcp->virtual_function_table_offset
    15, //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
    11, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(496,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(496,216), //bcp->offset
    180, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(448,196), //bcp->offset
    152, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(176,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
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(176,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(224,92), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20512C6,    ABISELECT(176,72), //bcp->offset
    57, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20512C15[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void _ZN9S20512C15D1Ev();
extern void _ZN9S20512C15D0Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20512C15D1Ev,_ZThn44_N9S20512C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S20512C15D0Ev,_ZThn44_N9S20512C15D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S20512C15D1Ev,_ZThn72_N9S20512C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S20512C15D0Ev,_ZThn72_N9S20512C15D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev)();
extern void ABISELECT(_ZThn336_N9S20512C15D1Ev,_ZThn136_N9S20512C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev)();
extern void ABISELECT(_ZThn336_N9S20512C15D0Ev,_ZThn136_N9S20512C15D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev)();
extern void ABISELECT(_ZThn448_N9S20512C15D1Ev,_ZThn196_N9S20512C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev)();
extern void ABISELECT(_ZThn448_N9S20512C15D0Ev,_ZThn196_N9S20512C15D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY vtc_S20512C15[] = {
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(336,136),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
  ABISELECT(-176,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-176,-72),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev),
  ABISELECT(-224,-92),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-448,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-448,-196),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev),
  ABISELECT(48,20),
  ABISELECT(-496,-216),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern VTBL_ENTRY _ZTV9S20512C15[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C6__9S20512C15[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C6__A1__9S20512C15[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C6__A1__9S20512C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn64_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn64_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C6__9S20512C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6__9S20512C15[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C6__9S20512C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6__9S20512C15[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C15[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__9S20512C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__9S20512C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__9S20512C15[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__9S20512C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
static  VTT_ENTRY vtt_S20512C15[] = {
  {&(_ZTV9S20512C15[8]),  8,224},
  {&(_ZTV9S20512C15[38]),  38,224},
  {&(_ZTV9S20512C15[51]),  51,224},
  {&(_ZTV9S20512C15[83]),  83,224},
  {&(_ZTV9S20512C15[133]),  133,224},
  {&(_ZTV9S20512C15[171]),  171,224},
  {&(_ZTV9S20512C15[211]),  211,224},
  {&(_ZTV9S20512C15[183]),  183,224},
  {&(_ZTV9S20512C15[107]),  107,224},
  {&(_tg__ZTV8S20512C6__9S20512C15[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C6__A1__9S20512C15[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C6__A1__9S20512C15[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C6__9S20512C15[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C6__9S20512C15[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C6__9S20512C15[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6__9S20512C15[3]),  3,16},
  {&(_tg__ZTV8S20512C8__9S20512C15[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C15[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__9S20512C15[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__9S20512C15[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__9S20512C15[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__9S20512C15[20]),  20,39},
};
extern VTBL_ENTRY _ZTI9S20512C15[];
extern  VTBL_ENTRY _ZTV9S20512C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C15[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn64_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn64_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20512C15D0Ev,_ZThn196_N9S20512C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20512C15D1Ev,_ZThn196_N9S20512C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20512C15D0Ev,_ZThn136_N9S20512C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20512C15D1Ev,_ZThn136_N9S20512C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20512C15D0Ev,_ZThn72_N9S20512C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20512C15D1Ev,_ZThn72_N9S20512C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20512C15D0Ev,_ZThn44_N9S20512C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20512C15D1Ev,_ZThn44_N9S20512C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C15 = {  "S20512C15", // class name
  bases_S20512C15, 17,
  &(vtc_S20512C15[0]), // expected_vtbl_contents
  &(vtt_S20512C15[0]), // expected_vtt_contents
  ABISELECT(592,260), // object size
  NSPAIRA(_ZTI9S20512C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20512C15),224, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20512C15),22, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C14  : S20512C6 , virtual S20512C9 , virtual S20512C12 , virtual S20512C15 , S20512C7 {
  virtual  ~S20512C14(); // _ZN9S20512C14D2Ev
  virtual void  v67(); // _ZN9S20512C143v67Ev
  virtual void  v68(); // _ZN9S20512C143v68Ev
  virtual void  v69(); // _ZN9S20512C143v69Ev
  virtual void  v70(); // _ZN9S20512C143v70Ev
  virtual void  v71(); // _ZN9S20512C143v71Ev
  S20512C14(); // tgen
};
//SIG(-1 S20512C14) C1{ BC2{ VBC3{ BC4{ BC5{ v6 v7 v8 v9 v10 v11 FD Fl} v12 v13 v14 v15 v16 v17 v18 Fi} vd v19 v20 v21 v22 FL[2] FC5} VBC6{ BC5 VBC4 BC7{ VBC4 BC5 v23 v24 v25 v26 v27 v28 v29} VBC3 v30} BC7 BC5 v31 v32 v33 v34 v35 v36 v37 FC5 Fp} VBC7 VBC8{ vd v38 v39 v40 v41 FC5 Fi} VBC9{ VBC5 BC4 VBC8 VBC2 v42 v43 v44 v45 v46 v47 v48} BC3 vd v1 v2 v3 v4 v5}


 S20512C14 ::~S20512C14(){ note_dtor("S20512C14", this);}
void  S20512C14 ::v67(){vfunc_called(this, "_ZN9S20512C143v67Ev");}
void  S20512C14 ::v68(){vfunc_called(this, "_ZN9S20512C143v68Ev");}
void  S20512C14 ::v69(){vfunc_called(this, "_ZN9S20512C143v69Ev");}
void  S20512C14 ::v70(){vfunc_called(this, "_ZN9S20512C143v70Ev");}
void  S20512C14 ::v71(){vfunc_called(this, "_ZN9S20512C143v71Ev");}
S20512C14 ::S20512C14(){ note_ctor("S20512C14", this);} // tgen

static void Test_S20512C14()
{
  extern Class_Descriptor cd_S20512C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,102)];
    init_test(&cd_S20512C14, buf);
    S20512C14 *dp, &lv = *(dp=new (buf) S20512C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,404), "sizeof(S20512C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C14)");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(272,124), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(272,124), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C6*), ABISELECT(272,124), "S20512C14");
    check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(272,124), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C6*), ABISELECT(272,124), "S20512C14");
    /*is_ambiguous_... S20512C8::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(384,184), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(480,224), "S20512C14");
    /*is_ambiguous_... S20512C8::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(480,224), "S20512C14");
    check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(480,224), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*), ABISELECT(480,224), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*), ABISELECT(480,224), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*), ABISELECT(480,224), "S20512C14");
    /*is_ambiguous_... S20512C9::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(432,204), "S20512C14");
    check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(432,204), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C6*), ABISELECT(384,184), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C6*), ABISELECT(384,184), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*), 0, "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*), 0, "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*), ABISELECT(48,20), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C6*), 0, "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*), ABISELECT(528,248), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*), ABISELECT(528,248), "S20512C14");
    check_base_class_offset(lv, (S20512C12*), ABISELECT(576,268), "S20512C14");
    check_base_class_offset(lv, (S20512C12*)(S20512C15*), ABISELECT(576,268), "S20512C14");
    /*is_ambiguous_... S20512C15::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C15*), ABISELECT(704,320), "S20512C14");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C15*), ABISELECT(656,296), "S20512C14");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C15*), ABISELECT(656,296), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*), ABISELECT(752,340), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*), ABISELECT(752,340), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*), ABISELECT(800,360), "S20512C14");
    check_base_class_offset(lv, (S20512C6*)(S20512C15*), ABISELECT(752,340), "S20512C14");
    check_base_class_offset(lv, (S20512C15*), ABISELECT(656,296), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(160,64), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(160,64), "S20512C14");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C7*), ABISELECT(160,64), "S20512C14");
    test_class_info(&lv, &cd_S20512C14);
    dp->~S20512C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C14(Test_S20512C14, "S20512C14", ABISELECT(912,404));

#else // __cplusplus

extern void _ZN9S20512C14C1Ev();
extern void _ZN9S20512C14D2Ev();
Name_Map name_map_S20512C14[] = {
  NSPAIR(_ZN9S20512C14C1Ev),
  NSPAIR(_ZN9S20512C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C12;
extern VTBL_ENTRY _ZTI9S20512C12[];
extern  VTBL_ENTRY _ZTV9S20512C12[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C15;
extern VTBL_ENTRY _ZTI9S20512C15[];
extern  VTBL_ENTRY _ZTV9S20512C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C15[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
static Base_Class bases_S20512C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(272,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
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(272,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(272,124), //bcp->offset
    66, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(384,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(480,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(480,224), //bcp->offset
    149, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(432,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(432,204), //bcp->offset
    133, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(384,184), //bcp->offset
    105, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S20512C9,    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
    22, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(48,20), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C6,    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
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(528,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
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(528,248), //bcp->offset
    177, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C12,    ABISELECT(576,268), //bcp->offset
    206, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(704,320), //bcp->offset
    270, //bcp->virtual_function_table_offset
    8, //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
    23, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(656,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(656,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
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(752,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
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(752,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(800,360), //bcp->offset
    332, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20512C6,    ABISELECT(752,340), //bcp->offset
    284, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20512C15,    ABISELECT(656,296), //bcp->offset
    219, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(160,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
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(160,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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(160,64), //bcp->offset
    45, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20512C14[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN9S20512C14D1Ev();
extern void _ZN9S20512C14D0Ev();
extern void _ZN9S20512C143v67Ev();
extern void _ZN9S20512C143v68Ev();
extern void _ZN9S20512C143v69Ev();
extern void _ZN9S20512C143v70Ev();
extern void _ZN9S20512C143v71Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZThn160_N9S20512C14D1Ev,_ZThn64_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn160_N9S20512C14D0Ev,_ZThn64_N9S20512C14D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn272_N9S20512C14D1Ev,_ZThn124_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn272_N9S20512C14D0Ev,_ZThn124_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn384_N9S20512C14D1Ev,_ZThn184_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn384_N9S20512C14D0Ev,_ZThn184_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn576_N9S20512C14D1Ev,_ZThn268_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn576_N9S20512C14D0Ev,_ZThn268_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn656_N9S20512C14D1Ev,_ZThn296_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn656_N9S20512C14D0Ev,_ZThn296_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn752_N9S20512C14D1Ev,_ZThn340_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn752_N9S20512C14D0Ev,_ZThn340_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY vtc_S20512C14[] = {
  ABISELECT(752,340),
  ABISELECT(704,320),
  ABISELECT(656,296),
  ABISELECT(576,268),
  ABISELECT(528,248),
  ABISELECT(384,184),
  ABISELECT(272,124),
  ABISELECT(480,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN9S20512C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v67Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v68Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v69Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v70Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v71Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20512C14D1Ev,_ZThn64_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20512C14D0Ev,_ZThn64_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-384,-184),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-384,-184),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev),
  ABISELECT(48,20),
  ABISELECT(-432,-204),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-224),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-528,-248),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-268),
  ABISELECT(-576,-268),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
  ABISELECT(-656,-296),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-72),
  ABISELECT(-272,-112),
  ABISELECT(-384,-172),
  ABISELECT(96,44),
  ABISELECT(-80,-28),
  ABISELECT(48,24),
  ABISELECT(-656,-296),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-320),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  ABISELECT(-752,-340),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  ABISELECT(-752,-340),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev),
  ABISELECT(-800,-360),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern VTBL_ENTRY _ZTV9S20512C14[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C6__A__9S20512C14[] = {
  ABISELECT(384,184),
  ABISELECT(272,124),
  ABISELECT(480,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C6__A1__9S20512C14[] = {
  ABISELECT(480,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C6__A1__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-224),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C6__A__9S20512C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn384_N8S20512C6D1Ev,_ZThn184_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn384_N8S20512C6D0Ev,_ZThn184_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6__A__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-384,-184),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-384,-184),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C6__A__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-224),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6__A__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(-432,-204),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C14[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__9S20512C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A2__9S20512C14[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C9__A2__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void _ZN9S20512C15D1Ev();
extern void _ZN9S20512C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C15__9S20512C14[] = {
  ABISELECT(-176,-72),
  ABISELECT(-272,-112),
  ABISELECT(-384,-172),
  ABISELECT(96,44),
  ABISELECT(-80,-28),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__9S20512C15__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev)();
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C15__9S20512C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,28),
  ABISELECT(80,28),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20512C15D1Ev,_ZThn44_N9S20512C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S20512C15D0Ev,_ZThn44_N9S20512C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C6__9S20512C15__9S20512C14[] = {
  ABISELECT(-96,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__9S20512C15__9S20512C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(384,172),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(384,172),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C15__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(272,112),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(272,112),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A2__9S20512C15__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,72),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C15__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(224,92),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C48S20512C6__A7__9S20512C15__9S20512C14[] = {
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C6__A1__9S20512C14[] = {
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C6__A3__9S20512C14[] = {
  ABISELECT(-272,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C6__A3__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,116),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C6__A1__9S20512C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(480,216),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(480,216),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6__A1__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(368,156),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(368,156),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C6__A1__9S20512C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,116),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6__A1__9S20512C14[] = {
  ABISELECT(48,20),
  ABISELECT(320,136),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
static  VTT_ENTRY vtt_S20512C14[] = {
  {&(_ZTV9S20512C14[10]),  10,340},
  {&(_tg__ZTV8S20512C6__A__9S20512C14[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C6__A1__9S20512C14[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C6__A1__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C6__A__9S20512C14[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C6__A__9S20512C14[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C6__A__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6__A__9S20512C14[3]),  3,16},
  {&(_ZTV9S20512C14[86]),  86,340},
  {&(_ZTV9S20512C14[124]),  124,340},
  {&(_ZTV9S20512C14[164]),  164,340},
  {&(_ZTV9S20512C14[136]),  136,340},
  {&(_ZTV9S20512C14[193]),  193,340},
  {&(_ZTV9S20512C14[213]),  213,340},
  {&(_ZTV9S20512C14[248]),  248,340},
  {&(_ZTV9S20512C14[278]),  278,340},
  {&(_ZTV9S20512C14[310]),  310,340},
  {&(_ZTV9S20512C14[334]),  334,340},
  {&(_tg__ZTV8S20512C8__9S20512C14[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C14[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__9S20512C14[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__9S20512C14[20]),  20,39},
  {&(_tg__ZTV8S20512C9__A2__9S20512C14[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C9__A2__9S20512C14[15]),  15,28},
  {&(_tg__ZTV9S20512C15__9S20512C14[8]),  8,30},
  {&(_tg__ZTV8S20512C4__9S20512C15__9S20512C14[8]),  8,14},
  {&(_tg__ZTV9S20512C12__9S20512C15__9S20512C14[7]),  7,13},
  {&(_tg__ZTV8S20512C6__9S20512C15__9S20512C14[26]),  26,48},
  {&(_tg__ZTV8S20512C7__9S20512C15__9S20512C14[20]),  20,39},
  {&(_tg__ZTV8S20512C8__9S20512C15__9S20512C14[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A2__9S20512C15__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C15__9S20512C14[3]),  3,16},
  {&(_tg__ZTV8S20512C48S20512C6__A7__9S20512C15__9S20512C14[2]),  2,8},
  {&(_tg__ZTV8S20512C6__A1__9S20512C14[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C6__A3__9S20512C14[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C6__A3__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C6__A1__9S20512C14[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C6__A1__9S20512C14[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C6__A1__9S20512C14[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6__A1__9S20512C14[3]),  3,16},
};
extern VTBL_ENTRY _ZTI9S20512C14[];
extern  VTBL_ENTRY _ZTV9S20512C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C14[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20512C15D0Ev,_ZThn44_N9S20512C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20512C15D1Ev,_ZThn44_N9S20512C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20512C6D0Ev,_ZThn184_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20512C6D1Ev,_ZThn184_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N9S20512C14D0Ev,_ZThn340_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N9S20512C14D1Ev,_ZThn340_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S20512C14D0Ev,_ZThn296_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S20512C14D1Ev,_ZThn296_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S20512C14D0Ev,_ZThn268_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S20512C14D1Ev,_ZThn268_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20512C14D0Ev,_ZThn184_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20512C14D1Ev,_ZThn184_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20512C14D0Ev,_ZThn124_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20512C14D1Ev,_ZThn124_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C14 = {  "S20512C14", // class name
  bases_S20512C14, 27,
  &(vtc_S20512C14[0]), // expected_vtbl_contents
  &(vtt_S20512C14[0]), // expected_vtt_contents
  ABISELECT(912,404), // object size
  NSPAIRA(_ZTI9S20512C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20512C14),340, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20512C14),42, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C13  : virtual S20512C4 , S20512C3 , virtual S20512C6 , S20512C14 , S20512C8 {
  virtual void  v72(); // _ZN9S20512C133v72Ev
  virtual void  v73(); // _ZN9S20512C133v73Ev
  ~S20512C13(); // tgen
  S20512C13(); // tgen
};
//SIG(-1 S20512C13) C1{ VBC2{ v3 v4 v5 v6 v7 v8 FD Fl} BC3{ BC2 v9 v10 v11 v12 v13 v14 v15 Fi} VBC4{ VBC5{ BC3 vd v16 v17 v18 v19 FL[2] FC2} VBC6{ BC2 VBC3 BC7{ VBC3 BC2 v20 v21 v22 v23 v24 v25 v26} VBC5 v27} BC7 BC2 v28 v29 v30 v31 v32 v33 v34 FC2 Fp} BC8{ BC4 VBC7 VBC9{ vd v35 v36 v37 v38 FC2 Fi} VBC10{ VBC2 BC3 VBC9 VBC4 v39 v40 v41 v42 v43 v44 v45} BC5 vd v46 v47 v48 v49 v50} BC6 v1 v2}


void  S20512C13 ::v72(){vfunc_called(this, "_ZN9S20512C133v72Ev");}
void  S20512C13 ::v73(){vfunc_called(this, "_ZN9S20512C133v73Ev");}
S20512C13 ::~S20512C13(){ note_dtor("S20512C13", this);} // tgen
S20512C13 ::S20512C13(){ note_ctor("S20512C13", this);} // tgen

static void Test_S20512C13()
{
  extern Class_Descriptor cd_S20512C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(67,118)];
    init_test(&cd_S20512C13, buf);
    S20512C13 *dp, &lv = *(dp=new (buf) S20512C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,468), "sizeof(S20512C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C13)");
    /*is_ambiguous_... S20512C13::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), ABISELECT(416,188), "S20512C13");
    /*is_ambiguous_... S20512C15::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C15*), ABISELECT(416,188), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), 0, "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*), 0, "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(624,272), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(624,272), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C6*), ABISELECT(624,272), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(624,272), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C6*)(S20512C14*), ABISELECT(624,272), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(624,272), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(736,332), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*)(S20512C14*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(832,372), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(784,352), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(784,352), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C6*), ABISELECT(736,332), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C6*)(S20512C14*), ABISELECT(736,332), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*), ABISELECT(464,208), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*), ABISELECT(464,208), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*), ABISELECT(512,228), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C6*), ABISELECT(464,208), "S20512C13");
    check_base_class_offset(lv, (S20512C6*)(S20512C15*), ABISELECT(464,208), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*)(S20512C14*), ABISELECT(48,24), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*)(S20512C14*), ABISELECT(48,24), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*)(S20512C14*), ABISELECT(96,44), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C6*)(S20512C14*), ABISELECT(48,24), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*), ABISELECT(880,396), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C14*), ABISELECT(880,396), "S20512C13");
    check_base_class_offset(lv, (S20512C12*)(S20512C14*), ABISELECT(928,416), "S20512C13");
    check_base_class_offset(lv, (S20512C12*)(S20512C15*), ABISELECT(928,416), "S20512C13");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C15*), ABISELECT(1008,444), "S20512C13");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C15*), ABISELECT(1008,444), "S20512C13");
    check_base_class_offset(lv, (S20512C15*)(S20512C14*), ABISELECT(1008,444), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*)(S20512C14*), ABISELECT(208,88), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C7*)(S20512C14*), ABISELECT(208,88), "S20512C13");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C14*), ABISELECT(208,88), "S20512C13");
    check_base_class_offset(lv, (S20512C14*), ABISELECT(48,24), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(320,148), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(368,168), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(368,168), "S20512C13");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C8*), ABISELECT(320,148), "S20512C13");
    test_class_info(&lv, &cd_S20512C13);
    dp->~S20512C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C13(Test_S20512C13, "S20512C13", ABISELECT(1056,468));

#else // __cplusplus

extern void _ZN9S20512C13C1Ev();
extern void _ZN9S20512C13D1Ev();
Name_Map name_map_S20512C13[] = {
  NSPAIR(_ZN9S20512C13C1Ev),
  NSPAIR(_ZN9S20512C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C12;
extern VTBL_ENTRY _ZTI9S20512C12[];
extern  VTBL_ENTRY _ZTV9S20512C12[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C15;
extern VTBL_ENTRY _ZTI9S20512C15[];
extern  VTBL_ENTRY _ZTV9S20512C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C15[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C14;
extern VTBL_ENTRY _ZTI9S20512C14[];
extern  VTBL_ENTRY _ZTV9S20512C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C14[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
static Base_Class bases_S20512C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(416,188), //bcp->offset
    122, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20512C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(624,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
    4, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(624,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(624,272), //bcp->offset
    192, //bcp->virtual_function_table_offset
    20, //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
    11, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(736,332), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20512C4,    ABISELECT(832,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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(832,372), //bcp->offset
    275, //bcp->virtual_function_table_offset
    15, //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
    10, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(784,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(784,352), //bcp->offset
    259, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(736,332), //bcp->offset
    231, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(464,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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(464,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(512,228), //bcp->offset
    184, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20512C6,    ABISELECT(464,208), //bcp->offset
    136, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    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
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20512C9,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(96,44), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20512C6,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(880,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
    21, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(880,396), //bcp->offset
    303, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20512C12,    ABISELECT(928,416), //bcp->offset
    332, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(1008,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
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(1008,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
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20512C15,    ABISELECT(1008,444), //bcp->offset
    345, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(208,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
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(208,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(208,88), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20512C14,    ABISELECT(48,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(320,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
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(368,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
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(368,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(320,148), //bcp->offset
    93, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20512C13[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C133v72Ev();
extern void _ZN9S20512C133v73Ev();
extern void _ZN9S20512C13D1Ev();
extern void _ZN9S20512C13D0Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZThn48_N9S20512C13D1Ev,_ZThn24_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S20512C13D0Ev,_ZThn24_N9S20512C13D0Ev)();
extern void _ZN9S20512C143v67Ev();
extern void _ZN9S20512C143v68Ev();
extern void _ZN9S20512C143v69Ev();
extern void _ZN9S20512C143v70Ev();
extern void _ZN9S20512C143v71Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZThn208_N9S20512C13D1Ev,_ZThn88_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn208_N9S20512C13D0Ev,_ZThn88_N9S20512C13D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZThn320_N9S20512C13D1Ev,_ZThn148_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn320_N9S20512C13D0Ev,_ZThn148_N9S20512C13D0Ev)();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C13D1Ev,_ZTv0_n104_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn464_N9S20512C13D1Ev,_ZThn208_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C13D0Ev,_ZTv0_n104_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn464_N9S20512C13D0Ev,_ZThn208_N9S20512C13D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C13D1Ev,_ZTv0_n64_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn624_N9S20512C13D1Ev,_ZThn272_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20512C13D0Ev,_ZTv0_n64_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn624_N9S20512C13D0Ev,_ZThn272_N9S20512C13D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C13D1Ev,_ZTv0_n48_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn736_N9S20512C13D1Ev,_ZThn332_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20512C13D0Ev,_ZTv0_n48_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn736_N9S20512C13D0Ev,_ZThn332_N9S20512C13D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void ABISELECT(_ZTv0_n24_N9S20512C13D1Ev,_ZTv0_n12_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn928_N9S20512C13D1Ev,_ZThn416_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C13D0Ev,_ZTv0_n12_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn928_N9S20512C13D0Ev,_ZThn416_N9S20512C13D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void ABISELECT(_ZTv0_n232_N9S20512C13D1Ev,_ZTv0_n116_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn1008_N9S20512C13D1Ev,_ZThn444_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N9S20512C13D0Ev,_ZTv0_n116_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn1008_N9S20512C13D0Ev,_ZThn444_N9S20512C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20512C13[] = {
  ABISELECT(1008,444),
  ABISELECT(928,416),
  ABISELECT(880,396),
  ABISELECT(832,372),
  ABISELECT(736,332),
  ABISELECT(624,272),
  ABISELECT(464,208),
  ABISELECT(416,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C133v72Ev,
  (VTBL_ENTRY)&_ZN9S20512C133v73Ev,
  (VTBL_ENTRY)&_ZN9S20512C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C13D0Ev,
  ABISELECT(416,184),
  ABISELECT(368,164),
  ABISELECT(960,420),
  ABISELECT(880,392),
  ABISELECT(832,372),
  ABISELECT(688,308),
  ABISELECT(576,248),
  ABISELECT(784,348),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20512C13D1Ev,_ZThn24_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20512C13D0Ev,_ZThn24_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C143v67Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v68Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v69Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v70Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v71Ev,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  ABISELECT(-208,-88),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S20512C13D1Ev,_ZThn88_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S20512C13D0Ev,_ZThn88_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(304,124),
  ABISELECT(512,224),
  ABISELECT(-320,-148),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S20512C13D1Ev,_ZThn148_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S20512C13D0Ev,_ZThn148_N9S20512C13D0Ev),
  ABISELECT(464,204),
  ABISELECT(-368,-168),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-188),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  ABISELECT(-464,-208),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-464,-208),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C13D1Ev,_ZTv0_n104_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C13D0Ev,_ZTv0_n104_N9S20512C13D0Ev),
  ABISELECT(-512,-228),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-272),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-272),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C13D1Ev,_ZTv0_n64_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C13D0Ev,_ZTv0_n64_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-736,-332),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-736,-332),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C13D1Ev,_ZTv0_n48_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C13D0Ev,_ZTv0_n48_N9S20512C13D0Ev),
  ABISELECT(48,20),
  ABISELECT(-784,-352),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-372),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-880,-396),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-928,-416),
  ABISELECT(-928,-416),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C13D1Ev,_ZTv0_n12_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C13D0Ev,_ZTv0_n12_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
  ABISELECT(-1008,-444),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-72),
  ABISELECT(-272,-112),
  ABISELECT(-384,-172),
  ABISELECT(-544,-236),
  ABISELECT(-80,-28),
  ABISELECT(-592,-256),
  ABISELECT(-1008,-444),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C13D1Ev,_ZTv0_n116_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C13D0Ev,_ZTv0_n116_N9S20512C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20512C13[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN9S20512C14D1Ev();
extern void _ZN9S20512C14D0Ev();
extern void _ZN9S20512C143v67Ev();
extern void _ZN9S20512C143v68Ev();
extern void _ZN9S20512C143v69Ev();
extern void _ZN9S20512C143v70Ev();
extern void _ZN9S20512C143v71Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C14__9S20512C13[] = {
  ABISELECT(416,184),
  ABISELECT(368,164),
  ABISELECT(960,420),
  ABISELECT(880,392),
  ABISELECT(832,372),
  ABISELECT(688,308),
  ABISELECT(576,248),
  ABISELECT(784,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN9S20512C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v67Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v68Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v69Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v70Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v71Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C69S20512C14__A1__9S20512C13[] = {
  ABISELECT(688,308),
  ABISELECT(576,248),
  ABISELECT(784,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C69S20512C14__A2__9S20512C13[] = {
  ABISELECT(784,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C69S20512C14__A2__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-784,-348),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn576_N8S20512C6D1Ev,_ZThn248_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn576_N8S20512C6D0Ev,_ZThn248_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C69S20512C14__A1__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-576,-248),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-248),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn688_N8S20512C6D1Ev,_ZThn308_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn688_N8S20512C6D0Ev,_ZThn308_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C69S20512C14__A1__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-688,-308),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-688,-308),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C69S20512C14__A1__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-784,-348),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C69S20512C14__A1__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(-736,-328),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn576_N9S20512C14D1Ev,_ZThn248_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn576_N9S20512C14D0Ev,_ZThn248_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__9S20512C14__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-576,-248),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-248),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn688_N9S20512C14D1Ev,_ZThn308_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn688_N9S20512C14D0Ev,_ZThn308_N9S20512C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C14__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-688,-308),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-688,-308),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__9S20512C14__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-784,-348),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C14__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(-736,-328),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A2__9S20512C14__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-832,-372),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn880_N9S20512C14D1Ev,_ZThn392_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn880_N9S20512C14D0Ev,_ZThn392_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C14__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-880,-392),
  ABISELECT(-880,-392),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn960_N9S20512C14D1Ev,_ZThn420_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn960_N9S20512C14D0Ev,_ZThn420_N9S20512C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20512C15__9S20512C14__9S20512C13[] = {
  ABISELECT(-960,-420),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-72),
  ABISELECT(-272,-112),
  ABISELECT(-384,-172),
  ABISELECT(-544,-236),
  ABISELECT(-80,-28),
  ABISELECT(-592,-256),
  ABISELECT(-960,-420),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__A7__9S20512C14__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn416_N9S20512C14D1Ev,_ZThn184_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn416_N9S20512C14D0Ev,_ZThn184_N9S20512C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C6__A1__9S20512C14__9S20512C13[] = {
  ABISELECT(-416,-184),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-416,-184),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C48S20512C6__A10__9S20512C14__9S20512C13[] = {
  ABISELECT(-464,-204),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__A__9S20512C13[] = {
  ABISELECT(304,124),
  ABISELECT(512,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__A4__9S20512C13[] = {
  ABISELECT(464,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__A4__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-204),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__A__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-224),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__A__9S20512C13[] = {
  ABISELECT(464,204),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZThn304_N8S20512C8D1Ev,_ZThn124_N8S20512C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void ABISELECT(_ZThn304_N8S20512C8D0Ev,_ZThn124_N8S20512C8D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__A__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-124),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C6__9S20512C13[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C6__A1__9S20512C13[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C6__A1__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn64_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn64_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C6__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C6__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C13[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C13[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A3__9S20512C13[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C9__A3__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void _ZN9S20512C15D1Ev();
extern void _ZN9S20512C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C15__9S20512C13[] = {
  ABISELECT(-176,-72),
  ABISELECT(-272,-112),
  ABISELECT(-384,-172),
  ABISELECT(-544,-236),
  ABISELECT(-80,-28),
  ABISELECT(-592,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__9S20512C15__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(592,256),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev)();
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C15__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,28),
  ABISELECT(80,28),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C6__9S20512C15__9S20512C13[] = {
  ABISELECT(544,236),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(544,236),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__9S20512C15__9S20512C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(384,172),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(384,172),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C15__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(272,112),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(272,112),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A2__9S20512C15__9S20512C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,72),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C15__9S20512C13[] = {
  ABISELECT(48,20),
  ABISELECT(224,92),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C48S20512C6__A7__9S20512C15__9S20512C13[] = {
  ABISELECT(496,216),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
static  VTT_ENTRY vtt_S20512C13[] = {
  {&(_ZTV9S20512C13[10]),  10,396},
  {&(_tg__ZTV9S20512C14__9S20512C13[10]),  10,37},
  {&(_tg__ZTV8S20512C69S20512C14__A1__9S20512C13[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C69S20512C14__A2__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C69S20512C14__A2__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C69S20512C14__A1__9S20512C13[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C69S20512C14__A1__9S20512C13[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C69S20512C14__A1__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C69S20512C14__A1__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C7__9S20512C14__9S20512C13[20]),  20,39},
  {&(_tg__ZTV8S20512C8__9S20512C14__9S20512C13[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__9S20512C14__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C14__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C9__A2__9S20512C14__9S20512C13[16]),  16,29},
  {&(_tg__ZTV9S20512C12__9S20512C14__9S20512C13[7]),  7,13},
  {&(_tg__ZTV9S20512C15__9S20512C14__9S20512C13[29]),  29,51},
  {&(_tg__ZTV8S20512C4__A7__9S20512C14__9S20512C13[8]),  8,14},
  {&(_tg__ZTV8S20512C6__A1__9S20512C14__9S20512C13[26]),  26,48},
  {&(_tg__ZTV8S20512C48S20512C6__A10__9S20512C14__9S20512C13[2]),  2,8},
  {&(_tg__ZTV8S20512C8__A__9S20512C13[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__A4__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__A4__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__A__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__A__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__A__9S20512C13[20]),  20,39},
  {&(_ZTV9S20512C13[130]),  130,396},
  {&(_ZTV9S20512C13[162]),  162,396},
  {&(_ZTV9S20512C13[212]),  212,396},
  {&(_ZTV9S20512C13[250]),  250,396},
  {&(_ZTV9S20512C13[290]),  290,396},
  {&(_ZTV9S20512C13[262]),  262,396},
  {&(_ZTV9S20512C13[186]),  186,396},
  {&(_ZTV9S20512C13[37]),  37,396},
  {&(_ZTV9S20512C13[319]),  319,396},
  {&(_ZTV9S20512C13[339]),  339,396},
  {&(_ZTV9S20512C13[374]),  374,396},
  {&(_ZTV9S20512C13[97]),  97,396},
  {&(_ZTV9S20512C13[109]),  109,396},
  {&(_tg__ZTV8S20512C6__9S20512C13[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C6__A1__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C6__A1__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C6__9S20512C13[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C6__9S20512C13[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C6__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C8__9S20512C13[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__9S20512C13[20]),  20,39},
  {&(_tg__ZTV8S20512C9__A3__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C9__A3__9S20512C13[15]),  15,28},
  {&(_tg__ZTV9S20512C15__9S20512C13[8]),  8,30},
  {&(_tg__ZTV8S20512C4__9S20512C15__9S20512C13[8]),  8,14},
  {&(_tg__ZTV9S20512C12__9S20512C15__9S20512C13[7]),  7,13},
  {&(_tg__ZTV8S20512C6__9S20512C15__9S20512C13[26]),  26,48},
  {&(_tg__ZTV8S20512C7__9S20512C15__9S20512C13[20]),  20,39},
  {&(_tg__ZTV8S20512C8__9S20512C15__9S20512C13[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A2__9S20512C15__9S20512C13[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C15__9S20512C13[3]),  3,16},
  {&(_tg__ZTV8S20512C48S20512C6__A7__9S20512C15__9S20512C13[2]),  2,8},
};
extern VTBL_ENTRY _ZTI9S20512C13[];
extern  VTBL_ENTRY _ZTV9S20512C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C13[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20512C8D0Ev,_ZThn124_N8S20512C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20512C8D1Ev,_ZThn124_N8S20512C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S20512C14D0Ev,_ZThn184_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S20512C14D1Ev,_ZThn184_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20512C14D0Ev,_ZThn420_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20512C14D1Ev,_ZThn420_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn880_N9S20512C14D0Ev,_ZThn392_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn880_N9S20512C14D1Ev,_ZThn392_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N9S20512C14D0Ev,_ZThn308_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N9S20512C14D1Ev,_ZThn308_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S20512C14D0Ev,_ZThn248_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S20512C14D1Ev,_ZThn248_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D0Ev,_ZThn124_N8S20512C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20512C6D0Ev,_ZThn308_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20512C6D1Ev,_ZThn124_N8S20512C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20512C6D1Ev,_ZThn308_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D0Ev,_ZThn64_N8S20512C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S20512C6D0Ev,_ZThn248_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20512C6D1Ev,_ZThn64_N8S20512C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S20512C6D1Ev,_ZThn248_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C13D0Ev,_ZTv0_n116_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1008_N9S20512C13D0Ev,_ZThn444_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C13D1Ev,_ZTv0_n116_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1008_N9S20512C13D1Ev,_ZThn444_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C13D0Ev,_ZTv0_n12_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N9S20512C13D0Ev,_ZThn416_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C13D1Ev,_ZTv0_n12_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N9S20512C13D1Ev,_ZThn416_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C13D0Ev,_ZTv0_n48_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20512C13D0Ev,_ZThn332_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C13D1Ev,_ZTv0_n48_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20512C13D1Ev,_ZThn332_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C13D0Ev,_ZTv0_n64_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S20512C13D0Ev,_ZThn272_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C13D1Ev,_ZTv0_n64_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S20512C13D1Ev,_ZThn272_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C13D0Ev,_ZTv0_n104_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S20512C13D0Ev,_ZThn208_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C13D1Ev,_ZTv0_n104_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S20512C13D1Ev,_ZThn208_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C13 = {  "S20512C13", // class name
  bases_S20512C13, 34,
  &(vtc_S20512C13[0]), // expected_vtbl_contents
  &(vtt_S20512C13[0]), // expected_vtt_contents
  ABISELECT(1056,468), // object size
  NSPAIRA(_ZTI9S20512C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20512C13),396, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20512C13),62, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20512C1  : virtual S20512C2 , S20512C5 , S20512C11 , S20512C13 , S20512C4 {
  virtual void  v1(); // _ZN8S20512C12v1Ev
  virtual void  v2(); // _ZN8S20512C12v2Ev
  virtual void  v3(); // _ZN8S20512C12v3Ev
  virtual void  v4(); // _ZN8S20512C12v4Ev
  virtual void  v5(); // _ZN8S20512C12v5Ev
  virtual void  v6(); // _ZN8S20512C12v6Ev
  virtual void  v7(); // _ZN8S20512C12v7Ev
  virtual void  v8(); // _ZN8S20512C12v8Ev
  virtual void  v9(); // _ZN8S20512C12v9Ev
  ~S20512C1(); // tgen
  S20512C1(); // tgen
};
//SIG(1 S20512C1) C1{ VBC2{ VBC3{ BC4{ v10 v11 v12 v13 v14 v15 FD Fl} v16 v17 v18 v19 v20 v21 v22 Fi} VBC4 v23 v24 v25 v26 v27} BC5{ BC6{ VBC7{ BC3 vd v28 v29 v30 v31 FL[2] FC4} VBC8{ BC4 VBC3 BC9{ VBC3 BC4 v32 v33 v34 v35 v36 v37 v38} VBC7 v39} BC9 BC4 v40 v41 v42 v43 v44 v45 v46 FC4 Fp} v47 v48 v49 v50 Fi FC10{}} BC11{ VBC12{ vd v51 v52 v53 v54 FC4 Fi} v55 v56 v57 v58 v59 Fi} BC13{ VBC4 BC3 VBC6 BC14{ BC6 VBC9 VBC12 VBC15{ VBC4 BC3 VBC12 VBC6 v60 v61 v62 v63 v64 v65 v66} BC7 vd v67 v68 v69 v70 v71} BC8 v72 v73} BC4 v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20512C1 ::v1(){vfunc_called(this, "_ZN8S20512C12v1Ev");}
void  S20512C1 ::v2(){vfunc_called(this, "_ZN8S20512C12v2Ev");}
void  S20512C1 ::v3(){vfunc_called(this, "_ZN8S20512C12v3Ev");}
void  S20512C1 ::v4(){vfunc_called(this, "_ZN8S20512C12v4Ev");}
void  S20512C1 ::v5(){vfunc_called(this, "_ZN8S20512C12v5Ev");}
void  S20512C1 ::v6(){vfunc_called(this, "_ZN8S20512C12v6Ev");}
void  S20512C1 ::v7(){vfunc_called(this, "_ZN8S20512C12v7Ev");}
void  S20512C1 ::v8(){vfunc_called(this, "_ZN8S20512C12v8Ev");}
void  S20512C1 ::v9(){vfunc_called(this, "_ZN8S20512C12v9Ev");}
S20512C1 ::~S20512C1(){ note_dtor("S20512C1", this);} // tgen
S20512C1 ::S20512C1(){ note_ctor("S20512C1", this);} // tgen

static void Test_S20512C1()
{
  extern Class_Descriptor cd_S20512C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(81,144)];
    init_test(&cd_S20512C1, buf);
    S20512C1 *dp, &lv = *(dp=new (buf) S20512C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1280,572), "sizeof(S20512C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20512C1)");
    /*is_ambiguous_... S20512C1::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*), ABISELECT(640,292), "S20512C1");
    check_base_class_offset(lv, (S20512C3*)(S20512C2*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*)(S20512C5*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C8*)(S20512C13*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C9*)(S20512C8*)(S20512C13*), ABISELECT(640,292), "S20512C1");
    /*is_ambiguous_... S20512C2::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C2*), ABISELECT(688,316), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C13*), ABISELECT(688,316), "S20512C1");
    /*is_ambiguous_... S20512C15::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C15*), ABISELECT(688,316), "S20512C1");
    check_base_class_offset(lv, (S20512C2*), ABISELECT(632,288), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*), ABISELECT(736,336), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C7*), ABISELECT(736,336), "S20512C1");
    check_base_class_offset(lv, (S20512C7*)(S20512C6*)(S20512C5*), ABISELECT(736,336), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C8*), ABISELECT(736,336), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C6*), ABISELECT(736,336), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(736,336), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C8*)(S20512C13*), ABISELECT(736,336), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*), ABISELECT(848,396), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*), ABISELECT(896,416), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C8*), ABISELECT(896,416), "S20512C1");
    check_base_class_offset(lv, (S20512C8*)(S20512C6*)(S20512C5*), ABISELECT(848,396), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C6*), ABISELECT(848,396), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(848,396), "S20512C1");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*)(S20512C5*), 0, "S20512C1");
    /*is_ambiguous_... S20512C6::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*)(S20512C5*), 0, "S20512C1");
    /*is_ambiguous_... S20512C6::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*)(S20512C5*), ABISELECT(48,20), "S20512C1");
    check_base_class_offset(lv, (S20512C6*)(S20512C5*), 0, "S20512C1");
    check_base_class_offset(lv, (S20512C5*), 0, "S20512C1");
    check_base_class_offset(lv, (S20512C12*)(S20512C11*), ABISELECT(944,436), "S20512C1");
    check_base_class_offset(lv, (S20512C12*)(S20512C14*)(S20512C13*), ABISELECT(944,436), "S20512C1");
    check_base_class_offset(lv, (S20512C12*)(S20512C15*), ABISELECT(944,436), "S20512C1");
    check_base_class_offset(lv, (S20512C11*), ABISELECT(160,72), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C13*), ABISELECT(176,80), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C13*), ABISELECT(176,80), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*), ABISELECT(1024,464), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*), ABISELECT(1024,464), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*), ABISELECT(1072,484), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C6*)(S20512C13*), ABISELECT(1024,464), "S20512C1");
    check_base_class_offset(lv, (S20512C6*)(S20512C15*), ABISELECT(1024,464), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(224,104), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(224,104), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(272,124), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C6 */ AMB_check_base_class_offset(lv, (S20512C6*)(S20512C14*)(S20512C13*), ABISELECT(224,104), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*), ABISELECT(1184,528), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C9 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C14*)(S20512C13*), ABISELECT(1184,528), "S20512C1");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C15*), ABISELECT(1232,548), "S20512C1");
    /*is_ambiguous_... S20512C15::S20512C3 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C15*), ABISELECT(1232,548), "S20512C1");
    check_base_class_offset(lv, (S20512C15*)(S20512C14*)(S20512C13*), ABISELECT(1232,548), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C3*)(S20512C7*)(S20512C14*)(S20512C13*), ABISELECT(384,168), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C3*)(S20512C7*)(S20512C14*)(S20512C13*), ABISELECT(384,168), "S20512C1");
    /*is_ambiguous_... S20512C14::S20512C7 */ AMB_check_base_class_offset(lv, (S20512C7*)(S20512C14*)(S20512C13*), ABISELECT(384,168), "S20512C1");
    check_base_class_offset(lv, (S20512C14*)(S20512C13*), ABISELECT(224,104), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C8*)(S20512C13*), ABISELECT(496,228), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C4*)(S20512C9*)(S20512C8*)(S20512C13*), ABISELECT(544,248), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C9*)(S20512C8*)(S20512C13*), ABISELECT(544,248), "S20512C1");
    /*is_ambiguous_... S20512C13::S20512C8 */ AMB_check_base_class_offset(lv, (S20512C8*)(S20512C13*), ABISELECT(496,228), "S20512C1");
    check_base_class_offset(lv, (S20512C13*), ABISELECT(176,80), "S20512C1");
    /*is_ambiguous_... S20512C1::S20512C4 */ AMB_check_base_class_offset(lv, (S20512C4*), ABISELECT(592,268), "S20512C1");
    test_class_info(&lv, &cd_S20512C1);
    dp->~S20512C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20512C1(Test_S20512C1, "S20512C1", ABISELECT(1280,572));

#else // __cplusplus

extern void _ZN8S20512C1C1Ev();
extern void _ZN8S20512C1D1Ev();
Name_Map name_map_S20512C1[] = {
  NSPAIR(_ZN8S20512C1C1Ev),
  NSPAIR(_ZN8S20512C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C2;
extern VTBL_ENTRY _ZTI8S20512C2[];
extern  VTBL_ENTRY _ZTV8S20512C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C2[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C5;
extern VTBL_ENTRY _ZTI8S20512C5[];
extern  VTBL_ENTRY _ZTV8S20512C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C5[];
extern Class_Descriptor cd_S20512C12;
extern VTBL_ENTRY _ZTI9S20512C12[];
extern  VTBL_ENTRY _ZTV9S20512C12[];
extern Class_Descriptor cd_S20512C11;
extern VTBL_ENTRY _ZTI9S20512C11[];
extern  VTBL_ENTRY _ZTV9S20512C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C11[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C6;
extern VTBL_ENTRY _ZTI8S20512C6[];
extern  VTBL_ENTRY _ZTV8S20512C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C6[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C15;
extern VTBL_ENTRY _ZTI9S20512C15[];
extern  VTBL_ENTRY _ZTV9S20512C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C15[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C3;
extern VTBL_ENTRY _ZTI8S20512C3[];
extern  VTBL_ENTRY _ZTV8S20512C3[];
extern Class_Descriptor cd_S20512C7;
extern VTBL_ENTRY _ZTI8S20512C7[];
extern  VTBL_ENTRY _ZTV8S20512C7[];
extern Class_Descriptor cd_S20512C14;
extern VTBL_ENTRY _ZTI9S20512C14[];
extern  VTBL_ENTRY _ZTV9S20512C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C14[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
extern Class_Descriptor cd_S20512C9;
extern VTBL_ENTRY _ZTI8S20512C9[];
extern  VTBL_ENTRY _ZTV8S20512C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C9[];
extern Class_Descriptor cd_S20512C8;
extern VTBL_ENTRY _ZTI8S20512C8[];
extern  VTBL_ENTRY _ZTV8S20512C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C8[];
extern Class_Descriptor cd_S20512C13;
extern VTBL_ENTRY _ZTI9S20512C13[];
extern  VTBL_ENTRY _ZTV9S20512C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20512C13[];
extern Class_Descriptor cd_S20512C4;
extern VTBL_ENTRY _ZTI8S20512C4[];
extern  VTBL_ENTRY _ZTV8S20512C4[];
static Base_Class bases_S20512C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20512C4,    ABISELECT(640,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
    1, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(640,292), //bcp->offset
    208, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(688,316), //bcp->offset
    236, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20512C2,    ABISELECT(632,288), //bcp->offset
    194, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20512C4,    ABISELECT(736,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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(736,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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(736,336), //bcp->offset
    250, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(848,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(896,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(896,416), //bcp->offset
    317, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(848,396), //bcp->offset
    289, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20512C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(48,20), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20512C6,    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
    25, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20512C5,    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
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C12,    ABISELECT(944,436), //bcp->offset
    333, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20512C11,    ABISELECT(160,72), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(176,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
    28, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(176,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
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(1024,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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(1024,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(1072,484), //bcp->offset
    394, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20512C6,    ABISELECT(1024,464), //bcp->offset
    346, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(224,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
    30, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(224,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    27, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(272,124), //bcp->offset
    128, //bcp->virtual_function_table_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
    27, //immediately_derived
  0, 0},
  {&cd_S20512C6,    ABISELECT(224,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(1184,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(1184,528), //bcp->offset
    402, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(1232,548), //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(1232,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20512C15,    ABISELECT(1232,548), //bcp->offset
    431, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S20512C4,    ABISELECT(384,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
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20512C3,    ABISELECT(384,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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20512C7,    ABISELECT(384,168), //bcp->offset
    136, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S20512C14,    ABISELECT(224,104), //bcp->offset
    91, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(496,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
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20512C4,    ABISELECT(544,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
    39, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20512C9,    ABISELECT(544,248), //bcp->offset
    170, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20512C8,    ABISELECT(496,228), //bcp->offset
    157, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20512C13,    ABISELECT(176,80), //bcp->offset
    64, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20512C4,    ABISELECT(592,268), //bcp->offset
    186, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20512C1[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C1D1Ev();
extern void _ZN8S20512C1D0Ev();
extern void _ZN8S20512C53v47Ev();
extern void _ZN8S20512C53v48Ev();
extern void _ZN8S20512C53v49Ev();
extern void _ZN8S20512C53v50Ev();
extern void _ZN8S20512C12v1Ev();
extern void _ZN8S20512C12v2Ev();
extern void _ZN8S20512C12v3Ev();
extern void _ZN8S20512C12v4Ev();
extern void _ZN8S20512C12v5Ev();
extern void _ZN8S20512C12v6Ev();
extern void _ZN8S20512C12v7Ev();
extern void _ZN8S20512C12v8Ev();
extern void _ZN8S20512C12v9Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN9S20512C113v55Ev();
extern void _ZN9S20512C113v56Ev();
extern void _ZN9S20512C113v57Ev();
extern void _ZN9S20512C113v58Ev();
extern void _ZN9S20512C113v59Ev();
extern void ABISELECT(_ZThn160_N8S20512C1D1Ev,_ZThn72_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20512C1D0Ev,_ZThn72_N8S20512C1D0Ev)();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C133v72Ev();
extern void _ZN9S20512C133v73Ev();
extern void ABISELECT(_ZThn176_N8S20512C1D1Ev,_ZThn80_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20512C1D0Ev,_ZThn80_N8S20512C1D0Ev)();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZThn224_N8S20512C1D1Ev,_ZThn104_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20512C1D0Ev,_ZThn104_N8S20512C1D0Ev)();
extern void _ZN9S20512C143v67Ev();
extern void _ZN9S20512C143v68Ev();
extern void _ZN9S20512C143v69Ev();
extern void _ZN9S20512C143v70Ev();
extern void _ZN9S20512C143v71Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZThn384_N8S20512C1D1Ev,_ZThn168_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S20512C1D0Ev,_ZThn168_N8S20512C1D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZThn496_N8S20512C1D1Ev,_ZThn228_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S20512C1D0Ev,_ZThn228_N8S20512C1D0Ev)();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C23v23Ev();
extern void _ZN8S20512C23v24Ev();
extern void _ZN8S20512C23v25Ev();
extern void _ZN8S20512C23v26Ev();
extern void _ZN8S20512C23v27Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C1D1Ev,_ZTv0_n64_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn736_N8S20512C1D1Ev,_ZThn336_N8S20512C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C1D0Ev,_ZTv0_n64_N8S20512C1D0Ev)();
extern void ABISELECT(_ZThn736_N8S20512C1D0Ev,_ZThn336_N8S20512C1D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C1D1Ev,_ZTv0_n48_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn848_N8S20512C1D1Ev,_ZThn396_N8S20512C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C1D0Ev,_ZTv0_n48_N8S20512C1D0Ev)();
extern void ABISELECT(_ZThn848_N8S20512C1D0Ev,_ZThn396_N8S20512C1D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void ABISELECT(_ZTv0_n24_N8S20512C1D1Ev,_ZTv0_n12_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn944_N8S20512C1D1Ev,_ZThn436_N8S20512C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20512C1D0Ev,_ZTv0_n12_N8S20512C1D0Ev)();
extern void ABISELECT(_ZThn944_N8S20512C1D0Ev,_ZThn436_N8S20512C1D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N8S20512C1D1Ev,_ZTv0_n104_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn1024_N8S20512C1D1Ev,_ZThn464_N8S20512C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N8S20512C1D0Ev,_ZTv0_n104_N8S20512C1D0Ev)();
extern void ABISELECT(_ZThn1024_N8S20512C1D0Ev,_ZThn464_N8S20512C1D0Ev)() __attribute__((weak));
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void ABISELECT(_ZTv0_n232_N8S20512C1D1Ev,_ZTv0_n116_N8S20512C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S20512C1D1Ev,_ZThn548_N8S20512C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N8S20512C1D0Ev,_ZTv0_n116_N8S20512C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S20512C1D0Ev,_ZThn548_N8S20512C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20512C1[] = {
  ABISELECT(1232,548),
  ABISELECT(1184,528),
  ABISELECT(1024,464),
  ABISELECT(944,436),
  ABISELECT(688,316),
  ABISELECT(632,288),
  ABISELECT(848,396),
  ABISELECT(736,336),
  ABISELECT(640,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v47Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v48Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v49Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v50Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v7Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v8Ev,
  (VTBL_ENTRY)&_ZN8S20512C12v9Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  ABISELECT(784,364),
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN9S20512C113v55Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v56Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v57Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v58Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v59Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20512C1D1Ev,_ZThn72_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20512C1D0Ev,_ZThn72_N8S20512C1D0Ev),
  ABISELECT(1056,468),
  ABISELECT(768,356),
  ABISELECT(1008,448),
  ABISELECT(464,212),
  ABISELECT(672,316),
  ABISELECT(560,256),
  ABISELECT(848,384),
  ABISELECT(512,236),
  ABISELECT(-176,-80),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C133v72Ev,
  (VTBL_ENTRY)&_ZN9S20512C133v73Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20512C1D1Ev,_ZThn80_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20512C1D0Ev,_ZThn80_N8S20512C1D0Ev),
  ABISELECT(800,360),
  ABISELECT(464,212),
  ABISELECT(1008,444),
  ABISELECT(720,332),
  ABISELECT(960,424),
  ABISELECT(624,292),
  ABISELECT(512,232),
  ABISELECT(416,188),
  ABISELECT(-224,-104),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N8S20512C1D1Ev,_ZThn104_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N8S20512C1D0Ev,_ZThn104_N8S20512C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C143v67Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v68Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v69Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v70Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v71Ev,
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  ABISELECT(-384,-168),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S20512C1D1Ev,_ZThn168_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S20512C1D0Ev,_ZThn168_N8S20512C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(240,108),
  ABISELECT(144,64),
  ABISELECT(-496,-228),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn496_N8S20512C1D1Ev,_ZThn228_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn496_N8S20512C1D0Ev,_ZThn228_N8S20512C1D0Ev),
  ABISELECT(96,44),
  ABISELECT(-544,-248),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  ABISELECT(-592,-268),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(8,4),
  ABISELECT(-632,-288),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-292),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-316),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C1D1Ev,_ZTv0_n64_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C1D0Ev,_ZTv0_n64_N8S20512C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-848,-396),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(-848,-396),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C1D1Ev,_ZTv0_n48_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C1D0Ev,_ZTv0_n48_N8S20512C1D0Ev),
  ABISELECT(-256,-124),
  ABISELECT(-896,-416),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-944,-436),
  ABISELECT(-944,-436),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20512C1D1Ev,_ZTv0_n12_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20512C1D0Ev,_ZTv0_n12_N8S20512C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
  ABISELECT(-1024,-464),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-68),
  ABISELECT(-288,-128),
  ABISELECT(-384,-172),
  ABISELECT(-1024,-464),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S20512C1D1Ev,_ZTv0_n104_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S20512C1D0Ev,_ZTv0_n104_N8S20512C1D0Ev),
  ABISELECT(-1072,-484),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  ABISELECT(-1184,-528),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  ABISELECT(-1232,-548),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-256),
  ABISELECT(-384,-152),
  ABISELECT(-496,-212),
  ABISELECT(-208,-84),
  ABISELECT(-288,-112),
  ABISELECT(-544,-232),
  ABISELECT(-1232,-548),
  (VTBL_ENTRY)&(_ZTI8S20512C1[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N8S20512C1D1Ev,_ZTv0_n116_N8S20512C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N8S20512C1D0Ev,_ZTv0_n116_N8S20512C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20512C1[];
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C5D1Ev();
extern void _ZN8S20512C5D0Ev();
extern void _ZN8S20512C53v47Ev();
extern void _ZN8S20512C53v48Ev();
extern void _ZN8S20512C53v49Ev();
extern void _ZN8S20512C53v50Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C5__8S20512C1[] = {
  ABISELECT(848,396),
  ABISELECT(736,336),
  ABISELECT(640,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v47Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v48Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v49Ev,
  (VTBL_ENTRY)&_ZN8S20512C53v50Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C68S20512C5__8S20512C1[] = {
  ABISELECT(848,396),
  ABISELECT(736,336),
  ABISELECT(640,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C68S20512C5__A1__8S20512C1[] = {
  ABISELECT(640,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C68S20512C5__A1__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-292),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn736_N8S20512C6D1Ev,_ZThn336_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn736_N8S20512C6D0Ev,_ZThn336_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C68S20512C5__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn848_N8S20512C6D1Ev,_ZThn396_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn848_N8S20512C6D0Ev,_ZThn396_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C68S20512C5__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-848,-396),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(-848,-396),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C68S20512C5__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-292),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C68S20512C5__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(-896,-416),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C5D1Ev,_ZTv0_n64_N8S20512C5D1Ev)();
extern void ABISELECT(_ZThn736_N8S20512C5D1Ev,_ZThn336_N8S20512C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C5D0Ev,_ZTv0_n64_N8S20512C5D0Ev)();
extern void ABISELECT(_ZThn736_N8S20512C5D0Ev,_ZThn336_N8S20512C5D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C5__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C5D1Ev,_ZTv0_n64_N8S20512C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C5D0Ev,_ZTv0_n64_N8S20512C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C5D1Ev,_ZTv0_n48_N8S20512C5D1Ev)();
extern void ABISELECT(_ZThn848_N8S20512C5D1Ev,_ZThn396_N8S20512C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C5D0Ev,_ZTv0_n48_N8S20512C5D0Ev)();
extern void ABISELECT(_ZThn848_N8S20512C5D0Ev,_ZThn396_N8S20512C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C5__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-848,-396),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(-848,-396),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C5D1Ev,_ZTv0_n48_N8S20512C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C5D0Ev,_ZTv0_n48_N8S20512C5D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C5__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-292),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C5__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(-896,-416),
  (VTBL_ENTRY)&(_ZTI8S20512C5[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN9S20512C113v55Ev();
extern void _ZN9S20512C113v56Ev();
extern void _ZN9S20512C113v57Ev();
extern void _ZN9S20512C113v58Ev();
extern void _ZN9S20512C113v59Ev();
extern void _ZN9S20512C11D1Ev();
extern void _ZN9S20512C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C11__8S20512C1[] = {
  ABISELECT(784,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C11[0]),
  (VTBL_ENTRY)&_ZN9S20512C113v55Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v56Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v57Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v58Ev,
  (VTBL_ENTRY)&_ZN9S20512C113v59Ev,
  (VTBL_ENTRY)&_ZN9S20512C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C11D1Ev,_ZTv0_n12_N9S20512C11D1Ev)();
extern void ABISELECT(_ZThn784_N9S20512C11D1Ev,_ZThn364_N9S20512C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C11D0Ev,_ZTv0_n12_N9S20512C11D0Ev)();
extern void ABISELECT(_ZThn784_N9S20512C11D0Ev,_ZThn364_N9S20512C11D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C11__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-784,-364),
  ABISELECT(-784,-364),
  (VTBL_ENTRY)&(_ZTI9S20512C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C11D1Ev,_ZTv0_n12_N9S20512C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C11D0Ev,_ZTv0_n12_N9S20512C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C133v72Ev();
extern void _ZN9S20512C133v73Ev();
extern void _ZN9S20512C13D1Ev();
extern void _ZN9S20512C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C13__8S20512C1[] = {
  ABISELECT(1056,468),
  ABISELECT(768,356),
  ABISELECT(1008,448),
  ABISELECT(464,212),
  ABISELECT(672,316),
  ABISELECT(560,256),
  ABISELECT(848,384),
  ABISELECT(512,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C133v72Ev,
  (VTBL_ENTRY)&_ZN9S20512C133v73Ev,
  (VTBL_ENTRY)&_ZN9S20512C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C13D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN9S20512C14D1Ev();
extern void _ZN9S20512C14D0Ev();
extern void _ZN9S20512C143v67Ev();
extern void _ZN9S20512C143v68Ev();
extern void _ZN9S20512C143v69Ev();
extern void _ZN9S20512C143v70Ev();
extern void _ZN9S20512C143v71Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C149S20512C13__8S20512C1[] = {
  ABISELECT(800,360),
  ABISELECT(464,212),
  ABISELECT(1008,444),
  ABISELECT(720,332),
  ABISELECT(960,424),
  ABISELECT(624,292),
  ABISELECT(512,232),
  ABISELECT(416,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN9S20512C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v67Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v68Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v69Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v70Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v71Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C69S20512C149S20512C13__A2__8S20512C1[] = {
  ABISELECT(624,292),
  ABISELECT(512,232),
  ABISELECT(416,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C69S20512C149S20512C13__A3__8S20512C1[] = {
  ABISELECT(416,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C69S20512C149S20512C13__A3__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-188),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn512_N8S20512C6D1Ev,_ZThn232_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn512_N8S20512C6D0Ev,_ZThn232_N8S20512C6D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C69S20512C149S20512C13__A2__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-512,-232),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-232),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZThn624_N8S20512C6D1Ev,_ZThn292_N8S20512C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
extern void ABISELECT(_ZThn624_N8S20512C6D0Ev,_ZThn292_N8S20512C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C69S20512C149S20512C13__A2__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-624,-292),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(-624,-292),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C69S20512C149S20512C13__A2__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-188),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C69S20512C149S20512C13__A2__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(-672,-312),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn512_N9S20512C14D1Ev,_ZThn232_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn512_N9S20512C14D0Ev,_ZThn232_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__9S20512C149S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-512,-232),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-232),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn624_N9S20512C14D1Ev,_ZThn292_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn624_N9S20512C14D0Ev,_ZThn292_N9S20512C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C149S20512C13__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-624,-292),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(-624,-292),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__9S20512C149S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-188),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C149S20512C13__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(-672,-312),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A2__9S20512C149S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  ABISELECT(-960,-424),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn720_N9S20512C14D1Ev,_ZThn332_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn720_N9S20512C14D0Ev,_ZThn332_N9S20512C14D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C149S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-720,-332),
  ABISELECT(-720,-332),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn1008_N9S20512C14D1Ev,_ZThn444_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn1008_N9S20512C14D0Ev,_ZThn444_N9S20512C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20512C15__9S20512C149S20512C13__8S20512C1[] = {
  ABISELECT(-1008,-444),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-256),
  ABISELECT(-384,-152),
  ABISELECT(-496,-212),
  ABISELECT(-208,-84),
  ABISELECT(-288,-112),
  ABISELECT(-544,-232),
  ABISELECT(-1008,-444),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__A7__9S20512C149S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-212),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev)();
extern void ABISELECT(_ZThn800_N9S20512C14D1Ev,_ZThn360_N9S20512C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev)();
extern void ABISELECT(_ZThn800_N9S20512C14D0Ev,_ZThn360_N9S20512C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C6__A1__9S20512C149S20512C13__8S20512C1[] = {
  ABISELECT(-800,-360),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-68),
  ABISELECT(-288,-128),
  ABISELECT(-384,-172),
  ABISELECT(-800,-360),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C48S20512C6__A10__9S20512C149S20512C13__8S20512C1[] = {
  ABISELECT(-848,-380),
  (VTBL_ENTRY)&(_ZTI9S20512C14[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C89S20512C13__A1__8S20512C1[] = {
  ABISELECT(240,108),
  ABISELECT(144,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C89S20512C13__A5__8S20512C1[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C89S20512C13__A5__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C89S20512C13__A1__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C89S20512C13__A1__8S20512C1[] = {
  ABISELECT(96,44),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZThn240_N8S20512C8D1Ev,_ZThn108_N8S20512C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void ABISELECT(_ZThn240_N8S20512C8D0Ev,_ZThn108_N8S20512C8D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C89S20512C13__A1__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-240,-108),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-108),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__9S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-236),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C13D1Ev,_ZTv0_n104_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn848_N9S20512C13D1Ev,_ZThn384_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N9S20512C13D0Ev,_ZTv0_n104_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn848_N9S20512C13D0Ev,_ZThn384_N9S20512C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C6__9S20512C13__8S20512C1[] = {
  ABISELECT(-848,-384),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-68),
  ABISELECT(-288,-128),
  ABISELECT(-384,-172),
  ABISELECT(-848,-384),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C13D1Ev,_ZTv0_n104_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C13D0Ev,_ZTv0_n104_N9S20512C13D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C13D1Ev,_ZTv0_n64_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn560_N9S20512C13D1Ev,_ZThn256_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20512C13D0Ev,_ZTv0_n64_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn560_N9S20512C13D0Ev,_ZThn256_N9S20512C13D0Ev)() __attribute__((weak));
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__9S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-256),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-256),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C13D1Ev,_ZTv0_n64_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C13D0Ev,_ZTv0_n64_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C13D1Ev,_ZTv0_n48_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn672_N9S20512C13D1Ev,_ZThn316_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20512C13D0Ev,_ZTv0_n48_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn672_N9S20512C13D0Ev,_ZThn316_N9S20512C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C13__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-672,-316),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(-672,-316),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C13D1Ev,_ZTv0_n48_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C13D0Ev,_ZTv0_n48_N9S20512C13D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A2__9S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-212),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C13__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(-720,-336),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C48S20512C6__A7__9S20512C13__8S20512C1[] = {
  ABISELECT(-896,-404),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZThn48_N9S20512C13D1Ev,_ZThn24_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S20512C13D0Ev,_ZThn24_N9S20512C13D0Ev)();
extern void _ZN9S20512C143v67Ev();
extern void _ZN9S20512C143v68Ev();
extern void _ZN9S20512C143v69Ev();
extern void _ZN9S20512C143v70Ev();
extern void _ZN9S20512C143v71Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C14__9S20512C13__8S20512C1[] = {
  ABISELECT(800,360),
  ABISELECT(464,212),
  ABISELECT(1008,444),
  ABISELECT(720,332),
  ABISELECT(960,424),
  ABISELECT(624,292),
  ABISELECT(512,232),
  ABISELECT(416,188),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20512C13D1Ev,_ZThn24_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20512C13D0Ev,_ZThn24_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C143v67Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v68Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v69Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v70Ev,
  (VTBL_ENTRY)&_ZN9S20512C143v71Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A3__9S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  ABISELECT(-1008,-448),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C13D1Ev,_ZTv0_n12_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn768_N9S20512C13D1Ev,_ZThn356_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20512C13D0Ev,_ZTv0_n12_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn768_N9S20512C13D0Ev,_ZThn356_N9S20512C13D0Ev)() __attribute__((weak));
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C13__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-768,-356),
  ABISELECT(-768,-356),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C13D1Ev,_ZTv0_n12_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C13D0Ev,_ZTv0_n12_N9S20512C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void ABISELECT(_ZTv0_n232_N9S20512C13D1Ev,_ZTv0_n116_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn1056_N9S20512C13D1Ev,_ZThn468_N9S20512C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N9S20512C13D0Ev,_ZTv0_n116_N9S20512C13D0Ev)();
extern void ABISELECT(_ZThn1056_N9S20512C13D0Ev,_ZThn468_N9S20512C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20512C15__9S20512C13__8S20512C1[] = {
  ABISELECT(-1056,-468),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-256),
  ABISELECT(-384,-152),
  ABISELECT(-496,-212),
  ABISELECT(-208,-84),
  ABISELECT(-288,-112),
  ABISELECT(-544,-232),
  ABISELECT(-1056,-468),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C13D1Ev,_ZTv0_n116_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N9S20512C13D0Ev,_ZTv0_n116_N9S20512C13D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZThn320_N9S20512C13D1Ev,_ZThn148_N9S20512C13D1Ev)();
extern void ABISELECT(_ZThn320_N9S20512C13D0Ev,_ZThn148_N9S20512C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C8__A__9S20512C13__8S20512C1[] = {
  ABISELECT(240,108),
  ABISELECT(144,64),
  ABISELECT(-320,-148),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S20512C13D1Ev,_ZThn148_N9S20512C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S20512C13D0Ev,_ZThn148_N9S20512C13D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__A4__9S20512C13__8S20512C1[] = {
  ABISELECT(96,44),
  ABISELECT(-368,-168),
  (VTBL_ENTRY)&(_ZTI9S20512C13[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C23v23Ev();
extern void _ZN8S20512C23v24Ev();
extern void _ZN8S20512C23v25Ev();
extern void _ZN8S20512C23v26Ev();
extern void _ZN8S20512C23v27Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C2__8S20512C1[] = {
  ABISELECT(56,28),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C2[0]),
  (VTBL_ENTRY)&_ZN8S20512C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v25Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v26Ev,
  (VTBL_ENTRY)&_ZN8S20512C23v27Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C2__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20512C2[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__A1__8S20512C2__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20512C2[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void _ZN8S20512C8D1Ev();
extern void _ZN8S20512C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C8D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C1[] = {
  ABISELECT(-256,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C8__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(256,124),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C8__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,104),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__8S20512C8__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C8__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20512C8[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void _ZN8S20512C6D1Ev();
extern void _ZN8S20512C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C6__A1__8S20512C1[] = {
  ABISELECT(-176,-68),
  ABISELECT(-288,-128),
  ABISELECT(-384,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20512C6D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C6__A2__8S20512C1[] = {
  ABISELECT(-384,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C98S20512C6__A2__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(384,172),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__8S20512C6__A1__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(288,128),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(288,128),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev)();
extern void ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C8__8S20512C6__A1__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(176,68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(176,68),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A1__8S20512C6__A1__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(384,172),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__8S20512C6__A1__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(128,48),
  (VTBL_ENTRY)&(_ZTI8S20512C6[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C9__A4__8S20512C1[] = {
  ABISELECT(-544,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__8S20512C9__A4__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,236),
  (VTBL_ENTRY)&(_ZTI8S20512C9[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void _ZN9S20512C153v60Ev();
extern void _ZN9S20512C153v61Ev();
extern void _ZN9S20512C153v62Ev();
extern void _ZN9S20512C153v63Ev();
extern void _ZN9S20512C153v64Ev();
extern void _ZN9S20512C153v65Ev();
extern void _ZN9S20512C153v66Ev();
extern void _ZN9S20512C15D1Ev();
extern void _ZN9S20512C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C15__8S20512C1[] = {
  ABISELECT(-592,-256),
  ABISELECT(-384,-152),
  ABISELECT(-496,-212),
  ABISELECT(-208,-84),
  ABISELECT(-288,-112),
  ABISELECT(-544,-232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v60Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v61Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v62Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20512C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20512C15D0Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C4__9S20512C15__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,232),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev)();
extern void _ZN9S20512C123v51Ev();
extern void _ZN9S20512C123v52Ev();
extern void _ZN9S20512C123v53Ev();
extern void _ZN9S20512C123v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20512C12__9S20512C15__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(288,112),
  ABISELECT(288,112),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D1Ev,_ZTv0_n12_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20512C15D0Ev,_ZTv0_n12_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20512C123v51Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v52Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v53Ev,
  (VTBL_ENTRY)&_ZN9S20512C123v54Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
extern void _ZN8S20512C63v40Ev();
extern void _ZN8S20512C63v41Ev();
extern void _ZN8S20512C63v42Ev();
extern void _ZN8S20512C63v43Ev();
extern void _ZN8S20512C63v44Ev();
extern void _ZN8S20512C63v45Ev();
extern void _ZN8S20512C63v46Ev();
extern void ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C6__9S20512C15__8S20512C1[] = {
  ABISELECT(208,84),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-68),
  ABISELECT(-288,-128),
  ABISELECT(-384,-172),
  ABISELECT(208,84),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v40Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v41Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v42Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v43Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v44Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v45Ev,
  (VTBL_ENTRY)&_ZN8S20512C63v46Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D1Ev,_ZTv0_n104_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N9S20512C15D0Ev,_ZTv0_n104_N9S20512C15D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev)();
extern void _ZN8S20512C73v35Ev();
extern void _ZN8S20512C73v36Ev();
extern void _ZN8S20512C73v37Ev();
extern void _ZN8S20512C73v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C7__9S20512C15__8S20512C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(496,212),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(496,212),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D1Ev,_ZTv0_n64_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20512C15D0Ev,_ZTv0_n64_N9S20512C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20512C73v35Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20512C73v38Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C83v39Ev();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20512C8__9S20512C15__8S20512C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(384,152),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-208,-104),
  ABISELECT(384,152),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C83v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D1Ev,_ZTv0_n48_N9S20512C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20512C15D0Ev,_ZTv0_n48_N9S20512C15D0Ev),
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C33v16Ev();
extern void _ZN8S20512C33v17Ev();
extern void _ZN8S20512C33v18Ev();
extern void _ZN8S20512C33v19Ev();
extern void _ZN8S20512C33v20Ev();
extern void _ZN8S20512C33v21Ev();
extern void _ZN8S20512C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C3__A2__9S20512C15__8S20512C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(592,256),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20512C33v22Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
extern void _ZN8S20512C93v28Ev();
extern void _ZN8S20512C93v29Ev();
extern void _ZN8S20512C93v30Ev();
extern void _ZN8S20512C93v31Ev();
extern void _ZN8S20512C93v32Ev();
extern void _ZN8S20512C93v33Ev();
extern void _ZN8S20512C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C98S20512C8__9S20512C15__8S20512C1[] = {
  ABISELECT(-256,-124),
  ABISELECT(336,132),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v28Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v29Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v30Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v31Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20512C93v34Ev,
};
extern void _ZN8S20512C43v10Ev();
extern void _ZN8S20512C43v11Ev();
extern void _ZN8S20512C43v12Ev();
extern void _ZN8S20512C43v13Ev();
extern void _ZN8S20512C43v14Ev();
extern void _ZN8S20512C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20512C48S20512C6__A7__9S20512C15__8S20512C1[] = {
  ABISELECT(160,64),
  (VTBL_ENTRY)&(_ZTI9S20512C15[0]),
  (VTBL_ENTRY)&_ZN8S20512C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20512C43v15Ev,
};
static  VTT_ENTRY vtt_S20512C1[] = {
  {&(_ZTV8S20512C1[11]),  11,482},
  {&(_tg__ZTV8S20512C5__8S20512C1[5]),  5,31},
  {&(_tg__ZTV8S20512C68S20512C5__8S20512C1[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C68S20512C5__A1__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C68S20512C5__A1__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C68S20512C5__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C68S20512C5__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C68S20512C5__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C68S20512C5__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C5__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C5__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C5__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C5__8S20512C1[3]),  3,16},
  {&(_tg__ZTV9S20512C11__8S20512C1[3]),  3,10},
  {&(_tg__ZTV9S20512C12__9S20512C11__8S20512C1[7]),  7,13},
  {&(_tg__ZTV9S20512C13__8S20512C1[10]),  10,27},
  {&(_tg__ZTV9S20512C149S20512C13__8S20512C1[10]),  10,37},
  {&(_tg__ZTV8S20512C69S20512C149S20512C13__A2__8S20512C1[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C69S20512C149S20512C13__A3__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C69S20512C149S20512C13__A3__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C69S20512C149S20512C13__A2__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C69S20512C149S20512C13__A2__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C69S20512C149S20512C13__A2__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C69S20512C149S20512C13__A2__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C7__9S20512C149S20512C13__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__9S20512C149S20512C13__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__9S20512C149S20512C13__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C149S20512C13__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C9__A2__9S20512C149S20512C13__8S20512C1[16]),  16,29},
  {&(_tg__ZTV9S20512C12__9S20512C149S20512C13__8S20512C1[7]),  7,13},
  {&(_tg__ZTV9S20512C15__9S20512C149S20512C13__8S20512C1[29]),  29,51},
  {&(_tg__ZTV8S20512C4__A7__9S20512C149S20512C13__8S20512C1[8]),  8,14},
  {&(_tg__ZTV8S20512C6__A1__9S20512C149S20512C13__8S20512C1[26]),  26,48},
  {&(_tg__ZTV8S20512C48S20512C6__A10__9S20512C149S20512C13__8S20512C1[2]),  2,8},
  {&(_tg__ZTV8S20512C89S20512C13__A1__8S20512C1[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C89S20512C13__A5__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C89S20512C13__A5__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C89S20512C13__A1__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C89S20512C13__A1__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C89S20512C13__A1__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C4__9S20512C13__8S20512C1[8]),  8,14},
  {&(_tg__ZTV8S20512C6__9S20512C13__8S20512C1[26]),  26,48},
  {&(_tg__ZTV8S20512C7__9S20512C13__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__9S20512C13__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A2__9S20512C13__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C13__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C48S20512C6__A7__9S20512C13__8S20512C1[2]),  2,8},
  {&(_tg__ZTV9S20512C14__9S20512C13__8S20512C1[10]),  10,37},
  {&(_tg__ZTV8S20512C9__A3__9S20512C13__8S20512C1[16]),  16,29},
  {&(_tg__ZTV9S20512C12__9S20512C13__8S20512C1[7]),  7,13},
  {&(_tg__ZTV9S20512C15__9S20512C13__8S20512C1[29]),  29,51},
  {&(_tg__ZTV8S20512C8__A__9S20512C13__8S20512C1[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__A4__9S20512C13__8S20512C1[3]),  3,16},
  {&(_ZTV8S20512C1[203]),  203,482},
  {&(_ZTV8S20512C1[223]),  223,482},
  {&(_ZTV8S20512C1[244]),  244,482},
  {&(_ZTV8S20512C1[270]),  270,482},
  {&(_ZTV8S20512C1[308]),  308,482},
  {&(_ZTV8S20512C1[320]),  320,482},
  {&(_ZTV8S20512C1[57]),  57,482},
  {&(_ZTV8S20512C1[340]),  340,482},
  {&(_ZTV8S20512C1[74]),  74,482},
  {&(_ZTV8S20512C1[372]),  372,482},
  {&(_ZTV8S20512C1[396]),  396,482},
  {&(_ZTV8S20512C1[101]),  101,482},
  {&(_ZTV8S20512C1[418]),  418,482},
  {&(_ZTV8S20512C1[460]),  460,482},
  {&(_ZTV8S20512C1[161]),  161,482},
  {&(_ZTV8S20512C1[173]),  173,482},
  {&(_tg__ZTV8S20512C2__8S20512C1[4]),  4,9},
  {&(_tg__ZTV8S20512C3__8S20512C2__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C4__A1__8S20512C2__8S20512C1[8]),  8,14},
  {&(_tg__ZTV8S20512C8__8S20512C1[4]),  4,13},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C8__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C3__8S20512C8__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C9__8S20512C8__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C7__8S20512C8__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C6__A1__8S20512C1[5]),  5,27},
  {&(_tg__ZTV8S20512C98S20512C6__A2__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C98S20512C6__A2__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C7__8S20512C6__A1__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__8S20512C6__A1__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A1__8S20512C6__A1__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__8S20512C6__A1__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C9__A4__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C3__8S20512C9__A4__8S20512C1[15]),  15,28},
  {&(_tg__ZTV9S20512C15__8S20512C1[8]),  8,30},
  {&(_tg__ZTV8S20512C4__9S20512C15__8S20512C1[8]),  8,14},
  {&(_tg__ZTV9S20512C12__9S20512C15__8S20512C1[7]),  7,13},
  {&(_tg__ZTV8S20512C6__9S20512C15__8S20512C1[26]),  26,48},
  {&(_tg__ZTV8S20512C7__9S20512C15__8S20512C1[20]),  20,39},
  {&(_tg__ZTV8S20512C8__9S20512C15__8S20512C1[19]),  19,28},
  {&(_tg__ZTV8S20512C3__A2__9S20512C15__8S20512C1[15]),  15,28},
  {&(_tg__ZTV8S20512C98S20512C8__9S20512C15__8S20512C1[3]),  3,16},
  {&(_tg__ZTV8S20512C48S20512C6__A7__9S20512C15__8S20512C1[2]),  2,8},
};
extern VTBL_ENTRY _ZTI8S20512C1[];
extern  VTBL_ENTRY _ZTV8S20512C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20512C1[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C13D0Ev,_ZTv0_n116_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S20512C13D0Ev,_ZThn468_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C13D1Ev,_ZTv0_n116_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S20512C13D1Ev,_ZThn468_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C13D0Ev,_ZTv0_n12_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S20512C13D0Ev,_ZThn356_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C13D1Ev,_ZTv0_n12_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S20512C13D1Ev,_ZThn356_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C13D0Ev,_ZTv0_n48_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S20512C13D0Ev,_ZThn316_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C13D1Ev,_ZTv0_n48_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S20512C13D1Ev,_ZThn316_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C13D0Ev,_ZTv0_n64_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N9S20512C13D0Ev,_ZThn256_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C13D1Ev,_ZTv0_n64_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N9S20512C13D1Ev,_ZThn256_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C13D0Ev,_ZTv0_n104_N9S20512C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S20512C13D0Ev,_ZThn384_N9S20512C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C13D1Ev,_ZTv0_n104_N9S20512C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S20512C13D1Ev,_ZThn384_N9S20512C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C8D0Ev,_ZTv0_n64_N8S20512C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20512C8D0Ev,_ZThn108_N8S20512C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C8D1Ev,_ZTv0_n64_N8S20512C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20512C8D1Ev,_ZThn108_N8S20512C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C14D0Ev,_ZTv0_n104_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S20512C14D0Ev,_ZThn360_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N9S20512C14D1Ev,_ZTv0_n104_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S20512C14D1Ev,_ZThn360_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C14D0Ev,_ZTv0_n116_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1008_N9S20512C14D0Ev,_ZThn444_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N9S20512C14D1Ev,_ZTv0_n116_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1008_N9S20512C14D1Ev,_ZThn444_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C14D0Ev,_ZTv0_n12_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20512C14D0Ev,_ZThn332_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C14D1Ev,_ZTv0_n12_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20512C14D1Ev,_ZThn332_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C14D0Ev,_ZTv0_n48_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S20512C14D0Ev,_ZThn292_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20512C14D1Ev,_ZTv0_n48_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S20512C14D1Ev,_ZThn292_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C14D0Ev,_ZTv0_n64_N9S20512C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20512C14D0Ev,_ZThn232_N9S20512C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20512C14D1Ev,_ZTv0_n64_N9S20512C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20512C14D1Ev,_ZThn232_N9S20512C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C11D0Ev,_ZTv0_n12_N9S20512C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20512C11D0Ev,_ZThn364_N9S20512C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20512C11D1Ev,_ZTv0_n12_N9S20512C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20512C11D1Ev,_ZThn364_N9S20512C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C5D0Ev,_ZTv0_n48_N8S20512C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20512C5D0Ev,_ZThn396_N8S20512C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C5D1Ev,_ZTv0_n48_N8S20512C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20512C5D1Ev,_ZThn396_N8S20512C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C5D0Ev,_ZTv0_n64_N8S20512C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S20512C5D0Ev,_ZThn336_N8S20512C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C5D1Ev,_ZTv0_n64_N8S20512C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S20512C5D1Ev,_ZThn336_N8S20512C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D0Ev,_ZTv0_n48_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S20512C6D0Ev,_ZThn292_N8S20512C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20512C6D0Ev,_ZThn396_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C6D1Ev,_ZTv0_n48_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S20512C6D1Ev,_ZThn292_N8S20512C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20512C6D1Ev,_ZThn396_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D0Ev,_ZTv0_n64_N8S20512C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S20512C6D0Ev,_ZThn232_N8S20512C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S20512C6D0Ev,_ZThn336_N8S20512C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C6D1Ev,_ZTv0_n64_N8S20512C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S20512C6D1Ev,_ZThn232_N8S20512C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S20512C6D1Ev,_ZThn336_N8S20512C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N8S20512C1D0Ev,_ZTv0_n116_N8S20512C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S20512C1D0Ev,_ZThn548_N8S20512C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N8S20512C1D1Ev,_ZTv0_n116_N8S20512C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S20512C1D1Ev,_ZThn548_N8S20512C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S20512C1D0Ev,_ZTv0_n104_N8S20512C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S20512C1D0Ev,_ZThn464_N8S20512C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S20512C1D1Ev,_ZTv0_n104_N8S20512C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S20512C1D1Ev,_ZThn464_N8S20512C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20512C1D0Ev,_ZTv0_n12_N8S20512C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N8S20512C1D0Ev,_ZThn436_N8S20512C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20512C1D1Ev,_ZTv0_n12_N8S20512C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N8S20512C1D1Ev,_ZThn436_N8S20512C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C1D0Ev,_ZTv0_n48_N8S20512C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20512C1D0Ev,_ZThn396_N8S20512C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20512C1D1Ev,_ZTv0_n48_N8S20512C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20512C1D1Ev,_ZThn396_N8S20512C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C1D0Ev,_ZTv0_n64_N8S20512C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S20512C1D0Ev,_ZThn336_N8S20512C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20512C1D1Ev,_ZTv0_n64_N8S20512C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S20512C1D1Ev,_ZThn336_N8S20512C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20512C1 = {  "S20512C1", // class name
  bases_S20512C1, 43,
  &(vtc_S20512C1[0]), // expected_vtbl_contents
  &(vtt_S20512C1[0]), // expected_vtt_contents
  ABISELECT(1280,572), // object size
  NSPAIRA(_ZTI8S20512C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20512C1),482, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20512C1),96, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S641C5  {
  int s641c5f0;
  __tsi64 s641c5f1;
  void *s641c5f2[4];
  int s641c5f3[2];
  void *s641c5f4;
  ::S1538C5_nt s641c5f5;
  void *s641c5f6[2];
  virtual  ~S641C5(); // _ZN6S641C5D1Ev
  virtual void  v5(); // _ZN6S641C52v5Ev
  virtual void  v6(); // _ZN6S641C52v6Ev
  virtual void  v7(); // _ZN6S641C52v7Ev
  virtual void  v8(); // _ZN6S641C52v8Ev
  virtual void  v9(); // _ZN6S641C52v9Ev
  virtual void  v10(); // _ZN6S641C53v10Ev
  virtual void  v11(); // _ZN6S641C53v11Ev
  virtual void  v12(); // _ZN6S641C53v12Ev
  virtual void  v13(); // _ZN6S641C53v13Ev
  virtual void  v14(); // _ZN6S641C53v14Ev
  virtual void  v15(); // _ZN6S641C53v15Ev
  virtual void  v16(); // _ZN6S641C53v16Ev
  virtual void  v17(); // _ZN6S641C53v17Ev
  virtual void  v18(); // _ZN6S641C53v18Ev
  virtual void  v19(); // _ZN6S641C53v19Ev
  virtual void  v20(); // _ZN6S641C53v20Ev
  virtual void  v21(); // _ZN6S641C53v21Ev
  virtual void  v22(); // _ZN6S641C53v22Ev
  virtual void  v23(); // _ZN6S641C53v23Ev
  virtual void  v24(); // _ZN6S641C53v24Ev
  virtual void  v25(); // _ZN6S641C53v25Ev
  virtual void  v26(); // _ZN6S641C53v26Ev
  virtual void  v27(); // _ZN6S641C53v27Ev
  virtual void  v28(); // _ZN6S641C53v28Ev
  virtual void  v29(); // _ZN6S641C53v29Ev
  virtual void  v30(); // _ZN6S641C53v30Ev
  virtual void  v31(); // _ZN6S641C53v31Ev
  virtual void  v32(); // _ZN6S641C53v32Ev
  virtual void  v33(); // _ZN6S641C53v33Ev
  virtual void  v34(); // _ZN6S641C53v34Ev
  virtual void  v35(); // _ZN6S641C53v35Ev
  virtual void  v36(); // _ZN6S641C53v36Ev
  virtual void  v37(); // _ZN6S641C53v37Ev
  virtual void  v38(); // _ZN6S641C53v38Ev
  virtual void  v39(); // _ZN6S641C53v39Ev
  virtual void  v40(); // _ZN6S641C53v40Ev
  virtual void  v41(); // _ZN6S641C53v41Ev
  virtual void  v42(); // _ZN6S641C53v42Ev
  virtual void  v43(); // _ZN6S641C53v43Ev
  virtual void  v44(); // _ZN6S641C53v44Ev
  virtual void  v45(); // _ZN6S641C53v45Ev
  virtual void  v46(); // _ZN6S641C53v46Ev
  virtual void  v47(); // _ZN6S641C53v47Ev
  virtual void  v48(); // _ZN6S641C53v48Ev
  virtual void  v49(); // _ZN6S641C53v49Ev
  virtual void  v50(); // _ZN6S641C53v50Ev
  virtual void  v51(); // _ZN6S641C53v51Ev
  virtual void  v52(); // _ZN6S641C53v52Ev
  virtual void  v53(); // _ZN6S641C53v53Ev
  virtual void  v54(); // _ZN6S641C53v54Ev
  virtual void  v55(); // _ZN6S641C53v55Ev
  virtual void  v56(); // _ZN6S641C53v56Ev
  virtual void  v57(); // _ZN6S641C53v57Ev
  virtual void  v58(); // _ZN6S641C53v58Ev
  virtual void  v59(); // _ZN6S641C53v59Ev
  virtual void  v60(); // _ZN6S641C53v60Ev
  virtual void  v61(); // _ZN6S641C53v61Ev
  virtual void  v62(); // _ZN6S641C53v62Ev
  virtual void  v63(); // _ZN6S641C53v63Ev
  virtual void  v64(); // _ZN6S641C53v64Ev
  virtual void  v65(); // _ZN6S641C53v65Ev
  virtual void  v66(); // _ZN6S641C53v66Ev
  virtual void  v67(); // _ZN6S641C53v67Ev
  virtual void  v68(); // _ZN6S641C53v68Ev
  S641C5(); // tgen
};
//SIG(-1 S641C5) 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]}


 S641C5 ::~S641C5(){ note_dtor("S641C5", this);}
void  S641C5 ::v5(){vfunc_called(this, "_ZN6S641C52v5Ev");}
void  S641C5 ::v6(){vfunc_called(this, "_ZN6S641C52v6Ev");}
void  S641C5 ::v7(){vfunc_called(this, "_ZN6S641C52v7Ev");}
void  S641C5 ::v8(){vfunc_called(this, "_ZN6S641C52v8Ev");}
void  S641C5 ::v9(){vfunc_called(this, "_ZN6S641C52v9Ev");}
void  S641C5 ::v10(){vfunc_called(this, "_ZN6S641C53v10Ev");}
void  S641C5 ::v11(){vfunc_called(this, "_ZN6S641C53v11Ev");}
void  S641C5 ::v12(){vfunc_called(this, "_ZN6S641C53v12Ev");}
void  S641C5 ::v13(){vfunc_called(this, "_ZN6S641C53v13Ev");}
void  S641C5 ::v14(){vfunc_called(this, "_ZN6S641C53v14Ev");}
void  S641C5 ::v15(){vfunc_called(this, "_ZN6S641C53v15Ev");}
void  S641C5 ::v16(){vfunc_called(this, "_ZN6S641C53v16Ev");}
void  S641C5 ::v17(){vfunc_called(this, "_ZN6S641C53v17Ev");}
void  S641C5 ::v18(){vfunc_called(this, "_ZN6S641C53v18Ev");}
void  S641C5 ::v19(){vfunc_called(this, "_ZN6S641C53v19Ev");}
void  S641C5 ::v20(){vfunc_called(this, "_ZN6S641C53v20Ev");}
void  S641C5 ::v21(){vfunc_called(this, "_ZN6S641C53v21Ev");}
void  S641C5 ::v22(){vfunc_called(this, "_ZN6S641C53v22Ev");}
void  S641C5 ::v23(){vfunc_called(this, "_ZN6S641C53v23Ev");}
void  S641C5 ::v24(){vfunc_called(this, "_ZN6S641C53v24Ev");}
void  S641C5 ::v25(){vfunc_called(this, "_ZN6S641C53v25Ev");}
void  S641C5 ::v26(){vfunc_called(this, "_ZN6S641C53v26Ev");}
void  S641C5 ::v27(){vfunc_called(this, "_ZN6S641C53v27Ev");}
void  S641C5 ::v28(){vfunc_called(this, "_ZN6S641C53v28Ev");}
void  S641C5 ::v29(){vfunc_called(this, "_ZN6S641C53v29Ev");}
void  S641C5 ::v30(){vfunc_called(this, "_ZN6S641C53v30Ev");}
void  S641C5 ::v31(){vfunc_called(this, "_ZN6S641C53v31Ev");}
void  S641C5 ::v32(){vfunc_called(this, "_ZN6S641C53v32Ev");}
void  S641C5 ::v33(){vfunc_called(this, "_ZN6S641C53v33Ev");}
void  S641C5 ::v34(){vfunc_called(this, "_ZN6S641C53v34Ev");}
void  S641C5 ::v35(){vfunc_called(this, "_ZN6S641C53v35Ev");}
void  S641C5 ::v36(){vfunc_called(this, "_ZN6S641C53v36Ev");}
void  S641C5 ::v37(){vfunc_called(this, "_ZN6S641C53v37Ev");}
void  S641C5 ::v38(){vfunc_called(this, "_ZN6S641C53v38Ev");}
void  S641C5 ::v39(){vfunc_called(this, "_ZN6S641C53v39Ev");}
void  S641C5 ::v40(){vfunc_called(this, "_ZN6S641C53v40Ev");}
void  S641C5 ::v41(){vfunc_called(this, "_ZN6S641C53v41Ev");}
void  S641C5 ::v42(){vfunc_called(this, "_ZN6S641C53v42Ev");}
void  S641C5 ::v43(){vfunc_called(this, "_ZN6S641C53v43Ev");}
void  S641C5 ::v44(){vfunc_called(this, "_ZN6S641C53v44Ev");}
void  S641C5 ::v45(){vfunc_called(this, "_ZN6S641C53v45Ev");}
void  S641C5 ::v46(){vfunc_called(this, "_ZN6S641C53v46Ev");}
void  S641C5 ::v47(){vfunc_called(this, "_ZN6S641C53v47Ev");}
void  S641C5 ::v48(){vfunc_called(this, "_ZN6S641C53v48Ev");}
void  S641C5 ::v49(){vfunc_called(this, "_ZN6S641C53v49Ev");}
void  S641C5 ::v50(){vfunc_called(this, "_ZN6S641C53v50Ev");}
void  S641C5 ::v51(){vfunc_called(this, "_ZN6S641C53v51Ev");}
void  S641C5 ::v52(){vfunc_called(this, "_ZN6S641C53v52Ev");}
void  S641C5 ::v53(){vfunc_called(this, "_ZN6S641C53v53Ev");}
void  S641C5 ::v54(){vfunc_called(this, "_ZN6S641C53v54Ev");}
void  S641C5 ::v55(){vfunc_called(this, "_ZN6S641C53v55Ev");}
void  S641C5 ::v56(){vfunc_called(this, "_ZN6S641C53v56Ev");}
void  S641C5 ::v57(){vfunc_called(this, "_ZN6S641C53v57Ev");}
void  S641C5 ::v58(){vfunc_called(this, "_ZN6S641C53v58Ev");}
void  S641C5 ::v59(){vfunc_called(this, "_ZN6S641C53v59Ev");}
void  S641C5 ::v60(){vfunc_called(this, "_ZN6S641C53v60Ev");}
void  S641C5 ::v61(){vfunc_called(this, "_ZN6S641C53v61Ev");}
void  S641C5 ::v62(){vfunc_called(this, "_ZN6S641C53v62Ev");}
void  S641C5 ::v63(){vfunc_called(this, "_ZN6S641C53v63Ev");}
void  S641C5 ::v64(){vfunc_called(this, "_ZN6S641C53v64Ev");}
void  S641C5 ::v65(){vfunc_called(this, "_ZN6S641C53v65Ev");}
void  S641C5 ::v66(){vfunc_called(this, "_ZN6S641C53v66Ev");}
void  S641C5 ::v67(){vfunc_called(this, "_ZN6S641C53v67Ev");}
void  S641C5 ::v68(){vfunc_called(this, "_ZN6S641C53v68Ev");}
S641C5 ::S641C5(){ note_ctor("S641C5", this);} // tgen

static void Test_S641C5()
{
  extern Class_Descriptor cd_S641C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S641C5, buf);
    S641C5 *dp, &lv = *(dp=new (buf) S641C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S641C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S641C5)");
    check_field_offset(lv, s641c5f0, ABISELECT(8,4), "S641C5.s641c5f0");
    check_field_offset(lv, s641c5f1, ABISELECT(16,8), "S641C5.s641c5f1");
    check_field_offset(lv, s641c5f2, ABISELECT(24,16), "S641C5.s641c5f2");
    check_field_offset(lv, s641c5f3, ABISELECT(56,32), "S641C5.s641c5f3");
    check_field_offset(lv, s641c5f4, ABISELECT(64,40), "S641C5.s641c5f4");
    check_field_offset(lv, s641c5f5, ABISELECT(72,44), "S641C5.s641c5f5");
    check_field_offset(lv, s641c5f6, ABISELECT(80,52), "S641C5.s641c5f6");
    test_class_info(&lv, &cd_S641C5);
    dp->~S641C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS641C5(Test_S641C5, "S641C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S641C5C1Ev();
extern void _ZN6S641C5D1Ev();
Name_Map name_map_S641C5[] = {
  NSPAIR(_ZN6S641C5C1Ev),
  NSPAIR(_ZN6S641C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S641C5[];
extern void _ZN6S641C5D1Ev();
extern void _ZN6S641C5D0Ev();
extern void _ZN6S641C52v5Ev();
extern void _ZN6S641C52v6Ev();
extern void _ZN6S641C52v7Ev();
extern void _ZN6S641C52v8Ev();
extern void _ZN6S641C52v9Ev();
extern void _ZN6S641C53v10Ev();
extern void _ZN6S641C53v11Ev();
extern void _ZN6S641C53v12Ev();
extern void _ZN6S641C53v13Ev();
extern void _ZN6S641C53v14Ev();
extern void _ZN6S641C53v15Ev();
extern void _ZN6S641C53v16Ev();
extern void _ZN6S641C53v17Ev();
extern void _ZN6S641C53v18Ev();
extern void _ZN6S641C53v19Ev();
extern void _ZN6S641C53v20Ev();
extern void _ZN6S641C53v21Ev();
extern void _ZN6S641C53v22Ev();
extern void _ZN6S641C53v23Ev();
extern void _ZN6S641C53v24Ev();
extern void _ZN6S641C53v25Ev();
extern void _ZN6S641C53v26Ev();
extern void _ZN6S641C53v27Ev();
extern void _ZN6S641C53v28Ev();
extern void _ZN6S641C53v29Ev();
extern void _ZN6S641C53v30Ev();
extern void _ZN6S641C53v31Ev();
extern void _ZN6S641C53v32Ev();
extern void _ZN6S641C53v33Ev();
extern void _ZN6S641C53v34Ev();
extern void _ZN6S641C53v35Ev();
extern void _ZN6S641C53v36Ev();
extern void _ZN6S641C53v37Ev();
extern void _ZN6S641C53v38Ev();
extern void _ZN6S641C53v39Ev();
extern void _ZN6S641C53v40Ev();
extern void _ZN6S641C53v41Ev();
extern void _ZN6S641C53v42Ev();
extern void _ZN6S641C53v43Ev();
extern void _ZN6S641C53v44Ev();
extern void _ZN6S641C53v45Ev();
extern void _ZN6S641C53v46Ev();
extern void _ZN6S641C53v47Ev();
extern void _ZN6S641C53v48Ev();
extern void _ZN6S641C53v49Ev();
extern void _ZN6S641C53v50Ev();
extern void _ZN6S641C53v51Ev();
extern void _ZN6S641C53v52Ev();
extern void _ZN6S641C53v53Ev();
extern void _ZN6S641C53v54Ev();
extern void _ZN6S641C53v55Ev();
extern void _ZN6S641C53v56Ev();
extern void _ZN6S641C53v57Ev();
extern void _ZN6S641C53v58Ev();
extern void _ZN6S641C53v59Ev();
extern void _ZN6S641C53v60Ev();
extern void _ZN6S641C53v61Ev();
extern void _ZN6S641C53v62Ev();
extern void _ZN6S641C53v63Ev();
extern void _ZN6S641C53v64Ev();
extern void _ZN6S641C53v65Ev();
extern void _ZN6S641C53v66Ev();
extern void _ZN6S641C53v67Ev();
extern void _ZN6S641C53v68Ev();
static  VTBL_ENTRY vtc_S641C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S641C5[0]),
  (VTBL_ENTRY)&_ZN6S641C5D1Ev,
  (VTBL_ENTRY)&_ZN6S641C5D0Ev,
  (VTBL_ENTRY)&_ZN6S641C52v5Ev,
  (VTBL_ENTRY)&_ZN6S641C52v6Ev,
  (VTBL_ENTRY)&_ZN6S641C52v7Ev,
  (VTBL_ENTRY)&_ZN6S641C52v8Ev,
  (VTBL_ENTRY)&_ZN6S641C52v9Ev,
  (VTBL_ENTRY)&_ZN6S641C53v10Ev,
  (VTBL_ENTRY)&_ZN6S641C53v11Ev,
  (VTBL_ENTRY)&_ZN6S641C53v12Ev,
  (VTBL_ENTRY)&_ZN6S641C53v13Ev,
  (VTBL_ENTRY)&_ZN6S641C53v14Ev,
  (VTBL_ENTRY)&_ZN6S641C53v15Ev,
  (VTBL_ENTRY)&_ZN6S641C53v16Ev,
  (VTBL_ENTRY)&_ZN6S641C53v17Ev,
  (VTBL_ENTRY)&_ZN6S641C53v18Ev,
  (VTBL_ENTRY)&_ZN6S641C53v19Ev,
  (VTBL_ENTRY)&_ZN6S641C53v20Ev,
  (VTBL_ENTRY)&_ZN6S641C53v21Ev,
  (VTBL_ENTRY)&_ZN6S641C53v22Ev,
  (VTBL_ENTRY)&_ZN6S641C53v23Ev,
  (VTBL_ENTRY)&_ZN6S641C53v24Ev,
  (VTBL_ENTRY)&_ZN6S641C53v25Ev,
  (VTBL_ENTRY)&_ZN6S641C53v26Ev,
  (VTBL_ENTRY)&_ZN6S641C53v27Ev,
  (VTBL_ENTRY)&_ZN6S641C53v28Ev,
  (VTBL_ENTRY)&_ZN6S641C53v29Ev,
  (VTBL_ENTRY)&_ZN6S641C53v30Ev,
  (VTBL_ENTRY)&_ZN6S641C53v31Ev,
  (VTBL_ENTRY)&_ZN6S641C53v32Ev,
  (VTBL_ENTRY)&_ZN6S641C53v33Ev,
  (VTBL_ENTRY)&_ZN6S641C53v34Ev,
  (VTBL_ENTRY)&_ZN6S641C53v35Ev,
  (VTBL_ENTRY)&_ZN6S641C53v36Ev,
  (VTBL_ENTRY)&_ZN6S641C53v37Ev,
  (VTBL_ENTRY)&_ZN6S641C53v38Ev,
  (VTBL_ENTRY)&_ZN6S641C53v39Ev,
  (VTBL_ENTRY)&_ZN6S641C53v40Ev,
  (VTBL_ENTRY)&_ZN6S641C53v41Ev,
  (VTBL_ENTRY)&_ZN6S641C53v42Ev,
  (VTBL_ENTRY)&_ZN6S641C53v43Ev,
  (VTBL_ENTRY)&_ZN6S641C53v44Ev,
  (VTBL_ENTRY)&_ZN6S641C53v45Ev,
  (VTBL_ENTRY)&_ZN6S641C53v46Ev,
  (VTBL_ENTRY)&_ZN6S641C53v47Ev,
  (VTBL_ENTRY)&_ZN6S641C53v48Ev,
  (VTBL_ENTRY)&_ZN6S641C53v49Ev,
  (VTBL_ENTRY)&_ZN6S641C53v50Ev,
  (VTBL_ENTRY)&_ZN6S641C53v51Ev,
  (VTBL_ENTRY)&_ZN6S641C53v52Ev,
  (VTBL_ENTRY)&_ZN6S641C53v53Ev,
  (VTBL_ENTRY)&_ZN6S641C53v54Ev,
  (VTBL_ENTRY)&_ZN6S641C53v55Ev,
  (VTBL_ENTRY)&_ZN6S641C53v56Ev,
  (VTBL_ENTRY)&_ZN6S641C53v57Ev,
  (VTBL_ENTRY)&_ZN6S641C53v58Ev,
  (VTBL_ENTRY)&_ZN6S641C53v59Ev,
  (VTBL_ENTRY)&_ZN6S641C53v60Ev,
  (VTBL_ENTRY)&_ZN6S641C53v61Ev,
  (VTBL_ENTRY)&_ZN6S641C53v62Ev,
  (VTBL_ENTRY)&_ZN6S641C53v63Ev,
  (VTBL_ENTRY)&_ZN6S641C53v64Ev,
  (VTBL_ENTRY)&_ZN6S641C53v65Ev,
  (VTBL_ENTRY)&_ZN6S641C53v66Ev,
  (VTBL_ENTRY)&_ZN6S641C53v67Ev,
  (VTBL_ENTRY)&_ZN6S641C53v68Ev,
};
extern VTBL_ENTRY _ZTI6S641C5[];
extern  VTBL_ENTRY _ZTV6S641C5[];
Class_Descriptor cd_S641C5 = {  "S641C5", // class name
  0,0,//no base classes
  &(vtc_S641C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S641C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S641C5),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  S641C4_nt  : S641C5 {
  virtual  ~S641C4_nt(); // _ZN9S641C4_ntD1Ev
  virtual void  v69(); // _ZN9S641C4_nt3v69Ev
  virtual void  v70(); // _ZN9S641C4_nt3v70Ev
  S641C4_nt(); // tgen
};
//SIG(-1 S641C4_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S641C4_nt ::~S641C4_nt(){ note_dtor("S641C4_nt", this);}
void  S641C4_nt ::v69(){vfunc_called(this, "_ZN9S641C4_nt3v69Ev");}
void  S641C4_nt ::v70(){vfunc_called(this, "_ZN9S641C4_nt3v70Ev");}
S641C4_nt ::S641C4_nt(){ note_ctor("S641C4_nt", this);} // tgen

//skip512 S641C4_nt

#else // __cplusplus

extern void _ZN9S641C4_ntC1Ev();
extern void _ZN9S641C4_ntD1Ev();
Name_Map name_map_S641C4_nt[] = {
  NSPAIR(_ZN9S641C4_ntC1Ev),
  NSPAIR(_ZN9S641C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S641C5;
extern VTBL_ENTRY _ZTI6S641C5[];
extern  VTBL_ENTRY _ZTV6S641C5[];
static Base_Class bases_S641C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S641C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S641C4_nt[];
extern void _ZN9S641C4_ntD1Ev();
extern void _ZN9S641C4_ntD0Ev();
extern void _ZN6S641C52v5Ev();
extern void _ZN6S641C52v6Ev();
extern void _ZN6S641C52v7Ev();
extern void _ZN6S641C52v8Ev();
extern void _ZN6S641C52v9Ev();
extern void _ZN6S641C53v10Ev();
extern void _ZN6S641C53v11Ev();
extern void _ZN6S641C53v12Ev();
extern void _ZN6S641C53v13Ev();
extern void _ZN6S641C53v14Ev();
extern void _ZN6S641C53v15Ev();
extern void _ZN6S641C53v16Ev();
extern void _ZN6S641C53v17Ev();
extern void _ZN6S641C53v18Ev();
extern void _ZN6S641C53v19Ev();
extern void _ZN6S641C53v20Ev();
extern void _ZN6S641C53v21Ev();
extern void _ZN6S641C53v22Ev();
extern void _ZN6S641C53v23Ev();
extern void _ZN6S641C53v24Ev();
extern void _ZN6S641C53v25Ev();
extern void _ZN6S641C53v26Ev();
extern void _ZN6S641C53v27Ev();
extern void _ZN6S641C53v28Ev();
extern void _ZN6S641C53v29Ev();
extern void _ZN6S641C53v30Ev();
extern void _ZN6S641C53v31Ev();
extern void _ZN6S641C53v32Ev();
extern void _ZN6S641C53v33Ev();
extern void _ZN6S641C53v34Ev();
extern void _ZN6S641C53v35Ev();
extern void _ZN6S641C53v36Ev();
extern void _ZN6S641C53v37Ev();
extern void _ZN6S641C53v38Ev();
extern void _ZN6S641C53v39Ev();
extern void _ZN6S641C53v40Ev();
extern void _ZN6S641C53v41Ev();
extern void _ZN6S641C53v42Ev();
extern void _ZN6S641C53v43Ev();
extern void _ZN6S641C53v44Ev();
extern void _ZN6S641C53v45Ev();
extern void _ZN6S641C53v46Ev();
extern void _ZN6S641C53v47Ev();
extern void _ZN6S641C53v48Ev();
extern void _ZN6S641C53v49Ev();
extern void _ZN6S641C53v50Ev();
extern void _ZN6S641C53v51Ev();
extern void _ZN6S641C53v52Ev();
extern void _ZN6S641C53v53Ev();
extern void _ZN6S641C53v54Ev();
extern void _ZN6S641C53v55Ev();
extern void _ZN6S641C53v56Ev();
extern void _ZN6S641C53v57Ev();
extern void _ZN6S641C53v58Ev();
extern void _ZN6S641C53v59Ev();
extern void _ZN6S641C53v60Ev();
extern void _ZN6S641C53v61Ev();
extern void _ZN6S641C53v62Ev();
extern void _ZN6S641C53v63Ev();
extern void _ZN6S641C53v64Ev();
extern void _ZN6S641C53v65Ev();
extern void _ZN6S641C53v66Ev();
extern void _ZN6S641C53v67Ev();
extern void _ZN6S641C53v68Ev();
extern void _ZN9S641C4_nt3v69Ev();
extern void _ZN9S641C4_nt3v70Ev();
static  VTBL_ENTRY vtc_S641C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S641C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S641C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S641C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S641C52v5Ev,
  (VTBL_ENTRY)&_ZN6S641C52v6Ev,
  (VTBL_ENTRY)&_ZN6S641C52v7Ev,
  (VTBL_ENTRY)&_ZN6S641C52v8Ev,
  (VTBL_ENTRY)&_ZN6S641C52v9Ev,
  (VTBL_ENTRY)&_ZN6S641C53v10Ev,
  (VTBL_ENTRY)&_ZN6S641C53v11Ev,
  (VTBL_ENTRY)&_ZN6S641C53v12Ev,
  (VTBL_ENTRY)&_ZN6S641C53v13Ev,
  (VTBL_ENTRY)&_ZN6S641C53v14Ev,
  (VTBL_ENTRY)&_ZN6S641C53v15Ev,
  (VTBL_ENTRY)&_ZN6S641C53v16Ev,
  (VTBL_ENTRY)&_ZN6S641C53v17Ev,
  (VTBL_ENTRY)&_ZN6S641C53v18Ev,
  (VTBL_ENTRY)&_ZN6S641C53v19Ev,
  (VTBL_ENTRY)&_ZN6S641C53v20Ev,
  (VTBL_ENTRY)&_ZN6S641C53v21Ev,
  (VTBL_ENTRY)&_ZN6S641C53v22Ev,
  (VTBL_ENTRY)&_ZN6S641C53v23Ev,
  (VTBL_ENTRY)&_ZN6S641C53v24Ev,
  (VTBL_ENTRY)&_ZN6S641C53v25Ev,
  (VTBL_ENTRY)&_ZN6S641C53v26Ev,
  (VTBL_ENTRY)&_ZN6S641C53v27Ev,
  (VTBL_ENTRY)&_ZN6S641C53v28Ev,
  (VTBL_ENTRY)&_ZN6S641C53v29Ev,
  (VTBL_ENTRY)&_ZN6S641C53v30Ev,
  (VTBL_ENTRY)&_ZN6S641C53v31Ev,
  (VTBL_ENTRY)&_ZN6S641C53v32Ev,
  (VTBL_ENTRY)&_ZN6S641C53v33Ev,
  (VTBL_ENTRY)&_ZN6S641C53v34Ev,
  (VTBL_ENTRY)&_ZN6S641C53v35Ev,
  (VTBL_ENTRY)&_ZN6S641C53v36Ev,
  (VTBL_ENTRY)&_ZN6S641C53v37Ev,
  (VTBL_ENTRY)&_ZN6S641C53v38Ev,
  (VTBL_ENTRY)&_ZN6S641C53v39Ev,
  (VTBL_ENTRY)&_ZN6S641C53v40Ev,
  (VTBL_ENTRY)&_ZN6S641C53v41Ev,
  (VTBL_ENTRY)&_ZN6S641C53v42Ev,
  (VTBL_ENTRY)&_ZN6S641C53v43Ev,
  (VTBL_ENTRY)&_ZN6S641C53v44Ev,
  (VTBL_ENTRY)&_ZN6S641C53v45Ev,
  (VTBL_ENTRY)&_ZN6S641C53v46Ev,
  (VTBL_ENTRY)&_ZN6S641C53v47Ev,
  (VTBL_ENTRY)&_ZN6S641C53v48Ev,
  (VTBL_ENTRY)&_ZN6S641C53v49Ev,
  (VTBL_ENTRY)&_ZN6S641C53v50Ev,
  (VTBL_ENTRY)&_ZN6S641C53v51Ev,
  (VTBL_ENTRY)&_ZN6S641C53v52Ev,
  (VTBL_ENTRY)&_ZN6S641C53v53Ev,
  (VTBL_ENTRY)&_ZN6S641C53v54Ev,
  (VTBL_ENTRY)&_ZN6S641C53v55Ev,
  (VTBL_ENTRY)&_ZN6S641C53v56Ev,
  (VTBL_ENTRY)&_ZN6S641C53v57Ev,
  (VTBL_ENTRY)&_ZN6S641C53v58Ev,
  (VTBL_ENTRY)&_ZN6S641C53v59Ev,
  (VTBL_ENTRY)&_ZN6S641C53v60Ev,
  (VTBL_ENTRY)&_ZN6S641C53v61Ev,
  (VTBL_ENTRY)&_ZN6S641C53v62Ev,
  (VTBL_ENTRY)&_ZN6S641C53v63Ev,
  (VTBL_ENTRY)&_ZN6S641C53v64Ev,
  (VTBL_ENTRY)&_ZN6S641C53v65Ev,
  (VTBL_ENTRY)&_ZN6S641C53v66Ev,
  (VTBL_ENTRY)&_ZN6S641C53v67Ev,
  (VTBL_ENTRY)&_ZN6S641C53v68Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI9S641C4_nt[];
VTBL_ENTRY *P__ZTI9S641C4_nt = _ZTI9S641C4_nt; 
extern  VTBL_ENTRY _ZTV9S641C4_nt[];
Class_Descriptor cd_S641C4_nt = {  "S641C4_nt", // class name
  bases_S641C4_nt, 1,
  &(vtc_S641C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI9S641C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S641C4_nt),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S641C10_nt  {
  void *s641c10f0;
  ::S1538C5_nt s641c10f1;
  void  mf641c10(); // _ZN10S641C10_nt8mf641c10Ev
};
//SIG(-1 S641C10_nt) C1{ m Fp FC2{ m Fi[2]}}


void  S641C10_nt ::mf641c10(){}

//skip512 S641C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S641C3_nt  : S641C4_nt {
  char s641c3f0;
  ::S1538C30 s641c3f1;
  ::S641C10_nt s641c3f2;
  virtual  ~S641C3_nt(); // _ZN9S641C3_ntD1Ev
  virtual void  v71(); // _ZN9S641C3_nt3v71Ev
  virtual void  v72(); // _ZN9S641C3_nt3v72Ev
  virtual void  v73(); // _ZN9S641C3_nt3v73Ev
  virtual void  v74(); // _ZN9S641C3_nt3v74Ev
  virtual void  v75(); // _ZN9S641C3_nt3v75Ev
  virtual void  v76(); // _ZN9S641C3_nt3v76Ev
  virtual void  v77(); // _ZN9S641C3_nt3v77Ev
  virtual void  v78(); // _ZN9S641C3_nt3v78Ev
  virtual void  v79(); // _ZN9S641C3_nt3v79Ev
  virtual void  v80(); // _ZN9S641C3_nt3v80Ev
  virtual void  v81(); // _ZN9S641C3_nt3v81Ev
  virtual void  v82(); // _ZN9S641C3_nt3v82Ev
  S641C3_nt(); // tgen
};
//SIG(-1 S641C3_nt) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v77 v78} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fc FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC8{ m Fp FC4}}


 S641C3_nt ::~S641C3_nt(){ note_dtor("S641C3_nt", this);}
void  S641C3_nt ::v71(){vfunc_called(this, "_ZN9S641C3_nt3v71Ev");}
void  S641C3_nt ::v72(){vfunc_called(this, "_ZN9S641C3_nt3v72Ev");}
void  S641C3_nt ::v73(){vfunc_called(this, "_ZN9S641C3_nt3v73Ev");}
void  S641C3_nt ::v74(){vfunc_called(this, "_ZN9S641C3_nt3v74Ev");}
void  S641C3_nt ::v75(){vfunc_called(this, "_ZN9S641C3_nt3v75Ev");}
void  S641C3_nt ::v76(){vfunc_called(this, "_ZN9S641C3_nt3v76Ev");}
void  S641C3_nt ::v77(){vfunc_called(this, "_ZN9S641C3_nt3v77Ev");}
void  S641C3_nt ::v78(){vfunc_called(this, "_ZN9S641C3_nt3v78Ev");}
void  S641C3_nt ::v79(){vfunc_called(this, "_ZN9S641C3_nt3v79Ev");}
void  S641C3_nt ::v80(){vfunc_called(this, "_ZN9S641C3_nt3v80Ev");}
void  S641C3_nt ::v81(){vfunc_called(this, "_ZN9S641C3_nt3v81Ev");}
void  S641C3_nt ::v82(){vfunc_called(this, "_ZN9S641C3_nt3v82Ev");}
S641C3_nt ::S641C3_nt(){ note_ctor("S641C3_nt", this);} // tgen

//skip512 S641C3_nt

#else // __cplusplus

extern void _ZN9S641C3_ntC1Ev();
extern void _ZN9S641C3_ntD1Ev();
Name_Map name_map_S641C3_nt[] = {
  NSPAIR(_ZN9S641C3_ntC1Ev),
  NSPAIR(_ZN9S641C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S641C5;
extern VTBL_ENTRY _ZTI6S641C5[];
extern  VTBL_ENTRY _ZTV6S641C5[];
extern Class_Descriptor cd_S641C4_nt;
extern VTBL_ENTRY _ZTI9S641C4_nt[];
extern  VTBL_ENTRY _ZTV9S641C4_nt[];
static Base_Class bases_S641C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S641C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S641C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI9S641C3_nt[];
extern void _ZN9S641C3_ntD1Ev();
extern void _ZN9S641C3_ntD0Ev();
extern void _ZN6S641C52v5Ev();
extern void _ZN6S641C52v6Ev();
extern void _ZN6S641C52v7Ev();
extern void _ZN6S641C52v8Ev();
extern void _ZN6S641C52v9Ev();
extern void _ZN6S641C53v10Ev();
extern void _ZN6S641C53v11Ev();
extern void _ZN6S641C53v12Ev();
extern void _ZN6S641C53v13Ev();
extern void _ZN6S641C53v14Ev();
extern void _ZN6S641C53v15Ev();
extern void _ZN6S641C53v16Ev();
extern void _ZN6S641C53v17Ev();
extern void _ZN6S641C53v18Ev();
extern void _ZN6S641C53v19Ev();
extern void _ZN6S641C53v20Ev();
extern void _ZN6S641C53v21Ev();
extern void _ZN6S641C53v22Ev();
extern void _ZN6S641C53v23Ev();
extern void _ZN6S641C53v24Ev();
extern void _ZN6S641C53v25Ev();
extern void _ZN6S641C53v26Ev();
extern void _ZN6S641C53v27Ev();
extern void _ZN6S641C53v28Ev();
extern void _ZN6S641C53v29Ev();
extern void _ZN6S641C53v30Ev();
extern void _ZN6S641C53v31Ev();
extern void _ZN6S641C53v32Ev();
extern void _ZN6S641C53v33Ev();
extern void _ZN6S641C53v34Ev();
extern void _ZN6S641C53v35Ev();
extern void _ZN6S641C53v36Ev();
extern void _ZN6S641C53v37Ev();
extern void _ZN6S641C53v38Ev();
extern void _ZN6S641C53v39Ev();
extern void _ZN6S641C53v40Ev();
extern void _ZN6S641C53v41Ev();
extern void _ZN6S641C53v42Ev();
extern void _ZN6S641C53v43Ev();
extern void _ZN6S641C53v44Ev();
extern void _ZN6S641C53v45Ev();
extern void _ZN6S641C53v46Ev();
extern void _ZN6S641C53v47Ev();
extern void _ZN6S641C53v48Ev();
extern void _ZN6S641C53v49Ev();
extern void _ZN6S641C53v50Ev();
extern void _ZN6S641C53v51Ev();
extern void _ZN6S641C53v52Ev();
extern void _ZN6S641C53v53Ev();
extern void _ZN6S641C53v54Ev();
extern void _ZN6S641C53v55Ev();
extern void _ZN6S641C53v56Ev();
extern void _ZN6S641C53v57Ev();
extern void _ZN6S641C53v58Ev();
extern void _ZN6S641C53v59Ev();
extern void _ZN6S641C53v60Ev();
extern void _ZN6S641C53v61Ev();
extern void _ZN6S641C53v62Ev();
extern void _ZN6S641C53v63Ev();
extern void _ZN6S641C53v64Ev();
extern void _ZN6S641C53v65Ev();
extern void _ZN6S641C53v66Ev();
extern void _ZN6S641C53v67Ev();
extern void _ZN6S641C53v68Ev();
extern void _ZN9S641C4_nt3v69Ev();
extern void _ZN9S641C4_nt3v70Ev();
extern void _ZN9S641C3_nt3v71Ev();
extern void _ZN9S641C3_nt3v72Ev();
extern void _ZN9S641C3_nt3v73Ev();
extern void _ZN9S641C3_nt3v74Ev();
extern void _ZN9S641C3_nt3v75Ev();
extern void _ZN9S641C3_nt3v76Ev();
extern void _ZN9S641C3_nt3v77Ev();
extern void _ZN9S641C3_nt3v78Ev();
extern void _ZN9S641C3_nt3v79Ev();
extern void _ZN9S641C3_nt3v80Ev();
extern void _ZN9S641C3_nt3v81Ev();
extern void _ZN9S641C3_nt3v82Ev();
static  VTBL_ENTRY vtc_S641C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S641C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S641C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S641C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S641C52v5Ev,
  (VTBL_ENTRY)&_ZN6S641C52v6Ev,
  (VTBL_ENTRY)&_ZN6S641C52v7Ev,
  (VTBL_ENTRY)&_ZN6S641C52v8Ev,
  (VTBL_ENTRY)&_ZN6S641C52v9Ev,
  (VTBL_ENTRY)&_ZN6S641C53v10Ev,
  (VTBL_ENTRY)&_ZN6S641C53v11Ev,
  (VTBL_ENTRY)&_ZN6S641C53v12Ev,
  (VTBL_ENTRY)&_ZN6S641C53v13Ev,
  (VTBL_ENTRY)&_ZN6S641C53v14Ev,
  (VTBL_ENTRY)&_ZN6S641C53v15Ev,
  (VTBL_ENTRY)&_ZN6S641C53v16Ev,
  (VTBL_ENTRY)&_ZN6S641C53v17Ev,
  (VTBL_ENTRY)&_ZN6S641C53v18Ev,
  (VTBL_ENTRY)&_ZN6S641C53v19Ev,
  (VTBL_ENTRY)&_ZN6S641C53v20Ev,
  (VTBL_ENTRY)&_ZN6S641C53v21Ev,
  (VTBL_ENTRY)&_ZN6S641C53v22Ev,
  (VTBL_ENTRY)&_ZN6S641C53v23Ev,
  (VTBL_ENTRY)&_ZN6S641C53v24Ev,
  (VTBL_ENTRY)&_ZN6S641C53v25Ev,
  (VTBL_ENTRY)&_ZN6S641C53v26Ev,
  (VTBL_ENTRY)&_ZN6S641C53v27Ev,
  (VTBL_ENTRY)&_ZN6S641C53v28Ev,
  (VTBL_ENTRY)&_ZN6S641C53v29Ev,
  (VTBL_ENTRY)&_ZN6S641C53v30Ev,
  (VTBL_ENTRY)&_ZN6S641C53v31Ev,
  (VTBL_ENTRY)&_ZN6S641C53v32Ev,
  (VTBL_ENTRY)&_ZN6S641C53v33Ev,
  (VTBL_ENTRY)&_ZN6S641C53v34Ev,
  (VTBL_ENTRY)&_ZN6S641C53v35Ev,
  (VTBL_ENTRY)&_ZN6S641C53v36Ev,
  (VTBL_ENTRY)&_ZN6S641C53v37Ev,
  (VTBL_ENTRY)&_ZN6S641C53v38Ev,
  (VTBL_ENTRY)&_ZN6S641C53v39Ev,
  (VTBL_ENTRY)&_ZN6S641C53v40Ev,
  (VTBL_ENTRY)&_ZN6S641C53v41Ev,
  (VTBL_ENTRY)&_ZN6S641C53v42Ev,
  (VTBL_ENTRY)&_ZN6S641C53v43Ev,
  (VTBL_ENTRY)&_ZN6S641C53v44Ev,
  (VTBL_ENTRY)&_ZN6S641C53v45Ev,
  (VTBL_ENTRY)&_ZN6S641C53v46Ev,
  (VTBL_ENTRY)&_ZN6S641C53v47Ev,
  (VTBL_ENTRY)&_ZN6S641C53v48Ev,
  (VTBL_ENTRY)&_ZN6S641C53v49Ev,
  (VTBL_ENTRY)&_ZN6S641C53v50Ev,
  (VTBL_ENTRY)&_ZN6S641C53v51Ev,
  (VTBL_ENTRY)&_ZN6S641C53v52Ev,
  (VTBL_ENTRY)&_ZN6S641C53v53Ev,
  (VTBL_ENTRY)&_ZN6S641C53v54Ev,
  (VTBL_ENTRY)&_ZN6S641C53v55Ev,
  (VTBL_ENTRY)&_ZN6S641C53v56Ev,
  (VTBL_ENTRY)&_ZN6S641C53v57Ev,
  (VTBL_ENTRY)&_ZN6S641C53v58Ev,
  (VTBL_ENTRY)&_ZN6S641C53v59Ev,
  (VTBL_ENTRY)&_ZN6S641C53v60Ev,
  (VTBL_ENTRY)&_ZN6S641C53v61Ev,
  (VTBL_ENTRY)&_ZN6S641C53v62Ev,
  (VTBL_ENTRY)&_ZN6S641C53v63Ev,
  (VTBL_ENTRY)&_ZN6S641C53v64Ev,
  (VTBL_ENTRY)&_ZN6S641C53v65Ev,
  (VTBL_ENTRY)&_ZN6S641C53v66Ev,
  (VTBL_ENTRY)&_ZN6S641C53v67Ev,
  (VTBL_ENTRY)&_ZN6S641C53v68Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v82Ev,
};
extern VTBL_ENTRY _ZTI9S641C3_nt[];
VTBL_ENTRY *P__ZTI9S641C3_nt = _ZTI9S641C3_nt; 
extern  VTBL_ENTRY _ZTV9S641C3_nt[];
Class_Descriptor cd_S641C3_nt = {  "S641C3_nt", // class name
  bases_S641C3_nt, 2,
  &(vtc_S641C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S641C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S641C3_nt),82, //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  S641C2_nt  : S641C3_nt {
  ::S1538C5_nt s641c2f0;
  ::S1538C30 s641c2f1;
  ::S641C10_nt s641c2f2;
  virtual  ~S641C2_nt(); // _ZN9S641C2_ntD1Ev
  virtual void  v83(); // _ZN9S641C2_nt3v83Ev
  virtual void  v84(); // _ZN9S641C2_nt3v84Ev
  virtual void  v85(); // _ZN9S641C2_nt3v85Ev
  virtual void  v86(); // _ZN9S641C2_nt3v86Ev
  virtual void  v87(); // _ZN9S641C2_nt3v87Ev
  virtual void  v88(); // _ZN9S641C2_nt3v88Ev
  virtual void  v89(); // _ZN9S641C2_nt3v89Ev
  virtual void  v90(); // _ZN9S641C2_nt3v90Ev
  virtual void  v91(); // _ZN9S641C2_nt3v91Ev
  S641C2_nt(); // tgen
};
//SIG(-1 S641C2_nt) C1{ BC2{ BC3{ BC4{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v74 v75} vd v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 Fc FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC9{ m Fp FC5}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5 FC6 FC9}


 S641C2_nt ::~S641C2_nt(){ note_dtor("S641C2_nt", this);}
void  S641C2_nt ::v83(){vfunc_called(this, "_ZN9S641C2_nt3v83Ev");}
void  S641C2_nt ::v84(){vfunc_called(this, "_ZN9S641C2_nt3v84Ev");}
void  S641C2_nt ::v85(){vfunc_called(this, "_ZN9S641C2_nt3v85Ev");}
void  S641C2_nt ::v86(){vfunc_called(this, "_ZN9S641C2_nt3v86Ev");}
void  S641C2_nt ::v87(){vfunc_called(this, "_ZN9S641C2_nt3v87Ev");}
void  S641C2_nt ::v88(){vfunc_called(this, "_ZN9S641C2_nt3v88Ev");}
void  S641C2_nt ::v89(){vfunc_called(this, "_ZN9S641C2_nt3v89Ev");}
void  S641C2_nt ::v90(){vfunc_called(this, "_ZN9S641C2_nt3v90Ev");}
void  S641C2_nt ::v91(){vfunc_called(this, "_ZN9S641C2_nt3v91Ev");}
S641C2_nt ::S641C2_nt(){ note_ctor("S641C2_nt", this);} // tgen

//skip512 S641C2_nt

#else // __cplusplus

extern void _ZN9S641C2_ntC1Ev();
extern void _ZN9S641C2_ntD1Ev();
Name_Map name_map_S641C2_nt[] = {
  NSPAIR(_ZN9S641C2_ntC1Ev),
  NSPAIR(_ZN9S641C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S641C5;
extern VTBL_ENTRY _ZTI6S641C5[];
extern  VTBL_ENTRY _ZTV6S641C5[];
extern Class_Descriptor cd_S641C4_nt;
extern VTBL_ENTRY _ZTI9S641C4_nt[];
extern  VTBL_ENTRY _ZTV9S641C4_nt[];
extern Class_Descriptor cd_S641C3_nt;
extern VTBL_ENTRY _ZTI9S641C3_nt[];
extern  VTBL_ENTRY _ZTV9S641C3_nt[];
static Base_Class bases_S641C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S641C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S641C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S641C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S641C2_nt[];
extern void _ZN9S641C2_ntD1Ev();
extern void _ZN9S641C2_ntD0Ev();
extern void _ZN6S641C52v5Ev();
extern void _ZN6S641C52v6Ev();
extern void _ZN6S641C52v7Ev();
extern void _ZN6S641C52v8Ev();
extern void _ZN6S641C52v9Ev();
extern void _ZN6S641C53v10Ev();
extern void _ZN6S641C53v11Ev();
extern void _ZN6S641C53v12Ev();
extern void _ZN6S641C53v13Ev();
extern void _ZN6S641C53v14Ev();
extern void _ZN6S641C53v15Ev();
extern void _ZN6S641C53v16Ev();
extern void _ZN6S641C53v17Ev();
extern void _ZN6S641C53v18Ev();
extern void _ZN6S641C53v19Ev();
extern void _ZN6S641C53v20Ev();
extern void _ZN6S641C53v21Ev();
extern void _ZN6S641C53v22Ev();
extern void _ZN6S641C53v23Ev();
extern void _ZN6S641C53v24Ev();
extern void _ZN6S641C53v25Ev();
extern void _ZN6S641C53v26Ev();
extern void _ZN6S641C53v27Ev();
extern void _ZN6S641C53v28Ev();
extern void _ZN6S641C53v29Ev();
extern void _ZN6S641C53v30Ev();
extern void _ZN6S641C53v31Ev();
extern void _ZN6S641C53v32Ev();
extern void _ZN6S641C53v33Ev();
extern void _ZN6S641C53v34Ev();
extern void _ZN6S641C53v35Ev();
extern void _ZN6S641C53v36Ev();
extern void _ZN6S641C53v37Ev();
extern void _ZN6S641C53v38Ev();
extern void _ZN6S641C53v39Ev();
extern void _ZN6S641C53v40Ev();
extern void _ZN6S641C53v41Ev();
extern void _ZN6S641C53v42Ev();
extern void _ZN6S641C53v43Ev();
extern void _ZN6S641C53v44Ev();
extern void _ZN6S641C53v45Ev();
extern void _ZN6S641C53v46Ev();
extern void _ZN6S641C53v47Ev();
extern void _ZN6S641C53v48Ev();
extern void _ZN6S641C53v49Ev();
extern void _ZN6S641C53v50Ev();
extern void _ZN6S641C53v51Ev();
extern void _ZN6S641C53v52Ev();
extern void _ZN6S641C53v53Ev();
extern void _ZN6S641C53v54Ev();
extern void _ZN6S641C53v55Ev();
extern void _ZN6S641C53v56Ev();
extern void _ZN6S641C53v57Ev();
extern void _ZN6S641C53v58Ev();
extern void _ZN6S641C53v59Ev();
extern void _ZN6S641C53v60Ev();
extern void _ZN6S641C53v61Ev();
extern void _ZN6S641C53v62Ev();
extern void _ZN6S641C53v63Ev();
extern void _ZN6S641C53v64Ev();
extern void _ZN6S641C53v65Ev();
extern void _ZN6S641C53v66Ev();
extern void _ZN6S641C53v67Ev();
extern void _ZN6S641C53v68Ev();
extern void _ZN9S641C4_nt3v69Ev();
extern void _ZN9S641C4_nt3v70Ev();
extern void _ZN9S641C3_nt3v71Ev();
extern void _ZN9S641C3_nt3v72Ev();
extern void _ZN9S641C3_nt3v73Ev();
extern void _ZN9S641C3_nt3v74Ev();
extern void _ZN9S641C3_nt3v75Ev();
extern void _ZN9S641C3_nt3v76Ev();
extern void _ZN9S641C3_nt3v77Ev();
extern void _ZN9S641C3_nt3v78Ev();
extern void _ZN9S641C3_nt3v79Ev();
extern void _ZN9S641C3_nt3v80Ev();
extern void _ZN9S641C3_nt3v81Ev();
extern void _ZN9S641C3_nt3v82Ev();
extern void _ZN9S641C2_nt3v83Ev();
extern void _ZN9S641C2_nt3v84Ev();
extern void _ZN9S641C2_nt3v85Ev();
extern void _ZN9S641C2_nt3v86Ev();
extern void _ZN9S641C2_nt3v87Ev();
extern void _ZN9S641C2_nt3v88Ev();
extern void _ZN9S641C2_nt3v89Ev();
extern void _ZN9S641C2_nt3v90Ev();
extern void _ZN9S641C2_nt3v91Ev();
static  VTBL_ENTRY vtc_S641C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S641C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S641C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S641C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S641C52v5Ev,
  (VTBL_ENTRY)&_ZN6S641C52v6Ev,
  (VTBL_ENTRY)&_ZN6S641C52v7Ev,
  (VTBL_ENTRY)&_ZN6S641C52v8Ev,
  (VTBL_ENTRY)&_ZN6S641C52v9Ev,
  (VTBL_ENTRY)&_ZN6S641C53v10Ev,
  (VTBL_ENTRY)&_ZN6S641C53v11Ev,
  (VTBL_ENTRY)&_ZN6S641C53v12Ev,
  (VTBL_ENTRY)&_ZN6S641C53v13Ev,
  (VTBL_ENTRY)&_ZN6S641C53v14Ev,
  (VTBL_ENTRY)&_ZN6S641C53v15Ev,
  (VTBL_ENTRY)&_ZN6S641C53v16Ev,
  (VTBL_ENTRY)&_ZN6S641C53v17Ev,
  (VTBL_ENTRY)&_ZN6S641C53v18Ev,
  (VTBL_ENTRY)&_ZN6S641C53v19Ev,
  (VTBL_ENTRY)&_ZN6S641C53v20Ev,
  (VTBL_ENTRY)&_ZN6S641C53v21Ev,
  (VTBL_ENTRY)&_ZN6S641C53v22Ev,
  (VTBL_ENTRY)&_ZN6S641C53v23Ev,
  (VTBL_ENTRY)&_ZN6S641C53v24Ev,
  (VTBL_ENTRY)&_ZN6S641C53v25Ev,
  (VTBL_ENTRY)&_ZN6S641C53v26Ev,
  (VTBL_ENTRY)&_ZN6S641C53v27Ev,
  (VTBL_ENTRY)&_ZN6S641C53v28Ev,
  (VTBL_ENTRY)&_ZN6S641C53v29Ev,
  (VTBL_ENTRY)&_ZN6S641C53v30Ev,
  (VTBL_ENTRY)&_ZN6S641C53v31Ev,
  (VTBL_ENTRY)&_ZN6S641C53v32Ev,
  (VTBL_ENTRY)&_ZN6S641C53v33Ev,
  (VTBL_ENTRY)&_ZN6S641C53v34Ev,
  (VTBL_ENTRY)&_ZN6S641C53v35Ev,
  (VTBL_ENTRY)&_ZN6S641C53v36Ev,
  (VTBL_ENTRY)&_ZN6S641C53v37Ev,
  (VTBL_ENTRY)&_ZN6S641C53v38Ev,
  (VTBL_ENTRY)&_ZN6S641C53v39Ev,
  (VTBL_ENTRY)&_ZN6S641C53v40Ev,
  (VTBL_ENTRY)&_ZN6S641C53v41Ev,
  (VTBL_ENTRY)&_ZN6S641C53v42Ev,
  (VTBL_ENTRY)&_ZN6S641C53v43Ev,
  (VTBL_ENTRY)&_ZN6S641C53v44Ev,
  (VTBL_ENTRY)&_ZN6S641C53v45Ev,
  (VTBL_ENTRY)&_ZN6S641C53v46Ev,
  (VTBL_ENTRY)&_ZN6S641C53v47Ev,
  (VTBL_ENTRY)&_ZN6S641C53v48Ev,
  (VTBL_ENTRY)&_ZN6S641C53v49Ev,
  (VTBL_ENTRY)&_ZN6S641C53v50Ev,
  (VTBL_ENTRY)&_ZN6S641C53v51Ev,
  (VTBL_ENTRY)&_ZN6S641C53v52Ev,
  (VTBL_ENTRY)&_ZN6S641C53v53Ev,
  (VTBL_ENTRY)&_ZN6S641C53v54Ev,
  (VTBL_ENTRY)&_ZN6S641C53v55Ev,
  (VTBL_ENTRY)&_ZN6S641C53v56Ev,
  (VTBL_ENTRY)&_ZN6S641C53v57Ev,
  (VTBL_ENTRY)&_ZN6S641C53v58Ev,
  (VTBL_ENTRY)&_ZN6S641C53v59Ev,
  (VTBL_ENTRY)&_ZN6S641C53v60Ev,
  (VTBL_ENTRY)&_ZN6S641C53v61Ev,
  (VTBL_ENTRY)&_ZN6S641C53v62Ev,
  (VTBL_ENTRY)&_ZN6S641C53v63Ev,
  (VTBL_ENTRY)&_ZN6S641C53v64Ev,
  (VTBL_ENTRY)&_ZN6S641C53v65Ev,
  (VTBL_ENTRY)&_ZN6S641C53v66Ev,
  (VTBL_ENTRY)&_ZN6S641C53v67Ev,
  (VTBL_ENTRY)&_ZN6S641C53v68Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v91Ev,
};
extern VTBL_ENTRY _ZTI9S641C2_nt[];
VTBL_ENTRY *P__ZTI9S641C2_nt = _ZTI9S641C2_nt; 
extern  VTBL_ENTRY _ZTV9S641C2_nt[];
Class_Descriptor cd_S641C2_nt = {  "S641C2_nt", // class name
  bases_S641C2_nt, 3,
  &(vtc_S641C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI9S641C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S641C2_nt),91, //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  S641C1  : S641C2_nt {
  virtual  ~S641C1(); // _ZN6S641C1D1Ev
  virtual void  v1(); // _ZN6S641C12v1Ev
  virtual void  v2(); // _ZN6S641C12v2Ev
  virtual void  v3(); // _ZN6S641C12v3Ev
  virtual void  v4(); // _ZN6S641C12v4Ev
  S641C1(); // tgen
};
//SIG(1 S641C1) C1{ BC2{ BC3{ BC4{ BC5{ 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 FC6{ m Fi[2]} Fp[2]} vd v69 v70} vd v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 Fc FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC10{ m Fp FC6}} vd v83 v84 v85 v86 v87 v88 v89 v90 v91 FC6 FC7 FC10} vd v1 v2 v3 v4}


 S641C1 ::~S641C1(){ note_dtor("S641C1", this);}
void  S641C1 ::v1(){vfunc_called(this, "_ZN6S641C12v1Ev");}
void  S641C1 ::v2(){vfunc_called(this, "_ZN6S641C12v2Ev");}
void  S641C1 ::v3(){vfunc_called(this, "_ZN6S641C12v3Ev");}
void  S641C1 ::v4(){vfunc_called(this, "_ZN6S641C12v4Ev");}
S641C1 ::S641C1(){ note_ctor("S641C1", this);} // tgen

static void Test_S641C1()
{
  extern Class_Descriptor cd_S641C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,31)];
    init_test(&cd_S641C1, buf);
    S641C1 *dp, &lv = *(dp=new (buf) S641C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,120), "sizeof(S641C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S641C1)");
    check_base_class_offset(lv, (S641C5*)(S641C4_nt*)(S641C3_nt*)(S641C2_nt*), 0, "S641C1");
    check_base_class_offset(lv, (S641C4_nt*)(S641C3_nt*)(S641C2_nt*), 0, "S641C1");
    check_base_class_offset(lv, (S641C3_nt*)(S641C2_nt*), 0, "S641C1");
    check_base_class_offset(lv, (S641C2_nt*), 0, "S641C1");
    test_class_info(&lv, &cd_S641C1);
    dp->~S641C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS641C1(Test_S641C1, "S641C1", ABISELECT(176,120));

#else // __cplusplus

extern void _ZN6S641C1C1Ev();
extern void _ZN6S641C1D1Ev();
Name_Map name_map_S641C1[] = {
  NSPAIR(_ZN6S641C1C1Ev),
  NSPAIR(_ZN6S641C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S641C5;
extern VTBL_ENTRY _ZTI6S641C5[];
extern  VTBL_ENTRY _ZTV6S641C5[];
extern Class_Descriptor cd_S641C4_nt;
extern VTBL_ENTRY _ZTI9S641C4_nt[];
extern  VTBL_ENTRY _ZTV9S641C4_nt[];
extern Class_Descriptor cd_S641C3_nt;
extern VTBL_ENTRY _ZTI9S641C3_nt[];
extern  VTBL_ENTRY _ZTV9S641C3_nt[];
extern Class_Descriptor cd_S641C2_nt;
extern VTBL_ENTRY _ZTI9S641C2_nt[];
extern  VTBL_ENTRY _ZTV9S641C2_nt[];
static Base_Class bases_S641C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S641C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S641C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S641C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S641C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S641C1[];
extern void _ZN6S641C1D1Ev();
extern void _ZN6S641C1D0Ev();
extern void _ZN6S641C52v5Ev();
extern void _ZN6S641C52v6Ev();
extern void _ZN6S641C52v7Ev();
extern void _ZN6S641C52v8Ev();
extern void _ZN6S641C52v9Ev();
extern void _ZN6S641C53v10Ev();
extern void _ZN6S641C53v11Ev();
extern void _ZN6S641C53v12Ev();
extern void _ZN6S641C53v13Ev();
extern void _ZN6S641C53v14Ev();
extern void _ZN6S641C53v15Ev();
extern void _ZN6S641C53v16Ev();
extern void _ZN6S641C53v17Ev();
extern void _ZN6S641C53v18Ev();
extern void _ZN6S641C53v19Ev();
extern void _ZN6S641C53v20Ev();
extern void _ZN6S641C53v21Ev();
extern void _ZN6S641C53v22Ev();
extern void _ZN6S641C53v23Ev();
extern void _ZN6S641C53v24Ev();
extern void _ZN6S641C53v25Ev();
extern void _ZN6S641C53v26Ev();
extern void _ZN6S641C53v27Ev();
extern void _ZN6S641C53v28Ev();
extern void _ZN6S641C53v29Ev();
extern void _ZN6S641C53v30Ev();
extern void _ZN6S641C53v31Ev();
extern void _ZN6S641C53v32Ev();
extern void _ZN6S641C53v33Ev();
extern void _ZN6S641C53v34Ev();
extern void _ZN6S641C53v35Ev();
extern void _ZN6S641C53v36Ev();
extern void _ZN6S641C53v37Ev();
extern void _ZN6S641C53v38Ev();
extern void _ZN6S641C53v39Ev();
extern void _ZN6S641C53v40Ev();
extern void _ZN6S641C53v41Ev();
extern void _ZN6S641C53v42Ev();
extern void _ZN6S641C53v43Ev();
extern void _ZN6S641C53v44Ev();
extern void _ZN6S641C53v45Ev();
extern void _ZN6S641C53v46Ev();
extern void _ZN6S641C53v47Ev();
extern void _ZN6S641C53v48Ev();
extern void _ZN6S641C53v49Ev();
extern void _ZN6S641C53v50Ev();
extern void _ZN6S641C53v51Ev();
extern void _ZN6S641C53v52Ev();
extern void _ZN6S641C53v53Ev();
extern void _ZN6S641C53v54Ev();
extern void _ZN6S641C53v55Ev();
extern void _ZN6S641C53v56Ev();
extern void _ZN6S641C53v57Ev();
extern void _ZN6S641C53v58Ev();
extern void _ZN6S641C53v59Ev();
extern void _ZN6S641C53v60Ev();
extern void _ZN6S641C53v61Ev();
extern void _ZN6S641C53v62Ev();
extern void _ZN6S641C53v63Ev();
extern void _ZN6S641C53v64Ev();
extern void _ZN6S641C53v65Ev();
extern void _ZN6S641C53v66Ev();
extern void _ZN6S641C53v67Ev();
extern void _ZN6S641C53v68Ev();
extern void _ZN9S641C4_nt3v69Ev();
extern void _ZN9S641C4_nt3v70Ev();
extern void _ZN9S641C3_nt3v71Ev();
extern void _ZN9S641C3_nt3v72Ev();
extern void _ZN9S641C3_nt3v73Ev();
extern void _ZN9S641C3_nt3v74Ev();
extern void _ZN9S641C3_nt3v75Ev();
extern void _ZN9S641C3_nt3v76Ev();
extern void _ZN9S641C3_nt3v77Ev();
extern void _ZN9S641C3_nt3v78Ev();
extern void _ZN9S641C3_nt3v79Ev();
extern void _ZN9S641C3_nt3v80Ev();
extern void _ZN9S641C3_nt3v81Ev();
extern void _ZN9S641C3_nt3v82Ev();
extern void _ZN9S641C2_nt3v83Ev();
extern void _ZN9S641C2_nt3v84Ev();
extern void _ZN9S641C2_nt3v85Ev();
extern void _ZN9S641C2_nt3v86Ev();
extern void _ZN9S641C2_nt3v87Ev();
extern void _ZN9S641C2_nt3v88Ev();
extern void _ZN9S641C2_nt3v89Ev();
extern void _ZN9S641C2_nt3v90Ev();
extern void _ZN9S641C2_nt3v91Ev();
extern void _ZN6S641C12v1Ev();
extern void _ZN6S641C12v2Ev();
extern void _ZN6S641C12v3Ev();
extern void _ZN6S641C12v4Ev();
static  VTBL_ENTRY vtc_S641C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S641C1[0]),
  (VTBL_ENTRY)&_ZN6S641C1D1Ev,
  (VTBL_ENTRY)&_ZN6S641C1D0Ev,
  (VTBL_ENTRY)&_ZN6S641C52v5Ev,
  (VTBL_ENTRY)&_ZN6S641C52v6Ev,
  (VTBL_ENTRY)&_ZN6S641C52v7Ev,
  (VTBL_ENTRY)&_ZN6S641C52v8Ev,
  (VTBL_ENTRY)&_ZN6S641C52v9Ev,
  (VTBL_ENTRY)&_ZN6S641C53v10Ev,
  (VTBL_ENTRY)&_ZN6S641C53v11Ev,
  (VTBL_ENTRY)&_ZN6S641C53v12Ev,
  (VTBL_ENTRY)&_ZN6S641C53v13Ev,
  (VTBL_ENTRY)&_ZN6S641C53v14Ev,
  (VTBL_ENTRY)&_ZN6S641C53v15Ev,
  (VTBL_ENTRY)&_ZN6S641C53v16Ev,
  (VTBL_ENTRY)&_ZN6S641C53v17Ev,
  (VTBL_ENTRY)&_ZN6S641C53v18Ev,
  (VTBL_ENTRY)&_ZN6S641C53v19Ev,
  (VTBL_ENTRY)&_ZN6S641C53v20Ev,
  (VTBL_ENTRY)&_ZN6S641C53v21Ev,
  (VTBL_ENTRY)&_ZN6S641C53v22Ev,
  (VTBL_ENTRY)&_ZN6S641C53v23Ev,
  (VTBL_ENTRY)&_ZN6S641C53v24Ev,
  (VTBL_ENTRY)&_ZN6S641C53v25Ev,
  (VTBL_ENTRY)&_ZN6S641C53v26Ev,
  (VTBL_ENTRY)&_ZN6S641C53v27Ev,
  (VTBL_ENTRY)&_ZN6S641C53v28Ev,
  (VTBL_ENTRY)&_ZN6S641C53v29Ev,
  (VTBL_ENTRY)&_ZN6S641C53v30Ev,
  (VTBL_ENTRY)&_ZN6S641C53v31Ev,
  (VTBL_ENTRY)&_ZN6S641C53v32Ev,
  (VTBL_ENTRY)&_ZN6S641C53v33Ev,
  (VTBL_ENTRY)&_ZN6S641C53v34Ev,
  (VTBL_ENTRY)&_ZN6S641C53v35Ev,
  (VTBL_ENTRY)&_ZN6S641C53v36Ev,
  (VTBL_ENTRY)&_ZN6S641C53v37Ev,
  (VTBL_ENTRY)&_ZN6S641C53v38Ev,
  (VTBL_ENTRY)&_ZN6S641C53v39Ev,
  (VTBL_ENTRY)&_ZN6S641C53v40Ev,
  (VTBL_ENTRY)&_ZN6S641C53v41Ev,
  (VTBL_ENTRY)&_ZN6S641C53v42Ev,
  (VTBL_ENTRY)&_ZN6S641C53v43Ev,
  (VTBL_ENTRY)&_ZN6S641C53v44Ev,
  (VTBL_ENTRY)&_ZN6S641C53v45Ev,
  (VTBL_ENTRY)&_ZN6S641C53v46Ev,
  (VTBL_ENTRY)&_ZN6S641C53v47Ev,
  (VTBL_ENTRY)&_ZN6S641C53v48Ev,
  (VTBL_ENTRY)&_ZN6S641C53v49Ev,
  (VTBL_ENTRY)&_ZN6S641C53v50Ev,
  (VTBL_ENTRY)&_ZN6S641C53v51Ev,
  (VTBL_ENTRY)&_ZN6S641C53v52Ev,
  (VTBL_ENTRY)&_ZN6S641C53v53Ev,
  (VTBL_ENTRY)&_ZN6S641C53v54Ev,
  (VTBL_ENTRY)&_ZN6S641C53v55Ev,
  (VTBL_ENTRY)&_ZN6S641C53v56Ev,
  (VTBL_ENTRY)&_ZN6S641C53v57Ev,
  (VTBL_ENTRY)&_ZN6S641C53v58Ev,
  (VTBL_ENTRY)&_ZN6S641C53v59Ev,
  (VTBL_ENTRY)&_ZN6S641C53v60Ev,
  (VTBL_ENTRY)&_ZN6S641C53v61Ev,
  (VTBL_ENTRY)&_ZN6S641C53v62Ev,
  (VTBL_ENTRY)&_ZN6S641C53v63Ev,
  (VTBL_ENTRY)&_ZN6S641C53v64Ev,
  (VTBL_ENTRY)&_ZN6S641C53v65Ev,
  (VTBL_ENTRY)&_ZN6S641C53v66Ev,
  (VTBL_ENTRY)&_ZN6S641C53v67Ev,
  (VTBL_ENTRY)&_ZN6S641C53v68Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S641C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S641C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S641C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN6S641C12v1Ev,
  (VTBL_ENTRY)&_ZN6S641C12v2Ev,
  (VTBL_ENTRY)&_ZN6S641C12v3Ev,
  (VTBL_ENTRY)&_ZN6S641C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S641C1[];
extern  VTBL_ENTRY _ZTV6S641C1[];
Class_Descriptor cd_S641C1 = {  "S641C1", // class name
  bases_S641C1, 4,
  &(vtc_S641C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI6S641C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S641C1),95, //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  S2293C4_nt  {
  virtual  ~S2293C4_nt(); // _ZN10S2293C4_ntD1Ev
  virtual void  v49(); // _ZN10S2293C4_nt3v49Ev
  virtual void  v50(); // _ZN10S2293C4_nt3v50Ev
  virtual void  v51(); // _ZN10S2293C4_nt3v51Ev
  S2293C4_nt(); // tgen
};
//SIG(-1 S2293C4_nt) C1{ vd v1 v2 v3}


 S2293C4_nt ::~S2293C4_nt(){ note_dtor("S2293C4_nt", this);}
void  S2293C4_nt ::v49(){vfunc_called(this, "_ZN10S2293C4_nt3v49Ev");}
void  S2293C4_nt ::v50(){vfunc_called(this, "_ZN10S2293C4_nt3v50Ev");}
void  S2293C4_nt ::v51(){vfunc_called(this, "_ZN10S2293C4_nt3v51Ev");}
S2293C4_nt ::S2293C4_nt(){ note_ctor("S2293C4_nt", this);} // tgen

//skip512 S2293C4_nt

#else // __cplusplus

extern void _ZN10S2293C4_ntC1Ev();
extern void _ZN10S2293C4_ntD1Ev();
Name_Map name_map_S2293C4_nt[] = {
  NSPAIR(_ZN10S2293C4_ntC1Ev),
  NSPAIR(_ZN10S2293C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2293C4_nt[];
extern void _ZN10S2293C4_ntD1Ev();
extern void _ZN10S2293C4_ntD0Ev();
extern void _ZN10S2293C4_nt3v49Ev();
extern void _ZN10S2293C4_nt3v50Ev();
extern void _ZN10S2293C4_nt3v51Ev();
static  VTBL_ENTRY vtc_S2293C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2293C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2293C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v51Ev,
};
extern VTBL_ENTRY _ZTI10S2293C4_nt[];
VTBL_ENTRY *P__ZTI10S2293C4_nt = _ZTI10S2293C4_nt; 
extern  VTBL_ENTRY _ZTV10S2293C4_nt[];
Class_Descriptor cd_S2293C4_nt = {  "S2293C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2293C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2293C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2293C4_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  S2293C3  : S2293C4_nt {
  virtual  ~S2293C3(); // _ZN7S2293C3D1Ev
  virtual void  v52(); // _ZN7S2293C33v52Ev
  virtual void  v53(); // _ZN7S2293C33v53Ev
  virtual void  v54(); // _ZN7S2293C33v54Ev
  virtual void  v55(); // _ZN7S2293C33v55Ev
  virtual void  v56(); // _ZN7S2293C33v56Ev
  virtual void  v57(); // _ZN7S2293C33v57Ev
  virtual void  v58(); // _ZN7S2293C33v58Ev
  virtual void  v59(); // _ZN7S2293C33v59Ev
  virtual void  v60(); // _ZN7S2293C33v60Ev
  virtual void  v61(); // _ZN7S2293C33v61Ev
  virtual void  v62(); // _ZN7S2293C33v62Ev
  virtual void  v63(); // _ZN7S2293C33v63Ev
  virtual void  v64(); // _ZN7S2293C33v64Ev
  virtual void  v65(); // _ZN7S2293C33v65Ev
  virtual void  v66(); // _ZN7S2293C33v66Ev
  virtual void  v67(); // _ZN7S2293C33v67Ev
  virtual void  v68(); // _ZN7S2293C33v68Ev
  virtual void  v69(); // _ZN7S2293C33v69Ev
  virtual void  v70(); // _ZN7S2293C33v70Ev
  virtual void  v71(); // _ZN7S2293C33v71Ev
  virtual void  v72(); // _ZN7S2293C33v72Ev
  virtual void  v73(); // _ZN7S2293C33v73Ev
  virtual void  v74(); // _ZN7S2293C33v74Ev
  virtual void  v75(); // _ZN7S2293C33v75Ev
  virtual void  v76(); // _ZN7S2293C33v76Ev
  virtual void  v77(); // _ZN7S2293C33v77Ev
  virtual void  v78(); // _ZN7S2293C33v78Ev
  virtual void  v79(); // _ZN7S2293C33v79Ev
  virtual void  v80(); // _ZN7S2293C33v80Ev
  virtual void  v81(); // _ZN7S2293C33v81Ev
  virtual void  v82(); // _ZN7S2293C33v82Ev
  virtual void  v83(); // _ZN7S2293C33v83Ev
  virtual void  v84(); // _ZN7S2293C33v84Ev
  virtual void  v85(); // _ZN7S2293C33v85Ev
  virtual void  v86(); // _ZN7S2293C33v86Ev
  virtual void  v87(); // _ZN7S2293C33v87Ev
  virtual void  v88(); // _ZN7S2293C33v88Ev
  virtual void  v89(); // _ZN7S2293C33v89Ev
  virtual void  v90(); // _ZN7S2293C33v90Ev
  virtual void  v91(); // _ZN7S2293C33v91Ev
  virtual void  v92(); // _ZN7S2293C33v92Ev
  virtual void  v93(); // _ZN7S2293C33v93Ev
  virtual void  v94(); // _ZN7S2293C33v94Ev
  virtual void  v95(); // _ZN7S2293C33v95Ev
  virtual void  v96(); // _ZN7S2293C33v96Ev
  virtual void  v97(); // _ZN7S2293C33v97Ev
  virtual void  v98(); // _ZN7S2293C33v98Ev
  virtual void  v99(); // _ZN7S2293C33v99Ev
  S2293C3(); // tgen
};
//SIG(-1 S2293C3) C1{ BC2{ vd v49 v50 v51} 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}


 S2293C3 ::~S2293C3(){ note_dtor("S2293C3", this);}
void  S2293C3 ::v52(){vfunc_called(this, "_ZN7S2293C33v52Ev");}
void  S2293C3 ::v53(){vfunc_called(this, "_ZN7S2293C33v53Ev");}
void  S2293C3 ::v54(){vfunc_called(this, "_ZN7S2293C33v54Ev");}
void  S2293C3 ::v55(){vfunc_called(this, "_ZN7S2293C33v55Ev");}
void  S2293C3 ::v56(){vfunc_called(this, "_ZN7S2293C33v56Ev");}
void  S2293C3 ::v57(){vfunc_called(this, "_ZN7S2293C33v57Ev");}
void  S2293C3 ::v58(){vfunc_called(this, "_ZN7S2293C33v58Ev");}
void  S2293C3 ::v59(){vfunc_called(this, "_ZN7S2293C33v59Ev");}
void  S2293C3 ::v60(){vfunc_called(this, "_ZN7S2293C33v60Ev");}
void  S2293C3 ::v61(){vfunc_called(this, "_ZN7S2293C33v61Ev");}
void  S2293C3 ::v62(){vfunc_called(this, "_ZN7S2293C33v62Ev");}
void  S2293C3 ::v63(){vfunc_called(this, "_ZN7S2293C33v63Ev");}
void  S2293C3 ::v64(){vfunc_called(this, "_ZN7S2293C33v64Ev");}
void  S2293C3 ::v65(){vfunc_called(this, "_ZN7S2293C33v65Ev");}
void  S2293C3 ::v66(){vfunc_called(this, "_ZN7S2293C33v66Ev");}
void  S2293C3 ::v67(){vfunc_called(this, "_ZN7S2293C33v67Ev");}
void  S2293C3 ::v68(){vfunc_called(this, "_ZN7S2293C33v68Ev");}
void  S2293C3 ::v69(){vfunc_called(this, "_ZN7S2293C33v69Ev");}
void  S2293C3 ::v70(){vfunc_called(this, "_ZN7S2293C33v70Ev");}
void  S2293C3 ::v71(){vfunc_called(this, "_ZN7S2293C33v71Ev");}
void  S2293C3 ::v72(){vfunc_called(this, "_ZN7S2293C33v72Ev");}
void  S2293C3 ::v73(){vfunc_called(this, "_ZN7S2293C33v73Ev");}
void  S2293C3 ::v74(){vfunc_called(this, "_ZN7S2293C33v74Ev");}
void  S2293C3 ::v75(){vfunc_called(this, "_ZN7S2293C33v75Ev");}
void  S2293C3 ::v76(){vfunc_called(this, "_ZN7S2293C33v76Ev");}
void  S2293C3 ::v77(){vfunc_called(this, "_ZN7S2293C33v77Ev");}
void  S2293C3 ::v78(){vfunc_called(this, "_ZN7S2293C33v78Ev");}
void  S2293C3 ::v79(){vfunc_called(this, "_ZN7S2293C33v79Ev");}
void  S2293C3 ::v80(){vfunc_called(this, "_ZN7S2293C33v80Ev");}
void  S2293C3 ::v81(){vfunc_called(this, "_ZN7S2293C33v81Ev");}
void  S2293C3 ::v82(){vfunc_called(this, "_ZN7S2293C33v82Ev");}
void  S2293C3 ::v83(){vfunc_called(this, "_ZN7S2293C33v83Ev");}
void  S2293C3 ::v84(){vfunc_called(this, "_ZN7S2293C33v84Ev");}
void  S2293C3 ::v85(){vfunc_called(this, "_ZN7S2293C33v85Ev");}
void  S2293C3 ::v86(){vfunc_called(this, "_ZN7S2293C33v86Ev");}
void  S2293C3 ::v87(){vfunc_called(this, "_ZN7S2293C33v87Ev");}
void  S2293C3 ::v88(){vfunc_called(this, "_ZN7S2293C33v88Ev");}
void  S2293C3 ::v89(){vfunc_called(this, "_ZN7S2293C33v89Ev");}
void  S2293C3 ::v90(){vfunc_called(this, "_ZN7S2293C33v90Ev");}
void  S2293C3 ::v91(){vfunc_called(this, "_ZN7S2293C33v91Ev");}
void  S2293C3 ::v92(){vfunc_called(this, "_ZN7S2293C33v92Ev");}
void  S2293C3 ::v93(){vfunc_called(this, "_ZN7S2293C33v93Ev");}
void  S2293C3 ::v94(){vfunc_called(this, "_ZN7S2293C33v94Ev");}
void  S2293C3 ::v95(){vfunc_called(this, "_ZN7S2293C33v95Ev");}
void  S2293C3 ::v96(){vfunc_called(this, "_ZN7S2293C33v96Ev");}
void  S2293C3 ::v97(){vfunc_called(this, "_ZN7S2293C33v97Ev");}
void  S2293C3 ::v98(){vfunc_called(this, "_ZN7S2293C33v98Ev");}
void  S2293C3 ::v99(){vfunc_called(this, "_ZN7S2293C33v99Ev");}
S2293C3 ::S2293C3(){ note_ctor("S2293C3", this);} // tgen

static void Test_S2293C3()
{
  extern Class_Descriptor cd_S2293C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2293C3, buf);
    S2293C3 *dp, &lv = *(dp=new (buf) S2293C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2293C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2293C3)");
    check_base_class_offset(lv, (S2293C4_nt*), 0, "S2293C3");
    test_class_info(&lv, &cd_S2293C3);
    dp->~S2293C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2293C3(Test_S2293C3, "S2293C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2293C3C1Ev();
extern void _ZN7S2293C3D1Ev();
Name_Map name_map_S2293C3[] = {
  NSPAIR(_ZN7S2293C3C1Ev),
  NSPAIR(_ZN7S2293C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2293C4_nt;
extern VTBL_ENTRY _ZTI10S2293C4_nt[];
extern  VTBL_ENTRY _ZTV10S2293C4_nt[];
static Base_Class bases_S2293C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2293C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2293C3[];
extern void _ZN7S2293C3D1Ev();
extern void _ZN7S2293C3D0Ev();
extern void _ZN10S2293C4_nt3v49Ev();
extern void _ZN10S2293C4_nt3v50Ev();
extern void _ZN10S2293C4_nt3v51Ev();
extern void _ZN7S2293C33v52Ev();
extern void _ZN7S2293C33v53Ev();
extern void _ZN7S2293C33v54Ev();
extern void _ZN7S2293C33v55Ev();
extern void _ZN7S2293C33v56Ev();
extern void _ZN7S2293C33v57Ev();
extern void _ZN7S2293C33v58Ev();
extern void _ZN7S2293C33v59Ev();
extern void _ZN7S2293C33v60Ev();
extern void _ZN7S2293C33v61Ev();
extern void _ZN7S2293C33v62Ev();
extern void _ZN7S2293C33v63Ev();
extern void _ZN7S2293C33v64Ev();
extern void _ZN7S2293C33v65Ev();
extern void _ZN7S2293C33v66Ev();
extern void _ZN7S2293C33v67Ev();
extern void _ZN7S2293C33v68Ev();
extern void _ZN7S2293C33v69Ev();
extern void _ZN7S2293C33v70Ev();
extern void _ZN7S2293C33v71Ev();
extern void _ZN7S2293C33v72Ev();
extern void _ZN7S2293C33v73Ev();
extern void _ZN7S2293C33v74Ev();
extern void _ZN7S2293C33v75Ev();
extern void _ZN7S2293C33v76Ev();
extern void _ZN7S2293C33v77Ev();
extern void _ZN7S2293C33v78Ev();
extern void _ZN7S2293C33v79Ev();
extern void _ZN7S2293C33v80Ev();
extern void _ZN7S2293C33v81Ev();
extern void _ZN7S2293C33v82Ev();
extern void _ZN7S2293C33v83Ev();
extern void _ZN7S2293C33v84Ev();
extern void _ZN7S2293C33v85Ev();
extern void _ZN7S2293C33v86Ev();
extern void _ZN7S2293C33v87Ev();
extern void _ZN7S2293C33v88Ev();
extern void _ZN7S2293C33v89Ev();
extern void _ZN7S2293C33v90Ev();
extern void _ZN7S2293C33v91Ev();
extern void _ZN7S2293C33v92Ev();
extern void _ZN7S2293C33v93Ev();
extern void _ZN7S2293C33v94Ev();
extern void _ZN7S2293C33v95Ev();
extern void _ZN7S2293C33v96Ev();
extern void _ZN7S2293C33v97Ev();
extern void _ZN7S2293C33v98Ev();
extern void _ZN7S2293C33v99Ev();
static  VTBL_ENTRY vtc_S2293C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2293C3[0]),
  (VTBL_ENTRY)&_ZN7S2293C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2293C3D0Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v99Ev,
};
extern VTBL_ENTRY _ZTI7S2293C3[];
extern  VTBL_ENTRY _ZTV7S2293C3[];
Class_Descriptor cd_S2293C3 = {  "S2293C3", // class name
  bases_S2293C3, 1,
  &(vtc_S2293C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2293C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2293C3),55, //virtual function table var
  2, // 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  S2293C5_nt  {
  void *s2293c5f0;
  int s2293c5f1[2];
  ::S1538C28_nt s2293c5f2;
  void  mf2293c5(); // _ZN10S2293C5_nt8mf2293c5Ev
};
//SIG(-1 S2293C5_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S2293C5_nt ::mf2293c5(){}

//skip512 S2293C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S2293C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2293C7_nt  {
  ::S2293C8_nt s2293c7f0;
  void  mf2293c7(); // _ZN10S2293C7_nt8mf2293c7Ev
};
//SIG(-1 S2293C7_nt) C1{ m FC2{ Fl[4]}}


void  S2293C7_nt ::mf2293c7(){}

//skip512 S2293C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2293C2  : S2293C3 {
  ::S2293C5_nt s2293c2f0;
  ::S2293C7_nt s2293c2f1;
  char s2293c2f2;
  virtual  ~S2293C2(); // _ZN7S2293C2D1Ev
  virtual void  v100(); // _ZN7S2293C24v100Ev
  virtual void  v101(); // _ZN7S2293C24v101Ev
  virtual void  v102(); // _ZN7S2293C24v102Ev
  S2293C2(); // tgen
};
//SIG(-1 S2293C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S2293C2 ::~S2293C2(){ note_dtor("S2293C2", this);}
void  S2293C2 ::v100(){vfunc_called(this, "_ZN7S2293C24v100Ev");}
void  S2293C2 ::v101(){vfunc_called(this, "_ZN7S2293C24v101Ev");}
void  S2293C2 ::v102(){vfunc_called(this, "_ZN7S2293C24v102Ev");}
S2293C2 ::S2293C2(){ note_ctor("S2293C2", this);} // tgen

static void Test_S2293C2()
{
  extern Class_Descriptor cd_S2293C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S2293C2, buf);
    S2293C2 *dp, &lv = *(dp=new (buf) S2293C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S2293C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2293C2)");
    check_base_class_offset(lv, (S2293C4_nt*)(S2293C3*), 0, "S2293C2");
    check_base_class_offset(lv, (S2293C3*), 0, "S2293C2");
    check_field_offset(lv, s2293c2f0, ABISELECT(8,4), "S2293C2.s2293c2f0");
    check_field_offset(lv, s2293c2f1, ABISELECT(32,20), "S2293C2.s2293c2f1");
    check_field_offset(lv, s2293c2f2, ABISELECT(64,36), "S2293C2.s2293c2f2");
    test_class_info(&lv, &cd_S2293C2);
    dp->~S2293C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2293C2(Test_S2293C2, "S2293C2", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S2293C2C1Ev();
extern void _ZN7S2293C2D1Ev();
Name_Map name_map_S2293C2[] = {
  NSPAIR(_ZN7S2293C2C1Ev),
  NSPAIR(_ZN7S2293C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2293C4_nt;
extern VTBL_ENTRY _ZTI10S2293C4_nt[];
extern  VTBL_ENTRY _ZTV10S2293C4_nt[];
extern Class_Descriptor cd_S2293C3;
extern VTBL_ENTRY _ZTI7S2293C3[];
extern  VTBL_ENTRY _ZTV7S2293C3[];
static Base_Class bases_S2293C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2293C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2293C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2293C2[];
extern void _ZN7S2293C2D1Ev();
extern void _ZN7S2293C2D0Ev();
extern void _ZN10S2293C4_nt3v49Ev();
extern void _ZN10S2293C4_nt3v50Ev();
extern void _ZN10S2293C4_nt3v51Ev();
extern void _ZN7S2293C33v52Ev();
extern void _ZN7S2293C33v53Ev();
extern void _ZN7S2293C33v54Ev();
extern void _ZN7S2293C33v55Ev();
extern void _ZN7S2293C33v56Ev();
extern void _ZN7S2293C33v57Ev();
extern void _ZN7S2293C33v58Ev();
extern void _ZN7S2293C33v59Ev();
extern void _ZN7S2293C33v60Ev();
extern void _ZN7S2293C33v61Ev();
extern void _ZN7S2293C33v62Ev();
extern void _ZN7S2293C33v63Ev();
extern void _ZN7S2293C33v64Ev();
extern void _ZN7S2293C33v65Ev();
extern void _ZN7S2293C33v66Ev();
extern void _ZN7S2293C33v67Ev();
extern void _ZN7S2293C33v68Ev();
extern void _ZN7S2293C33v69Ev();
extern void _ZN7S2293C33v70Ev();
extern void _ZN7S2293C33v71Ev();
extern void _ZN7S2293C33v72Ev();
extern void _ZN7S2293C33v73Ev();
extern void _ZN7S2293C33v74Ev();
extern void _ZN7S2293C33v75Ev();
extern void _ZN7S2293C33v76Ev();
extern void _ZN7S2293C33v77Ev();
extern void _ZN7S2293C33v78Ev();
extern void _ZN7S2293C33v79Ev();
extern void _ZN7S2293C33v80Ev();
extern void _ZN7S2293C33v81Ev();
extern void _ZN7S2293C33v82Ev();
extern void _ZN7S2293C33v83Ev();
extern void _ZN7S2293C33v84Ev();
extern void _ZN7S2293C33v85Ev();
extern void _ZN7S2293C33v86Ev();
extern void _ZN7S2293C33v87Ev();
extern void _ZN7S2293C33v88Ev();
extern void _ZN7S2293C33v89Ev();
extern void _ZN7S2293C33v90Ev();
extern void _ZN7S2293C33v91Ev();
extern void _ZN7S2293C33v92Ev();
extern void _ZN7S2293C33v93Ev();
extern void _ZN7S2293C33v94Ev();
extern void _ZN7S2293C33v95Ev();
extern void _ZN7S2293C33v96Ev();
extern void _ZN7S2293C33v97Ev();
extern void _ZN7S2293C33v98Ev();
extern void _ZN7S2293C33v99Ev();
extern void _ZN7S2293C24v100Ev();
extern void _ZN7S2293C24v101Ev();
extern void _ZN7S2293C24v102Ev();
static  VTBL_ENTRY vtc_S2293C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2293C2[0]),
  (VTBL_ENTRY)&_ZN7S2293C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2293C2D0Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2293C24v100Ev,
  (VTBL_ENTRY)&_ZN7S2293C24v101Ev,
  (VTBL_ENTRY)&_ZN7S2293C24v102Ev,
};
extern VTBL_ENTRY _ZTI7S2293C2[];
extern  VTBL_ENTRY _ZTV7S2293C2[];
Class_Descriptor cd_S2293C2 = {  "S2293C2", // class name
  bases_S2293C2, 2,
  &(vtc_S2293C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S2293C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2293C2),58, //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  S2293C1  : S2293C2 {
  virtual  ~S2293C1(); // _ZN7S2293C1D1Ev
  virtual void  v1(); // _ZN7S2293C12v1Ev
  virtual void  v2(); // _ZN7S2293C12v2Ev
  virtual void  v3(); // _ZN7S2293C12v3Ev
  virtual void  v4(); // _ZN7S2293C12v4Ev
  virtual void  v5(); // _ZN7S2293C12v5Ev
  virtual void  v6(); // _ZN7S2293C12v6Ev
  virtual void  v7(); // _ZN7S2293C12v7Ev
  virtual void  v8(); // _ZN7S2293C12v8Ev
  virtual void  v9(); // _ZN7S2293C12v9Ev
  virtual void  v10(); // _ZN7S2293C13v10Ev
  virtual void  v11(); // _ZN7S2293C13v11Ev
  virtual void  v12(); // _ZN7S2293C13v12Ev
  virtual void  v13(); // _ZN7S2293C13v13Ev
  virtual void  v14(); // _ZN7S2293C13v14Ev
  virtual void  v15(); // _ZN7S2293C13v15Ev
  virtual void  v16(); // _ZN7S2293C13v16Ev
  virtual void  v17(); // _ZN7S2293C13v17Ev
  virtual void  v18(); // _ZN7S2293C13v18Ev
  virtual void  v19(); // _ZN7S2293C13v19Ev
  virtual void  v20(); // _ZN7S2293C13v20Ev
  virtual void  v21(); // _ZN7S2293C13v21Ev
  virtual void  v22(); // _ZN7S2293C13v22Ev
  virtual void  v23(); // _ZN7S2293C13v23Ev
  virtual void  v24(); // _ZN7S2293C13v24Ev
  virtual void  v25(); // _ZN7S2293C13v25Ev
  virtual void  v26(); // _ZN7S2293C13v26Ev
  virtual void  v27(); // _ZN7S2293C13v27Ev
  virtual void  v28(); // _ZN7S2293C13v28Ev
  virtual void  v29(); // _ZN7S2293C13v29Ev
  virtual void  v30(); // _ZN7S2293C13v30Ev
  virtual void  v31(); // _ZN7S2293C13v31Ev
  virtual void  v32(); // _ZN7S2293C13v32Ev
  virtual void  v33(); // _ZN7S2293C13v33Ev
  virtual void  v34(); // _ZN7S2293C13v34Ev
  virtual void  v35(); // _ZN7S2293C13v35Ev
  virtual void  v36(); // _ZN7S2293C13v36Ev
  virtual void  v37(); // _ZN7S2293C13v37Ev
  virtual void  v38(); // _ZN7S2293C13v38Ev
  virtual void  v39(); // _ZN7S2293C13v39Ev
  virtual void  v40(); // _ZN7S2293C13v40Ev
  virtual void  v41(); // _ZN7S2293C13v41Ev
  virtual void  v42(); // _ZN7S2293C13v42Ev
  virtual void  v43(); // _ZN7S2293C13v43Ev
  virtual void  v44(); // _ZN7S2293C13v44Ev
  virtual void  v45(); // _ZN7S2293C13v45Ev
  virtual void  v46(); // _ZN7S2293C13v46Ev
  virtual void  v47(); // _ZN7S2293C13v47Ev
  virtual void  v48(); // _ZN7S2293C13v48Ev
  S2293C1(); // tgen
};
//SIG(1 S2293C1) C1{ BC2{ BC3{ BC4{ vd v49 v50 v51} vd v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99} vd v100 v101 v102 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ Fl[4]}} Fc} 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}


 S2293C1 ::~S2293C1(){ note_dtor("S2293C1", this);}
void  S2293C1 ::v1(){vfunc_called(this, "_ZN7S2293C12v1Ev");}
void  S2293C1 ::v2(){vfunc_called(this, "_ZN7S2293C12v2Ev");}
void  S2293C1 ::v3(){vfunc_called(this, "_ZN7S2293C12v3Ev");}
void  S2293C1 ::v4(){vfunc_called(this, "_ZN7S2293C12v4Ev");}
void  S2293C1 ::v5(){vfunc_called(this, "_ZN7S2293C12v5Ev");}
void  S2293C1 ::v6(){vfunc_called(this, "_ZN7S2293C12v6Ev");}
void  S2293C1 ::v7(){vfunc_called(this, "_ZN7S2293C12v7Ev");}
void  S2293C1 ::v8(){vfunc_called(this, "_ZN7S2293C12v8Ev");}
void  S2293C1 ::v9(){vfunc_called(this, "_ZN7S2293C12v9Ev");}
void  S2293C1 ::v10(){vfunc_called(this, "_ZN7S2293C13v10Ev");}
void  S2293C1 ::v11(){vfunc_called(this, "_ZN7S2293C13v11Ev");}
void  S2293C1 ::v12(){vfunc_called(this, "_ZN7S2293C13v12Ev");}
void  S2293C1 ::v13(){vfunc_called(this, "_ZN7S2293C13v13Ev");}
void  S2293C1 ::v14(){vfunc_called(this, "_ZN7S2293C13v14Ev");}
void  S2293C1 ::v15(){vfunc_called(this, "_ZN7S2293C13v15Ev");}
void  S2293C1 ::v16(){vfunc_called(this, "_ZN7S2293C13v16Ev");}
void  S2293C1 ::v17(){vfunc_called(this, "_ZN7S2293C13v17Ev");}
void  S2293C1 ::v18(){vfunc_called(this, "_ZN7S2293C13v18Ev");}
void  S2293C1 ::v19(){vfunc_called(this, "_ZN7S2293C13v19Ev");}
void  S2293C1 ::v20(){vfunc_called(this, "_ZN7S2293C13v20Ev");}
void  S2293C1 ::v21(){vfunc_called(this, "_ZN7S2293C13v21Ev");}
void  S2293C1 ::v22(){vfunc_called(this, "_ZN7S2293C13v22Ev");}
void  S2293C1 ::v23(){vfunc_called(this, "_ZN7S2293C13v23Ev");}
void  S2293C1 ::v24(){vfunc_called(this, "_ZN7S2293C13v24Ev");}
void  S2293C1 ::v25(){vfunc_called(this, "_ZN7S2293C13v25Ev");}
void  S2293C1 ::v26(){vfunc_called(this, "_ZN7S2293C13v26Ev");}
void  S2293C1 ::v27(){vfunc_called(this, "_ZN7S2293C13v27Ev");}
void  S2293C1 ::v28(){vfunc_called(this, "_ZN7S2293C13v28Ev");}
void  S2293C1 ::v29(){vfunc_called(this, "_ZN7S2293C13v29Ev");}
void  S2293C1 ::v30(){vfunc_called(this, "_ZN7S2293C13v30Ev");}
void  S2293C1 ::v31(){vfunc_called(this, "_ZN7S2293C13v31Ev");}
void  S2293C1 ::v32(){vfunc_called(this, "_ZN7S2293C13v32Ev");}
void  S2293C1 ::v33(){vfunc_called(this, "_ZN7S2293C13v33Ev");}
void  S2293C1 ::v34(){vfunc_called(this, "_ZN7S2293C13v34Ev");}
void  S2293C1 ::v35(){vfunc_called(this, "_ZN7S2293C13v35Ev");}
void  S2293C1 ::v36(){vfunc_called(this, "_ZN7S2293C13v36Ev");}
void  S2293C1 ::v37(){vfunc_called(this, "_ZN7S2293C13v37Ev");}
void  S2293C1 ::v38(){vfunc_called(this, "_ZN7S2293C13v38Ev");}
void  S2293C1 ::v39(){vfunc_called(this, "_ZN7S2293C13v39Ev");}
void  S2293C1 ::v40(){vfunc_called(this, "_ZN7S2293C13v40Ev");}
void  S2293C1 ::v41(){vfunc_called(this, "_ZN7S2293C13v41Ev");}
void  S2293C1 ::v42(){vfunc_called(this, "_ZN7S2293C13v42Ev");}
void  S2293C1 ::v43(){vfunc_called(this, "_ZN7S2293C13v43Ev");}
void  S2293C1 ::v44(){vfunc_called(this, "_ZN7S2293C13v44Ev");}
void  S2293C1 ::v45(){vfunc_called(this, "_ZN7S2293C13v45Ev");}
void  S2293C1 ::v46(){vfunc_called(this, "_ZN7S2293C13v46Ev");}
void  S2293C1 ::v47(){vfunc_called(this, "_ZN7S2293C13v47Ev");}
void  S2293C1 ::v48(){vfunc_called(this, "_ZN7S2293C13v48Ev");}
S2293C1 ::S2293C1(){ note_ctor("S2293C1", this);} // tgen

static void Test_S2293C1()
{
  extern Class_Descriptor cd_S2293C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S2293C1, buf);
    S2293C1 *dp, &lv = *(dp=new (buf) S2293C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S2293C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2293C1)");
    check_base_class_offset(lv, (S2293C4_nt*)(S2293C3*)(S2293C2*), 0, "S2293C1");
    check_base_class_offset(lv, (S2293C3*)(S2293C2*), 0, "S2293C1");
    check_base_class_offset(lv, (S2293C2*), 0, "S2293C1");
    test_class_info(&lv, &cd_S2293C1);
    dp->~S2293C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2293C1(Test_S2293C1, "S2293C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S2293C1C1Ev();
extern void _ZN7S2293C1D1Ev();
Name_Map name_map_S2293C1[] = {
  NSPAIR(_ZN7S2293C1C1Ev),
  NSPAIR(_ZN7S2293C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2293C4_nt;
extern VTBL_ENTRY _ZTI10S2293C4_nt[];
extern  VTBL_ENTRY _ZTV10S2293C4_nt[];
extern Class_Descriptor cd_S2293C3;
extern VTBL_ENTRY _ZTI7S2293C3[];
extern  VTBL_ENTRY _ZTV7S2293C3[];
extern Class_Descriptor cd_S2293C2;
extern VTBL_ENTRY _ZTI7S2293C2[];
extern  VTBL_ENTRY _ZTV7S2293C2[];
static Base_Class bases_S2293C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2293C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2293C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2293C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2293C1[];
extern void _ZN7S2293C1D1Ev();
extern void _ZN7S2293C1D0Ev();
extern void _ZN10S2293C4_nt3v49Ev();
extern void _ZN10S2293C4_nt3v50Ev();
extern void _ZN10S2293C4_nt3v51Ev();
extern void _ZN7S2293C33v52Ev();
extern void _ZN7S2293C33v53Ev();
extern void _ZN7S2293C33v54Ev();
extern void _ZN7S2293C33v55Ev();
extern void _ZN7S2293C33v56Ev();
extern void _ZN7S2293C33v57Ev();
extern void _ZN7S2293C33v58Ev();
extern void _ZN7S2293C33v59Ev();
extern void _ZN7S2293C33v60Ev();
extern void _ZN7S2293C33v61Ev();
extern void _ZN7S2293C33v62Ev();
extern void _ZN7S2293C33v63Ev();
extern void _ZN7S2293C33v64Ev();
extern void _ZN7S2293C33v65Ev();
extern void _ZN7S2293C33v66Ev();
extern void _ZN7S2293C33v67Ev();
extern void _ZN7S2293C33v68Ev();
extern void _ZN7S2293C33v69Ev();
extern void _ZN7S2293C33v70Ev();
extern void _ZN7S2293C33v71Ev();
extern void _ZN7S2293C33v72Ev();
extern void _ZN7S2293C33v73Ev();
extern void _ZN7S2293C33v74Ev();
extern void _ZN7S2293C33v75Ev();
extern void _ZN7S2293C33v76Ev();
extern void _ZN7S2293C33v77Ev();
extern void _ZN7S2293C33v78Ev();
extern void _ZN7S2293C33v79Ev();
extern void _ZN7S2293C33v80Ev();
extern void _ZN7S2293C33v81Ev();
extern void _ZN7S2293C33v82Ev();
extern void _ZN7S2293C33v83Ev();
extern void _ZN7S2293C33v84Ev();
extern void _ZN7S2293C33v85Ev();
extern void _ZN7S2293C33v86Ev();
extern void _ZN7S2293C33v87Ev();
extern void _ZN7S2293C33v88Ev();
extern void _ZN7S2293C33v89Ev();
extern void _ZN7S2293C33v90Ev();
extern void _ZN7S2293C33v91Ev();
extern void _ZN7S2293C33v92Ev();
extern void _ZN7S2293C33v93Ev();
extern void _ZN7S2293C33v94Ev();
extern void _ZN7S2293C33v95Ev();
extern void _ZN7S2293C33v96Ev();
extern void _ZN7S2293C33v97Ev();
extern void _ZN7S2293C33v98Ev();
extern void _ZN7S2293C33v99Ev();
extern void _ZN7S2293C24v100Ev();
extern void _ZN7S2293C24v101Ev();
extern void _ZN7S2293C24v102Ev();
extern void _ZN7S2293C12v1Ev();
extern void _ZN7S2293C12v2Ev();
extern void _ZN7S2293C12v3Ev();
extern void _ZN7S2293C12v4Ev();
extern void _ZN7S2293C12v5Ev();
extern void _ZN7S2293C12v6Ev();
extern void _ZN7S2293C12v7Ev();
extern void _ZN7S2293C12v8Ev();
extern void _ZN7S2293C12v9Ev();
extern void _ZN7S2293C13v10Ev();
extern void _ZN7S2293C13v11Ev();
extern void _ZN7S2293C13v12Ev();
extern void _ZN7S2293C13v13Ev();
extern void _ZN7S2293C13v14Ev();
extern void _ZN7S2293C13v15Ev();
extern void _ZN7S2293C13v16Ev();
extern void _ZN7S2293C13v17Ev();
extern void _ZN7S2293C13v18Ev();
extern void _ZN7S2293C13v19Ev();
extern void _ZN7S2293C13v20Ev();
extern void _ZN7S2293C13v21Ev();
extern void _ZN7S2293C13v22Ev();
extern void _ZN7S2293C13v23Ev();
extern void _ZN7S2293C13v24Ev();
extern void _ZN7S2293C13v25Ev();
extern void _ZN7S2293C13v26Ev();
extern void _ZN7S2293C13v27Ev();
extern void _ZN7S2293C13v28Ev();
extern void _ZN7S2293C13v29Ev();
extern void _ZN7S2293C13v30Ev();
extern void _ZN7S2293C13v31Ev();
extern void _ZN7S2293C13v32Ev();
extern void _ZN7S2293C13v33Ev();
extern void _ZN7S2293C13v34Ev();
extern void _ZN7S2293C13v35Ev();
extern void _ZN7S2293C13v36Ev();
extern void _ZN7S2293C13v37Ev();
extern void _ZN7S2293C13v38Ev();
extern void _ZN7S2293C13v39Ev();
extern void _ZN7S2293C13v40Ev();
extern void _ZN7S2293C13v41Ev();
extern void _ZN7S2293C13v42Ev();
extern void _ZN7S2293C13v43Ev();
extern void _ZN7S2293C13v44Ev();
extern void _ZN7S2293C13v45Ev();
extern void _ZN7S2293C13v46Ev();
extern void _ZN7S2293C13v47Ev();
extern void _ZN7S2293C13v48Ev();
static  VTBL_ENTRY vtc_S2293C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2293C1[0]),
  (VTBL_ENTRY)&_ZN7S2293C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2293C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2293C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2293C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2293C24v100Ev,
  (VTBL_ENTRY)&_ZN7S2293C24v101Ev,
  (VTBL_ENTRY)&_ZN7S2293C24v102Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2293C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v15Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v16Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v17Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v18Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v19Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v20Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v21Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v22Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v23Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v24Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v25Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v26Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v27Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v28Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v29Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v30Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v31Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v32Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v33Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v34Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v35Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v36Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v37Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v38Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v39Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v40Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v41Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v42Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v43Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v44Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v45Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v46Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v47Ev,
  (VTBL_ENTRY)&_ZN7S2293C13v48Ev,
};
extern VTBL_ENTRY _ZTI7S2293C1[];
extern  VTBL_ENTRY _ZTV7S2293C1[];
Class_Descriptor cd_S2293C1 = {  "S2293C1", // class name
  bases_S2293C1, 3,
  &(vtc_S2293C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S2293C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2293C1),106, //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  S2294C4  {
  virtual  ~S2294C4(); // _ZN7S2294C4D1Ev
  virtual void  v49(); // _ZN7S2294C43v49Ev
  virtual void  v50(); // _ZN7S2294C43v50Ev
  virtual void  v51(); // _ZN7S2294C43v51Ev
  S2294C4(); // tgen
};
//SIG(-1 S2294C4) C1{ vd v1 v2 v3}


 S2294C4 ::~S2294C4(){ note_dtor("S2294C4", this);}
void  S2294C4 ::v49(){vfunc_called(this, "_ZN7S2294C43v49Ev");}
void  S2294C4 ::v50(){vfunc_called(this, "_ZN7S2294C43v50Ev");}
void  S2294C4 ::v51(){vfunc_called(this, "_ZN7S2294C43v51Ev");}
S2294C4 ::S2294C4(){ note_ctor("S2294C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S2294C4C1Ev();
extern void _ZN7S2294C4D1Ev();
Name_Map name_map_S2294C4[] = {
  NSPAIR(_ZN7S2294C4C1Ev),
  NSPAIR(_ZN7S2294C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2294C4[];
extern void _ZN7S2294C4D1Ev();
extern void _ZN7S2294C4D0Ev();
extern void _ZN7S2294C43v49Ev();
extern void _ZN7S2294C43v50Ev();
extern void _ZN7S2294C43v51Ev();
static  VTBL_ENTRY vtc_S2294C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2294C4[0]),
  (VTBL_ENTRY)&_ZN7S2294C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2294C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v51Ev,
};
extern VTBL_ENTRY _ZTI7S2294C4[];
extern  VTBL_ENTRY _ZTV7S2294C4[];
Class_Descriptor cd_S2294C4 = {  "S2294C4", // class name
  0,0,//no base classes
  &(vtc_S2294C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2294C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2294C4),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  S2294C3  : S2294C4 {
  virtual  ~S2294C3(); // _ZN7S2294C3D1Ev
  virtual void  v52(); // _ZN7S2294C33v52Ev
  virtual void  v53(); // _ZN7S2294C33v53Ev
  virtual void  v54(); // _ZN7S2294C33v54Ev
  virtual void  v55(); // _ZN7S2294C33v55Ev
  virtual void  v56(); // _ZN7S2294C33v56Ev
  virtual void  v57(); // _ZN7S2294C33v57Ev
  virtual void  v58(); // _ZN7S2294C33v58Ev
  virtual void  v59(); // _ZN7S2294C33v59Ev
  virtual void  v60(); // _ZN7S2294C33v60Ev
  virtual void  v61(); // _ZN7S2294C33v61Ev
  virtual void  v62(); // _ZN7S2294C33v62Ev
  virtual void  v63(); // _ZN7S2294C33v63Ev
  virtual void  v64(); // _ZN7S2294C33v64Ev
  virtual void  v65(); // _ZN7S2294C33v65Ev
  virtual void  v66(); // _ZN7S2294C33v66Ev
  virtual void  v67(); // _ZN7S2294C33v67Ev
  virtual void  v68(); // _ZN7S2294C33v68Ev
  virtual void  v69(); // _ZN7S2294C33v69Ev
  virtual void  v70(); // _ZN7S2294C33v70Ev
  virtual void  v71(); // _ZN7S2294C33v71Ev
  virtual void  v72(); // _ZN7S2294C33v72Ev
  virtual void  v73(); // _ZN7S2294C33v73Ev
  virtual void  v74(); // _ZN7S2294C33v74Ev
  virtual void  v75(); // _ZN7S2294C33v75Ev
  virtual void  v76(); // _ZN7S2294C33v76Ev
  virtual void  v77(); // _ZN7S2294C33v77Ev
  virtual void  v78(); // _ZN7S2294C33v78Ev
  virtual void  v79(); // _ZN7S2294C33v79Ev
  virtual void  v80(); // _ZN7S2294C33v80Ev
  virtual void  v81(); // _ZN7S2294C33v81Ev
  virtual void  v82(); // _ZN7S2294C33v82Ev
  virtual void  v83(); // _ZN7S2294C33v83Ev
  virtual void  v84(); // _ZN7S2294C33v84Ev
  virtual void  v85(); // _ZN7S2294C33v85Ev
  virtual void  v86(); // _ZN7S2294C33v86Ev
  virtual void  v87(); // _ZN7S2294C33v87Ev
  virtual void  v88(); // _ZN7S2294C33v88Ev
  virtual void  v89(); // _ZN7S2294C33v89Ev
  virtual void  v90(); // _ZN7S2294C33v90Ev
  virtual void  v91(); // _ZN7S2294C33v91Ev
  virtual void  v92(); // _ZN7S2294C33v92Ev
  virtual void  v93(); // _ZN7S2294C33v93Ev
  virtual void  v94(); // _ZN7S2294C33v94Ev
  virtual void  v95(); // _ZN7S2294C33v95Ev
  virtual void  v96(); // _ZN7S2294C33v96Ev
  virtual void  v97(); // _ZN7S2294C33v97Ev
  virtual void  v98(); // _ZN7S2294C33v98Ev
  virtual void  v99(); // _ZN7S2294C33v99Ev
  S2294C3(); // tgen
};
//SIG(-1 S2294C3) C1{ BC2{ vd v49 v50 v51} 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}


 S2294C3 ::~S2294C3(){ note_dtor("S2294C3", this);}
void  S2294C3 ::v52(){vfunc_called(this, "_ZN7S2294C33v52Ev");}
void  S2294C3 ::v53(){vfunc_called(this, "_ZN7S2294C33v53Ev");}
void  S2294C3 ::v54(){vfunc_called(this, "_ZN7S2294C33v54Ev");}
void  S2294C3 ::v55(){vfunc_called(this, "_ZN7S2294C33v55Ev");}
void  S2294C3 ::v56(){vfunc_called(this, "_ZN7S2294C33v56Ev");}
void  S2294C3 ::v57(){vfunc_called(this, "_ZN7S2294C33v57Ev");}
void  S2294C3 ::v58(){vfunc_called(this, "_ZN7S2294C33v58Ev");}
void  S2294C3 ::v59(){vfunc_called(this, "_ZN7S2294C33v59Ev");}
void  S2294C3 ::v60(){vfunc_called(this, "_ZN7S2294C33v60Ev");}
void  S2294C3 ::v61(){vfunc_called(this, "_ZN7S2294C33v61Ev");}
void  S2294C3 ::v62(){vfunc_called(this, "_ZN7S2294C33v62Ev");}
void  S2294C3 ::v63(){vfunc_called(this, "_ZN7S2294C33v63Ev");}
void  S2294C3 ::v64(){vfunc_called(this, "_ZN7S2294C33v64Ev");}
void  S2294C3 ::v65(){vfunc_called(this, "_ZN7S2294C33v65Ev");}
void  S2294C3 ::v66(){vfunc_called(this, "_ZN7S2294C33v66Ev");}
void  S2294C3 ::v67(){vfunc_called(this, "_ZN7S2294C33v67Ev");}
void  S2294C3 ::v68(){vfunc_called(this, "_ZN7S2294C33v68Ev");}
void  S2294C3 ::v69(){vfunc_called(this, "_ZN7S2294C33v69Ev");}
void  S2294C3 ::v70(){vfunc_called(this, "_ZN7S2294C33v70Ev");}
void  S2294C3 ::v71(){vfunc_called(this, "_ZN7S2294C33v71Ev");}
void  S2294C3 ::v72(){vfunc_called(this, "_ZN7S2294C33v72Ev");}
void  S2294C3 ::v73(){vfunc_called(this, "_ZN7S2294C33v73Ev");}
void  S2294C3 ::v74(){vfunc_called(this, "_ZN7S2294C33v74Ev");}
void  S2294C3 ::v75(){vfunc_called(this, "_ZN7S2294C33v75Ev");}
void  S2294C3 ::v76(){vfunc_called(this, "_ZN7S2294C33v76Ev");}
void  S2294C3 ::v77(){vfunc_called(this, "_ZN7S2294C33v77Ev");}
void  S2294C3 ::v78(){vfunc_called(this, "_ZN7S2294C33v78Ev");}
void  S2294C3 ::v79(){vfunc_called(this, "_ZN7S2294C33v79Ev");}
void  S2294C3 ::v80(){vfunc_called(this, "_ZN7S2294C33v80Ev");}
void  S2294C3 ::v81(){vfunc_called(this, "_ZN7S2294C33v81Ev");}
void  S2294C3 ::v82(){vfunc_called(this, "_ZN7S2294C33v82Ev");}
void  S2294C3 ::v83(){vfunc_called(this, "_ZN7S2294C33v83Ev");}
void  S2294C3 ::v84(){vfunc_called(this, "_ZN7S2294C33v84Ev");}
void  S2294C3 ::v85(){vfunc_called(this, "_ZN7S2294C33v85Ev");}
void  S2294C3 ::v86(){vfunc_called(this, "_ZN7S2294C33v86Ev");}
void  S2294C3 ::v87(){vfunc_called(this, "_ZN7S2294C33v87Ev");}
void  S2294C3 ::v88(){vfunc_called(this, "_ZN7S2294C33v88Ev");}
void  S2294C3 ::v89(){vfunc_called(this, "_ZN7S2294C33v89Ev");}
void  S2294C3 ::v90(){vfunc_called(this, "_ZN7S2294C33v90Ev");}
void  S2294C3 ::v91(){vfunc_called(this, "_ZN7S2294C33v91Ev");}
void  S2294C3 ::v92(){vfunc_called(this, "_ZN7S2294C33v92Ev");}
void  S2294C3 ::v93(){vfunc_called(this, "_ZN7S2294C33v93Ev");}
void  S2294C3 ::v94(){vfunc_called(this, "_ZN7S2294C33v94Ev");}
void  S2294C3 ::v95(){vfunc_called(this, "_ZN7S2294C33v95Ev");}
void  S2294C3 ::v96(){vfunc_called(this, "_ZN7S2294C33v96Ev");}
void  S2294C3 ::v97(){vfunc_called(this, "_ZN7S2294C33v97Ev");}
void  S2294C3 ::v98(){vfunc_called(this, "_ZN7S2294C33v98Ev");}
void  S2294C3 ::v99(){vfunc_called(this, "_ZN7S2294C33v99Ev");}
S2294C3 ::S2294C3(){ note_ctor("S2294C3", this);} // tgen

static void Test_S2294C3()
{
  extern Class_Descriptor cd_S2294C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2294C3, buf);
    S2294C3 *dp, &lv = *(dp=new (buf) S2294C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2294C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2294C3)");
    check_base_class_offset(lv, (S2294C4*), 0, "S2294C3");
    test_class_info(&lv, &cd_S2294C3);
    dp->~S2294C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2294C3(Test_S2294C3, "S2294C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2294C3C1Ev();
extern void _ZN7S2294C3D1Ev();
Name_Map name_map_S2294C3[] = {
  NSPAIR(_ZN7S2294C3C1Ev),
  NSPAIR(_ZN7S2294C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2294C4;
extern VTBL_ENTRY _ZTI7S2294C4[];
extern  VTBL_ENTRY _ZTV7S2294C4[];
static Base_Class bases_S2294C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2294C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2294C3[];
extern void _ZN7S2294C3D1Ev();
extern void _ZN7S2294C3D0Ev();
extern void _ZN7S2294C43v49Ev();
extern void _ZN7S2294C43v50Ev();
extern void _ZN7S2294C43v51Ev();
extern void _ZN7S2294C33v52Ev();
extern void _ZN7S2294C33v53Ev();
extern void _ZN7S2294C33v54Ev();
extern void _ZN7S2294C33v55Ev();
extern void _ZN7S2294C33v56Ev();
extern void _ZN7S2294C33v57Ev();
extern void _ZN7S2294C33v58Ev();
extern void _ZN7S2294C33v59Ev();
extern void _ZN7S2294C33v60Ev();
extern void _ZN7S2294C33v61Ev();
extern void _ZN7S2294C33v62Ev();
extern void _ZN7S2294C33v63Ev();
extern void _ZN7S2294C33v64Ev();
extern void _ZN7S2294C33v65Ev();
extern void _ZN7S2294C33v66Ev();
extern void _ZN7S2294C33v67Ev();
extern void _ZN7S2294C33v68Ev();
extern void _ZN7S2294C33v69Ev();
extern void _ZN7S2294C33v70Ev();
extern void _ZN7S2294C33v71Ev();
extern void _ZN7S2294C33v72Ev();
extern void _ZN7S2294C33v73Ev();
extern void _ZN7S2294C33v74Ev();
extern void _ZN7S2294C33v75Ev();
extern void _ZN7S2294C33v76Ev();
extern void _ZN7S2294C33v77Ev();
extern void _ZN7S2294C33v78Ev();
extern void _ZN7S2294C33v79Ev();
extern void _ZN7S2294C33v80Ev();
extern void _ZN7S2294C33v81Ev();
extern void _ZN7S2294C33v82Ev();
extern void _ZN7S2294C33v83Ev();
extern void _ZN7S2294C33v84Ev();
extern void _ZN7S2294C33v85Ev();
extern void _ZN7S2294C33v86Ev();
extern void _ZN7S2294C33v87Ev();
extern void _ZN7S2294C33v88Ev();
extern void _ZN7S2294C33v89Ev();
extern void _ZN7S2294C33v90Ev();
extern void _ZN7S2294C33v91Ev();
extern void _ZN7S2294C33v92Ev();
extern void _ZN7S2294C33v93Ev();
extern void _ZN7S2294C33v94Ev();
extern void _ZN7S2294C33v95Ev();
extern void _ZN7S2294C33v96Ev();
extern void _ZN7S2294C33v97Ev();
extern void _ZN7S2294C33v98Ev();
extern void _ZN7S2294C33v99Ev();
static  VTBL_ENTRY vtc_S2294C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2294C3[0]),
  (VTBL_ENTRY)&_ZN7S2294C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2294C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v99Ev,
};
extern VTBL_ENTRY _ZTI7S2294C3[];
extern  VTBL_ENTRY _ZTV7S2294C3[];
Class_Descriptor cd_S2294C3 = {  "S2294C3", // class name
  bases_S2294C3, 1,
  &(vtc_S2294C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2294C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2294C3),55, //virtual function table var
  2, // 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  S2294C8_nt  {
  __tsi64 s2294c8f0[4];
};
//SIG(-1 S2294C8_nt) C1{ FL[4]}



//skip512 S2294C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2294C7_nt  {
  ::S2294C8_nt s2294c7f0;
  void  mf2294c7(); // _ZN10S2294C7_nt8mf2294c7Ev
};
//SIG(-1 S2294C7_nt) C1{ m FC2{ FL[4]}}


void  S2294C7_nt ::mf2294c7(){}

//skip512 S2294C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2294C2  : S2294C3 {
  ::S2293C5_nt s2294c2f0;
  ::S2294C7_nt s2294c2f1;
  char s2294c2f2;
  virtual  ~S2294C2(); // _ZN7S2294C2D1Ev
  virtual void  v100(); // _ZN7S2294C24v100Ev
  virtual void  v101(); // _ZN7S2294C24v101Ev
  virtual void  v102(); // _ZN7S2294C24v102Ev
  S2294C2(); // tgen
};
//SIG(-1 S2294C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S2294C2 ::~S2294C2(){ note_dtor("S2294C2", this);}
void  S2294C2 ::v100(){vfunc_called(this, "_ZN7S2294C24v100Ev");}
void  S2294C2 ::v101(){vfunc_called(this, "_ZN7S2294C24v101Ev");}
void  S2294C2 ::v102(){vfunc_called(this, "_ZN7S2294C24v102Ev");}
S2294C2 ::S2294C2(){ note_ctor("S2294C2", this);} // tgen

static void Test_S2294C2()
{
  extern Class_Descriptor cd_S2294C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2294C2, buf);
    S2294C2 *dp, &lv = *(dp=new (buf) S2294C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2294C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2294C2)");
    check_base_class_offset(lv, (S2294C4*)(S2294C3*), 0, "S2294C2");
    check_base_class_offset(lv, (S2294C3*), 0, "S2294C2");
    check_field_offset(lv, s2294c2f0, ABISELECT(8,4), "S2294C2.s2294c2f0");
    check_field_offset(lv, s2294c2f1, ABISELECT(32,20), "S2294C2.s2294c2f1");
    check_field_offset(lv, s2294c2f2, ABISELECT(64,52), "S2294C2.s2294c2f2");
    test_class_info(&lv, &cd_S2294C2);
    dp->~S2294C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2294C2(Test_S2294C2, "S2294C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2294C2C1Ev();
extern void _ZN7S2294C2D1Ev();
Name_Map name_map_S2294C2[] = {
  NSPAIR(_ZN7S2294C2C1Ev),
  NSPAIR(_ZN7S2294C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2294C4;
extern VTBL_ENTRY _ZTI7S2294C4[];
extern  VTBL_ENTRY _ZTV7S2294C4[];
extern Class_Descriptor cd_S2294C3;
extern VTBL_ENTRY _ZTI7S2294C3[];
extern  VTBL_ENTRY _ZTV7S2294C3[];
static Base_Class bases_S2294C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2294C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2294C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2294C2[];
extern void _ZN7S2294C2D1Ev();
extern void _ZN7S2294C2D0Ev();
extern void _ZN7S2294C43v49Ev();
extern void _ZN7S2294C43v50Ev();
extern void _ZN7S2294C43v51Ev();
extern void _ZN7S2294C33v52Ev();
extern void _ZN7S2294C33v53Ev();
extern void _ZN7S2294C33v54Ev();
extern void _ZN7S2294C33v55Ev();
extern void _ZN7S2294C33v56Ev();
extern void _ZN7S2294C33v57Ev();
extern void _ZN7S2294C33v58Ev();
extern void _ZN7S2294C33v59Ev();
extern void _ZN7S2294C33v60Ev();
extern void _ZN7S2294C33v61Ev();
extern void _ZN7S2294C33v62Ev();
extern void _ZN7S2294C33v63Ev();
extern void _ZN7S2294C33v64Ev();
extern void _ZN7S2294C33v65Ev();
extern void _ZN7S2294C33v66Ev();
extern void _ZN7S2294C33v67Ev();
extern void _ZN7S2294C33v68Ev();
extern void _ZN7S2294C33v69Ev();
extern void _ZN7S2294C33v70Ev();
extern void _ZN7S2294C33v71Ev();
extern void _ZN7S2294C33v72Ev();
extern void _ZN7S2294C33v73Ev();
extern void _ZN7S2294C33v74Ev();
extern void _ZN7S2294C33v75Ev();
extern void _ZN7S2294C33v76Ev();
extern void _ZN7S2294C33v77Ev();
extern void _ZN7S2294C33v78Ev();
extern void _ZN7S2294C33v79Ev();
extern void _ZN7S2294C33v80Ev();
extern void _ZN7S2294C33v81Ev();
extern void _ZN7S2294C33v82Ev();
extern void _ZN7S2294C33v83Ev();
extern void _ZN7S2294C33v84Ev();
extern void _ZN7S2294C33v85Ev();
extern void _ZN7S2294C33v86Ev();
extern void _ZN7S2294C33v87Ev();
extern void _ZN7S2294C33v88Ev();
extern void _ZN7S2294C33v89Ev();
extern void _ZN7S2294C33v90Ev();
extern void _ZN7S2294C33v91Ev();
extern void _ZN7S2294C33v92Ev();
extern void _ZN7S2294C33v93Ev();
extern void _ZN7S2294C33v94Ev();
extern void _ZN7S2294C33v95Ev();
extern void _ZN7S2294C33v96Ev();
extern void _ZN7S2294C33v97Ev();
extern void _ZN7S2294C33v98Ev();
extern void _ZN7S2294C33v99Ev();
extern void _ZN7S2294C24v100Ev();
extern void _ZN7S2294C24v101Ev();
extern void _ZN7S2294C24v102Ev();
static  VTBL_ENTRY vtc_S2294C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2294C2[0]),
  (VTBL_ENTRY)&_ZN7S2294C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2294C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2294C24v100Ev,
  (VTBL_ENTRY)&_ZN7S2294C24v101Ev,
  (VTBL_ENTRY)&_ZN7S2294C24v102Ev,
};
extern VTBL_ENTRY _ZTI7S2294C2[];
extern  VTBL_ENTRY _ZTV7S2294C2[];
Class_Descriptor cd_S2294C2 = {  "S2294C2", // class name
  bases_S2294C2, 2,
  &(vtc_S2294C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2294C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2294C2),58, //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  S2294C1  : S2294C2 {
  virtual  ~S2294C1(); // _ZN7S2294C1D1Ev
  virtual void  v1(); // _ZN7S2294C12v1Ev
  virtual void  v2(); // _ZN7S2294C12v2Ev
  virtual void  v3(); // _ZN7S2294C12v3Ev
  virtual void  v4(); // _ZN7S2294C12v4Ev
  virtual void  v5(); // _ZN7S2294C12v5Ev
  virtual void  v6(); // _ZN7S2294C12v6Ev
  virtual void  v7(); // _ZN7S2294C12v7Ev
  virtual void  v8(); // _ZN7S2294C12v8Ev
  virtual void  v9(); // _ZN7S2294C12v9Ev
  virtual void  v10(); // _ZN7S2294C13v10Ev
  virtual void  v11(); // _ZN7S2294C13v11Ev
  virtual void  v12(); // _ZN7S2294C13v12Ev
  virtual void  v13(); // _ZN7S2294C13v13Ev
  virtual void  v14(); // _ZN7S2294C13v14Ev
  virtual void  v15(); // _ZN7S2294C13v15Ev
  virtual void  v16(); // _ZN7S2294C13v16Ev
  virtual void  v17(); // _ZN7S2294C13v17Ev
  virtual void  v18(); // _ZN7S2294C13v18Ev
  virtual void  v19(); // _ZN7S2294C13v19Ev
  virtual void  v20(); // _ZN7S2294C13v20Ev
  virtual void  v21(); // _ZN7S2294C13v21Ev
  virtual void  v22(); // _ZN7S2294C13v22Ev
  virtual void  v23(); // _ZN7S2294C13v23Ev
  virtual void  v24(); // _ZN7S2294C13v24Ev
  virtual void  v25(); // _ZN7S2294C13v25Ev
  virtual void  v26(); // _ZN7S2294C13v26Ev
  virtual void  v27(); // _ZN7S2294C13v27Ev
  virtual void  v28(); // _ZN7S2294C13v28Ev
  virtual void  v29(); // _ZN7S2294C13v29Ev
  virtual void  v30(); // _ZN7S2294C13v30Ev
  virtual void  v31(); // _ZN7S2294C13v31Ev
  virtual void  v32(); // _ZN7S2294C13v32Ev
  virtual void  v33(); // _ZN7S2294C13v33Ev
  virtual void  v34(); // _ZN7S2294C13v34Ev
  virtual void  v35(); // _ZN7S2294C13v35Ev
  virtual void  v36(); // _ZN7S2294C13v36Ev
  virtual void  v37(); // _ZN7S2294C13v37Ev
  virtual void  v38(); // _ZN7S2294C13v38Ev
  virtual void  v39(); // _ZN7S2294C13v39Ev
  virtual void  v40(); // _ZN7S2294C13v40Ev
  virtual void  v41(); // _ZN7S2294C13v41Ev
  virtual void  v42(); // _ZN7S2294C13v42Ev
  virtual void  v43(); // _ZN7S2294C13v43Ev
  virtual void  v44(); // _ZN7S2294C13v44Ev
  virtual void  v45(); // _ZN7S2294C13v45Ev
  virtual void  v46(); // _ZN7S2294C13v46Ev
  virtual void  v47(); // _ZN7S2294C13v47Ev
  virtual void  v48(); // _ZN7S2294C13v48Ev
  S2294C1(); // tgen
};
//SIG(1 S2294C1) C1{ BC2{ BC3{ BC4{ vd v49 v50 v51} vd v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99} vd v100 v101 v102 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ FL[4]}} Fc} 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}


 S2294C1 ::~S2294C1(){ note_dtor("S2294C1", this);}
void  S2294C1 ::v1(){vfunc_called(this, "_ZN7S2294C12v1Ev");}
void  S2294C1 ::v2(){vfunc_called(this, "_ZN7S2294C12v2Ev");}
void  S2294C1 ::v3(){vfunc_called(this, "_ZN7S2294C12v3Ev");}
void  S2294C1 ::v4(){vfunc_called(this, "_ZN7S2294C12v4Ev");}
void  S2294C1 ::v5(){vfunc_called(this, "_ZN7S2294C12v5Ev");}
void  S2294C1 ::v6(){vfunc_called(this, "_ZN7S2294C12v6Ev");}
void  S2294C1 ::v7(){vfunc_called(this, "_ZN7S2294C12v7Ev");}
void  S2294C1 ::v8(){vfunc_called(this, "_ZN7S2294C12v8Ev");}
void  S2294C1 ::v9(){vfunc_called(this, "_ZN7S2294C12v9Ev");}
void  S2294C1 ::v10(){vfunc_called(this, "_ZN7S2294C13v10Ev");}
void  S2294C1 ::v11(){vfunc_called(this, "_ZN7S2294C13v11Ev");}
void  S2294C1 ::v12(){vfunc_called(this, "_ZN7S2294C13v12Ev");}
void  S2294C1 ::v13(){vfunc_called(this, "_ZN7S2294C13v13Ev");}
void  S2294C1 ::v14(){vfunc_called(this, "_ZN7S2294C13v14Ev");}
void  S2294C1 ::v15(){vfunc_called(this, "_ZN7S2294C13v15Ev");}
void  S2294C1 ::v16(){vfunc_called(this, "_ZN7S2294C13v16Ev");}
void  S2294C1 ::v17(){vfunc_called(this, "_ZN7S2294C13v17Ev");}
void  S2294C1 ::v18(){vfunc_called(this, "_ZN7S2294C13v18Ev");}
void  S2294C1 ::v19(){vfunc_called(this, "_ZN7S2294C13v19Ev");}
void  S2294C1 ::v20(){vfunc_called(this, "_ZN7S2294C13v20Ev");}
void  S2294C1 ::v21(){vfunc_called(this, "_ZN7S2294C13v21Ev");}
void  S2294C1 ::v22(){vfunc_called(this, "_ZN7S2294C13v22Ev");}
void  S2294C1 ::v23(){vfunc_called(this, "_ZN7S2294C13v23Ev");}
void  S2294C1 ::v24(){vfunc_called(this, "_ZN7S2294C13v24Ev");}
void  S2294C1 ::v25(){vfunc_called(this, "_ZN7S2294C13v25Ev");}
void  S2294C1 ::v26(){vfunc_called(this, "_ZN7S2294C13v26Ev");}
void  S2294C1 ::v27(){vfunc_called(this, "_ZN7S2294C13v27Ev");}
void  S2294C1 ::v28(){vfunc_called(this, "_ZN7S2294C13v28Ev");}
void  S2294C1 ::v29(){vfunc_called(this, "_ZN7S2294C13v29Ev");}
void  S2294C1 ::v30(){vfunc_called(this, "_ZN7S2294C13v30Ev");}
void  S2294C1 ::v31(){vfunc_called(this, "_ZN7S2294C13v31Ev");}
void  S2294C1 ::v32(){vfunc_called(this, "_ZN7S2294C13v32Ev");}
void  S2294C1 ::v33(){vfunc_called(this, "_ZN7S2294C13v33Ev");}
void  S2294C1 ::v34(){vfunc_called(this, "_ZN7S2294C13v34Ev");}
void  S2294C1 ::v35(){vfunc_called(this, "_ZN7S2294C13v35Ev");}
void  S2294C1 ::v36(){vfunc_called(this, "_ZN7S2294C13v36Ev");}
void  S2294C1 ::v37(){vfunc_called(this, "_ZN7S2294C13v37Ev");}
void  S2294C1 ::v38(){vfunc_called(this, "_ZN7S2294C13v38Ev");}
void  S2294C1 ::v39(){vfunc_called(this, "_ZN7S2294C13v39Ev");}
void  S2294C1 ::v40(){vfunc_called(this, "_ZN7S2294C13v40Ev");}
void  S2294C1 ::v41(){vfunc_called(this, "_ZN7S2294C13v41Ev");}
void  S2294C1 ::v42(){vfunc_called(this, "_ZN7S2294C13v42Ev");}
void  S2294C1 ::v43(){vfunc_called(this, "_ZN7S2294C13v43Ev");}
void  S2294C1 ::v44(){vfunc_called(this, "_ZN7S2294C13v44Ev");}
void  S2294C1 ::v45(){vfunc_called(this, "_ZN7S2294C13v45Ev");}
void  S2294C1 ::v46(){vfunc_called(this, "_ZN7S2294C13v46Ev");}
void  S2294C1 ::v47(){vfunc_called(this, "_ZN7S2294C13v47Ev");}
void  S2294C1 ::v48(){vfunc_called(this, "_ZN7S2294C13v48Ev");}
S2294C1 ::S2294C1(){ note_ctor("S2294C1", this);} // tgen

static void Test_S2294C1()
{
  extern Class_Descriptor cd_S2294C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2294C1, buf);
    S2294C1 *dp, &lv = *(dp=new (buf) S2294C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2294C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2294C1)");
    check_base_class_offset(lv, (S2294C4*)(S2294C3*)(S2294C2*), 0, "S2294C1");
    check_base_class_offset(lv, (S2294C3*)(S2294C2*), 0, "S2294C1");
    check_base_class_offset(lv, (S2294C2*), 0, "S2294C1");
    test_class_info(&lv, &cd_S2294C1);
    dp->~S2294C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2294C1(Test_S2294C1, "S2294C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2294C1C1Ev();
extern void _ZN7S2294C1D1Ev();
Name_Map name_map_S2294C1[] = {
  NSPAIR(_ZN7S2294C1C1Ev),
  NSPAIR(_ZN7S2294C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2294C4;
extern VTBL_ENTRY _ZTI7S2294C4[];
extern  VTBL_ENTRY _ZTV7S2294C4[];
extern Class_Descriptor cd_S2294C3;
extern VTBL_ENTRY _ZTI7S2294C3[];
extern  VTBL_ENTRY _ZTV7S2294C3[];
extern Class_Descriptor cd_S2294C2;
extern VTBL_ENTRY _ZTI7S2294C2[];
extern  VTBL_ENTRY _ZTV7S2294C2[];
static Base_Class bases_S2294C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2294C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2294C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2294C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2294C1[];
extern void _ZN7S2294C1D1Ev();
extern void _ZN7S2294C1D0Ev();
extern void _ZN7S2294C43v49Ev();
extern void _ZN7S2294C43v50Ev();
extern void _ZN7S2294C43v51Ev();
extern void _ZN7S2294C33v52Ev();
extern void _ZN7S2294C33v53Ev();
extern void _ZN7S2294C33v54Ev();
extern void _ZN7S2294C33v55Ev();
extern void _ZN7S2294C33v56Ev();
extern void _ZN7S2294C33v57Ev();
extern void _ZN7S2294C33v58Ev();
extern void _ZN7S2294C33v59Ev();
extern void _ZN7S2294C33v60Ev();
extern void _ZN7S2294C33v61Ev();
extern void _ZN7S2294C33v62Ev();
extern void _ZN7S2294C33v63Ev();
extern void _ZN7S2294C33v64Ev();
extern void _ZN7S2294C33v65Ev();
extern void _ZN7S2294C33v66Ev();
extern void _ZN7S2294C33v67Ev();
extern void _ZN7S2294C33v68Ev();
extern void _ZN7S2294C33v69Ev();
extern void _ZN7S2294C33v70Ev();
extern void _ZN7S2294C33v71Ev();
extern void _ZN7S2294C33v72Ev();
extern void _ZN7S2294C33v73Ev();
extern void _ZN7S2294C33v74Ev();
extern void _ZN7S2294C33v75Ev();
extern void _ZN7S2294C33v76Ev();
extern void _ZN7S2294C33v77Ev();
extern void _ZN7S2294C33v78Ev();
extern void _ZN7S2294C33v79Ev();
extern void _ZN7S2294C33v80Ev();
extern void _ZN7S2294C33v81Ev();
extern void _ZN7S2294C33v82Ev();
extern void _ZN7S2294C33v83Ev();
extern void _ZN7S2294C33v84Ev();
extern void _ZN7S2294C33v85Ev();
extern void _ZN7S2294C33v86Ev();
extern void _ZN7S2294C33v87Ev();
extern void _ZN7S2294C33v88Ev();
extern void _ZN7S2294C33v89Ev();
extern void _ZN7S2294C33v90Ev();
extern void _ZN7S2294C33v91Ev();
extern void _ZN7S2294C33v92Ev();
extern void _ZN7S2294C33v93Ev();
extern void _ZN7S2294C33v94Ev();
extern void _ZN7S2294C33v95Ev();
extern void _ZN7S2294C33v96Ev();
extern void _ZN7S2294C33v97Ev();
extern void _ZN7S2294C33v98Ev();
extern void _ZN7S2294C33v99Ev();
extern void _ZN7S2294C24v100Ev();
extern void _ZN7S2294C24v101Ev();
extern void _ZN7S2294C24v102Ev();
extern void _ZN7S2294C12v1Ev();
extern void _ZN7S2294C12v2Ev();
extern void _ZN7S2294C12v3Ev();
extern void _ZN7S2294C12v4Ev();
extern void _ZN7S2294C12v5Ev();
extern void _ZN7S2294C12v6Ev();
extern void _ZN7S2294C12v7Ev();
extern void _ZN7S2294C12v8Ev();
extern void _ZN7S2294C12v9Ev();
extern void _ZN7S2294C13v10Ev();
extern void _ZN7S2294C13v11Ev();
extern void _ZN7S2294C13v12Ev();
extern void _ZN7S2294C13v13Ev();
extern void _ZN7S2294C13v14Ev();
extern void _ZN7S2294C13v15Ev();
extern void _ZN7S2294C13v16Ev();
extern void _ZN7S2294C13v17Ev();
extern void _ZN7S2294C13v18Ev();
extern void _ZN7S2294C13v19Ev();
extern void _ZN7S2294C13v20Ev();
extern void _ZN7S2294C13v21Ev();
extern void _ZN7S2294C13v22Ev();
extern void _ZN7S2294C13v23Ev();
extern void _ZN7S2294C13v24Ev();
extern void _ZN7S2294C13v25Ev();
extern void _ZN7S2294C13v26Ev();
extern void _ZN7S2294C13v27Ev();
extern void _ZN7S2294C13v28Ev();
extern void _ZN7S2294C13v29Ev();
extern void _ZN7S2294C13v30Ev();
extern void _ZN7S2294C13v31Ev();
extern void _ZN7S2294C13v32Ev();
extern void _ZN7S2294C13v33Ev();
extern void _ZN7S2294C13v34Ev();
extern void _ZN7S2294C13v35Ev();
extern void _ZN7S2294C13v36Ev();
extern void _ZN7S2294C13v37Ev();
extern void _ZN7S2294C13v38Ev();
extern void _ZN7S2294C13v39Ev();
extern void _ZN7S2294C13v40Ev();
extern void _ZN7S2294C13v41Ev();
extern void _ZN7S2294C13v42Ev();
extern void _ZN7S2294C13v43Ev();
extern void _ZN7S2294C13v44Ev();
extern void _ZN7S2294C13v45Ev();
extern void _ZN7S2294C13v46Ev();
extern void _ZN7S2294C13v47Ev();
extern void _ZN7S2294C13v48Ev();
static  VTBL_ENTRY vtc_S2294C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2294C1[0]),
  (VTBL_ENTRY)&_ZN7S2294C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2294C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2294C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2294C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2294C24v100Ev,
  (VTBL_ENTRY)&_ZN7S2294C24v101Ev,
  (VTBL_ENTRY)&_ZN7S2294C24v102Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2294C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v15Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v16Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v17Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v18Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v19Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v20Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v21Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v22Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v23Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v24Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v25Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v26Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v27Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v28Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v29Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v30Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v31Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v32Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v33Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v34Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v35Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v36Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v37Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v38Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v39Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v40Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v41Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v42Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v43Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v44Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v45Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v46Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v47Ev,
  (VTBL_ENTRY)&_ZN7S2294C13v48Ev,
};
extern VTBL_ENTRY _ZTI7S2294C1[];
extern  VTBL_ENTRY _ZTV7S2294C1[];
Class_Descriptor cd_S2294C1 = {  "S2294C1", // class name
  bases_S2294C1, 3,
  &(vtc_S2294C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2294C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2294C1),106, //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  S2295C4  {
  virtual  ~S2295C4(); // _ZN7S2295C4D1Ev
  virtual void  v49(); // _ZN7S2295C43v49Ev
  virtual void  v50(); // _ZN7S2295C43v50Ev
  virtual void  v51(); // _ZN7S2295C43v51Ev
  S2295C4(); // tgen
};
//SIG(-1 S2295C4) C1{ vd v1 v2 v3}


 S2295C4 ::~S2295C4(){ note_dtor("S2295C4", this);}
void  S2295C4 ::v49(){vfunc_called(this, "_ZN7S2295C43v49Ev");}
void  S2295C4 ::v50(){vfunc_called(this, "_ZN7S2295C43v50Ev");}
void  S2295C4 ::v51(){vfunc_called(this, "_ZN7S2295C43v51Ev");}
S2295C4 ::S2295C4(){ note_ctor("S2295C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S2295C4C1Ev();
extern void _ZN7S2295C4D1Ev();
Name_Map name_map_S2295C4[] = {
  NSPAIR(_ZN7S2295C4C1Ev),
  NSPAIR(_ZN7S2295C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2295C4[];
extern void _ZN7S2295C4D1Ev();
extern void _ZN7S2295C4D0Ev();
extern void _ZN7S2295C43v49Ev();
extern void _ZN7S2295C43v50Ev();
extern void _ZN7S2295C43v51Ev();
static  VTBL_ENTRY vtc_S2295C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2295C4[0]),
  (VTBL_ENTRY)&_ZN7S2295C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2295C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v51Ev,
};
extern VTBL_ENTRY _ZTI7S2295C4[];
extern  VTBL_ENTRY _ZTV7S2295C4[];
Class_Descriptor cd_S2295C4 = {  "S2295C4", // class name
  0,0,//no base classes
  &(vtc_S2295C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2295C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2295C4),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  S2295C3  : S2295C4 {
  virtual  ~S2295C3(); // _ZN7S2295C3D1Ev
  virtual void  v52(); // _ZN7S2295C33v52Ev
  virtual void  v53(); // _ZN7S2295C33v53Ev
  virtual void  v54(); // _ZN7S2295C33v54Ev
  virtual void  v55(); // _ZN7S2295C33v55Ev
  virtual void  v56(); // _ZN7S2295C33v56Ev
  virtual void  v57(); // _ZN7S2295C33v57Ev
  virtual void  v58(); // _ZN7S2295C33v58Ev
  virtual void  v59(); // _ZN7S2295C33v59Ev
  virtual void  v60(); // _ZN7S2295C33v60Ev
  virtual void  v61(); // _ZN7S2295C33v61Ev
  virtual void  v62(); // _ZN7S2295C33v62Ev
  virtual void  v63(); // _ZN7S2295C33v63Ev
  virtual void  v64(); // _ZN7S2295C33v64Ev
  virtual void  v65(); // _ZN7S2295C33v65Ev
  virtual void  v66(); // _ZN7S2295C33v66Ev
  virtual void  v67(); // _ZN7S2295C33v67Ev
  virtual void  v68(); // _ZN7S2295C33v68Ev
  virtual void  v69(); // _ZN7S2295C33v69Ev
  virtual void  v70(); // _ZN7S2295C33v70Ev
  virtual void  v71(); // _ZN7S2295C33v71Ev
  virtual void  v72(); // _ZN7S2295C33v72Ev
  virtual void  v73(); // _ZN7S2295C33v73Ev
  virtual void  v74(); // _ZN7S2295C33v74Ev
  virtual void  v75(); // _ZN7S2295C33v75Ev
  virtual void  v76(); // _ZN7S2295C33v76Ev
  virtual void  v77(); // _ZN7S2295C33v77Ev
  virtual void  v78(); // _ZN7S2295C33v78Ev
  virtual void  v79(); // _ZN7S2295C33v79Ev
  virtual void  v80(); // _ZN7S2295C33v80Ev
  virtual void  v81(); // _ZN7S2295C33v81Ev
  virtual void  v82(); // _ZN7S2295C33v82Ev
  virtual void  v83(); // _ZN7S2295C33v83Ev
  virtual void  v84(); // _ZN7S2295C33v84Ev
  virtual void  v85(); // _ZN7S2295C33v85Ev
  virtual void  v86(); // _ZN7S2295C33v86Ev
  virtual void  v87(); // _ZN7S2295C33v87Ev
  virtual void  v88(); // _ZN7S2295C33v88Ev
  virtual void  v89(); // _ZN7S2295C33v89Ev
  virtual void  v90(); // _ZN7S2295C33v90Ev
  virtual void  v91(); // _ZN7S2295C33v91Ev
  virtual void  v92(); // _ZN7S2295C33v92Ev
  virtual void  v93(); // _ZN7S2295C33v93Ev
  virtual void  v94(); // _ZN7S2295C33v94Ev
  virtual void  v95(); // _ZN7S2295C33v95Ev
  virtual void  v96(); // _ZN7S2295C33v96Ev
  virtual void  v97(); // _ZN7S2295C33v97Ev
  virtual void  v98(); // _ZN7S2295C33v98Ev
  virtual void  v99(); // _ZN7S2295C33v99Ev
  S2295C3(); // tgen
};
//SIG(-1 S2295C3) C1{ BC2{ vd v49 v50 v51} 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}


 S2295C3 ::~S2295C3(){ note_dtor("S2295C3", this);}
void  S2295C3 ::v52(){vfunc_called(this, "_ZN7S2295C33v52Ev");}
void  S2295C3 ::v53(){vfunc_called(this, "_ZN7S2295C33v53Ev");}
void  S2295C3 ::v54(){vfunc_called(this, "_ZN7S2295C33v54Ev");}
void  S2295C3 ::v55(){vfunc_called(this, "_ZN7S2295C33v55Ev");}
void  S2295C3 ::v56(){vfunc_called(this, "_ZN7S2295C33v56Ev");}
void  S2295C3 ::v57(){vfunc_called(this, "_ZN7S2295C33v57Ev");}
void  S2295C3 ::v58(){vfunc_called(this, "_ZN7S2295C33v58Ev");}
void  S2295C3 ::v59(){vfunc_called(this, "_ZN7S2295C33v59Ev");}
void  S2295C3 ::v60(){vfunc_called(this, "_ZN7S2295C33v60Ev");}
void  S2295C3 ::v61(){vfunc_called(this, "_ZN7S2295C33v61Ev");}
void  S2295C3 ::v62(){vfunc_called(this, "_ZN7S2295C33v62Ev");}
void  S2295C3 ::v63(){vfunc_called(this, "_ZN7S2295C33v63Ev");}
void  S2295C3 ::v64(){vfunc_called(this, "_ZN7S2295C33v64Ev");}
void  S2295C3 ::v65(){vfunc_called(this, "_ZN7S2295C33v65Ev");}
void  S2295C3 ::v66(){vfunc_called(this, "_ZN7S2295C33v66Ev");}
void  S2295C3 ::v67(){vfunc_called(this, "_ZN7S2295C33v67Ev");}
void  S2295C3 ::v68(){vfunc_called(this, "_ZN7S2295C33v68Ev");}
void  S2295C3 ::v69(){vfunc_called(this, "_ZN7S2295C33v69Ev");}
void  S2295C3 ::v70(){vfunc_called(this, "_ZN7S2295C33v70Ev");}
void  S2295C3 ::v71(){vfunc_called(this, "_ZN7S2295C33v71Ev");}
void  S2295C3 ::v72(){vfunc_called(this, "_ZN7S2295C33v72Ev");}
void  S2295C3 ::v73(){vfunc_called(this, "_ZN7S2295C33v73Ev");}
void  S2295C3 ::v74(){vfunc_called(this, "_ZN7S2295C33v74Ev");}
void  S2295C3 ::v75(){vfunc_called(this, "_ZN7S2295C33v75Ev");}
void  S2295C3 ::v76(){vfunc_called(this, "_ZN7S2295C33v76Ev");}
void  S2295C3 ::v77(){vfunc_called(this, "_ZN7S2295C33v77Ev");}
void  S2295C3 ::v78(){vfunc_called(this, "_ZN7S2295C33v78Ev");}
void  S2295C3 ::v79(){vfunc_called(this, "_ZN7S2295C33v79Ev");}
void  S2295C3 ::v80(){vfunc_called(this, "_ZN7S2295C33v80Ev");}
void  S2295C3 ::v81(){vfunc_called(this, "_ZN7S2295C33v81Ev");}
void  S2295C3 ::v82(){vfunc_called(this, "_ZN7S2295C33v82Ev");}
void  S2295C3 ::v83(){vfunc_called(this, "_ZN7S2295C33v83Ev");}
void  S2295C3 ::v84(){vfunc_called(this, "_ZN7S2295C33v84Ev");}
void  S2295C3 ::v85(){vfunc_called(this, "_ZN7S2295C33v85Ev");}
void  S2295C3 ::v86(){vfunc_called(this, "_ZN7S2295C33v86Ev");}
void  S2295C3 ::v87(){vfunc_called(this, "_ZN7S2295C33v87Ev");}
void  S2295C3 ::v88(){vfunc_called(this, "_ZN7S2295C33v88Ev");}
void  S2295C3 ::v89(){vfunc_called(this, "_ZN7S2295C33v89Ev");}
void  S2295C3 ::v90(){vfunc_called(this, "_ZN7S2295C33v90Ev");}
void  S2295C3 ::v91(){vfunc_called(this, "_ZN7S2295C33v91Ev");}
void  S2295C3 ::v92(){vfunc_called(this, "_ZN7S2295C33v92Ev");}
void  S2295C3 ::v93(){vfunc_called(this, "_ZN7S2295C33v93Ev");}
void  S2295C3 ::v94(){vfunc_called(this, "_ZN7S2295C33v94Ev");}
void  S2295C3 ::v95(){vfunc_called(this, "_ZN7S2295C33v95Ev");}
void  S2295C3 ::v96(){vfunc_called(this, "_ZN7S2295C33v96Ev");}
void  S2295C3 ::v97(){vfunc_called(this, "_ZN7S2295C33v97Ev");}
void  S2295C3 ::v98(){vfunc_called(this, "_ZN7S2295C33v98Ev");}
void  S2295C3 ::v99(){vfunc_called(this, "_ZN7S2295C33v99Ev");}
S2295C3 ::S2295C3(){ note_ctor("S2295C3", this);} // tgen

static void Test_S2295C3()
{
  extern Class_Descriptor cd_S2295C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2295C3, buf);
    S2295C3 *dp, &lv = *(dp=new (buf) S2295C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2295C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2295C3)");
    check_base_class_offset(lv, (S2295C4*), 0, "S2295C3");
    test_class_info(&lv, &cd_S2295C3);
    dp->~S2295C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2295C3(Test_S2295C3, "S2295C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2295C3C1Ev();
extern void _ZN7S2295C3D1Ev();
Name_Map name_map_S2295C3[] = {
  NSPAIR(_ZN7S2295C3C1Ev),
  NSPAIR(_ZN7S2295C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2295C4;
extern VTBL_ENTRY _ZTI7S2295C4[];
extern  VTBL_ENTRY _ZTV7S2295C4[];
static Base_Class bases_S2295C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2295C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2295C3[];
extern void _ZN7S2295C3D1Ev();
extern void _ZN7S2295C3D0Ev();
extern void _ZN7S2295C43v49Ev();
extern void _ZN7S2295C43v50Ev();
extern void _ZN7S2295C43v51Ev();
extern void _ZN7S2295C33v52Ev();
extern void _ZN7S2295C33v53Ev();
extern void _ZN7S2295C33v54Ev();
extern void _ZN7S2295C33v55Ev();
extern void _ZN7S2295C33v56Ev();
extern void _ZN7S2295C33v57Ev();
extern void _ZN7S2295C33v58Ev();
extern void _ZN7S2295C33v59Ev();
extern void _ZN7S2295C33v60Ev();
extern void _ZN7S2295C33v61Ev();
extern void _ZN7S2295C33v62Ev();
extern void _ZN7S2295C33v63Ev();
extern void _ZN7S2295C33v64Ev();
extern void _ZN7S2295C33v65Ev();
extern void _ZN7S2295C33v66Ev();
extern void _ZN7S2295C33v67Ev();
extern void _ZN7S2295C33v68Ev();
extern void _ZN7S2295C33v69Ev();
extern void _ZN7S2295C33v70Ev();
extern void _ZN7S2295C33v71Ev();
extern void _ZN7S2295C33v72Ev();
extern void _ZN7S2295C33v73Ev();
extern void _ZN7S2295C33v74Ev();
extern void _ZN7S2295C33v75Ev();
extern void _ZN7S2295C33v76Ev();
extern void _ZN7S2295C33v77Ev();
extern void _ZN7S2295C33v78Ev();
extern void _ZN7S2295C33v79Ev();
extern void _ZN7S2295C33v80Ev();
extern void _ZN7S2295C33v81Ev();
extern void _ZN7S2295C33v82Ev();
extern void _ZN7S2295C33v83Ev();
extern void _ZN7S2295C33v84Ev();
extern void _ZN7S2295C33v85Ev();
extern void _ZN7S2295C33v86Ev();
extern void _ZN7S2295C33v87Ev();
extern void _ZN7S2295C33v88Ev();
extern void _ZN7S2295C33v89Ev();
extern void _ZN7S2295C33v90Ev();
extern void _ZN7S2295C33v91Ev();
extern void _ZN7S2295C33v92Ev();
extern void _ZN7S2295C33v93Ev();
extern void _ZN7S2295C33v94Ev();
extern void _ZN7S2295C33v95Ev();
extern void _ZN7S2295C33v96Ev();
extern void _ZN7S2295C33v97Ev();
extern void _ZN7S2295C33v98Ev();
extern void _ZN7S2295C33v99Ev();
static  VTBL_ENTRY vtc_S2295C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2295C3[0]),
  (VTBL_ENTRY)&_ZN7S2295C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2295C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v99Ev,
};
extern VTBL_ENTRY _ZTI7S2295C3[];
extern  VTBL_ENTRY _ZTV7S2295C3[];
Class_Descriptor cd_S2295C3 = {  "S2295C3", // class name
  bases_S2295C3, 1,
  &(vtc_S2295C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2295C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2295C3),55, //virtual function table var
  2, // 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  S2295C7_nt  {
  __tsi64 s2295c7f0[4];
  void  mf2295c7(); // _ZN10S2295C7_nt8mf2295c7Ev
};
//SIG(-1 S2295C7_nt) C1{ m FL[4]}


void  S2295C7_nt ::mf2295c7(){}

//skip512 S2295C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2295C2  : S2295C3 {
  ::S2293C5_nt s2295c2f0;
  ::S2295C7_nt s2295c2f1;
  char s2295c2f2;
  virtual  ~S2295C2(); // _ZN7S2295C2D1Ev
  virtual void  v100(); // _ZN7S2295C24v100Ev
  virtual void  v101(); // _ZN7S2295C24v101Ev
  virtual void  v102(); // _ZN7S2295C24v102Ev
  S2295C2(); // tgen
};
//SIG(-1 S2295C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S2295C2 ::~S2295C2(){ note_dtor("S2295C2", this);}
void  S2295C2 ::v100(){vfunc_called(this, "_ZN7S2295C24v100Ev");}
void  S2295C2 ::v101(){vfunc_called(this, "_ZN7S2295C24v101Ev");}
void  S2295C2 ::v102(){vfunc_called(this, "_ZN7S2295C24v102Ev");}
S2295C2 ::S2295C2(){ note_ctor("S2295C2", this);} // tgen

static void Test_S2295C2()
{
  extern Class_Descriptor cd_S2295C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2295C2, buf);
    S2295C2 *dp, &lv = *(dp=new (buf) S2295C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2295C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2295C2)");
    check_base_class_offset(lv, (S2295C4*)(S2295C3*), 0, "S2295C2");
    check_base_class_offset(lv, (S2295C3*), 0, "S2295C2");
    check_field_offset(lv, s2295c2f0, ABISELECT(8,4), "S2295C2.s2295c2f0");
    check_field_offset(lv, s2295c2f1, ABISELECT(32,20), "S2295C2.s2295c2f1");
    check_field_offset(lv, s2295c2f2, ABISELECT(64,52), "S2295C2.s2295c2f2");
    test_class_info(&lv, &cd_S2295C2);
    dp->~S2295C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2295C2(Test_S2295C2, "S2295C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2295C2C1Ev();
extern void _ZN7S2295C2D1Ev();
Name_Map name_map_S2295C2[] = {
  NSPAIR(_ZN7S2295C2C1Ev),
  NSPAIR(_ZN7S2295C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2295C4;
extern VTBL_ENTRY _ZTI7S2295C4[];
extern  VTBL_ENTRY _ZTV7S2295C4[];
extern Class_Descriptor cd_S2295C3;
extern VTBL_ENTRY _ZTI7S2295C3[];
extern  VTBL_ENTRY _ZTV7S2295C3[];
static Base_Class bases_S2295C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2295C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2295C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2295C2[];
extern void _ZN7S2295C2D1Ev();
extern void _ZN7S2295C2D0Ev();
extern void _ZN7S2295C43v49Ev();
extern void _ZN7S2295C43v50Ev();
extern void _ZN7S2295C43v51Ev();
extern void _ZN7S2295C33v52Ev();
extern void _ZN7S2295C33v53Ev();
extern void _ZN7S2295C33v54Ev();
extern void _ZN7S2295C33v55Ev();
extern void _ZN7S2295C33v56Ev();
extern void _ZN7S2295C33v57Ev();
extern void _ZN7S2295C33v58Ev();
extern void _ZN7S2295C33v59Ev();
extern void _ZN7S2295C33v60Ev();
extern void _ZN7S2295C33v61Ev();
extern void _ZN7S2295C33v62Ev();
extern void _ZN7S2295C33v63Ev();
extern void _ZN7S2295C33v64Ev();
extern void _ZN7S2295C33v65Ev();
extern void _ZN7S2295C33v66Ev();
extern void _ZN7S2295C33v67Ev();
extern void _ZN7S2295C33v68Ev();
extern void _ZN7S2295C33v69Ev();
extern void _ZN7S2295C33v70Ev();
extern void _ZN7S2295C33v71Ev();
extern void _ZN7S2295C33v72Ev();
extern void _ZN7S2295C33v73Ev();
extern void _ZN7S2295C33v74Ev();
extern void _ZN7S2295C33v75Ev();
extern void _ZN7S2295C33v76Ev();
extern void _ZN7S2295C33v77Ev();
extern void _ZN7S2295C33v78Ev();
extern void _ZN7S2295C33v79Ev();
extern void _ZN7S2295C33v80Ev();
extern void _ZN7S2295C33v81Ev();
extern void _ZN7S2295C33v82Ev();
extern void _ZN7S2295C33v83Ev();
extern void _ZN7S2295C33v84Ev();
extern void _ZN7S2295C33v85Ev();
extern void _ZN7S2295C33v86Ev();
extern void _ZN7S2295C33v87Ev();
extern void _ZN7S2295C33v88Ev();
extern void _ZN7S2295C33v89Ev();
extern void _ZN7S2295C33v90Ev();
extern void _ZN7S2295C33v91Ev();
extern void _ZN7S2295C33v92Ev();
extern void _ZN7S2295C33v93Ev();
extern void _ZN7S2295C33v94Ev();
extern void _ZN7S2295C33v95Ev();
extern void _ZN7S2295C33v96Ev();
extern void _ZN7S2295C33v97Ev();
extern void _ZN7S2295C33v98Ev();
extern void _ZN7S2295C33v99Ev();
extern void _ZN7S2295C24v100Ev();
extern void _ZN7S2295C24v101Ev();
extern void _ZN7S2295C24v102Ev();
static  VTBL_ENTRY vtc_S2295C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2295C2[0]),
  (VTBL_ENTRY)&_ZN7S2295C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2295C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2295C24v100Ev,
  (VTBL_ENTRY)&_ZN7S2295C24v101Ev,
  (VTBL_ENTRY)&_ZN7S2295C24v102Ev,
};
extern VTBL_ENTRY _ZTI7S2295C2[];
extern  VTBL_ENTRY _ZTV7S2295C2[];
Class_Descriptor cd_S2295C2 = {  "S2295C2", // class name
  bases_S2295C2, 2,
  &(vtc_S2295C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2295C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2295C2),58, //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  S2295C1  : S2295C2 {
  virtual  ~S2295C1(); // _ZN7S2295C1D1Ev
  virtual void  v1(); // _ZN7S2295C12v1Ev
  virtual void  v2(); // _ZN7S2295C12v2Ev
  virtual void  v3(); // _ZN7S2295C12v3Ev
  virtual void  v4(); // _ZN7S2295C12v4Ev
  virtual void  v5(); // _ZN7S2295C12v5Ev
  virtual void  v6(); // _ZN7S2295C12v6Ev
  virtual void  v7(); // _ZN7S2295C12v7Ev
  virtual void  v8(); // _ZN7S2295C12v8Ev
  virtual void  v9(); // _ZN7S2295C12v9Ev
  virtual void  v10(); // _ZN7S2295C13v10Ev
  virtual void  v11(); // _ZN7S2295C13v11Ev
  virtual void  v12(); // _ZN7S2295C13v12Ev
  virtual void  v13(); // _ZN7S2295C13v13Ev
  virtual void  v14(); // _ZN7S2295C13v14Ev
  virtual void  v15(); // _ZN7S2295C13v15Ev
  virtual void  v16(); // _ZN7S2295C13v16Ev
  virtual void  v17(); // _ZN7S2295C13v17Ev
  virtual void  v18(); // _ZN7S2295C13v18Ev
  virtual void  v19(); // _ZN7S2295C13v19Ev
  virtual void  v20(); // _ZN7S2295C13v20Ev
  virtual void  v21(); // _ZN7S2295C13v21Ev
  virtual void  v22(); // _ZN7S2295C13v22Ev
  virtual void  v23(); // _ZN7S2295C13v23Ev
  virtual void  v24(); // _ZN7S2295C13v24Ev
  virtual void  v25(); // _ZN7S2295C13v25Ev
  virtual void  v26(); // _ZN7S2295C13v26Ev
  virtual void  v27(); // _ZN7S2295C13v27Ev
  virtual void  v28(); // _ZN7S2295C13v28Ev
  virtual void  v29(); // _ZN7S2295C13v29Ev
  virtual void  v30(); // _ZN7S2295C13v30Ev
  virtual void  v31(); // _ZN7S2295C13v31Ev
  virtual void  v32(); // _ZN7S2295C13v32Ev
  virtual void  v33(); // _ZN7S2295C13v33Ev
  virtual void  v34(); // _ZN7S2295C13v34Ev
  virtual void  v35(); // _ZN7S2295C13v35Ev
  virtual void  v36(); // _ZN7S2295C13v36Ev
  virtual void  v37(); // _ZN7S2295C13v37Ev
  virtual void  v38(); // _ZN7S2295C13v38Ev
  virtual void  v39(); // _ZN7S2295C13v39Ev
  virtual void  v40(); // _ZN7S2295C13v40Ev
  virtual void  v41(); // _ZN7S2295C13v41Ev
  virtual void  v42(); // _ZN7S2295C13v42Ev
  virtual void  v43(); // _ZN7S2295C13v43Ev
  virtual void  v44(); // _ZN7S2295C13v44Ev
  virtual void  v45(); // _ZN7S2295C13v45Ev
  virtual void  v46(); // _ZN7S2295C13v46Ev
  virtual void  v47(); // _ZN7S2295C13v47Ev
  virtual void  v48(); // _ZN7S2295C13v48Ev
  S2295C1(); // tgen
};
//SIG(1 S2295C1) C1{ BC2{ BC3{ BC4{ vd v49 v50 v51} vd v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99} vd v100 v101 v102 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FL[4]} Fc} 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}


 S2295C1 ::~S2295C1(){ note_dtor("S2295C1", this);}
void  S2295C1 ::v1(){vfunc_called(this, "_ZN7S2295C12v1Ev");}
void  S2295C1 ::v2(){vfunc_called(this, "_ZN7S2295C12v2Ev");}
void  S2295C1 ::v3(){vfunc_called(this, "_ZN7S2295C12v3Ev");}
void  S2295C1 ::v4(){vfunc_called(this, "_ZN7S2295C12v4Ev");}
void  S2295C1 ::v5(){vfunc_called(this, "_ZN7S2295C12v5Ev");}
void  S2295C1 ::v6(){vfunc_called(this, "_ZN7S2295C12v6Ev");}
void  S2295C1 ::v7(){vfunc_called(this, "_ZN7S2295C12v7Ev");}
void  S2295C1 ::v8(){vfunc_called(this, "_ZN7S2295C12v8Ev");}
void  S2295C1 ::v9(){vfunc_called(this, "_ZN7S2295C12v9Ev");}
void  S2295C1 ::v10(){vfunc_called(this, "_ZN7S2295C13v10Ev");}
void  S2295C1 ::v11(){vfunc_called(this, "_ZN7S2295C13v11Ev");}
void  S2295C1 ::v12(){vfunc_called(this, "_ZN7S2295C13v12Ev");}
void  S2295C1 ::v13(){vfunc_called(this, "_ZN7S2295C13v13Ev");}
void  S2295C1 ::v14(){vfunc_called(this, "_ZN7S2295C13v14Ev");}
void  S2295C1 ::v15(){vfunc_called(this, "_ZN7S2295C13v15Ev");}
void  S2295C1 ::v16(){vfunc_called(this, "_ZN7S2295C13v16Ev");}
void  S2295C1 ::v17(){vfunc_called(this, "_ZN7S2295C13v17Ev");}
void  S2295C1 ::v18(){vfunc_called(this, "_ZN7S2295C13v18Ev");}
void  S2295C1 ::v19(){vfunc_called(this, "_ZN7S2295C13v19Ev");}
void  S2295C1 ::v20(){vfunc_called(this, "_ZN7S2295C13v20Ev");}
void  S2295C1 ::v21(){vfunc_called(this, "_ZN7S2295C13v21Ev");}
void  S2295C1 ::v22(){vfunc_called(this, "_ZN7S2295C13v22Ev");}
void  S2295C1 ::v23(){vfunc_called(this, "_ZN7S2295C13v23Ev");}
void  S2295C1 ::v24(){vfunc_called(this, "_ZN7S2295C13v24Ev");}
void  S2295C1 ::v25(){vfunc_called(this, "_ZN7S2295C13v25Ev");}
void  S2295C1 ::v26(){vfunc_called(this, "_ZN7S2295C13v26Ev");}
void  S2295C1 ::v27(){vfunc_called(this, "_ZN7S2295C13v27Ev");}
void  S2295C1 ::v28(){vfunc_called(this, "_ZN7S2295C13v28Ev");}
void  S2295C1 ::v29(){vfunc_called(this, "_ZN7S2295C13v29Ev");}
void  S2295C1 ::v30(){vfunc_called(this, "_ZN7S2295C13v30Ev");}
void  S2295C1 ::v31(){vfunc_called(this, "_ZN7S2295C13v31Ev");}
void  S2295C1 ::v32(){vfunc_called(this, "_ZN7S2295C13v32Ev");}
void  S2295C1 ::v33(){vfunc_called(this, "_ZN7S2295C13v33Ev");}
void  S2295C1 ::v34(){vfunc_called(this, "_ZN7S2295C13v34Ev");}
void  S2295C1 ::v35(){vfunc_called(this, "_ZN7S2295C13v35Ev");}
void  S2295C1 ::v36(){vfunc_called(this, "_ZN7S2295C13v36Ev");}
void  S2295C1 ::v37(){vfunc_called(this, "_ZN7S2295C13v37Ev");}
void  S2295C1 ::v38(){vfunc_called(this, "_ZN7S2295C13v38Ev");}
void  S2295C1 ::v39(){vfunc_called(this, "_ZN7S2295C13v39Ev");}
void  S2295C1 ::v40(){vfunc_called(this, "_ZN7S2295C13v40Ev");}
void  S2295C1 ::v41(){vfunc_called(this, "_ZN7S2295C13v41Ev");}
void  S2295C1 ::v42(){vfunc_called(this, "_ZN7S2295C13v42Ev");}
void  S2295C1 ::v43(){vfunc_called(this, "_ZN7S2295C13v43Ev");}
void  S2295C1 ::v44(){vfunc_called(this, "_ZN7S2295C13v44Ev");}
void  S2295C1 ::v45(){vfunc_called(this, "_ZN7S2295C13v45Ev");}
void  S2295C1 ::v46(){vfunc_called(this, "_ZN7S2295C13v46Ev");}
void  S2295C1 ::v47(){vfunc_called(this, "_ZN7S2295C13v47Ev");}
void  S2295C1 ::v48(){vfunc_called(this, "_ZN7S2295C13v48Ev");}
S2295C1 ::S2295C1(){ note_ctor("S2295C1", this);} // tgen

static void Test_S2295C1()
{
  extern Class_Descriptor cd_S2295C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2295C1, buf);
    S2295C1 *dp, &lv = *(dp=new (buf) S2295C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2295C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2295C1)");
    check_base_class_offset(lv, (S2295C4*)(S2295C3*)(S2295C2*), 0, "S2295C1");
    check_base_class_offset(lv, (S2295C3*)(S2295C2*), 0, "S2295C1");
    check_base_class_offset(lv, (S2295C2*), 0, "S2295C1");
    test_class_info(&lv, &cd_S2295C1);
    dp->~S2295C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2295C1(Test_S2295C1, "S2295C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2295C1C1Ev();
extern void _ZN7S2295C1D1Ev();
Name_Map name_map_S2295C1[] = {
  NSPAIR(_ZN7S2295C1C1Ev),
  NSPAIR(_ZN7S2295C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2295C4;
extern VTBL_ENTRY _ZTI7S2295C4[];
extern  VTBL_ENTRY _ZTV7S2295C4[];
extern Class_Descriptor cd_S2295C3;
extern VTBL_ENTRY _ZTI7S2295C3[];
extern  VTBL_ENTRY _ZTV7S2295C3[];
extern Class_Descriptor cd_S2295C2;
extern VTBL_ENTRY _ZTI7S2295C2[];
extern  VTBL_ENTRY _ZTV7S2295C2[];
static Base_Class bases_S2295C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2295C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2295C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2295C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2295C1[];
extern void _ZN7S2295C1D1Ev();
extern void _ZN7S2295C1D0Ev();
extern void _ZN7S2295C43v49Ev();
extern void _ZN7S2295C43v50Ev();
extern void _ZN7S2295C43v51Ev();
extern void _ZN7S2295C33v52Ev();
extern void _ZN7S2295C33v53Ev();
extern void _ZN7S2295C33v54Ev();
extern void _ZN7S2295C33v55Ev();
extern void _ZN7S2295C33v56Ev();
extern void _ZN7S2295C33v57Ev();
extern void _ZN7S2295C33v58Ev();
extern void _ZN7S2295C33v59Ev();
extern void _ZN7S2295C33v60Ev();
extern void _ZN7S2295C33v61Ev();
extern void _ZN7S2295C33v62Ev();
extern void _ZN7S2295C33v63Ev();
extern void _ZN7S2295C33v64Ev();
extern void _ZN7S2295C33v65Ev();
extern void _ZN7S2295C33v66Ev();
extern void _ZN7S2295C33v67Ev();
extern void _ZN7S2295C33v68Ev();
extern void _ZN7S2295C33v69Ev();
extern void _ZN7S2295C33v70Ev();
extern void _ZN7S2295C33v71Ev();
extern void _ZN7S2295C33v72Ev();
extern void _ZN7S2295C33v73Ev();
extern void _ZN7S2295C33v74Ev();
extern void _ZN7S2295C33v75Ev();
extern void _ZN7S2295C33v76Ev();
extern void _ZN7S2295C33v77Ev();
extern void _ZN7S2295C33v78Ev();
extern void _ZN7S2295C33v79Ev();
extern void _ZN7S2295C33v80Ev();
extern void _ZN7S2295C33v81Ev();
extern void _ZN7S2295C33v82Ev();
extern void _ZN7S2295C33v83Ev();
extern void _ZN7S2295C33v84Ev();
extern void _ZN7S2295C33v85Ev();
extern void _ZN7S2295C33v86Ev();
extern void _ZN7S2295C33v87Ev();
extern void _ZN7S2295C33v88Ev();
extern void _ZN7S2295C33v89Ev();
extern void _ZN7S2295C33v90Ev();
extern void _ZN7S2295C33v91Ev();
extern void _ZN7S2295C33v92Ev();
extern void _ZN7S2295C33v93Ev();
extern void _ZN7S2295C33v94Ev();
extern void _ZN7S2295C33v95Ev();
extern void _ZN7S2295C33v96Ev();
extern void _ZN7S2295C33v97Ev();
extern void _ZN7S2295C33v98Ev();
extern void _ZN7S2295C33v99Ev();
extern void _ZN7S2295C24v100Ev();
extern void _ZN7S2295C24v101Ev();
extern void _ZN7S2295C24v102Ev();
extern void _ZN7S2295C12v1Ev();
extern void _ZN7S2295C12v2Ev();
extern void _ZN7S2295C12v3Ev();
extern void _ZN7S2295C12v4Ev();
extern void _ZN7S2295C12v5Ev();
extern void _ZN7S2295C12v6Ev();
extern void _ZN7S2295C12v7Ev();
extern void _ZN7S2295C12v8Ev();
extern void _ZN7S2295C12v9Ev();
extern void _ZN7S2295C13v10Ev();
extern void _ZN7S2295C13v11Ev();
extern void _ZN7S2295C13v12Ev();
extern void _ZN7S2295C13v13Ev();
extern void _ZN7S2295C13v14Ev();
extern void _ZN7S2295C13v15Ev();
extern void _ZN7S2295C13v16Ev();
extern void _ZN7S2295C13v17Ev();
extern void _ZN7S2295C13v18Ev();
extern void _ZN7S2295C13v19Ev();
extern void _ZN7S2295C13v20Ev();
extern void _ZN7S2295C13v21Ev();
extern void _ZN7S2295C13v22Ev();
extern void _ZN7S2295C13v23Ev();
extern void _ZN7S2295C13v24Ev();
extern void _ZN7S2295C13v25Ev();
extern void _ZN7S2295C13v26Ev();
extern void _ZN7S2295C13v27Ev();
extern void _ZN7S2295C13v28Ev();
extern void _ZN7S2295C13v29Ev();
extern void _ZN7S2295C13v30Ev();
extern void _ZN7S2295C13v31Ev();
extern void _ZN7S2295C13v32Ev();
extern void _ZN7S2295C13v33Ev();
extern void _ZN7S2295C13v34Ev();
extern void _ZN7S2295C13v35Ev();
extern void _ZN7S2295C13v36Ev();
extern void _ZN7S2295C13v37Ev();
extern void _ZN7S2295C13v38Ev();
extern void _ZN7S2295C13v39Ev();
extern void _ZN7S2295C13v40Ev();
extern void _ZN7S2295C13v41Ev();
extern void _ZN7S2295C13v42Ev();
extern void _ZN7S2295C13v43Ev();
extern void _ZN7S2295C13v44Ev();
extern void _ZN7S2295C13v45Ev();
extern void _ZN7S2295C13v46Ev();
extern void _ZN7S2295C13v47Ev();
extern void _ZN7S2295C13v48Ev();
static  VTBL_ENTRY vtc_S2295C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2295C1[0]),
  (VTBL_ENTRY)&_ZN7S2295C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2295C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2295C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v52Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v53Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v54Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v55Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v56Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v57Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v58Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v59Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v60Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v61Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v62Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v63Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v64Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v65Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v66Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v67Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v68Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v69Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v70Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v71Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v72Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v73Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v74Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v75Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v76Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v77Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v78Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v79Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v80Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v81Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v82Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v83Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v84Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v85Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v86Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v87Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v88Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v89Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v90Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v91Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v92Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v93Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v94Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v95Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2295C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2295C24v100Ev,
  (VTBL_ENTRY)&_ZN7S2295C24v101Ev,
  (VTBL_ENTRY)&_ZN7S2295C24v102Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2295C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v15Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v16Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v17Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v18Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v19Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v20Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v21Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v22Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v23Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v24Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v25Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v26Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v27Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v28Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v29Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v30Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v31Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v32Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v33Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v34Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v35Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v36Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v37Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v38Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v39Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v40Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v41Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v42Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v43Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v44Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v45Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v46Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v47Ev,
  (VTBL_ENTRY)&_ZN7S2295C13v48Ev,
};
extern VTBL_ENTRY _ZTI7S2295C1[];
extern  VTBL_ENTRY _ZTV7S2295C1[];
Class_Descriptor cd_S2295C1 = {  "S2295C1", // class name
  bases_S2295C1, 3,
  &(vtc_S2295C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2295C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2295C1),106, //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  S5719C2  {
  long double s5719c2f0;
  int s5719c2f1;
  ::S7223C9_nt s5719c2f2;
  void  mf5719c2(); // _ZN7S5719C28mf5719c2Ev
};
//SIG(-1 S5719C2) C1{ m FD Fi FC2{}}


void  S5719C2 ::mf5719c2(){}

static void Test_S5719C2()
{
  {
    init_simple_test("S5719C2");
    S5719C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5719C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C2)");
    check_field_offset(lv, s5719c2f0, 0, "S5719C2.s5719c2f0");
    check_field_offset(lv, s5719c2f1, ABISELECT(16,12), "S5719C2.s5719c2f1");
    check_field_offset(lv, s5719c2f2, ABISELECT(20,16), "S5719C2.s5719c2f2");
  }
}
static Arrange_To_Call_Me vS5719C2(Test_S5719C2, "S5719C2", ABISELECT(32,20));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S5719C2[];
VTBL_ENTRY *P__ZTI7S5719C2 = _ZTI7S5719C2; 
Class_Descriptor cd_S5719C2 = {  "S5719C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S5719C2),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  S5719C8_nt  : virtual S1538C28_nt {
  virtual void  v4(); // _ZN10S5719C8_nt2v4Ev
  ~S5719C8_nt(); // tgen
  S5719C8_nt(); // tgen
};
//SIG(-1 S5719C8_nt) C1{ VBC2{ m} v1}


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

//skip512 S5719C8_nt

#else // __cplusplus

extern void _ZN10S5719C8_ntC1Ev();
extern void _ZN10S5719C8_ntD1Ev();
Name_Map name_map_S5719C8_nt[] = {
  NSPAIR(_ZN10S5719C8_ntC1Ev),
  NSPAIR(_ZN10S5719C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S5719C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S5719C8_nt[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY vtc_S5719C8_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern VTBL_ENTRY _ZTV10S5719C8_nt[];
static  VTT_ENTRY vtt_S5719C8_nt[] = {
  {&(_ZTV10S5719C8_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
VTBL_ENTRY *P__ZTI10S5719C8_nt = _ZTI10S5719C8_nt; 
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
Class_Descriptor cd_S5719C8_nt = {  "S5719C8_nt", // class name
  bases_S5719C8_nt, 1,
  &(vtc_S5719C8_nt[0]), // expected_vtbl_contents
  &(vtt_S5719C8_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5719C8_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S5719C8_nt),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S5719C8_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  S5719C7  : S1538C28_nt , S5719C8_nt {
  int s5719c7f0[2];
  virtual void  v5(); // _ZN7S5719C72v5Ev
  ~S5719C7(); // tgen
  S5719C7(); // tgen
};
//SIG(-1 S5719C7) C1{ BC2{ m} BC3{ VBC2 v2} v1 Fi[2]}


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

static void Test_S5719C7()
{
  extern Class_Descriptor cd_S5719C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S5719C7, buf);
    S5719C7 *dp, &lv = *(dp=new (buf) S5719C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S5719C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5719C7)");
    /*is_ambiguous_... S5719C7::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S5719C7");
    check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), ABISELECT(16,12), "S5719C7");
    check_base_class_offset(lv, (S5719C8_nt*), 0, "S5719C7");
    check_field_offset(lv, s5719c7f0, ABISELECT(8,4), "S5719C7.s5719c7f0");
    test_class_info(&lv, &cd_S5719C7);
    dp->~S5719C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C7(Test_S5719C7, "S5719C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S5719C7C1Ev();
extern void _ZN7S5719C7D1Ev();
Name_Map name_map_S5719C7[] = {
  NSPAIR(_ZN7S5719C7C1Ev),
  NSPAIR(_ZN7S5719C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
static Base_Class bases_S5719C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_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
    2, //immediately_derived
  0, 1},
  {&cd_S5719C8_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 _ZTI7S5719C7[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY vtc_S5719C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern VTBL_ENTRY _ZTV7S5719C7[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__7S5719C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C7[] = {
  {&(_ZTV7S5719C7[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt__7S5719C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
Class_Descriptor cd_S5719C7 = {  "S5719C7", // class name
  bases_S5719C7, 3,
  &(vtc_S5719C7[0]), // expected_vtbl_contents
  &(vtt_S5719C7[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S5719C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5719C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5719C7),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  S5719C9  : virtual S1538C28_nt , virtual S5719C7 , S5719C8_nt {
  int s5719c9f0[2];
  void *s5719c9f1[3];
  ~S5719C9(); // tgen
  S5719C9(); // tgen
};
//SIG(-1 S5719C9) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC4 Fi[2] Fp[3]}


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

static void Test_S5719C9()
{
  extern Class_Descriptor cd_S5719C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S5719C9, buf);
    S5719C9 *dp, &lv = *(dp=new (buf) S5719C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S5719C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5719C9)");
    /*is_ambiguous_... S5719C9::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S5719C9");
    check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), 0, "S5719C9");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), 0, "S5719C9");
    /*is_ambiguous_... S5719C7::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(40,24), "S5719C9");
    check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(40,24), "S5719C9");
    check_base_class_offset(lv, (S5719C7*), ABISELECT(40,24), "S5719C9");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*), 0, "S5719C9");
    check_field_offset(lv, s5719c9f0, ABISELECT(8,4), "S5719C9.s5719c9f0");
    check_field_offset(lv, s5719c9f1, ABISELECT(16,12), "S5719C9.s5719c9f1");
    test_class_info(&lv, &cd_S5719C9);
    dp->~S5719C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C9(Test_S5719C9, "S5719C9", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S5719C9C1Ev();
extern void _ZN7S5719C9D1Ev();
Name_Map name_map_S5719C9[] = {
  NSPAIR(_ZN7S5719C9C1Ev),
  NSPAIR(_ZN7S5719C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
static Base_Class bases_S5719C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C28_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(40,24), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(40,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C8_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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5719C9[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY vtc_S5719C9[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern VTBL_ENTRY _ZTV7S5719C9[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A1__7S5719C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__7S5719C9[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C9[] = {
  {&(_ZTV7S5719C9[4]),  4,12},
  {&(_tg__ZTV10S5719C8_nt__A1__7S5719C9[3]),  3,4},
  {&(_ZTV7S5719C9[10]),  10,12},
  {&(_tg__ZTV7S5719C7__7S5719C9[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__7S5719C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
Class_Descriptor cd_S5719C9 = {  "S5719C9", // class name
  bases_S5719C9, 5,
  &(vtc_S5719C9[0]), // expected_vtbl_contents
  &(vtt_S5719C9[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S5719C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5719C9),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5719C9),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C5  : S1538C28_nt , S5719C7 , S5719C9 , S5719C8_nt {
  int s5719c5f0[2];
  ~S5719C5(); // tgen
  S5719C5(); // tgen
};
//SIG(-1 S5719C5) C1{ BC2{ m} BC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC5{ VBC2 VBC3 BC4 Fi[2] Fp[3]} BC4 Fi[2]}


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

static void Test_S5719C5()
{
  extern Class_Descriptor cd_S5719C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S5719C5, buf);
    S5719C5 *dp, &lv = *(dp=new (buf) S5719C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S5719C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5719C5)");
    /*is_ambiguous_... S5719C5::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), ABISELECT(16,12), "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), 0, "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(72,48), "S5719C5");
    /*is_ambiguous_... S5719C9::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*), ABISELECT(72,48), "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(72,48), "S5719C5");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*), ABISELECT(72,48), "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), ABISELECT(72,48), "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), 0, "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*), 0, "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(80,52), "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(80,52), "S5719C5");
    check_base_class_offset(lv, (S5719C7*)(S5719C9*), ABISELECT(80,52), "S5719C5");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*), ABISELECT(16,12), "S5719C5");
    check_base_class_offset(lv, (S5719C9*), ABISELECT(16,12), "S5719C5");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*), ABISELECT(56,36), "S5719C5");
    check_field_offset(lv, s5719c5f0, ABISELECT(64,40), "S5719C5.s5719c5f0");
    test_class_info(&lv, &cd_S5719C5);
    dp->~S5719C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C5(Test_S5719C5, "S5719C5", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S5719C5C1Ev();
extern void _ZN7S5719C5D1Ev();
Name_Map name_map_S5719C5[] = {
  NSPAIR(_ZN7S5719C5C1Ev),
  NSPAIR(_ZN7S5719C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
static Base_Class bases_S5719C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_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, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C28_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
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5719C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(80,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(16,12), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5719C8_nt,    ABISELECT(56,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5719C5[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY vtc_S5719C5[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(16,12),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern VTBL_ENTRY _ZTV7S5719C5[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__7S5719C5[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__7S5719C5[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C9__A2__7S5719C5[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9__7S5719C5[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A1__7S5719C5[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C5[] = {
  {&(_ZTV7S5719C5[4]),  4,22},
  {&(_tg__ZTV7S5719C7__A__7S5719C5[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__7S5719C5[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C9__A2__7S5719C5[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C9__7S5719C5[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5[3]),  3,4},
  {&(_ZTV7S5719C5[10]),  10,22},
  {&(_ZTV7S5719C5[20]),  20,22},
  {&(_ZTV7S5719C5[14]),  14,22},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A1__7S5719C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
Class_Descriptor cd_S5719C5 = {  "S5719C5", // class name
  bases_S5719C5, 11,
  &(vtc_S5719C5[0]), // expected_vtbl_contents
  &(vtt_S5719C5[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S5719C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5719C5),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5719C5),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C12  : S1538C28_nt , S5719C8_nt , virtual S5719C5 , S5719C9 , S5719C7 {
  ::S5719C7 s5719c12f0;
  short s5719c12f1;
  int s5719c12f2[2];
  void *s5719c12f3[3];
  ::S5719C5 s5719c12f4;
  virtual void  v6(); // _ZN8S5719C122v6Ev
  ~S5719C12(); // tgen
  S5719C12(); // tgen
};
//SIG(-1 S5719C12) C1{ BC2{ m} BC3{ VBC2 v2} VBC4{ BC2 BC5{ BC2 BC3 v3 Fi[2]} BC6{ VBC2 VBC5 BC3 Fi[2] Fp[3]} BC3 Fi[2]} BC6 BC5 v1 FC5 Fs Fi[2] Fp[3] FC4}


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

static void Test_S5719C12()
{
  extern Class_Descriptor cd_S5719C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S5719C12, buf);
    S5719C12 *dp, &lv = *(dp=new (buf) S5719C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S5719C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5719C12)");
    /*is_ambiguous_... S5719C12::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C9::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(224,144), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*), 0, "S5719C12");
    /*is_ambiguous_... S5719C5::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(248,160), "S5719C12");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), ABISELECT(232,148), "S5719C12");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(232,148), "S5719C12");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), ABISELECT(232,148), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(304,196), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(304,196), "S5719C12");
    check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(304,196), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*), ABISELECT(304,196), "S5719C12");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(248,160), "S5719C12");
    check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(248,160), "S5719C12");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(288,184), "S5719C12");
    check_base_class_offset(lv, (S5719C5*), ABISELECT(232,148), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*), ABISELECT(8,4), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*), ABISELECT(8,4), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(48,28), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(48,28), "S5719C12");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*), ABISELECT(48,28), "S5719C12");
    check_field_offset(lv, s5719c12f0, ABISELECT(64,40), "S5719C12.s5719c12f0");
    check_field_offset(lv, s5719c12f1, ABISELECT(88,56), "S5719C12.s5719c12f1");
    check_field_offset(lv, s5719c12f2, ABISELECT(92,60), "S5719C12.s5719c12f2");
    check_field_offset(lv, s5719c12f3, ABISELECT(104,68), "S5719C12.s5719c12f3");
    check_field_offset(lv, s5719c12f4, ABISELECT(128,80), "S5719C12.s5719c12f4");
    test_class_info(&lv, &cd_S5719C12);
    dp->~S5719C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C12(Test_S5719C12, "S5719C12", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN8S5719C12C1Ev();
extern void _ZN8S5719C12D1Ev();
Name_Map name_map_S5719C12[] = {
  NSPAIR(_ZN8S5719C12C1Ev),
  NSPAIR(_ZN8S5719C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
static Base_Class bases_S5719C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S5719C8_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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    ABISELECT(248,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
    13, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(304,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(248,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(288,184), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(232,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C8_nt,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_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
    18, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5719C12[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY vtc_S5719C12[] = {
  ABISELECT(304,196),
  ABISELECT(232,148),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
  ABISELECT(296,192),
  ABISELECT(216,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(176,116),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-64,-40),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S5719C12[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__8S5719C12[] = {
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__A1__8S5719C12[] = {
  ABISELECT(296,192),
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C9__A5__8S5719C12[] = {
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9__A1__8S5719C12[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__8S5719C12[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A6__8S5719C12[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C12[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__8S5719C12[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__A1__8S5719C12[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C12[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A3__8S5719C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__8S5719C12[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__8S5719C12[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__8S5719C12[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__8S5719C12[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C12[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A2__8S5719C12[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C12[] = {
  {&(_ZTV8S5719C12[5]),  5,41},
  {&(_tg__ZTV10S5719C8_nt__8S5719C12[3]),  3,4},
  {&(_tg__ZTV7S5719C9__A1__8S5719C12[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C9__A5__8S5719C12[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C9__A1__8S5719C12[5]),  5,7},
  {&(_tg__ZTV7S5719C7__A__8S5719C12[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A6__8S5719C12[3]),  3,4},
  {&(_ZTV8S5719C12[23]),  23,41},
  {&(_ZTV8S5719C12[29]),  29,41},
  {&(_ZTV8S5719C12[39]),  39,41},
  {&(_ZTV8S5719C12[33]),  33,41},
  {&(_ZTV8S5719C12[11]),  11,41},
  {&(_ZTV8S5719C12[15]),  15,41},
  {&(_tg__ZTV7S5719C5__8S5719C12[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__8S5719C12[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__A1__8S5719C12[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C12[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A3__8S5719C12[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__8S5719C12[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__8S5719C12[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__8S5719C12[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__8S5719C12[3]),  3,4},
  {&(_tg__ZTV7S5719C7__A1__8S5719C12[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A2__8S5719C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S5719C12[];
extern  VTBL_ENTRY _ZTV8S5719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C12[];
Class_Descriptor cd_S5719C12 = {  "S5719C12", // class name
  bases_S5719C12, 19,
  &(vtc_S5719C12[0]), // expected_vtbl_contents
  &(vtt_S5719C12[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI8S5719C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S5719C12),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5719C12),25, //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  S5719C11  : S5719C7 , virtual S5719C9 , S5719C5 , virtual S5719C12 {
  char s5719c11f0;
  short s5719c11f1[7];
  ~S5719C11(); // tgen
  S5719C11(); // tgen
};
//SIG(-1 S5719C11) C1{ BC2{ BC3{ m} BC4{ VBC3 v1} v2 Fi[2]} VBC5{ VBC3 VBC2 BC4 Fi[2] Fp[3]} BC6{ BC3 BC2 BC5 BC4 Fi[2]} VBC7{ BC3 BC4 VBC6 BC5 BC2 v3 FC2 Fs Fi[2] Fp[3] FC6} Fc Fs[7]}


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

static void Test_S5719C11()
{
  extern Class_Descriptor cd_S5719C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(58,77)];
    init_test(&cd_S5719C11, buf);
    S5719C11 *dp, &lv = *(dp=new (buf) S5719C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(456,304), "sizeof(S5719C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5719C11)");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), 0, "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C12*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C12*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C12*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C12*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), 0, "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*), 0, "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(144,100), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(144,100), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*), ABISELECT(144,100), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(144,100), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(144,100), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C12*), ABISELECT(144,100), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*), ABISELECT(104,76), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(32,24), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), ABISELECT(16,12), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(16,12), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), ABISELECT(16,12), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(32,24), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(32,24), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(72,48), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C5*), ABISELECT(16,12), "S5719C11");
    /*is_ambiguous_... S5719C12::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C12*), ABISELECT(160,112), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C12*), ABISELECT(160,112), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(400,268), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), ABISELECT(384,256), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(384,256), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), ABISELECT(384,256), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(400,268), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(400,268), "S5719C11");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(440,292), "S5719C11");
    check_base_class_offset(lv, (S5719C5*)(S5719C12*), ABISELECT(384,256), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C12*), ABISELECT(168,116), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C12*), ABISELECT(168,116), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C12*), ABISELECT(208,140), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C12*), ABISELECT(208,140), "S5719C11");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C12*), ABISELECT(208,140), "S5719C11");
    check_base_class_offset(lv, (S5719C12*), ABISELECT(160,112), "S5719C11");
    check_field_offset(lv, s5719c11f0, ABISELECT(88,60), "S5719C11.s5719c11f0");
    check_field_offset(lv, s5719c11f1, ABISELECT(90,62), "S5719C11.s5719c11f1");
    test_class_info(&lv, &cd_S5719C11);
    dp->~S5719C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C11(Test_S5719C11, "S5719C11", ABISELECT(456,304));

#else // __cplusplus

extern void _ZN8S5719C11C1Ev();
extern void _ZN8S5719C11D1Ev();
Name_Map name_map_S5719C11[] = {
  NSPAIR(_ZN8S5719C11C1Ev),
  NSPAIR(_ZN8S5719C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C12;
extern VTBL_ENTRY _ZTI8S5719C12[];
extern  VTBL_ENTRY _ZTV8S5719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C12[];
static Base_Class bases_S5719C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5719C7,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    ABISELECT(144,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, 0},
  {&cd_S5719C8_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(144,100), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(104,76), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C28_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
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1538C28_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_S5719C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(16,12), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(32,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(72,48), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(400,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
    26, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(384,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
    22, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(384,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(384,256), //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(400,268), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(400,268), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(440,292), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(384,256), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(168,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(168,116), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(208,140), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S5719C12,    ABISELECT(160,112), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S5719C11[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY vtc_S5719C11[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(128,88),
  ABISELECT(88,64),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(32,28),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-104,-64),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-336,-216),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern VTBL_ENTRY _ZTV8S5719C11[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__8S5719C11[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__8S5719C11[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A__8S5719C11[] = {
  ABISELECT(128,88),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__A2__8S5719C11[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__A3__8S5719C11[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A1__8S5719C11[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A4__8S5719C11[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__A1__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A5__8S5719C11[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__A__8S5719C11[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__A__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__A__8S5719C11[] = {
  ABISELECT(32,28),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__8S5719C11[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C9__A2__8S5719C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C11[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A1__8S5719C11[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt8S5719C12__A6__8S5719C11[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A3__8S5719C11[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C98S5719C12__A10__8S5719C11[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C98S5719C12__A3__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A4__8S5719C11[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C78S5719C12__A11__8S5719C11[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C12__8S5719C11[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C11[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C12__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C11[] = {
  ABISELECT(-336,-216),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__A1__8S5719C12__8S5719C11[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__8S5719C12__8S5719C11[] = {
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A1__8S5719C11[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__A3__8S5719C11[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__A7__8S5719C11[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A2__8S5719C11[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A8__8S5719C11[] = {
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__A2__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C11[] = {
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__A1__8S5719C11[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__A1__8S5719C11[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__A1__8S5719C11[] = {
  ABISELECT(-336,-216),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C11[] = {
  {&(_ZTV8S5719C11[7]),  7,74},
  {&(_tg__ZTV7S5719C7__A__8S5719C11[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C5__A__8S5719C11[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__A2__8S5719C11[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__A3__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__A1__8S5719C11[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A4__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__A1__8S5719C11[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A5__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__A__8S5719C11[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__A__8S5719C11[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__A__8S5719C11[3]),  3,4},
  {&(_ZTV8S5719C11[29]),  29,74},
  {&(_ZTV8S5719C11[35]),  35,74},
  {&(_ZTV8S5719C11[13]),  13,74},
  {&(_ZTV8S5719C11[19]),  19,74},
  {&(_ZTV8S5719C11[23]),  23,74},
  {&(_ZTV8S5719C11[45]),  45,74},
  {&(_ZTV8S5719C11[63]),  63,74},
  {&(_ZTV8S5719C11[69]),  69,74},
  {&(_ZTV8S5719C11[73]),  73,74},
  {&(_ZTV8S5719C11[51]),  51,74},
  {&(_ZTV8S5719C11[55]),  55,74},
  {&(_tg__ZTV7S5719C9__8S5719C11[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C9__A2__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C9__8S5719C11[5]),  5,7},
  {&(_tg__ZTV7S5719C7__A1__8S5719C11[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A1__8S5719C11[3]),  3,4},
  {&(_tg__ZTV8S5719C12__8S5719C11[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt8S5719C12__A6__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A3__8S5719C11[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C98S5719C12__A10__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C98S5719C12__A3__8S5719C11[5]),  5,7},
  {&(_tg__ZTV7S5719C78S5719C12__A4__8S5719C11[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C78S5719C12__A11__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C5__8S5719C12__8S5719C11[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C11[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__8S5719C12__8S5719C11[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C9__A1__8S5719C12__8S5719C11[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A__8S5719C12__8S5719C11[3]),  3,5},
  {&(_tg__ZTV7S5719C5__A1__8S5719C11[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__A3__8S5719C11[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__A7__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__A2__8S5719C11[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A8__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__A2__8S5719C11[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C11[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__A1__8S5719C11[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__A1__8S5719C11[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__A1__8S5719C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S5719C11[];
extern  VTBL_ENTRY _ZTV8S5719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C11[];
Class_Descriptor cd_S5719C11 = {  "S5719C11", // class name
  bases_S5719C11, 33,
  &(vtc_S5719C11[0]), // expected_vtbl_contents
  &(vtt_S5719C11[0]), // expected_vtt_contents
  ABISELECT(456,304), // object size
  NSPAIRA(_ZTI8S5719C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S5719C11),74, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5719C11),52, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C10  {
  ::S5719C5 s5719c10f0;
  char s5719c10f1;
  long double s5719c10f2[6];
  ::S5719C11 s5719c10f3[2];
  ::S5719C11 s5719c10f4;
  int s5719c10f5;
  void  mf5719c10(); // _ZN8S5719C109mf5719c10Ev
};
//SIG(-1 S5719C10) C1{ m FC2{ BC3{ m} BC4{ BC3 BC5{ VBC3 v1} v2 Fi[2]} BC6{ VBC3 VBC4 BC5 Fi[2] Fp[3]} BC5 Fi[2]} Fc FD[6] FC7{ BC4 VBC6 BC2 VBC8{ BC3 BC5 VBC2 BC6 BC4 v3 FC4 Fs Fi[2] Fp[3] FC2} Fc Fs[7]}[2] FC7 Fi}


void  S5719C10 ::mf5719c10(){}

static void Test_S5719C10()
{
  {
    init_simple_test("S5719C10");
    S5719C10 lv;
    check2(sizeof(lv), ABISELECT(1584,1056), "sizeof(S5719C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C10)");
    check_field_offset(lv, s5719c10f0, 0, "S5719C10.s5719c10f0");
    check_field_offset(lv, s5719c10f1, ABISELECT(96,64), "S5719C10.s5719c10f1");
    check_field_offset(lv, s5719c10f2, ABISELECT(112,68), "S5719C10.s5719c10f2");
    check_field_offset(lv, s5719c10f3, ABISELECT(208,140), "S5719C10.s5719c10f3");
    check_field_offset(lv, s5719c10f4, ABISELECT(1120,748), "S5719C10.s5719c10f4");
    check_field_offset(lv, s5719c10f5, ABISELECT(1576,1052), "S5719C10.s5719c10f5");
  }
}
static Arrange_To_Call_Me vS5719C10(Test_S5719C10, "S5719C10", ABISELECT(1584,1056));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5719C10[];
VTBL_ENTRY *P__ZTI8S5719C10 = _ZTI8S5719C10; 
Class_Descriptor cd_S5719C10 = {  "S5719C10", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(1584,1056), // object size
  NSPAIRA(_ZTI8S5719C10),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  S5719C4  : S5719C5 {
  ::S5719C2 s5719c4f0;
  int s5719c4f1[2];
  ::S5719C10 s5719c4f2;
  ::S7223C9_nt s5719c4f3;
  void *s5719c4f4;
  long double s5719c4f5;
  int s5719c4f6[2];
  virtual  ~S5719C4(); // _ZN7S5719C4D2Ev
  S5719C4(); // tgen
};
//SIG(-1 S5719C4) C1{ BC2{ BC3{ m} BC4{ BC3 BC5{ VBC3 v1} v2 Fi[2]} BC6{ VBC3 VBC4 BC5 Fi[2] Fp[3]} BC5 Fi[2]} vd FC7{ m FD Fi FC8{}} Fi[2] FC9{ m FC2 Fc FD[6] FC10{ BC4 VBC6 BC2 VBC11{ BC3 BC5 VBC2 BC6 BC4 v3 FC4 Fs Fi[2] Fp[3] FC2} Fc Fs[7]}[2] FC10 Fi} FC8 Fp FD Fi[2]}


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

static void Test_S5719C4()
{
  extern Class_Descriptor cd_S5719C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,295)];
    init_test(&cd_S5719C4, buf);
    S5719C4 *dp, &lv = *(dp=new (buf) S5719C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1176), "sizeof(S5719C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C4)");
    /*is_ambiguous_... S5719C5::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(16,12), "S5719C4");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), 0, "S5719C4");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(1752,1160), "S5719C4");
    /*is_ambiguous_... S5719C9::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), ABISELECT(1752,1160), "S5719C4");
    /*is_ambiguous_... S5719C4::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), ABISELECT(1752,1160), "S5719C4");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(1752,1160), "S5719C4");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), ABISELECT(1752,1160), "S5719C4");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), 0, "S5719C4");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), 0, "S5719C4");
    /*is_ambiguous_... S5719C4::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(1760,1164), "S5719C4");
    /*is_ambiguous_... S5719C4::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(1760,1164), "S5719C4");
    check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(1760,1164), "S5719C4");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(16,12), "S5719C4");
    check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(16,12), "S5719C4");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(56,36), "S5719C4");
    check_base_class_offset(lv, (S5719C5*), 0, "S5719C4");
    check_field_offset(lv, s5719c4f0, ABISELECT(80,48), "S5719C4.s5719c4f0");
    check_field_offset(lv, s5719c4f1, ABISELECT(112,68), "S5719C4.s5719c4f1");
    check_field_offset(lv, s5719c4f2, ABISELECT(128,76), "S5719C4.s5719c4f2");
    check_field_offset(lv, s5719c4f3, ABISELECT(1712,1132), "S5719C4.s5719c4f3");
    check_field_offset(lv, s5719c4f4, ABISELECT(1720,1136), "S5719C4.s5719c4f4");
    check_field_offset(lv, s5719c4f5, ABISELECT(1728,1140), "S5719C4.s5719c4f5");
    check_field_offset(lv, s5719c4f6, ABISELECT(1744,1152), "S5719C4.s5719c4f6");
    test_class_info(&lv, &cd_S5719C4);
    dp->~S5719C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C4(Test_S5719C4, "S5719C4", ABISELECT(1776,1176));

#else // __cplusplus

extern void _ZN7S5719C4C1Ev();
extern void _ZN7S5719C4D2Ev();
Name_Map name_map_S5719C4[] = {
  NSPAIR(_ZN7S5719C4C1Ev),
  NSPAIR(_ZN7S5719C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
static Base_Class bases_S5719C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_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_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C28_nt,    ABISELECT(1752,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5719C7,    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
    11, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(1760,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(1760,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(1760,1164), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(56,36), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5719C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5719C4[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN7S5719C4D1Ev();
extern void _ZN7S5719C4D0Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY vtc_S5719C4[] = {
  ABISELECT(1760,1164),
  ABISELECT(1752,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C4[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  (VTBL_ENTRY)&_ZN7S5719C4D1Ev,
  (VTBL_ENTRY)&_ZN7S5719C4D0Ev,
  ABISELECT(1744,1152),
  ABISELECT(1736,1148),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C4[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(1696,1124),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C4[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-1760,-1164),
  (VTBL_ENTRY)&(_ZTI7S5719C4[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern VTBL_ENTRY _ZTV7S5719C4[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__7S5719C4[] = {
  ABISELECT(1760,1164),
  ABISELECT(1752,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__7S5719C4[] = {
  ABISELECT(1752,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__7S5719C4[] = {
  ABISELECT(1752,1160),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__7S5719C4[] = {
  ABISELECT(1744,1152),
  ABISELECT(1736,1148),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A2__7S5719C4[] = {
  ABISELECT(1736,1148),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__7S5719C4[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-1744,-1152),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A3__7S5719C4[] = {
  ABISELECT(1696,1124),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__7S5719C4[] = {
  ABISELECT(1744,1152),
  ABISELECT(1736,1148),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__7S5719C4[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-1760,-1164),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__7S5719C4[] = {
  ABISELECT(1696,1124),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A1__7S5719C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C4[] = {
  {&(_ZTV7S5719C4[4]),  4,24},
  {&(_tg__ZTV7S5719C5__7S5719C4[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__7S5719C4[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__7S5719C4[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__7S5719C4[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A2__7S5719C4[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__7S5719C4[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A3__7S5719C4[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__7S5719C4[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__7S5719C4[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__7S5719C4[3]),  3,4},
  {&(_ZTV7S5719C4[12]),  12,24},
  {&(_ZTV7S5719C4[22]),  22,24},
  {&(_ZTV7S5719C4[16]),  16,24},
  {&(_tg__ZTV7S5719C7__A1__7S5719C4[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A1__7S5719C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5719C4[];
extern  VTBL_ENTRY _ZTV7S5719C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C4[];
Class_Descriptor cd_S5719C4 = {  "S5719C4", // class name
  bases_S5719C4, 12,
  &(vtc_S5719C4[0]), // expected_vtbl_contents
  &(vtt_S5719C4[0]), // expected_vtt_contents
  ABISELECT(1776,1176), // object size
  NSPAIRA(_ZTI7S5719C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5719C4),24, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5719C4),16, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C14  {
  ::S5719C2 s5719c14f0;
  int s5719c14f1[2];
  void  mf5719c14(); // _ZN8S5719C149mf5719c14Ev
};
//SIG(-1 S5719C14) C1{ m FC2{ m FD Fi FC3{}} Fi[2]}


void  S5719C14 ::mf5719c14(){}

static void Test_S5719C14()
{
  {
    init_simple_test("S5719C14");
    S5719C14 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S5719C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C14)");
    check_field_offset(lv, s5719c14f0, 0, "S5719C14.s5719c14f0");
    check_field_offset(lv, s5719c14f1, ABISELECT(32,20), "S5719C14.s5719c14f1");
  }
}
static Arrange_To_Call_Me vS5719C14(Test_S5719C14, "S5719C14", ABISELECT(48,28));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5719C14[];
VTBL_ENTRY *P__ZTI8S5719C14 = _ZTI8S5719C14; 
Class_Descriptor cd_S5719C14 = {  "S5719C14", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S5719C14),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  S5719C15  {
  __tsi64 s5719c15f0;
  void *s5719c15f1;
  long double s5719c15f2;
  ::S5719C9 s5719c15f3;
  int s5719c15f4[8];
  void  mf5719c15(); // _ZN8S5719C159mf5719c15Ev
};
//SIG(-1 S5719C15) C1{ m FL Fp FD FC2{ VBC3{ m} VBC4{ BC3 BC5{ VBC3 v1} v2 Fi[2]} BC5 Fi[2] Fp[3]} Fi[8]}


void  S5719C15 ::mf5719c15(){}

static void Test_S5719C15()
{
  {
    init_simple_test("S5719C15");
    S5719C15 lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S5719C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C15)");
    check_field_offset(lv, s5719c15f0, 0, "S5719C15.s5719c15f0");
    check_field_offset(lv, s5719c15f1, 8, "S5719C15.s5719c15f1");
    check_field_offset(lv, s5719c15f2, ABISELECT(16,12), "S5719C15.s5719c15f2");
    check_field_offset(lv, s5719c15f3, ABISELECT(32,24), "S5719C15.s5719c15f3");
    check_field_offset(lv, s5719c15f4, ABISELECT(88,60), "S5719C15.s5719c15f4");
  }
}
static Arrange_To_Call_Me vS5719C15(Test_S5719C15, "S5719C15", ABISELECT(128,92));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5719C15[];
VTBL_ENTRY *P__ZTI8S5719C15 = _ZTI8S5719C15; 
Class_Descriptor cd_S5719C15 = {  "S5719C15", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S5719C15),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  S5719C13  : S5719C2 , S5719C8_nt , virtual S5719C14 , virtual S5719C15 {
  void *s5719c13f0;
  ~S5719C13(); // tgen
  S5719C13(); // tgen
};
//SIG(-1 S5719C13) C1{ BC2{ m FD Fi FC3{}} BC4{ VBC5{ m} v1} VBC6{ m FC2 Fi[2]} VBC7{ m FL Fp FD FC8{ VBC5 VBC9{ BC5 BC4 v2 Fi[2]} BC4 Fi[2] Fp[3]} Fi[8]} Fp}


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

static void Test_S5719C13()
{
  extern Class_Descriptor cd_S5719C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S5719C13, buf);
    S5719C13 *dp, &lv = *(dp=new (buf) S5719C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S5719C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C13)");
    check_base_class_offset(lv, (S5719C2*), ABISELECT(16,4), "S5719C13");
    check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), 0, "S5719C13");
    check_base_class_offset(lv, (S5719C8_nt*), 0, "S5719C13");
    check_base_class_offset(lv, (S5719C14*), ABISELECT(64,28), "S5719C13");
    check_base_class_offset(lv, (S5719C15*), ABISELECT(112,56), "S5719C13");
    check_field_offset(lv, s5719c13f0, ABISELECT(48,24), "S5719C13.s5719c13f0");
    test_class_info(&lv, &cd_S5719C13);
    dp->~S5719C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C13(Test_S5719C13, "S5719C13", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN8S5719C13C1Ev();
extern void _ZN8S5719C13D1Ev();
Name_Map name_map_S5719C13[] = {
  NSPAIR(_ZN8S5719C13C1Ev),
  NSPAIR(_ZN8S5719C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5719C2;
extern VTBL_ENTRY _ZTI7S5719C2[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C14;
extern VTBL_ENTRY _ZTI8S5719C14[];
extern Class_Descriptor cd_S5719C15;
extern VTBL_ENTRY _ZTI8S5719C15[];
static Base_Class bases_S5719C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5719C2,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5719C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5719C14,    ABISELECT(64,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C15,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S5719C13[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY vtc_S5719C13[] = {
  ABISELECT(112,56),
  ABISELECT(64,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C13[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern VTBL_ENTRY _ZTV8S5719C13[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__8S5719C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C13[] = {
  {&(_ZTV8S5719C13[5]),  5,6},
  {&(_tg__ZTV10S5719C8_nt__8S5719C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S5719C13[];
extern  VTBL_ENTRY _ZTV8S5719C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C13[];
Class_Descriptor cd_S5719C13 = {  "S5719C13", // class name
  bases_S5719C13, 5,
  &(vtc_S5719C13[0]), // expected_vtbl_contents
  &(vtt_S5719C13[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI8S5719C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S5719C13),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5719C13),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  S5719C18  : virtual S1538C28_nt , virtual S5719C12 , S5719C9 {
  long double s5719c18f0;
  void *s5719c18f1[10];
  ~S5719C18(); // tgen
  S5719C18(); // tgen
};
//SIG(-1 S5719C18) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} VBC5{ BC2 BC6{ BC2 BC4 v2 Fi[2]} BC7{ VBC2 VBC6 BC4 Fi[2] Fp[3]} BC4 Fi[2]} BC7 BC6 v3 FC6 Fs Fi[2] Fp[3] FC5} BC7 FD Fp[10]}


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

static void Test_S5719C18()
{
  extern Class_Descriptor cd_S5719C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,71)];
    init_test(&cd_S5719C18, buf);
    S5719C18 *dp, &lv = *(dp=new (buf) S5719C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,280), "sizeof(S5719C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C18)");
    /*is_ambiguous_... S5719C18::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C12*), 0, "S5719C18");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), 0, "S5719C18");
    /*is_ambiguous_... S5719C9::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), 0, "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), 0, "S5719C18");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), 0, "S5719C18");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), 0, "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C12*), 0, "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C12*), 0, "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C12*), 0, "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*), 0, "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*), 0, "S5719C18");
    /*is_ambiguous_... S5719C12::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C12*), ABISELECT(144,76), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C12*), ABISELECT(144,76), "S5719C18");
    /*is_ambiguous_... S5719C5::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(384,232), "S5719C18");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), ABISELECT(368,220), "S5719C18");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(368,220), "S5719C18");
    /*is_ambiguous_... S5719C5::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), ABISELECT(368,220), "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(440,268), "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(440,268), "S5719C18");
    check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(440,268), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C12*), ABISELECT(440,268), "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*), ABISELECT(440,268), "S5719C18");
    /*is_ambiguous_... S5719C9::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(384,232), "S5719C18");
    check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(384,232), "S5719C18");
    /*is_ambiguous_... S5719C5::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(424,256), "S5719C18");
    check_base_class_offset(lv, (S5719C5*)(S5719C12*), ABISELECT(368,220), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C12*), ABISELECT(152,80), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C12*), ABISELECT(152,80), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C12*), ABISELECT(192,104), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C12*), ABISELECT(192,104), "S5719C18");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C12*), ABISELECT(192,104), "S5719C18");
    check_base_class_offset(lv, (S5719C12*), ABISELECT(144,76), "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*), 0, "S5719C18");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*), 0, "S5719C18");
    check_field_offset(lv, s5719c18f0, ABISELECT(48,24), "S5719C18.s5719c18f0");
    check_field_offset(lv, s5719c18f1, ABISELECT(64,36), "S5719C18.s5719c18f1");
    test_class_info(&lv, &cd_S5719C18);
    dp->~S5719C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C18(Test_S5719C18, "S5719C18", ABISELECT(464,280));

#else // __cplusplus

extern void _ZN8S5719C18C1Ev();
extern void _ZN8S5719C18D1Ev();
Name_Map name_map_S5719C18[] = {
  NSPAIR(_ZN8S5719C18C1Ev),
  NSPAIR(_ZN8S5719C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C12;
extern VTBL_ENTRY _ZTI8S5719C12[];
extern  VTBL_ENTRY _ZTV8S5719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C12[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
static Base_Class bases_S5719C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C28_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
    19, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(384,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
    13, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(368,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
    6, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(368,220), //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(368,220), //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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(440,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
    9, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(440,268), //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
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(440,268), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(384,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(384,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(424,256), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(368,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(152,80), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    18, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(192,104), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5719C12,    ABISELECT(144,76), //bcp->offset
    7, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S5719C9,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5719C18[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY vtc_S5719C18[] = {
  ABISELECT(368,220),
  ABISELECT(144,76),
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-424,-256),
  ABISELECT(-424,-256),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S5719C18[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__A2__8S5719C18[] = {
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C9__A7__8S5719C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9__A2__8S5719C18[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C18[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt8S5719C12__8S5719C18[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A1__8S5719C18[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C98S5719C12__A5__8S5719C18[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C98S5719C12__A1__8S5719C18[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A2__8S5719C18[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C78S5719C12__A6__8S5719C18[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C12__8S5719C18[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C18[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C12__8S5719C18[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C18[] = {
  ABISELECT(-424,-256),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__A1__8S5719C12__8S5719C18[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__8S5719C12__8S5719C18[] = {
  ABISELECT(-192,-104),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C18[] = {
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__8S5719C18[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__A1__8S5719C18[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C18[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A3__8S5719C18[] = {
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__8S5719C18[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C18[] = {
  ABISELECT(-424,-256),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__8S5719C18[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__8S5719C18[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__8S5719C18[] = {
  ABISELECT(-424,-256),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C18[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A2__8S5719C18[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
static  VTT_ENTRY vtt_S5719C18[] = {
  {&(_ZTV8S5719C18[6]),  6,51},
  {&(_tg__ZTV7S5719C9__A2__8S5719C18[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C9__A7__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C9__A2__8S5719C18[5]),  5,7},
  {&(_ZTV8S5719C18[15]),  15,51},
  {&(_ZTV8S5719C18[33]),  33,51},
  {&(_ZTV8S5719C18[39]),  39,51},
  {&(_ZTV8S5719C18[49]),  49,51},
  {&(_ZTV8S5719C18[43]),  43,51},
  {&(_ZTV8S5719C18[21]),  21,51},
  {&(_ZTV8S5719C18[25]),  25,51},
  {&(_tg__ZTV8S5719C12__8S5719C18[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt8S5719C12__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A1__8S5719C18[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C98S5719C12__A5__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C98S5719C12__A1__8S5719C18[5]),  5,7},
  {&(_tg__ZTV7S5719C78S5719C12__A2__8S5719C18[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C78S5719C12__A6__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C5__8S5719C12__8S5719C18[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C18[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__8S5719C12__8S5719C18[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C9__A1__8S5719C12__8S5719C18[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A__8S5719C12__8S5719C18[3]),  3,5},
  {&(_tg__ZTV7S5719C5__8S5719C18[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__8S5719C18[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__A1__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C18[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A3__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__8S5719C18[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__8S5719C18[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__8S5719C18[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__8S5719C18[3]),  3,4},
  {&(_tg__ZTV7S5719C7__A1__8S5719C18[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A2__8S5719C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S5719C18[];
extern  VTBL_ENTRY _ZTV8S5719C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C18[];
Class_Descriptor cd_S5719C18 = {  "S5719C18", // class name
  bases_S5719C18, 22,
  &(vtc_S5719C18[0]), // expected_vtbl_contents
  &(vtt_S5719C18[0]), // expected_vtt_contents
  ABISELECT(464,280), // object size
  NSPAIRA(_ZTI8S5719C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S5719C18),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5719C18),36, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C17  : virtual S1538C28_nt , virtual S5719C11 , S5719C8_nt , virtual S5719C18 {
  int s5719c17f0;
  long double s5719c17f1[12];
  int s5719c17f2;
  ::S5719C12 s5719c17f3;
  char s5719c17f4;
  virtual  ~S5719C17(); // _ZN8S5719C17D2Ev
  S5719C17(); // tgen
};
//SIG(-1 S5719C17) C1{ VBC2{ m} VBC3{ BC4{ BC2 BC5{ VBC2 v1} v2 Fi[2]} VBC6{ VBC2 VBC4 BC5 Fi[2] Fp[3]} BC7{ BC2 BC4 BC6 BC5 Fi[2]} VBC8{ BC2 BC5 VBC7 BC6 BC4 v3 FC4 Fs Fi[2] Fp[3] FC7} Fc Fs[7]} BC5 VBC9{ VBC2 VBC8 BC6 FD Fp[10]} vd Fi FD[12] Fi FC8 Fc}


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

static void Test_S5719C17()
{
  extern Class_Descriptor cd_S5719C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,188)];
    init_test(&cd_S5719C17, buf);
    S5719C17 *dp, &lv = *(dp=new (buf) S5719C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,748), "sizeof(S5719C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C17)");
    /*is_ambiguous_... S5719C17::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C11*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*), 0, "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*)(S5719C11*), 0, "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*)(S5719C11*), 0, "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*)(S5719C11*), 0, "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*)(S5719C11*), 0, "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C12*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), 0, "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C12*), 0, "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C12*), 0, "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C12*), 0, "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), 0, "S5719C17");
    /*is_ambiguous_... S5719C18::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C18*), 0, "S5719C17");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C18*), 0, "S5719C17");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C18*), 0, "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C11*), ABISELECT(544,368), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C11*), ABISELECT(544,368), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C11*), ABISELECT(544,368), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*)(S5719C11*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C12*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C18*), ABISELECT(688,468), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*), ABISELECT(648,444), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C11*), ABISELECT(648,444), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*)(S5719C11*), ABISELECT(576,392), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*)(S5719C11*), ABISELECT(560,380), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*)(S5719C11*), ABISELECT(560,380), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*)(S5719C11*), ABISELECT(560,380), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*)(S5719C11*), ABISELECT(576,392), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C5*)(S5719C11*), ABISELECT(576,392), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*)(S5719C11*), ABISELECT(616,416), "S5719C17");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C5*)(S5719C11*), ABISELECT(560,380), "S5719C17");
    /*is_ambiguous_... S5719C12::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C12*), ABISELECT(704,480), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C12*), ABISELECT(704,480), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(944,636), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), ABISELECT(928,624), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(928,624), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), ABISELECT(928,624), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(944,636), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(944,636), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(984,660), "S5719C17");
    check_base_class_offset(lv, (S5719C5*)(S5719C12*), ABISELECT(928,624), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C12*), ABISELECT(712,484), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C12*), ABISELECT(712,484), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C12*), ABISELECT(752,508), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C12*), ABISELECT(752,508), "S5719C17");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C12*), ABISELECT(752,508), "S5719C17");
    check_base_class_offset(lv, (S5719C12*)(S5719C11*), ABISELECT(704,480), "S5719C17");
    check_base_class_offset(lv, (S5719C12*)(S5719C18*), ABISELECT(704,480), "S5719C17");
    check_base_class_offset(lv, (S5719C11*), ABISELECT(544,368), "S5719C17");
    /*is_ambiguous_... S5719C17::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*), 0, "S5719C17");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C18*), ABISELECT(1008,672), "S5719C17");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C18*), ABISELECT(1008,672), "S5719C17");
    check_base_class_offset(lv, (S5719C18*), ABISELECT(1008,672), "S5719C17");
    check_field_offset(lv, s5719c17f0, ABISELECT(8,4), "S5719C17.s5719c17f0");
    check_field_offset(lv, s5719c17f1, ABISELECT(16,8), "S5719C17.s5719c17f1");
    check_field_offset(lv, s5719c17f2, ABISELECT(208,152), "S5719C17.s5719c17f2");
    check_field_offset(lv, s5719c17f3, ABISELECT(216,156), "S5719C17.s5719c17f3");
    check_field_offset(lv, s5719c17f4, ABISELECT(536,364), "S5719C17.s5719c17f4");
    test_class_info(&lv, &cd_S5719C17);
    dp->~S5719C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C17(Test_S5719C17, "S5719C17", ABISELECT(1152,748));

#else // __cplusplus

extern void _ZN8S5719C17C1Ev();
extern void _ZN8S5719C17D2Ev();
Name_Map name_map_S5719C17[] = {
  NSPAIR(_ZN8S5719C17C1Ev),
  NSPAIR(_ZN8S5719C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C12;
extern VTBL_ENTRY _ZTI8S5719C12[];
extern  VTBL_ENTRY _ZTV8S5719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C12[];
extern Class_Descriptor cd_S5719C11;
extern VTBL_ENTRY _ZTI8S5719C11[];
extern  VTBL_ENTRY _ZTV8S5719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C11[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C18;
extern VTBL_ENTRY _ZTI8S5719C18[];
extern  VTBL_ENTRY _ZTV8S5719C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C18[];
static Base_Class bases_S5719C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C28_nt,    ABISELECT(544,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
    3, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(544,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(544,368), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(688,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(688,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(688,468), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(648,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    8, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(648,444), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1538C28_nt,    ABISELECT(576,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1538C28_nt,    ABISELECT(560,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
    12, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(560,380), //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
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(560,380), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(576,392), //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
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(576,392), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(616,416), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(560,380), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(704,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5719C8_nt,    ABISELECT(704,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(944,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1538C28_nt,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5719C8_nt,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(944,636), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(944,636), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(984,660), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(928,624), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(712,484), //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
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(712,484), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(752,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5719C8_nt,    ABISELECT(752,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(752,508), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S5719C12,    ABISELECT(704,480), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S5719C11,    ABISELECT(544,368), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C8_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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5719C8_nt,    ABISELECT(1008,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(1008,672), //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
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S5719C18,    ABISELECT(1008,672), //bcp->offset
    88, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S5719C17[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C17D1Ev();
extern void _ZN8S5719C17D0Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY vtc_S5719C17[] = {
  ABISELECT(1008,672),
  ABISELECT(928,624),
  ABISELECT(704,480),
  ABISELECT(688,468),
  ABISELECT(648,444),
  ABISELECT(544,368),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C17D1Ev,
  (VTBL_ENTRY)&_ZN8S5719C17D0Ev,
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-544,-368),
  ABISELECT(-544,-368),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  ABISELECT(-560,-380),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-576,-392),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-616,-416),
  ABISELECT(-616,-416),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  ABISELECT(-648,-444),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-688,-468),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(-704,-480),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-712,-484),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-752,-508),
  ABISELECT(-752,-508),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-928,-624),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-944,-636),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-984,-660),
  ABISELECT(-984,-660),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  ABISELECT(-1008,-672),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern VTBL_ENTRY _ZTV8S5719C17[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A12__8S5719C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C11__8S5719C17[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C11__8S5719C17[] = {
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C78S5719C11__8S5719C17[] = {
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C58S5719C11__8S5719C17[] = {
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C58S5719C11__A2__8S5719C17[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C58S5719C11__A3__8S5719C17[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C58S5719C11__A1__8S5719C17[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C58S5719C11__A4__8S5719C17[] = {
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C58S5719C11__A1__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C58S5719C11__A5__8S5719C17[] = {
  ABISELECT(-616,-416),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C58S5719C11__8S5719C17[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C58S5719C11__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C58S5719C11__8S5719C17[] = {
  ABISELECT(-616,-416),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__8S5719C11__8S5719C17[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C11__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A__8S5719C11__8S5719C17[] = {
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A1__8S5719C11__8S5719C17[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A5__8S5719C11__8S5719C17[] = {
  ABISELECT(-616,-416),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C11__8S5719C17[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A1__8S5719C11__8S5719C17[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A2__8S5719C11__8S5719C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C11__8S5719C17[] = {
  ABISELECT(-984,-660),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A3__8S5719C11__8S5719C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A4__8S5719C11__8S5719C17[] = {
  ABISELECT(-752,-508),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__8S5719C17[] = {
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C9__A2__8S5719C17[] = {
  ABISELECT(-648,-444),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C17[] = {
  ABISELECT(-688,-468),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A1__8S5719C17[] = {
  ABISELECT(-688,-468),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt8S5719C12__A6__8S5719C17[] = {
  ABISELECT(-704,-480),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A3__8S5719C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C98S5719C12__A10__8S5719C17[] = {
  ABISELECT(-712,-484),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C98S5719C12__A3__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A4__8S5719C17[] = {
  ABISELECT(-752,-508),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C78S5719C12__A11__8S5719C17[] = {
  ABISELECT(-752,-508),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C12__8S5719C17[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C12__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C17[] = {
  ABISELECT(-984,-660),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__A1__8S5719C12__8S5719C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__8S5719C12__8S5719C17[] = {
  ABISELECT(-752,-508),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A1__8S5719C17[] = {
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__A3__8S5719C17[] = {
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__A7__8S5719C17[] = {
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A2__8S5719C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A8__8S5719C17[] = {
  ABISELECT(-944,-636),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__A2__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C17[] = {
  ABISELECT(-984,-660),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__A1__8S5719C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__A1__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__A1__8S5719C17[] = {
  ABISELECT(-984,-660),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C18__8S5719C17[] = {
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C18__A4__8S5719C17[] = {
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C98S5719C18__A13__8S5719C17[] = {
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C98S5719C18__A4__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C18__8S5719C17[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(304,192),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C18__8S5719C17[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C18__8S5719C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C18__8S5719C17[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C18__8S5719C17[] = {
  ABISELECT(-984,-660),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A1__8S5719C18__8S5719C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(296,188),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A2__8S5719C18__8S5719C17[] = {
  ABISELECT(-752,-508),
  ABISELECT(256,164),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
static  VTT_ENTRY vtt_S5719C17[] = {
  {&(_ZTV8S5719C17[9]),  9,96},
  {&(_tg__ZTV10S5719C8_nt__A12__8S5719C17[3]),  3,4},
  {&(_ZTV8S5719C17[21]),  21,96},
  {&(_ZTV8S5719C17[43]),  43,96},
  {&(_ZTV8S5719C17[49]),  49,96},
  {&(_ZTV8S5719C17[27]),  27,96},
  {&(_ZTV8S5719C17[33]),  33,96},
  {&(_ZTV8S5719C17[37]),  37,96},
  {&(_ZTV8S5719C17[59]),  59,96},
  {&(_ZTV8S5719C17[77]),  77,96},
  {&(_ZTV8S5719C17[83]),  83,96},
  {&(_ZTV8S5719C17[87]),  87,96},
  {&(_ZTV8S5719C17[65]),  65,96},
  {&(_ZTV8S5719C17[69]),  69,96},
  {&(_ZTV8S5719C17[95]),  95,96},
  {&(_tg__ZTV8S5719C11__8S5719C17[7]),  7,9},
  {&(_tg__ZTV7S5719C78S5719C11__8S5719C17[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C78S5719C11__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C58S5719C11__8S5719C17[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C58S5719C11__A2__8S5719C17[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C58S5719C11__A3__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C58S5719C11__A1__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C58S5719C11__A4__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C58S5719C11__A1__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C58S5719C11__A5__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C58S5719C11__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C58S5719C11__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C58S5719C11__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C9__8S5719C11__8S5719C17[5]),  5,6},
  {&(_tg__ZTV7S5719C7__A1__8S5719C11__8S5719C17[5]),  5,7},
  {&(_tg__ZTV7S5719C5__A__8S5719C11__8S5719C17[4]),  4,6},
  {&(_tg__ZTV7S5719C97S5719C5__A1__8S5719C11__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A5__8S5719C11__8S5719C17[3]),  3,4},
  {&(_tg__ZTV8S5719C12__8S5719C11__8S5719C17[8]),  8,10},
  {&(_tg__ZTV7S5719C5__A1__8S5719C11__8S5719C17[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__A2__8S5719C11__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C11__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A3__8S5719C11__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C78S5719C12__A4__8S5719C11__8S5719C17[3]),  3,5},
  {&(_tg__ZTV7S5719C9__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C9__A2__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C9__8S5719C17[5]),  5,7},
  {&(_tg__ZTV7S5719C7__A1__8S5719C17[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A1__8S5719C17[3]),  3,4},
  {&(_tg__ZTV8S5719C12__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt8S5719C12__A6__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A3__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C98S5719C12__A10__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C98S5719C12__A3__8S5719C17[5]),  5,7},
  {&(_tg__ZTV7S5719C78S5719C12__A4__8S5719C17[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C78S5719C12__A11__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C5__8S5719C12__8S5719C17[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__8S5719C12__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C9__A1__8S5719C12__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A__8S5719C12__8S5719C17[3]),  3,5},
  {&(_tg__ZTV7S5719C5__A1__8S5719C17[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__A3__8S5719C17[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__A7__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__A2__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A8__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__A2__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__A1__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__A1__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__A1__8S5719C17[3]),  3,4},
  {&(_tg__ZTV8S5719C18__8S5719C17[6]),  6,7},
  {&(_tg__ZTV7S5719C98S5719C18__A4__8S5719C17[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C98S5719C18__A13__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C98S5719C18__A4__8S5719C17[5]),  5,7},
  {&(_tg__ZTV8S5719C12__8S5719C18__8S5719C17[8]),  8,10},
  {&(_tg__ZTV7S5719C5__8S5719C18__8S5719C17[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C18__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__8S5719C18__8S5719C17[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C18__8S5719C17[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A1__8S5719C18__8S5719C17[4]),  4,5},
  {&(_tg__ZTV7S5719C78S5719C12__A2__8S5719C18__8S5719C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S5719C17[];
extern  VTBL_ENTRY _ZTV8S5719C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C17[];
Class_Descriptor cd_S5719C17 = {  "S5719C17", // class name
  bases_S5719C17, 38,
  &(vtc_S5719C17[0]), // expected_vtbl_contents
  &(vtt_S5719C17[0]), // expected_vtt_contents
  ABISELECT(1152,748), // object size
  NSPAIRA(_ZTI8S5719C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S5719C17),96, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5719C17),78, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C16  : virtual S5719C17 , S5719C8_nt {
  long double s5719c16f0;
  virtual  ~S5719C16(); // _ZN8S5719C16D2Ev
  S5719C16(); // tgen
};
//SIG(-1 S5719C16) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ BC3 BC6{ VBC3 v1} v2 Fi[2]} VBC7{ VBC3 VBC5 BC6 Fi[2] Fp[3]} BC8{ BC3 BC5 BC7 BC6 Fi[2]} VBC9{ BC3 BC6 VBC8 BC7 BC5 v3 FC5 Fs Fi[2] Fp[3] FC8} Fc Fs[7]} BC6 VBC10{ VBC3 VBC9 BC7 FD Fp[10]} vd Fi FD[12] Fi FC9 Fc} BC6 vd FD}


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

static void Test_S5719C16()
{
  extern Class_Descriptor cd_S5719C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,192)];
    init_test(&cd_S5719C16, buf);
    S5719C16 *dp, &lv = *(dp=new (buf) S5719C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,764), "sizeof(S5719C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C16)");
    /*is_ambiguous_... S5719C17::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C17*), 0, "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C11*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*), 0, "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*)(S5719C11*), 0, "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*)(S5719C11*), 0, "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*)(S5719C11*), 0, "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*)(S5719C11*), 0, "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C12*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C5*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C5*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C5*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C5*), 0, "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C12*), 0, "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C12*), 0, "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C7*)(S5719C12*), 0, "S5719C16");
    /*is_ambiguous_... S5719C17::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C17*), 0, "S5719C16");
    /*is_ambiguous_... S5719C18::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C18*), 0, "S5719C16");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C9*)(S5719C18*), 0, "S5719C16");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*)(S5719C9*)(S5719C18*), 0, "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C8_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C8_nt*), 0, "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C11*), ABISELECT(576,384), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C11*), ABISELECT(576,384), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C11*), ABISELECT(576,384), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*)(S5719C11*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C5*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C12*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C9*)(S5719C18*), ABISELECT(720,484), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*), ABISELECT(680,460), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C11*), ABISELECT(680,460), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*)(S5719C11*), ABISELECT(608,408), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*)(S5719C11*), ABISELECT(592,396), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*)(S5719C11*), ABISELECT(592,396), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*)(S5719C11*), ABISELECT(592,396), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*)(S5719C11*), ABISELECT(608,408), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C5*)(S5719C11*), ABISELECT(608,408), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*)(S5719C11*), ABISELECT(648,432), "S5719C16");
    /*is_ambiguous_... S5719C11::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C5*)(S5719C11*), ABISELECT(592,396), "S5719C16");
    /*is_ambiguous_... S5719C12::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C12*), ABISELECT(736,496), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C12*), ABISELECT(736,496), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C5*), ABISELECT(976,652), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C5*), ABISELECT(960,640), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C5*), ABISELECT(960,640), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C5*), ABISELECT(960,640), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C5*), ABISELECT(976,652), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C5*), ABISELECT(976,652), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C5 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C5*), ABISELECT(1016,676), "S5719C16");
    check_base_class_offset(lv, (S5719C5*)(S5719C12*), ABISELECT(960,640), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C12*), ABISELECT(744,500), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C12*), ABISELECT(744,500), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S5719C7*)(S5719C12*), ABISELECT(784,524), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C7*)(S5719C12*), ABISELECT(784,524), "S5719C16");
    /*is_ambiguous_... S5719C12::S5719C7 */ AMB_check_base_class_offset(lv, (S5719C7*)(S5719C12*), ABISELECT(784,524), "S5719C16");
    check_base_class_offset(lv, (S5719C12*)(S5719C11*), ABISELECT(736,496), "S5719C16");
    check_base_class_offset(lv, (S5719C12*)(S5719C18*), ABISELECT(736,496), "S5719C16");
    check_base_class_offset(lv, (S5719C11*)(S5719C17*), ABISELECT(576,384), "S5719C16");
    /*is_ambiguous_... S5719C17::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C17*), ABISELECT(32,16), "S5719C16");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C8_nt*)(S5719C9*)(S5719C18*), ABISELECT(1040,688), "S5719C16");
    /*is_ambiguous_... S5719C18::S5719C9 */ AMB_check_base_class_offset(lv, (S5719C9*)(S5719C18*), ABISELECT(1040,688), "S5719C16");
    check_base_class_offset(lv, (S5719C18*)(S5719C17*), ABISELECT(1040,688), "S5719C16");
    check_base_class_offset(lv, (S5719C17*), ABISELECT(32,16), "S5719C16");
    /*is_ambiguous_... S5719C16::S5719C8_nt */ AMB_check_base_class_offset(lv, (S5719C8_nt*), 0, "S5719C16");
    check_field_offset(lv, s5719c16f0, ABISELECT(16,4), "S5719C16.s5719c16f0");
    test_class_info(&lv, &cd_S5719C16);
    dp->~S5719C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C16(Test_S5719C16, "S5719C16", ABISELECT(1184,764));

#else // __cplusplus

extern void _ZN8S5719C16C1Ev();
extern void _ZN8S5719C16D2Ev();
Name_Map name_map_S5719C16[] = {
  NSPAIR(_ZN8S5719C16C1Ev),
  NSPAIR(_ZN8S5719C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C5;
extern VTBL_ENTRY _ZTI7S5719C5[];
extern  VTBL_ENTRY _ZTV7S5719C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C5[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C7;
extern VTBL_ENTRY _ZTI7S5719C7[];
extern  VTBL_ENTRY _ZTV7S5719C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C7[];
extern Class_Descriptor cd_S5719C12;
extern VTBL_ENTRY _ZTI8S5719C12[];
extern  VTBL_ENTRY _ZTV8S5719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C12[];
extern Class_Descriptor cd_S5719C11;
extern VTBL_ENTRY _ZTI8S5719C11[];
extern  VTBL_ENTRY _ZTV8S5719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C11[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
extern Class_Descriptor cd_S5719C9;
extern VTBL_ENTRY _ZTI7S5719C9[];
extern  VTBL_ENTRY _ZTV7S5719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5719C9[];
extern Class_Descriptor cd_S5719C18;
extern VTBL_ENTRY _ZTI8S5719C18[];
extern  VTBL_ENTRY _ZTV8S5719C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C18[];
extern Class_Descriptor cd_S5719C17;
extern VTBL_ENTRY _ZTI8S5719C17[];
extern  VTBL_ENTRY _ZTV8S5719C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C17[];
extern Class_Descriptor cd_S5719C8_nt;
extern VTBL_ENTRY _ZTI10S5719C8_nt[];
extern  VTBL_ENTRY _ZTV10S5719C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S5719C8_nt[];
static Base_Class bases_S5719C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C28_nt,    ABISELECT(576,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
    3, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(576,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(576,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(720,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(720,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(720,484), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(680,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(680,460), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1538C28_nt,    ABISELECT(608,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(592,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
    12, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(592,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(592,396), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(608,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(608,408), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(648,432), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(592,396), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(736,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(736,496), //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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(976,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(960,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(960,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(960,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(976,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(976,652), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(1016,676), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5719C5,    ABISELECT(960,640), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S5719C8_nt,    ABISELECT(744,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(744,500), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(784,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5719C8_nt,    ABISELECT(784,524), //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
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5719C7,    ABISELECT(784,524), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S5719C12,    ABISELECT(736,496), //bcp->offset
    66, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S5719C11,    ABISELECT(576,384), //bcp->offset
    27, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S5719C8_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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S5719C8_nt,    ABISELECT(1040,688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S5719C9,    ABISELECT(1040,688), //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
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S5719C18,    ABISELECT(1040,688), //bcp->offset
    103, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S5719C17,    ABISELECT(32,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C8_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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5719C16[];
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C16D1Ev();
extern void _ZN8S5719C16D0Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void ABISELECT(_ZTv0_n88_N8S5719C16D1Ev,_ZTv0_n44_N8S5719C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S5719C16D1Ev,_ZThn16_N8S5719C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S5719C16D0Ev,_ZTv0_n44_N8S5719C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S5719C16D0Ev,_ZThn16_N8S5719C16D0Ev)() __attribute__((weak));
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY vtc_S5719C16[] = {
  ABISELECT(1040,688),
  ABISELECT(960,640),
  ABISELECT(736,496),
  ABISELECT(720,484),
  ABISELECT(680,460),
  ABISELECT(576,384),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C16D1Ev,
  (VTBL_ENTRY)&_ZN8S5719C16D0Ev,
  ABISELECT(-32,-16),
  0,
  ABISELECT(1008,672),
  ABISELECT(928,624),
  ABISELECT(704,480),
  ABISELECT(688,468),
  ABISELECT(648,444),
  ABISELECT(544,368),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S5719C16D1Ev,_ZTv0_n44_N8S5719C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S5719C16D0Ev,_ZTv0_n44_N8S5719C16D0Ev),
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-576,-384),
  ABISELECT(-576,-384),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(128,88),
  ABISELECT(-592,-396),
  ABISELECT(-592,-396),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(112,76),
  ABISELECT(-608,-408),
  ABISELECT(-608,-408),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-648,-432),
  ABISELECT(-648,-432),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-680,-460),
  ABISELECT(-680,-460),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(-720,-484),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-736,-496),
  ABISELECT(-736,-496),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
  ABISELECT(-24,-16),
  ABISELECT(-744,-500),
  ABISELECT(-744,-500),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-784,-524),
  ABISELECT(-784,-524),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-960,-640),
  ABISELECT(-960,-640),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  ABISELECT(-976,-652),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  ABISELECT(-1016,-676),
  ABISELECT(-1016,-676),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1040,-688),
  ABISELECT(-1040,-688),
  (VTBL_ENTRY)&(_ZTI8S5719C16[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern VTBL_ENTRY _ZTV8S5719C16[];
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A14__8S5719C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C17D1Ev();
extern void _ZN8S5719C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C17__8S5719C16[] = {
  ABISELECT(1008,672),
  ABISELECT(928,624),
  ABISELECT(704,480),
  ABISELECT(688,468),
  ABISELECT(648,444),
  ABISELECT(544,368),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C17D1Ev,
  (VTBL_ENTRY)&_ZN8S5719C17D0Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt8S5719C17__A12__8S5719C16[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C11__8S5719C17__8S5719C16[] = {
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-576,-384),
  ABISELECT(-544,-368),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__8S5719C17__8S5719C16[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-680,-460),
  ABISELECT(-648,-444),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C17__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(-688,-468),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C58S5719C11__8S5719C17__8S5719C16[] = {
  ABISELECT(128,88),
  ABISELECT(-592,-396),
  ABISELECT(-560,-380),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C58S5719C11__A1__8S5719C17__8S5719C16[] = {
  ABISELECT(112,76),
  ABISELECT(-608,-408),
  ABISELECT(-576,-392),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C58S5719C11__A5__8S5719C17__8S5719C16[] = {
  ABISELECT(-648,-432),
  ABISELECT(-616,-416),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C17__8S5719C16[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-736,-496),
  ABISELECT(-704,-480),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A1__8S5719C17__8S5719C16[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-960,-640),
  ABISELECT(-928,-624),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A2__8S5719C17__8S5719C16[] = {
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  ABISELECT(-944,-636),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C17__8S5719C16[] = {
  ABISELECT(-1016,-676),
  ABISELECT(-984,-660),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A3__8S5719C17__8S5719C16[] = {
  ABISELECT(-24,-16),
  ABISELECT(-744,-500),
  ABISELECT(-712,-484),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A4__8S5719C17__8S5719C16[] = {
  ABISELECT(-784,-524),
  ABISELECT(-752,-508),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C18__8S5719C17__8S5719C16[] = {
  0,
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1040,-688),
  ABISELECT(-1008,-672),
  (VTBL_ENTRY)&(_ZTI8S5719C17[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C11__8S5719C16[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-576,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C11__8S5719C16[] = {
  ABISELECT(-576,-384),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C78S5719C11__8S5719C16[] = {
  ABISELECT(-576,-384),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C58S5719C11__8S5719C16[] = {
  ABISELECT(128,88),
  ABISELECT(-592,-396),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C58S5719C11__A2__8S5719C16[] = {
  ABISELECT(-592,-396),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C58S5719C11__A3__8S5719C16[] = {
  ABISELECT(-592,-396),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C58S5719C11__A1__8S5719C16[] = {
  ABISELECT(112,76),
  ABISELECT(-608,-408),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C58S5719C11__A4__8S5719C16[] = {
  ABISELECT(-608,-408),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C58S5719C11__A1__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C58S5719C11__A5__8S5719C16[] = {
  ABISELECT(-648,-432),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C58S5719C11__8S5719C16[] = {
  ABISELECT(112,76),
  ABISELECT(-608,-408),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C58S5719C11__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C58S5719C11__8S5719C16[] = {
  ABISELECT(-648,-432),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__8S5719C11__8S5719C16[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-680,-460),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C11__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A__8S5719C11__8S5719C16[] = {
  ABISELECT(128,88),
  ABISELECT(-592,-396),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A1__8S5719C11__8S5719C16[] = {
  ABISELECT(112,76),
  ABISELECT(-608,-408),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A5__8S5719C11__8S5719C16[] = {
  ABISELECT(-648,-432),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C11__8S5719C16[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-736,-496),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A1__8S5719C11__8S5719C16[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-960,-640),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A2__8S5719C11__8S5719C16[] = {
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C11__8S5719C16[] = {
  ABISELECT(-1016,-676),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A3__8S5719C11__8S5719C16[] = {
  ABISELECT(-24,-16),
  ABISELECT(-744,-500),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A4__8S5719C11__8S5719C16[] = {
  ABISELECT(-784,-524),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S5719C11[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__8S5719C16[] = {
  ABISELECT(40,24),
  ABISELECT(-680,-460),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C9__A2__8S5719C16[] = {
  ABISELECT(-680,-460),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C9__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C16[] = {
  ABISELECT(-720,-484),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C7__A1__8S5719C16[] = {
  ABISELECT(-720,-484),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-736,-496),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt8S5719C12__A6__8S5719C16[] = {
  ABISELECT(-736,-496),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A3__8S5719C16[] = {
  ABISELECT(-24,-16),
  ABISELECT(-744,-500),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C98S5719C12__A10__8S5719C16[] = {
  ABISELECT(-744,-500),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C98S5719C12__A3__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A4__8S5719C16[] = {
  ABISELECT(-784,-524),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C78S5719C12__A11__8S5719C16[] = {
  ABISELECT(-784,-524),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C12__8S5719C16[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-960,-640),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C16[] = {
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C12__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C16[] = {
  ABISELECT(-1016,-676),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__A1__8S5719C12__8S5719C16[] = {
  ABISELECT(-24,-16),
  ABISELECT(-744,-500),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A__8S5719C12__8S5719C16[] = {
  ABISELECT(-784,-524),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S5719C12[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__A1__8S5719C16[] = {
  ABISELECT(-240,-156),
  ABISELECT(-960,-640),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C77S5719C5__A3__8S5719C16[] = {
  ABISELECT(-960,-640),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C7[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C77S5719C5__A7__8S5719C16[] = {
  ABISELECT(-960,-640),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__A2__8S5719C16[] = {
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C97S5719C5__A8__8S5719C16[] = {
  ABISELECT(-976,-652),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C97S5719C5__A2__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C16[] = {
  ABISELECT(-1016,-676),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C9__7S5719C5__A1__8S5719C16[] = {
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__7S5719C5__A1__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt__A3__7S5719C5__A1__8S5719C16[] = {
  ABISELECT(-1016,-676),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5719C5[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C18__8S5719C16[] = {
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C18__A4__8S5719C16[] = {
  ABISELECT(-320,-204),
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C98S5719C18__A13__8S5719C16[] = {
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI10S5719C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__7S5719C98S5719C18__A4__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI7S5719C9[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN8S5719C122v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5719C12__8S5719C18__8S5719C16[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-736,-496),
  ABISELECT(304,192),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S5719C122v6Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C5__8S5719C18__8S5719C16[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-960,-640),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C97S5719C5__8S5719C18__8S5719C16[] = {
  ABISELECT(-256,-168),
  ABISELECT(-976,-652),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C7__A1__8S5719C18__8S5719C16[] = {
  0,
  0,
  ABISELECT(-720,-484),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C18__8S5719C16[] = {
  ABISELECT(-1016,-676),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C98S5719C12__A1__8S5719C18__8S5719C16[] = {
  ABISELECT(-24,-16),
  ABISELECT(-744,-500),
  ABISELECT(296,188),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
};
extern void _ZN10S5719C8_nt2v4Ev();
extern void _ZN7S5719C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5719C78S5719C12__A2__8S5719C18__8S5719C16[] = {
  ABISELECT(-784,-524),
  ABISELECT(256,164),
  (VTBL_ENTRY)&(_ZTI8S5719C18[0]),
  (VTBL_ENTRY)&_ZN10S5719C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S5719C72v5Ev,
};
static  VTT_ENTRY vtt_S5719C16[] = {
  {&(_ZTV8S5719C16[10]),  10,111},
  {&(_tg__ZTV10S5719C8_nt__A14__8S5719C16[3]),  3,4},
  {&(_ZTV8S5719C16[24]),  24,111},
  {&(_ZTV8S5719C16[36]),  36,111},
  {&(_ZTV8S5719C16[58]),  58,111},
  {&(_ZTV8S5719C16[64]),  64,111},
  {&(_ZTV8S5719C16[42]),  42,111},
  {&(_ZTV8S5719C16[48]),  48,111},
  {&(_ZTV8S5719C16[52]),  52,111},
  {&(_ZTV8S5719C16[74]),  74,111},
  {&(_ZTV8S5719C16[92]),  92,111},
  {&(_ZTV8S5719C16[98]),  98,111},
  {&(_ZTV8S5719C16[102]),  102,111},
  {&(_ZTV8S5719C16[80]),  80,111},
  {&(_ZTV8S5719C16[84]),  84,111},
  {&(_ZTV8S5719C16[110]),  110,111},
  {&(_tg__ZTV8S5719C17__8S5719C16[9]),  9,12},
  {&(_tg__ZTV10S5719C8_nt8S5719C17__A12__8S5719C16[3]),  3,4},
  {&(_tg__ZTV8S5719C11__8S5719C17__8S5719C16[9]),  9,11},
  {&(_tg__ZTV7S5719C9__8S5719C17__8S5719C16[5]),  5,6},
  {&(_tg__ZTV7S5719C7__A1__8S5719C17__8S5719C16[5]),  5,7},
  {&(_tg__ZTV7S5719C58S5719C11__8S5719C17__8S5719C16[4]),  4,6},
  {&(_tg__ZTV7S5719C97S5719C58S5719C11__A1__8S5719C17__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C58S5719C11__A5__8S5719C17__8S5719C16[3]),  3,4},
  {&(_tg__ZTV8S5719C12__8S5719C17__8S5719C16[8]),  8,10},
  {&(_tg__ZTV7S5719C5__A1__8S5719C17__8S5719C16[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__A2__8S5719C17__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C17__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A3__8S5719C17__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C78S5719C12__A4__8S5719C17__8S5719C16[3]),  3,5},
  {&(_tg__ZTV8S5719C18__8S5719C17__8S5719C16[7]),  7,8},
  {&(_tg__ZTV8S5719C11__8S5719C16[7]),  7,9},
  {&(_tg__ZTV7S5719C78S5719C11__8S5719C16[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C78S5719C11__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C58S5719C11__8S5719C16[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C58S5719C11__A2__8S5719C16[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C58S5719C11__A3__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C58S5719C11__A1__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C58S5719C11__A4__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C58S5719C11__A1__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C58S5719C11__A5__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C58S5719C11__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C58S5719C11__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C58S5719C11__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C9__8S5719C11__8S5719C16[5]),  5,6},
  {&(_tg__ZTV7S5719C7__A1__8S5719C11__8S5719C16[5]),  5,7},
  {&(_tg__ZTV7S5719C5__A__8S5719C11__8S5719C16[4]),  4,6},
  {&(_tg__ZTV7S5719C97S5719C5__A1__8S5719C11__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A5__8S5719C11__8S5719C16[3]),  3,4},
  {&(_tg__ZTV8S5719C12__8S5719C11__8S5719C16[8]),  8,10},
  {&(_tg__ZTV7S5719C5__A1__8S5719C11__8S5719C16[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__A2__8S5719C11__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C11__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A3__8S5719C11__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C78S5719C12__A4__8S5719C11__8S5719C16[3]),  3,5},
  {&(_tg__ZTV7S5719C9__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C9__A2__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C9__8S5719C16[5]),  5,7},
  {&(_tg__ZTV7S5719C7__A1__8S5719C16[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C7__A1__8S5719C16[3]),  3,4},
  {&(_tg__ZTV8S5719C12__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt8S5719C12__A6__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A3__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C98S5719C12__A10__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C98S5719C12__A3__8S5719C16[5]),  5,7},
  {&(_tg__ZTV7S5719C78S5719C12__A4__8S5719C16[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C78S5719C12__A11__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C5__8S5719C12__8S5719C16[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C12__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__8S5719C12__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C12__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C9__A1__8S5719C12__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A__8S5719C12__8S5719C16[3]),  3,5},
  {&(_tg__ZTV7S5719C5__A1__8S5719C16[4]),  4,6},
  {&(_tg__ZTV7S5719C77S5719C5__A3__8S5719C16[3]),  3,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C77S5719C5__A7__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C97S5719C5__A2__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C97S5719C5__A8__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C97S5719C5__A2__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A9__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C9__7S5719C5__A1__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__7S5719C5__A1__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt__A3__7S5719C5__A1__8S5719C16[3]),  3,4},
  {&(_tg__ZTV8S5719C18__8S5719C16[6]),  6,7},
  {&(_tg__ZTV7S5719C98S5719C18__A4__8S5719C16[4]),  4,5},
  {&(_tg__ZTV10S5719C8_nt7S5719C98S5719C18__A13__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C7__7S5719C98S5719C18__A4__8S5719C16[5]),  5,7},
  {&(_tg__ZTV8S5719C12__8S5719C18__8S5719C16[8]),  8,10},
  {&(_tg__ZTV7S5719C5__8S5719C18__8S5719C16[6]),  6,8},
  {&(_tg__ZTV7S5719C97S5719C5__8S5719C18__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C7__A1__8S5719C18__8S5719C16[5]),  5,7},
  {&(_tg__ZTV10S5719C8_nt7S5719C5__A4__8S5719C18__8S5719C16[3]),  3,4},
  {&(_tg__ZTV7S5719C98S5719C12__A1__8S5719C18__8S5719C16[4]),  4,5},
  {&(_tg__ZTV7S5719C78S5719C12__A2__8S5719C18__8S5719C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S5719C16[];
extern  VTBL_ENTRY _ZTV8S5719C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5719C16[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S5719C16D0Ev,_ZTv0_n44_N8S5719C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5719C16D0Ev,_ZThn16_N8S5719C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S5719C16D1Ev,_ZTv0_n44_N8S5719C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5719C16D1Ev,_ZThn16_N8S5719C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5719C16 = {  "S5719C16", // class name
  bases_S5719C16, 40,
  &(vtc_S5719C16[0]), // expected_vtbl_contents
  &(vtt_S5719C16[0]), // expected_vtt_contents
  ABISELECT(1184,764), // object size
  NSPAIRA(_ZTI8S5719C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S5719C16),111, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5719C16),94, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5719C19  {
  int s5719c19f0;
  unsigned char s5719c19f1:1;
  virtual void  v7(); // _ZN8S5719C192v7Ev
  ~S5719C19(); // tgen
  S5719C19(); // tgen
};
//SIG(1 S5719C19) C1{ v1 Fi Fc:1}


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

static void Test_S5719C19()
{
  extern Class_Descriptor cd_S5719C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5719C19, buf);
    S5719C19 *dp, &lv = *(dp=new (buf) S5719C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5719C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5719C19)");
    check_field_offset(lv, s5719c19f0, ABISELECT(8,4), "S5719C19.s5719c19f0");
    set_bf_and_test(lv, s5719c19f1, ABISELECT(12,8), 0, 1, 1, "S5719C19");
    test_class_info(&lv, &cd_S5719C19);
    dp->~S5719C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C19(Test_S5719C19, "S5719C19", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S5719C19C1Ev();
extern void _ZN8S5719C19D1Ev();
Name_Map name_map_S5719C19[] = {
  NSPAIR(_ZN8S5719C19C1Ev),
  NSPAIR(_ZN8S5719C19D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S5719C19[];
extern void _ZN8S5719C192v7Ev();
static  VTBL_ENTRY vtc_S5719C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5719C19[0]),
  (VTBL_ENTRY)&_ZN8S5719C192v7Ev,
};
extern VTBL_ENTRY _ZTI8S5719C19[];
extern  VTBL_ENTRY _ZTV8S5719C19[];
Class_Descriptor cd_S5719C19 = {  "S5719C19", // class name
  0,0,//no base classes
  &(vtc_S5719C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S5719C19),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S5719C19),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  S5719C1  : S5719C2 {
  ::S5719C4 s5719c1f0;
  ::S5719C13 s5719c1f1;
  ::S5719C16 s5719c1f2;
  int s5719c1f3;
  ::S5719C19 s5719c1f4[2];
  virtual void  v1(); // _ZN7S5719C12v1Ev
  virtual void  v2(); // _ZN7S5719C12v2Ev
  virtual void  v3(); // _ZN7S5719C12v3Ev
  ~S5719C1(); // tgen
  S5719C1(); // tgen
};
//SIG(1 S5719C1) C1{ BC2{ m FD Fi FC3{}} v1 v2 v3 FC4{ BC5{ BC6{ m} BC7{ BC6 BC8{ VBC6 v4} v5 Fi[2]} BC9{ VBC6 VBC7 BC8 Fi[2] Fp[3]} BC8 Fi[2]} vd FC2 Fi[2] FC10{ m FC5 Fc FD[6] FC11{ BC7 VBC9 BC5 VBC12{ BC6 BC8 VBC5 BC9 BC7 v6 FC7 Fs Fi[2] Fp[3] FC5} Fc Fs[7]}[2] FC11 Fi} FC3 Fp FD Fi[2]} FC13{ BC2 BC8 VBC14{ m FC2 Fi[2]} VBC15{ m FL Fp FD FC9 Fi[8]} Fp} FC16{ VBC17{ VBC6 VBC11 BC8 VBC18{ VBC6 VBC12 BC9 FD Fp[10]} vd Fi FD[12] Fi FC12 Fc} BC8 vd FD} Fi FC19{ v7 Fi Fc:1}[2]}


void  S5719C1 ::v1(){vfunc_called(this, "_ZN7S5719C12v1Ev");}
void  S5719C1 ::v2(){vfunc_called(this, "_ZN7S5719C12v2Ev");}
void  S5719C1 ::v3(){vfunc_called(this, "_ZN7S5719C12v3Ev");}
S5719C1 ::~S5719C1(){ note_dtor("S5719C1", this);} // tgen
S5719C1 ::S5719C1(){ note_ctor("S5719C1", this);} // tgen

static void Test_S5719C1()
{
  extern Class_Descriptor cd_S5719C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(207,536)];
    init_test(&cd_S5719C1, buf);
    S5719C1 *dp, &lv = *(dp=new (buf) S5719C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3296,2140), "sizeof(S5719C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5719C1)");
    check_base_class_offset(lv, (S5719C2*), ABISELECT(16,4), "S5719C1");
    check_field_offset(lv, s5719c1f0, ABISELECT(48,24), "S5719C1.s5719c1f0");
    check_field_offset(lv, s5719c1f1, ABISELECT(1824,1200), "S5719C1.s5719c1f1");
    check_field_offset(lv, s5719c1f2, ABISELECT(2064,1348), "S5719C1.s5719c1f2");
    check_field_offset(lv, s5719c1f3, ABISELECT(3248,2112), "S5719C1.s5719c1f3");
    check_field_offset(lv, s5719c1f4, ABISELECT(3256,2116), "S5719C1.s5719c1f4");
    test_class_info(&lv, &cd_S5719C1);
    dp->~S5719C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5719C1(Test_S5719C1, "S5719C1", ABISELECT(3296,2140));

#else // __cplusplus

extern void _ZN7S5719C1C1Ev();
extern void _ZN7S5719C1D1Ev();
Name_Map name_map_S5719C1[] = {
  NSPAIR(_ZN7S5719C1C1Ev),
  NSPAIR(_ZN7S5719C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5719C2;
extern VTBL_ENTRY _ZTI7S5719C2[];
static Base_Class bases_S5719C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5719C2,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5719C1[];
extern void _ZN7S5719C12v1Ev();
extern void _ZN7S5719C12v2Ev();
extern void _ZN7S5719C12v3Ev();
static  VTBL_ENTRY vtc_S5719C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5719C1[0]),
  (VTBL_ENTRY)&_ZN7S5719C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5719C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5719C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5719C1[];
extern  VTBL_ENTRY _ZTV7S5719C1[];
Class_Descriptor cd_S5719C1 = {  "S5719C1", // class name
  bases_S5719C1, 1,
  &(vtc_S5719C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3296,2140), // object size
  NSPAIRA(_ZTI7S5719C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5719C1),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  S7642C3_nt  {
  virtual void  v6(); // _ZN10S7642C3_nt2v6Ev
  virtual void  v7(); // _ZN10S7642C3_nt2v7Ev
  ~S7642C3_nt(); // tgen
  S7642C3_nt(); // tgen
};
//SIG(-1 S7642C3_nt) C1{ v1 v2}


void  S7642C3_nt ::v6(){vfunc_called(this, "_ZN10S7642C3_nt2v6Ev");}
void  S7642C3_nt ::v7(){vfunc_called(this, "_ZN10S7642C3_nt2v7Ev");}
S7642C3_nt ::~S7642C3_nt(){ note_dtor("S7642C3_nt", this);} // tgen
S7642C3_nt ::S7642C3_nt(){ note_ctor("S7642C3_nt", this);} // tgen

//skip512 S7642C3_nt

#else // __cplusplus

extern void _ZN10S7642C3_ntC1Ev();
extern void _ZN10S7642C3_ntD1Ev();
Name_Map name_map_S7642C3_nt[] = {
  NSPAIR(_ZN10S7642C3_ntC1Ev),
  NSPAIR(_ZN10S7642C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY vtc_S7642C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7642C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
VTBL_ENTRY *P__ZTI10S7642C3_nt = _ZTI10S7642C3_nt; 
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
Class_Descriptor cd_S7642C3_nt = {  "S7642C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7642C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7642C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7642C3_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  S7642C7  : virtual S7642C3_nt {
  void *s7642c7f0;
  char s7642c7f1;
  virtual void  v8(); // _ZN7S7642C72v8Ev
  virtual void  v9(); // _ZN7S7642C72v9Ev
  virtual void  v10(); // _ZN7S7642C73v10Ev
  virtual void  v11(); // _ZN7S7642C73v11Ev
  ~S7642C7(); // tgen
  S7642C7(); // tgen
};
//SIG(-1 S7642C7) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S7642C7 ::v8(){vfunc_called(this, "_ZN7S7642C72v8Ev");}
void  S7642C7 ::v9(){vfunc_called(this, "_ZN7S7642C72v9Ev");}
void  S7642C7 ::v10(){vfunc_called(this, "_ZN7S7642C73v10Ev");}
void  S7642C7 ::v11(){vfunc_called(this, "_ZN7S7642C73v11Ev");}
S7642C7 ::~S7642C7(){ note_dtor("S7642C7", this);} // tgen
S7642C7 ::S7642C7(){ note_ctor("S7642C7", this);} // tgen

static void Test_S7642C7()
{
  extern Class_Descriptor cd_S7642C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7642C7, buf);
    S7642C7 *dp, &lv = *(dp=new (buf) S7642C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7642C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7642C7)");
    check_base_class_offset(lv, (S7642C3_nt*), 0, "S7642C7");
    check_field_offset(lv, s7642c7f0, ABISELECT(8,4), "S7642C7.s7642c7f0");
    check_field_offset(lv, s7642c7f1, ABISELECT(16,8), "S7642C7.s7642c7f1");
    test_class_info(&lv, &cd_S7642C7);
    dp->~S7642C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C7(Test_S7642C7, "S7642C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7642C7C1Ev();
extern void _ZN7S7642C7D1Ev();
Name_Map name_map_S7642C7[] = {
  NSPAIR(_ZN7S7642C7C1Ev),
  NSPAIR(_ZN7S7642C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
static Base_Class bases_S7642C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    0, //bcp->offset
    -1, //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 _ZTI7S7642C7[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY vtc_S7642C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7642C7[];
static  VTT_ENTRY vtt_S7642C7[] = {
  {&(_ZTV7S7642C7[5]),  5,11},
  {&(_ZTV7S7642C7[5]),  5,11},
};
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
Class_Descriptor cd_S7642C7 = {  "S7642C7", // class name
  bases_S7642C7, 1,
  &(vtc_S7642C7[0]), // expected_vtbl_contents
  &(vtt_S7642C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7642C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7642C7),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7642C7),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  S7642C8  : S7642C3_nt {
  virtual void  v12(); // _ZN7S7642C83v12Ev
  virtual void  v13(); // _ZN7S7642C83v13Ev
  virtual void  v14(); // _ZN7S7642C83v14Ev
  virtual void  v15(); // _ZN7S7642C83v15Ev
  virtual void  v16(); // _ZN7S7642C83v16Ev
  virtual void  v17(); // _ZN7S7642C83v17Ev
  virtual void  v18(); // _ZN7S7642C83v18Ev
  virtual void  v19(); // _ZN7S7642C83v19Ev
  ~S7642C8(); // tgen
  S7642C8(); // tgen
};
//SIG(-1 S7642C8) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S7642C8 ::v12(){vfunc_called(this, "_ZN7S7642C83v12Ev");}
void  S7642C8 ::v13(){vfunc_called(this, "_ZN7S7642C83v13Ev");}
void  S7642C8 ::v14(){vfunc_called(this, "_ZN7S7642C83v14Ev");}
void  S7642C8 ::v15(){vfunc_called(this, "_ZN7S7642C83v15Ev");}
void  S7642C8 ::v16(){vfunc_called(this, "_ZN7S7642C83v16Ev");}
void  S7642C8 ::v17(){vfunc_called(this, "_ZN7S7642C83v17Ev");}
void  S7642C8 ::v18(){vfunc_called(this, "_ZN7S7642C83v18Ev");}
void  S7642C8 ::v19(){vfunc_called(this, "_ZN7S7642C83v19Ev");}
S7642C8 ::~S7642C8(){ note_dtor("S7642C8", this);} // tgen
S7642C8 ::S7642C8(){ note_ctor("S7642C8", this);} // tgen

static void Test_S7642C8()
{
  extern Class_Descriptor cd_S7642C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7642C8, buf);
    S7642C8 *dp, &lv = *(dp=new (buf) S7642C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7642C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7642C8)");
    check_base_class_offset(lv, (S7642C3_nt*), 0, "S7642C8");
    test_class_info(&lv, &cd_S7642C8);
    dp->~S7642C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C8(Test_S7642C8, "S7642C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7642C8C1Ev();
extern void _ZN7S7642C8D1Ev();
Name_Map name_map_S7642C8[] = {
  NSPAIR(_ZN7S7642C8C1Ev),
  NSPAIR(_ZN7S7642C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
static Base_Class bases_S7642C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7642C8[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C8[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
Class_Descriptor cd_S7642C8 = {  "S7642C8", // class name
  bases_S7642C8, 1,
  &(vtc_S7642C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7642C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7642C8),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  S7642C6  : virtual S7642C3_nt , S7642C7 , S7642C8 {
  ::S7642C3_nt s7642c6f0;
  virtual  ~S7642C6(); // _ZN7S7642C6D2Ev
  virtual void  v20(); // _ZN7S7642C63v20Ev
  virtual void  v21(); // _ZN7S7642C63v21Ev
  S7642C6(); // tgen
};
//SIG(-1 S7642C6) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S7642C6 ::~S7642C6(){ note_dtor("S7642C6", this);}
void  S7642C6 ::v20(){vfunc_called(this, "_ZN7S7642C63v20Ev");}
void  S7642C6 ::v21(){vfunc_called(this, "_ZN7S7642C63v21Ev");}
S7642C6 ::S7642C6(){ note_ctor("S7642C6", this);} // tgen

static void Test_S7642C6()
{
  extern Class_Descriptor cd_S7642C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7642C6, buf);
    S7642C6 *dp, &lv = *(dp=new (buf) S7642C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7642C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7642C6)");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*), 0, "S7642C6");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*), 0, "S7642C6");
    check_base_class_offset(lv, (S7642C7*), 0, "S7642C6");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*), ABISELECT(24,12), "S7642C6");
    check_base_class_offset(lv, (S7642C8*), ABISELECT(24,12), "S7642C6");
    check_field_offset(lv, s7642c6f0, ABISELECT(32,16), "S7642C6.s7642c6f0");
    test_class_info(&lv, &cd_S7642C6);
    dp->~S7642C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C6(Test_S7642C6, "S7642C6", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7642C6C1Ev();
extern void _ZN7S7642C6D2Ev();
Name_Map name_map_S7642C6[] = {
  NSPAIR(_ZN7S7642C6C1Ev),
  NSPAIR(_ZN7S7642C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
static Base_Class bases_S7642C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7642C6[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7642C6[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__7S7642C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
static  VTT_ENTRY vtt_S7642C6[] = {
  {&(_ZTV7S7642C6[5]),  5,27},
  {&(_tg__ZTV7S7642C7__7S7642C6[5]),  5,11},
  {&(_tg__ZTV7S7642C7__7S7642C6[5]),  5,11},
  {&(_ZTV7S7642C6[5]),  5,27},
};
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
Class_Descriptor cd_S7642C6 = {  "S7642C6", // class name
  bases_S7642C6, 4,
  &(vtc_S7642C6[0]), // expected_vtbl_contents
  &(vtt_S7642C6[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7642C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7642C6),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7642C6),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  S7642C5  : virtual S7642C6 {
  virtual  ~S7642C5(); // _ZN7S7642C5D2Ev
  virtual void  v22(); // _ZN7S7642C53v22Ev
  virtual void  v23(); // _ZN7S7642C53v23Ev
  S7642C5(); // tgen
};
//SIG(-1 S7642C5) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S7642C5 ::~S7642C5(){ note_dtor("S7642C5", this);}
void  S7642C5 ::v22(){vfunc_called(this, "_ZN7S7642C53v22Ev");}
void  S7642C5 ::v23(){vfunc_called(this, "_ZN7S7642C53v23Ev");}
S7642C5 ::S7642C5(){ note_ctor("S7642C5", this);} // tgen

static void Test_S7642C5()
{
  extern Class_Descriptor cd_S7642C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7642C5, buf);
    S7642C5 *dp, &lv = *(dp=new (buf) S7642C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7642C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7642C5)");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), 0, "S7642C5");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), 0, "S7642C5");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(8,4), "S7642C5");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(32,16), "S7642C5");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(32,16), "S7642C5");
    check_base_class_offset(lv, (S7642C6*), ABISELECT(8,4), "S7642C5");
    test_class_info(&lv, &cd_S7642C5);
    dp->~S7642C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C5(Test_S7642C5, "S7642C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7642C5C1Ev();
extern void _ZN7S7642C5D2Ev();
Name_Map name_map_S7642C5[] = {
  NSPAIR(_ZN7S7642C5C1Ev),
  NSPAIR(_ZN7S7642C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
static Base_Class bases_S7642C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_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
    1, //immediately_derived
  0, 1},
  {&cd_S7642C7,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI7S7642C5[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S7642C5D1Ev,_ZThn4_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S7642C5D0Ev,_ZThn4_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7642C5[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__7S7642C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C5[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C6__7S7642C5[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C5[] = {
  {&(_ZTV7S7642C5[6]),  6,54},
  {&(_ZTV7S7642C5[32]),  32,54},
  {&(_ZTV7S7642C5[6]),  6,54},
  {&(_ZTV7S7642C5[44]),  44,54},
  {&(_tg__ZTV7S7642C6__7S7642C5[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__7S7642C5[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C5[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C6__7S7642C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7642C5D0Ev,_ZThn4_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7642C5D1Ev,_ZThn4_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C5 = {  "S7642C5", // class name
  bases_S7642C5, 5,
  &(vtc_S7642C5[0]), // expected_vtbl_contents
  &(vtt_S7642C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7642C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7642C5),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7642C5),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C4  : virtual S7642C5 {
  __tsi64 s7642c4f0:40;
  virtual  ~S7642C4(); // _ZN7S7642C4D2Ev
  virtual void  v24(); // _ZN7S7642C43v24Ev
  virtual void  v25(); // _ZN7S7642C43v25Ev
  virtual void  v26(); // _ZN7S7642C43v26Ev
  virtual void  v27(); // _ZN7S7642C43v27Ev
  virtual void  v28(); // _ZN7S7642C43v28Ev
  virtual void  v29(); // _ZN7S7642C43v29Ev
  virtual void  v30(); // _ZN7S7642C43v30Ev
  S7642C4(); // tgen
};
//SIG(-1 S7642C4) C1{ VBC2{ VBC3{ VBC4{ v8 v9} BC5{ VBC4 v10 v11 v12 v13 Fp Fc} BC6{ BC4 v14 v15 v16 v17 v18 v19 v20 v21} vd v22 v23 FC4} vd v24 v25} vd v1 v2 v3 v4 v5 v6 v7 FL:40}


 S7642C4 ::~S7642C4(){ note_dtor("S7642C4", this);}
void  S7642C4 ::v24(){vfunc_called(this, "_ZN7S7642C43v24Ev");}
void  S7642C4 ::v25(){vfunc_called(this, "_ZN7S7642C43v25Ev");}
void  S7642C4 ::v26(){vfunc_called(this, "_ZN7S7642C43v26Ev");}
void  S7642C4 ::v27(){vfunc_called(this, "_ZN7S7642C43v27Ev");}
void  S7642C4 ::v28(){vfunc_called(this, "_ZN7S7642C43v28Ev");}
void  S7642C4 ::v29(){vfunc_called(this, "_ZN7S7642C43v29Ev");}
void  S7642C4 ::v30(){vfunc_called(this, "_ZN7S7642C43v30Ev");}
S7642C4 ::S7642C4(){ note_ctor("S7642C4", this);} // tgen

static void Test_S7642C4()
{
  extern Class_Descriptor cd_S7642C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7642C4, buf);
    S7642C4 *dp, &lv = *(dp=new (buf) S7642C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7642C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7642C4)");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), 0, "S7642C4");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), 0, "S7642C4");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(16,12), "S7642C4");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(40,24), "S7642C4");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(40,24), "S7642C4");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*), ABISELECT(16,12), "S7642C4");
    check_base_class_offset(lv, (S7642C5*), 0, "S7642C4");
    set_bf_and_test(lv, s7642c4f0, ABISELECT(8,4), 0, 40, 1, "S7642C4");
    set_bf_and_test(lv, s7642c4f0, ABISELECT(8,4), 0, 40, hide_sll(1LL<<39), "S7642C4");
    test_class_info(&lv, &cd_S7642C4);
    dp->~S7642C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C4(Test_S7642C4, "S7642C4", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S7642C4C1Ev();
extern void _ZN7S7642C4D2Ev();
Name_Map name_map_S7642C4[] = {
  NSPAIR(_ZN7S7642C4C1Ev),
  NSPAIR(_ZN7S7642C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
static Base_Class bases_S7642C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    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
    1, //immediately_derived
  0, 1},
  {&cd_S7642C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(40,24), //bcp->offset
    53, //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_S7642C6,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7642C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7642C4[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C4D1Ev();
extern void _ZN7S7642C4D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7642C4D1Ev,_ZThn12_N7S7642C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7642C4D0Ev,_ZThn12_N7S7642C4D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7642C4[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__7S7642C4[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7642C5D1Ev,_ZThn12_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7642C5D0Ev,_ZThn12_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5__7S7642C4[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C5__7S7642C4[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__7S7642C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C4[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C6__7S7642C4[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C4[] = {
  {&(_ZTV7S7642C4[10]),  10,65},
  {&(_ZTV7S7642C4[10]),  10,65},
  {&(_ZTV7S7642C4[43]),  43,65},
  {&(_ZTV7S7642C4[10]),  10,65},
  {&(_ZTV7S7642C4[55]),  55,65},
  {&(_tg__ZTV7S7642C5__7S7642C4[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C5__7S7642C4[20]),  20,30},
  {&(_tg__ZTV7S7642C5__7S7642C4[6]),  6,12},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C5__7S7642C4[2]),  2,12},
  {&(_tg__ZTV7S7642C6__7S7642C4[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__7S7642C4[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C4[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C6__7S7642C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7642C4[];
extern  VTBL_ENTRY _ZTV7S7642C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C4[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C5D0Ev,_ZThn12_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C5D1Ev,_ZThn12_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C4D0Ev,_ZThn12_N7S7642C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C4D1Ev,_ZThn12_N7S7642C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C4 = {  "S7642C4", // class name
  bases_S7642C4, 6,
  &(vtc_S7642C4[0]), // expected_vtbl_contents
  &(vtt_S7642C4[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S7642C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7642C4),65, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7642C4),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C9_nt  {
  __tsi64 s7642c9f0;
  virtual void  v31(); // _ZN10S7642C9_nt3v31Ev
  virtual void  v32(); // _ZN10S7642C9_nt3v32Ev
  ~S7642C9_nt(); // tgen
  S7642C9_nt(); // tgen
};
//SIG(-1 S7642C9_nt) C1{ v1 v2 FL}


void  S7642C9_nt ::v31(){vfunc_called(this, "_ZN10S7642C9_nt3v31Ev");}
void  S7642C9_nt ::v32(){vfunc_called(this, "_ZN10S7642C9_nt3v32Ev");}
S7642C9_nt ::~S7642C9_nt(){ note_dtor("S7642C9_nt", this);} // tgen
S7642C9_nt ::S7642C9_nt(){ note_ctor("S7642C9_nt", this);} // tgen

//skip512 S7642C9_nt

#else // __cplusplus

extern void _ZN10S7642C9_ntC1Ev();
extern void _ZN10S7642C9_ntD1Ev();
Name_Map name_map_S7642C9_nt[] = {
  NSPAIR(_ZN10S7642C9_ntC1Ev),
  NSPAIR(_ZN10S7642C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7642C9_nt[];
extern void _ZN10S7642C9_nt3v31Ev();
extern void _ZN10S7642C9_nt3v32Ev();
static  VTBL_ENTRY vtc_S7642C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7642C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI10S7642C9_nt[];
VTBL_ENTRY *P__ZTI10S7642C9_nt = _ZTI10S7642C9_nt; 
extern  VTBL_ENTRY _ZTV10S7642C9_nt[];
Class_Descriptor cd_S7642C9_nt = {  "S7642C9_nt", // class name
  0,0,//no base classes
  &(vtc_S7642C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S7642C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7642C9_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S7642C12  {
  long double s7642c12f0[3];
  void  mf7642c12(); // _ZN8S7642C129mf7642c12Ev
};
//SIG(1 S7642C12) U1{ m FD[3]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7642C11  {
  ::S7642C12 s7642c11f0;
  virtual void  v33(); // _ZN8S7642C113v33Ev
  ~S7642C11(); // tgen
  S7642C11(); // tgen
};
//SIG(-1 S7642C11) C1{ v1 FU2{ m FD[3]}}


void  S7642C11 ::v33(){vfunc_called(this, "_ZN8S7642C113v33Ev");}
S7642C11 ::~S7642C11(){ note_dtor("S7642C11", this);} // tgen
S7642C11 ::S7642C11(){ note_ctor("S7642C11", this);} // tgen

static void Test_S7642C11()
{
  extern Class_Descriptor cd_S7642C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S7642C11, buf);
    S7642C11 *dp, &lv = *(dp=new (buf) S7642C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7642C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C11)");
    check_field_offset(lv, s7642c11f0, ABISELECT(16,4), "S7642C11.s7642c11f0");
    test_class_info(&lv, &cd_S7642C11);
    dp->~S7642C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C11(Test_S7642C11, "S7642C11", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S7642C11C1Ev();
extern void _ZN8S7642C11D1Ev();
Name_Map name_map_S7642C11[] = {
  NSPAIR(_ZN8S7642C11C1Ev),
  NSPAIR(_ZN8S7642C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7642C11[];
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY vtc_S7642C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C11[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
Class_Descriptor cd_S7642C11 = {  "S7642C11", // class name
  0,0,//no base classes
  &(vtc_S7642C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S7642C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7642C11),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  S7642C15  : S7642C8 , S7642C5 , S7642C11 , S7642C7 {
  void *s7642c15f0;
  __tsi64 s7642c15f1;
  virtual void  v34(); // _ZN8S7642C153v34Ev
  virtual void  v35(); // _ZN8S7642C153v35Ev
  virtual void  v36(); // _ZN8S7642C153v36Ev
  virtual void  v37(); // _ZN8S7642C153v37Ev
  virtual void  v38(); // _ZN8S7642C153v38Ev
  virtual void  v39(); // _ZN8S7642C153v39Ev
  ~S7642C15(); // tgen
  S7642C15(); // tgen
};
//SIG(-1 S7642C15) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp FL}


void  S7642C15 ::v34(){vfunc_called(this, "_ZN8S7642C153v34Ev");}
void  S7642C15 ::v35(){vfunc_called(this, "_ZN8S7642C153v35Ev");}
void  S7642C15 ::v36(){vfunc_called(this, "_ZN8S7642C153v36Ev");}
void  S7642C15 ::v37(){vfunc_called(this, "_ZN8S7642C153v37Ev");}
void  S7642C15 ::v38(){vfunc_called(this, "_ZN8S7642C153v38Ev");}
void  S7642C15 ::v39(){vfunc_called(this, "_ZN8S7642C153v39Ev");}
S7642C15 ::~S7642C15(){ note_dtor("S7642C15", this);} // tgen
S7642C15 ::S7642C15(){ note_ctor("S7642C15", this);} // tgen

static void Test_S7642C15()
{
  extern Class_Descriptor cd_S7642C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S7642C15, buf);
    S7642C15 *dp, &lv = *(dp=new (buf) S7642C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S7642C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C15)");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*), 0, "S7642C15");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*), 0, "S7642C15");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), ABISELECT(8,4), "S7642C15");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), ABISELECT(8,4), "S7642C15");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*), ABISELECT(8,4), "S7642C15");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(120,72), "S7642C15");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(144,84), "S7642C15");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(144,84), "S7642C15");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*), ABISELECT(120,72), "S7642C15");
    check_base_class_offset(lv, (S7642C5*), ABISELECT(8,4), "S7642C15");
    check_base_class_offset(lv, (S7642C11*), ABISELECT(16,8), "S7642C15");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*), ABISELECT(80,48), "S7642C15");
    check_field_offset(lv, s7642c15f0, ABISELECT(104,60), "S7642C15.s7642c15f0");
    check_field_offset(lv, s7642c15f1, ABISELECT(112,64), "S7642C15.s7642c15f1");
    test_class_info(&lv, &cd_S7642C15);
    dp->~S7642C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C15(Test_S7642C15, "S7642C15", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN8S7642C15C1Ev();
extern void _ZN8S7642C15D1Ev();
Name_Map name_map_S7642C15[] = {
  NSPAIR(_ZN8S7642C15C1Ev),
  NSPAIR(_ZN8S7642C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
static Base_Class bases_S7642C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S7642C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7642C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7642C7,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(144,84), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(120,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7642C5,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C11,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C7,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7642C15[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn120_N8S7642C15D1Ev,_ZThn72_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn120_N8S7642C15D0Ev,_ZThn72_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C15[] = {
  ABISELECT(8,4),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
  0,
  ABISELECT(112,68),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-72),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV8S7642C15[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C15[] = {
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7642C5D1Ev,_ZThn68_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7642C5D0Ev,_ZThn68_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5__8S7642C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C5__8S7642C15[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C15[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C7__A1__8S7642C15[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__8S7642C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C6__8S7642C15[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C6__8S7642C15[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C15[] = {
  {&(_ZTV8S7642C15[4]),  4,90},
  {&(_tg__ZTV7S7642C5__8S7642C15[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C5__8S7642C15[20]),  20,30},
  {&(_tg__ZTV7S7642C5__8S7642C15[6]),  6,12},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C5__8S7642C15[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C15[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C7__A1__8S7642C15[4]),  4,6},
  {&(_ZTV8S7642C15[28]),  28,90},
  {&(_ZTV8S7642C15[68]),  68,90},
  {&(_ZTV8S7642C15[28]),  28,90},
  {&(_ZTV8S7642C15[80]),  80,90},
  {&(_ZTV8S7642C15[42]),  42,90},
  {&(_tg__ZTV7S7642C6__8S7642C15[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C15[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C6__8S7642C15[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C6__8S7642C15[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7642C5D0Ev,_ZThn68_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7642C5D1Ev,_ZThn68_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7642C15D0Ev,_ZThn72_N8S7642C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7642C15D1Ev,_ZThn72_N8S7642C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C15 = {  "S7642C15", // class name
  bases_S7642C15, 10,
  &(vtc_S7642C15[0]), // expected_vtbl_contents
  &(vtt_S7642C15[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI8S7642C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7642C15),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7642C15),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C14  : virtual S7642C3_nt , S7642C6 , virtual S7642C11 , S7642C15 , S7642C8 {
  virtual  ~S7642C14(); // _ZN8S7642C14D2Ev
  virtual void  v40(); // _ZN8S7642C143v40Ev
  S7642C14(); // tgen
};
//SIG(-1 S7642C14) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp FL} BC5 vd v1}


 S7642C14 ::~S7642C14(){ note_dtor("S7642C14", this);}
void  S7642C14 ::v40(){vfunc_called(this, "_ZN8S7642C143v40Ev");}
S7642C14 ::S7642C14(){ note_ctor("S7642C14", this);} // tgen

static void Test_S7642C14()
{
  extern Class_Descriptor cd_S7642C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,40)];
    init_test(&cd_S7642C14, buf);
    S7642C14 *dp, &lv = *(dp=new (buf) S7642C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S7642C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C14)");
    /*is_ambiguous_... S7642C14::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), 0, "S7642C14");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C15*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(24,12), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(24,12), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*), 0, "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*), ABISELECT(176,96), "S7642C14");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C15*), ABISELECT(48,20), "S7642C14");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C15*), ABISELECT(48,20), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(240,136), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(264,148), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(264,148), "S7642C14");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*)(S7642C15*), ABISELECT(240,136), "S7642C14");
    check_base_class_offset(lv, (S7642C5*)(S7642C15*), ABISELECT(56,24), "S7642C14");
    check_base_class_offset(lv, (S7642C11*)(S7642C15*), ABISELECT(64,28), "S7642C14");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C15*), ABISELECT(128,68), "S7642C14");
    check_base_class_offset(lv, (S7642C15*), ABISELECT(48,20), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*), ABISELECT(168,92), "S7642C14");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*), ABISELECT(168,92), "S7642C14");
    test_class_info(&lv, &cd_S7642C14);
    dp->~S7642C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C14(Test_S7642C14, "S7642C14", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN8S7642C14C1Ev();
extern void _ZN8S7642C14D2Ev();
Name_Map name_map_S7642C14[] = {
  NSPAIR(_ZN8S7642C14C1Ev),
  NSPAIR(_ZN8S7642C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C15;
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
static Base_Class bases_S7642C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C7,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C6,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C11,    ABISELECT(176,96), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C3_nt,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(264,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(264,148), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(240,136), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7642C5,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C15,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C3_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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(168,92), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S7642C14[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C14D1Ev();
extern void _ZN8S7642C14D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev)();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn240_N8S7642C14D1Ev,_ZThn136_N8S7642C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev)();
extern void ABISELECT(_ZThn240_N8S7642C14D0Ev,_ZThn136_N8S7642C14D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C14[] = {
  ABISELECT(240,136),
  ABISELECT(176,96),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV8S7642C14[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A__8S7642C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__8S7642C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C15__8S7642C14[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C15__8S7642C14[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn184_N7S7642C5D1Ev,_ZThn112_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn184_N7S7642C5D0Ev,_ZThn112_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C58S7642C15__8S7642C14[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C58S7642C15__8S7642C14[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C58S7642C15__8S7642C14[] = {
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C15__A2__8S7642C14[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C78S7642C15__A2__8S7642C14[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C15__8S7642C14[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn192_N8S7642C15D1Ev,_ZThn116_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn192_N8S7642C15D0Ev,_ZThn116_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C15__8S7642C14[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__A1__8S7642C15__8S7642C14[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A1__8S7642C15__8S7642C14[] = {
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C15__8S7642C14[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A1__8S7642C14[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__A1__8S7642C14[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C6__A1__8S7642C14[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C6__A1__8S7642C14[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C14[] = {
  {&(_ZTV8S7642C14[7]),  7,136},
  {&(_tg__ZTV7S7642C6__A__8S7642C14[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C14[5]),  5,11},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C14[5]),  5,11},
  {&(_tg__ZTV7S7642C6__A__8S7642C14[5]),  5,15},
  {&(_tg__ZTV8S7642C15__8S7642C14[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C15__8S7642C14[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C15__8S7642C14[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__7S7642C58S7642C15__8S7642C14[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C58S7642C15__8S7642C14[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C15__A2__8S7642C14[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C78S7642C15__A2__8S7642C14[4]),  4,6},
  {&(_tg__ZTV7S7642C5__8S7642C15__8S7642C14[6]),  6,12},
  {&(_tg__ZTV7S7642C6__8S7642C15__8S7642C14[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__A1__8S7642C15__8S7642C14[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__A1__8S7642C15__8S7642C14[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C15__8S7642C14[5]),  5,11},
  {&(_ZTV8S7642C14[7]),  7,136},
  {&(_ZTV8S7642C14[93]),  93,136},
  {&(_ZTV8S7642C14[34]),  34,136},
  {&(_ZTV8S7642C14[58]),  58,136},
  {&(_ZTV8S7642C14[114]),  114,136},
  {&(_ZTV8S7642C14[126]),  126,136},
  {&(_ZTV8S7642C14[72]),  72,136},
  {&(_tg__ZTV7S7642C6__A1__8S7642C14[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__A1__8S7642C14[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C6__A1__8S7642C14[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C6__A1__8S7642C14[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7642C14[];
extern  VTBL_ENTRY _ZTV8S7642C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C14[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7642C15D0Ev,_ZThn116_N8S7642C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7642C15D1Ev,_ZThn116_N8S7642C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7642C5D0Ev,_ZThn112_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7642C5D1Ev,_ZThn112_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7642C14D0Ev,_ZThn136_N8S7642C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7642C14D1Ev,_ZThn136_N8S7642C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C14 = {  "S7642C14", // class name
  bases_S7642C14, 18,
  &(vtc_S7642C14[0]), // expected_vtbl_contents
  &(vtt_S7642C14[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI8S7642C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7642C14),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7642C14),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C13  : virtual S7642C6 , S7642C14 , virtual S7642C5 , virtual S7642C7 , S7642C3_nt {
  virtual  ~S7642C13(); // _ZN8S7642C13D2Ev
  virtual void  v41(); // _ZN8S7642C133v41Ev
  virtual void  v42(); // _ZN8S7642C133v42Ev
  virtual void  v43(); // _ZN8S7642C133v43Ev
  S7642C13(); // tgen
};
//SIG(-1 S7642C13) C1{ VBC2{ VBC3{ v4 v5} BC4{ VBC3 v6 v7 v8 v9 Fp Fc} BC5{ BC3 v10 v11 v12 v13 v14 v15 v16 v17} vd v18 v19 FC3} BC6{ VBC3 BC2 VBC7{ v20 FU8{ m FD[3]}} BC9{ BC5 BC10{ VBC2 vd v21 v22} BC7 BC4 v23 v24 v25 v26 v27 v28 Fp FL} BC5 vd v29} VBC10 VBC4 BC3 vd v1 v2 v3}


 S7642C13 ::~S7642C13(){ note_dtor("S7642C13", this);}
void  S7642C13 ::v41(){vfunc_called(this, "_ZN8S7642C133v41Ev");}
void  S7642C13 ::v42(){vfunc_called(this, "_ZN8S7642C133v42Ev");}
void  S7642C13 ::v43(){vfunc_called(this, "_ZN8S7642C133v43Ev");}
S7642C13 ::S7642C13(){ note_ctor("S7642C13", this);} // tgen

static void Test_S7642C13()
{
  extern Class_Descriptor cd_S7642C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,45)];
    init_test(&cd_S7642C13, buf);
    S7642C13 *dp, &lv = *(dp=new (buf) S7642C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,176), "sizeof(S7642C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C13)");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C14*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C14*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C14*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C15*)(S7642C14*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(208,112), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(208,112), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*), ABISELECT(184,100), "S7642C13");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*)(S7642C15*)(S7642C14*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C5*), ABISELECT(184,100), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C14*), 0, "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C14*), ABISELECT(24,12), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C14*), ABISELECT(24,12), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C14*), 0, "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C14*), ABISELECT(224,120), "S7642C13");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C15*)(S7642C14*), ABISELECT(48,20), "S7642C13");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C15*)(S7642C14*), ABISELECT(48,20), "S7642C13");
    check_base_class_offset(lv, (S7642C5*)(S7642C15*)(S7642C14*), ABISELECT(56,24), "S7642C13");
    check_base_class_offset(lv, (S7642C11*)(S7642C15*)(S7642C14*), ABISELECT(64,28), "S7642C13");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C15*)(S7642C14*), ABISELECT(128,68), "S7642C13");
    check_base_class_offset(lv, (S7642C15*)(S7642C14*), ABISELECT(48,20), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C14*), ABISELECT(168,92), "S7642C13");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C14*), ABISELECT(168,92), "S7642C13");
    check_base_class_offset(lv, (S7642C14*), 0, "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C5*), ABISELECT(288,160), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*), ABISELECT(296,164), "S7642C13");
    /*is_ambiguous_... S7642C13::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*), ABISELECT(176,96), "S7642C13");
    test_class_info(&lv, &cd_S7642C13);
    dp->~S7642C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C13(Test_S7642C13, "S7642C13", ABISELECT(320,176));

#else // __cplusplus

extern void _ZN8S7642C13C1Ev();
extern void _ZN8S7642C13D2Ev();
Name_Map name_map_S7642C13[] = {
  NSPAIR(_ZN8S7642C13C1Ev),
  NSPAIR(_ZN8S7642C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C15;
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C14;
extern VTBL_ENTRY _ZTI8S7642C14[];
extern  VTBL_ENTRY _ZTV8S7642C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C14[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
static Base_Class bases_S7642C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    ABISELECT(184,100), //bcp->offset
    -1, //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
    1, //immediately_derived
  0, 1},
  {&cd_S7642C7,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(208,112), //bcp->offset
    129, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(184,100), //bcp->offset
    99, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    10, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(24,12), //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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7642C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(224,120), //bcp->offset
    141, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7642C3_nt,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C5,    ABISELECT(56,24), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(64,28), //bcp->offset
    69, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(128,68), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C15,    ABISELECT(48,20), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(168,92), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7642C14,    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_S7642C5,    ABISELECT(288,160), //bcp->offset
    145, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C7,    ABISELECT(296,164), //bcp->offset
    160, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C3_nt,    ABISELECT(176,96), //bcp->offset
    95, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7642C13[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C13D1Ev();
extern void _ZN8S7642C13D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev)();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn184_N8S7642C13D1Ev,_ZThn100_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn184_N8S7642C13D0Ev,_ZThn100_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn288_N8S7642C13D1Ev,_ZThn160_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn288_N8S7642C13D0Ev,_ZThn160_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY vtc_S7642C13[] = {
  ABISELECT(296,164),
  ABISELECT(288,160),
  ABISELECT(184,100),
  ABISELECT(224,120),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-296,-164),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern VTBL_ENTRY _ZTV8S7642C13[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C14D1Ev();
extern void _ZN8S7642C14D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C14__8S7642C13[] = {
  ABISELECT(184,100),
  ABISELECT(224,120),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C14__A1__8S7642C13[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C14__A1__8S7642C13[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C14__A1__8S7642C13[] = {
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C14__A1__8S7642C13[] = {
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S7642C5D1Ev,_ZThn76_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S7642C5D0Ev,_ZThn76_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C58S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-128,-76),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C14__A2__8S7642C13[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn136_N8S7642C15D1Ev,_ZThn80_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn136_N8S7642C15D0Ev,_ZThn80_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-136,-80),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C158S7642C14__8S7642C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn184_N8S7642C14D1Ev,_ZThn100_N8S7642C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev)();
extern void ABISELECT(_ZThn184_N8S7642C14D0Ev,_ZThn100_N8S7642C14D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A1__8S7642C14__8S7642C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C14__8S7642C13[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C15__8S7642C14__8S7642C13[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C15__8S7642C14__8S7642C13[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A2__8S7642C14__8S7642C13[] = {
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C15__A2__8S7642C14__8S7642C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__8S7642C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5__A1__8S7642C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C5__A1__8S7642C13[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C13[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C7__A3__8S7642C13[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C13[] = {
  {&(_ZTV8S7642C13[9]),  9,175},
  {&(_tg__ZTV8S7642C14__8S7642C13[7]),  7,18},
  {&(_tg__ZTV7S7642C68S7642C14__A1__8S7642C13[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C14__A1__8S7642C13[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C14__A1__8S7642C13[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C14__A1__8S7642C13[4]),  4,6},
  {&(_tg__ZTV8S7642C158S7642C14__8S7642C13[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C14__8S7642C13[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C14__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C14__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C14__8S7642C13[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C13[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C14__A2__8S7642C13[4]),  4,6},
  {&(_tg__ZTV7S7642C5__8S7642C158S7642C14__8S7642C13[6]),  6,12},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C14__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C14__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C14__8S7642C13[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C158S7642C14__8S7642C13[5]),  5,11},
  {&(_tg__ZTV7S7642C6__A1__8S7642C14__8S7642C13[20]),  20,30},
  {&(_tg__ZTV8S7642C11__8S7642C14__8S7642C13[3]),  3,4},
  {&(_tg__ZTV8S7642C15__8S7642C14__8S7642C13[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C15__8S7642C14__8S7642C13[6]),  6,12},
  {&(_tg__ZTV7S7642C6__A1__8S7642C14__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A2__8S7642C14__8S7642C13[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C15__A2__8S7642C14__8S7642C13[5]),  5,11},
  {&(_ZTV8S7642C13[119]),  119,175},
  {&(_ZTV8S7642C13[119]),  119,175},
  {&(_ZTV8S7642C13[131]),  131,175},
  {&(_ZTV8S7642C13[144]),  144,175},
  {&(_ZTV8S7642C13[39]),  39,175},
  {&(_ZTV8S7642C13[63]),  63,175},
  {&(_ZTV8S7642C13[77]),  77,175},
  {&(_ZTV8S7642C13[154]),  154,175},
  {&(_ZTV8S7642C13[169]),  169,175},
  {&(_tg__ZTV7S7642C6__8S7642C13[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C13[5]),  5,11},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C13[5]),  5,11},
  {&(_tg__ZTV7S7642C6__8S7642C13[5]),  5,15},
  {&(_tg__ZTV7S7642C5__A1__8S7642C13[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C5__A1__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C6__7S7642C5__A1__8S7642C13[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C5__A1__8S7642C13[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A3__8S7642C13[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C7__A3__8S7642C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7642C13[];
extern  VTBL_ENTRY _ZTV8S7642C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C13[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7642C14D0Ev,_ZThn100_N8S7642C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7642C14D1Ev,_ZThn100_N8S7642C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7642C15D0Ev,_ZThn80_N8S7642C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7642C15D1Ev,_ZThn80_N8S7642C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7642C5D0Ev,_ZThn76_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7642C5D1Ev,_ZThn76_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7642C13D0Ev,_ZThn160_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7642C13D1Ev,_ZThn160_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7642C13D0Ev,_ZThn100_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7642C13D1Ev,_ZThn100_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C13 = {  "S7642C13", // class name
  bases_S7642C13, 22,
  &(vtc_S7642C13[0]), // expected_vtbl_contents
  &(vtt_S7642C13[0]), // expected_vtt_contents
  ABISELECT(320,176), // object size
  NSPAIRA(_ZTI8S7642C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7642C13),175, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7642C13),44, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C16  : S7642C6 , S7642C11 {
  virtual void  v44(); // _ZN8S7642C163v44Ev
  virtual void  v45(); // _ZN8S7642C163v45Ev
  ~S7642C16(); // tgen
  S7642C16(); // tgen
};
//SIG(-1 S7642C16) C1{ BC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} BC6{ v19 FU7{ m FD[3]}} v1 v2}


void  S7642C16 ::v44(){vfunc_called(this, "_ZN8S7642C163v44Ev");}
void  S7642C16 ::v45(){vfunc_called(this, "_ZN8S7642C163v45Ev");}
S7642C16 ::~S7642C16(){ note_dtor("S7642C16", this);} // tgen
S7642C16 ::S7642C16(){ note_ctor("S7642C16", this);} // tgen

static void Test_S7642C16()
{
  extern Class_Descriptor cd_S7642C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S7642C16, buf);
    S7642C16 *dp, &lv = *(dp=new (buf) S7642C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7642C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C16)");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), 0, "S7642C16");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), 0, "S7642C16");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*), 0, "S7642C16");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(24,12), "S7642C16");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(24,12), "S7642C16");
    check_base_class_offset(lv, (S7642C6*), 0, "S7642C16");
    check_base_class_offset(lv, (S7642C11*), ABISELECT(48,20), "S7642C16");
    test_class_info(&lv, &cd_S7642C16);
    dp->~S7642C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C16(Test_S7642C16, "S7642C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S7642C16C1Ev();
extern void _ZN8S7642C16D1Ev();
Name_Map name_map_S7642C16[] = {
  NSPAIR(_ZN8S7642C16C1Ev),
  NSPAIR(_ZN8S7642C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
static Base_Class bases_S7642C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7642C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(24,12), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C6,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C11,    ABISELECT(48,20), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7642C16[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C16D1Ev();
extern void _ZN8S7642C16D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY vtc_S7642C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern VTBL_ENTRY _ZTV8S7642C16[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__8S7642C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
static  VTT_ENTRY vtt_S7642C16[] = {
  {&(_ZTV8S7642C16[5]),  5,32},
  {&(_tg__ZTV7S7642C6__8S7642C16[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C16[5]),  5,11},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C16[5]),  5,11},
  {&(_tg__ZTV7S7642C6__8S7642C16[5]),  5,15},
  {&(_ZTV8S7642C16[5]),  5,32},
};
extern VTBL_ENTRY _ZTI8S7642C16[];
extern  VTBL_ENTRY _ZTV8S7642C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C16[];
Class_Descriptor cd_S7642C16 = {  "S7642C16", // class name
  bases_S7642C16, 6,
  &(vtc_S7642C16[0]), // expected_vtbl_contents
  &(vtt_S7642C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S7642C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7642C16),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7642C16),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C10  : S7642C11 , virtual S7642C3_nt , S7642C13 , S7642C16 {
  __tsi64 s7642c10f0;
  virtual  ~S7642C10(); // _ZN8S7642C10D2Ev
  S7642C10(); // tgen
};
//SIG(-1 S7642C10) C1{ BC2{ v1 FU3{ m FD[3]}} VBC4{ v2 v3} BC5{ VBC6{ VBC4 BC7{ VBC4 v4 v5 v6 v7 Fp Fc} BC8{ BC4 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC4} BC9{ VBC4 BC6 VBC2 BC10{ BC8 BC11{ VBC6 vd v18 v19} BC2 BC7 v20 v21 v22 v23 v24 v25 Fp FL} BC8 vd v26} VBC11 VBC7 BC4 vd v27 v28 v29} BC12{ BC6 BC2 v30 v31} vd FL}


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

static void Test_S7642C10()
{
  extern Class_Descriptor cd_S7642C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,72)];
    init_test(&cd_S7642C10, buf);
    S7642C10 *dp, &lv = *(dp=new (buf) S7642C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,284), "sizeof(S7642C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C10)");
    /*is_ambiguous_... S7642C10::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*), 0, "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C14*)(S7642C13*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C14*)(S7642C13*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C14*)(S7642C13*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C16*), ABISELECT(376,208), "S7642C10");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C16*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(400,220), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(400,220), "S7642C10");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C13*), ABISELECT(376,208), "S7642C10");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C10::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C5*), ABISELECT(376,208), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C14*)(S7642C13*), ABISELECT(64,40), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C14*)(S7642C13*), ABISELECT(88,52), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C14*)(S7642C13*), ABISELECT(88,52), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C14*)(S7642C13*), ABISELECT(64,40), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C14*)(S7642C13*), ABISELECT(416,228), "S7642C10");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(112,60), "S7642C10");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(112,60), "S7642C10");
    check_base_class_offset(lv, (S7642C5*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(120,64), "S7642C10");
    check_base_class_offset(lv, (S7642C11*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(128,68), "S7642C10");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(192,108), "S7642C10");
    check_base_class_offset(lv, (S7642C15*)(S7642C14*)(S7642C13*), ABISELECT(112,60), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C14*)(S7642C13*), ABISELECT(232,132), "S7642C10");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C14*)(S7642C13*), ABISELECT(232,132), "S7642C10");
    check_base_class_offset(lv, (S7642C14*)(S7642C13*), ABISELECT(64,40), "S7642C10");
    /*is_ambiguous_... S7642C13::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C5*)(S7642C13*), ABISELECT(480,268), "S7642C10");
    /*is_ambiguous_... S7642C13::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C13*), ABISELECT(488,272), "S7642C10");
    /*is_ambiguous_... S7642C13::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C13*), ABISELECT(240,136), "S7642C10");
    check_base_class_offset(lv, (S7642C13*), ABISELECT(64,40), "S7642C10");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C16*), ABISELECT(256,140), "S7642C10");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C16*), ABISELECT(280,152), "S7642C10");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C16*), ABISELECT(280,152), "S7642C10");
    check_base_class_offset(lv, (S7642C6*)(S7642C16*), ABISELECT(256,140), "S7642C10");
    check_base_class_offset(lv, (S7642C11*)(S7642C16*), ABISELECT(304,160), "S7642C10");
    check_base_class_offset(lv, (S7642C16*), ABISELECT(256,140), "S7642C10");
    check_field_offset(lv, s7642c10f0, ABISELECT(368,200), "S7642C10.s7642c10f0");
    test_class_info(&lv, &cd_S7642C10);
    dp->~S7642C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C10(Test_S7642C10, "S7642C10", ABISELECT(512,284));

#else // __cplusplus

extern void _ZN8S7642C10C1Ev();
extern void _ZN8S7642C10D2Ev();
Name_Map name_map_S7642C10[] = {
  NSPAIR(_ZN8S7642C10C1Ev),
  NSPAIR(_ZN8S7642C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C15;
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C14;
extern VTBL_ENTRY _ZTI8S7642C14[];
extern  VTBL_ENTRY _ZTV8S7642C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C14[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C13;
extern VTBL_ENTRY _ZTI8S7642C13[];
extern  VTBL_ENTRY _ZTV8S7642C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C13[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C16;
extern VTBL_ENTRY _ZTI8S7642C16[];
extern  VTBL_ENTRY _ZTV8S7642C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C16[];
static Base_Class bases_S7642C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7642C3_nt,    ABISELECT(376,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C7,    ABISELECT(376,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(400,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(400,220), //bcp->offset
    171, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(376,208), //bcp->offset
    141, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7642C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(88,52), //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
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(416,228), //bcp->offset
    183, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7642C3_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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7642C8,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7642C5,    ABISELECT(120,64), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(128,68), //bcp->offset
    79, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(192,108), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7642C15,    ABISELECT(112,60), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(232,132), //bcp->offset
    93, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7642C14,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7642C5,    ABISELECT(480,268), //bcp->offset
    187, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7642C7,    ABISELECT(488,272), //bcp->offset
    202, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7642C3_nt,    ABISELECT(240,136), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7642C13,    ABISELECT(64,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C7,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(280,152), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(304,160), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7642C16,    ABISELECT(256,140), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7642C10[];
extern void _ZN8S7642C113v33Ev();
extern void _ZN8S7642C10D1Ev();
extern void _ZN8S7642C10D0Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn64_N8S7642C10D1Ev,_ZThn40_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7642C10D0Ev,_ZThn40_N8S7642C10D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn112_N8S7642C10D1Ev,_ZThn60_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7642C10D0Ev,_ZThn60_N8S7642C10D0Ev)();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn120_N8S7642C10D1Ev,_ZThn64_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S7642C10D0Ev,_ZThn64_N8S7642C10D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn256_N8S7642C10D1Ev,_ZThn140_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7642C10D0Ev,_ZThn140_N8S7642C10D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn376_N8S7642C10D1Ev,_ZThn208_N8S7642C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev)();
extern void ABISELECT(_ZThn376_N8S7642C10D0Ev,_ZThn208_N8S7642C10D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn480_N8S7642C10D1Ev,_ZThn268_N8S7642C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev)();
extern void ABISELECT(_ZThn480_N8S7642C10D0Ev,_ZThn268_N8S7642C10D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY vtc_S7642C10[] = {
  ABISELECT(488,272),
  ABISELECT(480,268),
  ABISELECT(416,228),
  ABISELECT(376,208),
  ABISELECT(376,208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  (VTBL_ENTRY)&_ZN8S7642C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C10D0Ev,
  ABISELECT(424,232),
  ABISELECT(416,228),
  ABISELECT(312,168),
  ABISELECT(352,188),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7642C10D1Ev,_ZThn40_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7642C10D0Ev,_ZThn40_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7642C10D1Ev,_ZThn60_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7642C10D0Ev,_ZThn60_N8S7642C10D0Ev),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7642C10D1Ev,_ZThn64_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7642C10D0Ev,_ZThn64_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7642C10D1Ev,_ZThn140_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7642C10D0Ev,_ZThn140_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-376,-208),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  0,
  ABISELECT(-416,-228),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  0,
  0,
  ABISELECT(-480,-268),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-488,-272),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern VTBL_ENTRY _ZTV8S7642C10[];
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C13D1Ev();
extern void _ZN8S7642C13D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C13__8S7642C10[] = {
  ABISELECT(424,232),
  ABISELECT(416,228),
  ABISELECT(312,168),
  ABISELECT(352,188),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C14D1Ev();
extern void _ZN8S7642C14D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(312,168),
  ABISELECT(352,188),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C148S7642C13__A1__8S7642C10[] = {
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C148S7642C13__A1__8S7642C10[] = {
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C148S7642C13__A1__8S7642C10[] = {
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C148S7642C13__A1__8S7642C10[] = {
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn256_N7S7642C5D1Ev,_ZThn144_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn256_N7S7642C5D0Ev,_ZThn144_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-256,-144),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C10[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C10[] = {
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn264_N8S7642C15D1Ev,_ZThn148_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn264_N8S7642C15D0Ev,_ZThn148_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-264,-148),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C158S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn312_N8S7642C14D1Ev,_ZThn168_N8S7642C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev)();
extern void ABISELECT(_ZThn312_N8S7642C14D0Ev,_ZThn168_N8S7642C14D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A1__8S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-168),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C148S7642C13__8S7642C10[] = {
  0,
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C15__8S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C15__8S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A2__8S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C15__A2__8S7642C148S7642C13__8S7642C10[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn312_N8S7642C13D1Ev,_ZThn168_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn312_N8S7642C13D0Ev,_ZThn168_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C13__8S7642C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-168),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__8S7642C13__8S7642C10[] = {
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C13__8S7642C10[] = {
  0,
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C14__8S7642C13__8S7642C10[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C14__8S7642C13__8S7642C10[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C13__8S7642C10[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn416_N8S7642C13D1Ev,_ZThn228_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn416_N8S7642C13D0Ev,_ZThn228_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C13__8S7642C10[] = {
  0,
  0,
  ABISELECT(-416,-228),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-416,-228),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C13__8S7642C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-424,-232),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C16D1Ev();
extern void _ZN8S7642C16D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C16__8S7642C10[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C16__A2__8S7642C10[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C16__A4__8S7642C10[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C16__A4__8S7642C10[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C16__A2__8S7642C10[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__8S7642C16__8S7642C10[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C10[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__8S7642C10[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C10[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5__A1__8S7642C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C5__A1__8S7642C10[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C10[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C7__A3__8S7642C10[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C10[] = {
  {&(_ZTV8S7642C10[7]),  7,217},
  {&(_tg__ZTV8S7642C13__8S7642C10[9]),  9,23},
  {&(_tg__ZTV8S7642C148S7642C13__8S7642C10[7]),  7,18},
  {&(_tg__ZTV7S7642C68S7642C148S7642C13__A1__8S7642C10[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C148S7642C13__A1__8S7642C10[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C148S7642C13__A1__8S7642C10[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C148S7642C13__A1__8S7642C10[4]),  4,6},
  {&(_tg__ZTV8S7642C158S7642C148S7642C13__8S7642C10[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C148S7642C13__8S7642C10[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C148S7642C13__8S7642C10[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C10[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C10[4]),  4,6},
  {&(_tg__ZTV7S7642C5__8S7642C158S7642C148S7642C13__8S7642C10[6]),  6,12},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C148S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C148S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C148S7642C13__8S7642C10[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C158S7642C148S7642C13__8S7642C10[5]),  5,11},
  {&(_tg__ZTV7S7642C6__A1__8S7642C148S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV8S7642C11__8S7642C148S7642C13__8S7642C10[3]),  3,4},
  {&(_tg__ZTV8S7642C15__8S7642C148S7642C13__8S7642C10[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C15__8S7642C148S7642C13__8S7642C10[6]),  6,12},
  {&(_tg__ZTV7S7642C6__A1__8S7642C148S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A2__8S7642C148S7642C13__8S7642C10[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C15__A2__8S7642C148S7642C13__8S7642C10[5]),  5,11},
  {&(_tg__ZTV7S7642C6__8S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C6__8S7642C13__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__8S7642C13__8S7642C10[2]),  2,12},
  {&(_tg__ZTV8S7642C11__8S7642C13__8S7642C10[3]),  3,4},
  {&(_tg__ZTV8S7642C158S7642C14__8S7642C13__8S7642C10[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C14__8S7642C13__8S7642C10[6]),  6,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C13__8S7642C10[5]),  5,11},
  {&(_tg__ZTV7S7642C5__A1__8S7642C13__8S7642C10[9]),  9,15},
  {&(_tg__ZTV7S7642C7__A3__8S7642C13__8S7642C10[9]),  9,15},
  {&(_tg__ZTV8S7642C16__8S7642C10[5]),  5,17},
  {&(_tg__ZTV7S7642C68S7642C16__A2__8S7642C10[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C16__A4__8S7642C10[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C16__A4__8S7642C10[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C16__A2__8S7642C10[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__8S7642C16__8S7642C10[4]),  4,6},
  {&(_ZTV8S7642C10[161]),  161,217},
  {&(_ZTV8S7642C10[19]),  19,217},
  {&(_ZTV8S7642C10[161]),  161,217},
  {&(_ZTV8S7642C10[173]),  173,217},
  {&(_ZTV8S7642C10[186]),  186,217},
  {&(_ZTV8S7642C10[49]),  49,217},
  {&(_ZTV8S7642C10[73]),  73,217},
  {&(_ZTV8S7642C10[87]),  87,217},
  {&(_ZTV8S7642C10[196]),  196,217},
  {&(_ZTV8S7642C10[211]),  211,217},
  {&(_ZTV8S7642C10[114]),  114,217},
  {&(_tg__ZTV7S7642C6__8S7642C10[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C10[5]),  5,11},
  {&(_tg__ZTV7S7642C77S7642C6__8S7642C10[5]),  5,11},
  {&(_tg__ZTV7S7642C6__8S7642C10[5]),  5,15},
  {&(_tg__ZTV7S7642C5__A1__8S7642C10[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C5__A1__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C6__7S7642C5__A1__8S7642C10[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C5__A1__8S7642C10[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A3__8S7642C10[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C7__A3__8S7642C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7642C10[];
extern  VTBL_ENTRY _ZTV8S7642C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C10[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7642C13D0Ev,_ZThn228_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7642C13D1Ev,_ZThn228_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7642C13D0Ev,_ZThn168_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7642C13D1Ev,_ZThn168_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7642C14D0Ev,_ZThn168_N8S7642C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7642C14D1Ev,_ZThn168_N8S7642C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7642C15D0Ev,_ZThn148_N8S7642C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7642C15D1Ev,_ZThn148_N8S7642C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7642C5D0Ev,_ZThn144_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7642C5D1Ev,_ZThn144_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7642C10D0Ev,_ZThn268_N8S7642C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7642C10D1Ev,_ZThn268_N8S7642C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7642C10D0Ev,_ZThn208_N8S7642C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7642C10D1Ev,_ZThn208_N8S7642C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C10 = {  "S7642C10", // class name
  bases_S7642C10, 30,
  &(vtc_S7642C10[0]), // expected_vtbl_contents
  &(vtt_S7642C10[0]), // expected_vtt_contents
  ABISELECT(512,284), // object size
  NSPAIRA(_ZTI8S7642C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7642C10),217, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7642C10),62, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C2  : virtual S7642C3_nt , virtual S7642C4 , virtual S7642C9_nt , S7642C10 , virtual S7642C8 {
  __tsi64 s7642c2f0;
  virtual void  v46(); // _ZN7S7642C23v46Ev
  virtual void  v47(); // _ZN7S7642C23v47Ev
  virtual void  v48(); // _ZN7S7642C23v48Ev
  virtual void  v49(); // _ZN7S7642C23v49Ev
  virtual void  v50(); // _ZN7S7642C23v50Ev
  ~S7642C2(); // tgen
  S7642C2(); // tgen
};
//SIG(-1 S7642C2) C1{ VBC2{ v6 v7} VBC3{ VBC4{ VBC5{ VBC2 BC6{ VBC2 v8 v9 v10 v11 Fp Fc} BC7{ BC2 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC2} vd v22 v23} vd v24 v25 v26 v27 v28 v29 v30 FL:40} VBC8{ v31 v32 FL} BC9{ BC10{ v33 FU11{ m FD[3]}} VBC2 BC12{ VBC5 BC13{ VBC2 BC5 VBC10 BC14{ BC7 BC4 BC10 BC6 v34 v35 v36 v37 v38 v39 Fp FL} BC7 vd v40} VBC4 VBC6 BC2 vd v41 v42 v43} BC15{ BC5 BC10 v44 v45} vd FL} VBC7 v1 v2 v3 v4 v5 FL}


void  S7642C2 ::v46(){vfunc_called(this, "_ZN7S7642C23v46Ev");}
void  S7642C2 ::v47(){vfunc_called(this, "_ZN7S7642C23v47Ev");}
void  S7642C2 ::v48(){vfunc_called(this, "_ZN7S7642C23v48Ev");}
void  S7642C2 ::v49(){vfunc_called(this, "_ZN7S7642C23v49Ev");}
void  S7642C2 ::v50(){vfunc_called(this, "_ZN7S7642C23v50Ev");}
S7642C2 ::~S7642C2(){ note_dtor("S7642C2", this);} // tgen
S7642C2 ::S7642C2(){ note_ctor("S7642C2", this);} // tgen

static void Test_S7642C2()
{
  extern Class_Descriptor cd_S7642C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,80)];
    init_test(&cd_S7642C2, buf);
    S7642C2 *dp, &lv = *(dp=new (buf) S7642C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,316), "sizeof(S7642C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C2)");
    /*is_ambiguous_... S7642C2::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C10::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C16*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C16*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(400,228), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(424,240), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(424,240), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C5*), ABISELECT(400,228), "S7642C2");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C13*)(S7642C10*), ABISELECT(400,228), "S7642C2");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(400,228), "S7642C2");
    check_base_class_offset(lv, (S7642C5*)(S7642C4*), ABISELECT(384,216), "S7642C2");
    /*is_ambiguous_... S7642C13::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C5*)(S7642C13*)(S7642C10*), ABISELECT(384,216), "S7642C2");
    check_base_class_offset(lv, (S7642C4*), ABISELECT(384,216), "S7642C2");
    check_base_class_offset(lv, (S7642C9_nt*), ABISELECT(440,248), "S7642C2");
    /*is_ambiguous_... S7642C10::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C10*), 0, "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(64,40), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(88,52), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(88,52), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(64,40), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(464,260), "S7642C2");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(112,60), "S7642C2");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(112,60), "S7642C2");
    check_base_class_offset(lv, (S7642C5*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(120,64), "S7642C2");
    check_base_class_offset(lv, (S7642C11*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(128,68), "S7642C2");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(192,108), "S7642C2");
    check_base_class_offset(lv, (S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(112,60), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(232,132), "S7642C2");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(232,132), "S7642C2");
    check_base_class_offset(lv, (S7642C14*)(S7642C13*)(S7642C10*), ABISELECT(64,40), "S7642C2");
    /*is_ambiguous_... S7642C13::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C13*)(S7642C10*), ABISELECT(528,300), "S7642C2");
    /*is_ambiguous_... S7642C13::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C13*)(S7642C10*), ABISELECT(240,136), "S7642C2");
    check_base_class_offset(lv, (S7642C13*)(S7642C10*), ABISELECT(64,40), "S7642C2");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C16*)(S7642C10*), ABISELECT(256,140), "S7642C2");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C16*)(S7642C10*), ABISELECT(280,152), "S7642C2");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C16*)(S7642C10*), ABISELECT(280,152), "S7642C2");
    check_base_class_offset(lv, (S7642C6*)(S7642C16*)(S7642C10*), ABISELECT(256,140), "S7642C2");
    check_base_class_offset(lv, (S7642C11*)(S7642C16*)(S7642C10*), ABISELECT(304,160), "S7642C2");
    check_base_class_offset(lv, (S7642C16*)(S7642C10*), ABISELECT(256,140), "S7642C2");
    check_base_class_offset(lv, (S7642C10*), 0, "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*), ABISELECT(552,312), "S7642C2");
    /*is_ambiguous_... S7642C2::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*), ABISELECT(552,312), "S7642C2");
    check_field_offset(lv, s7642c2f0, ABISELECT(376,208), "S7642C2.s7642c2f0");
    test_class_info(&lv, &cd_S7642C2);
    dp->~S7642C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C2(Test_S7642C2, "S7642C2", ABISELECT(560,316));

#else // __cplusplus

extern void _ZN7S7642C2C1Ev();
extern void _ZN7S7642C2D1Ev();
Name_Map name_map_S7642C2[] = {
  NSPAIR(_ZN7S7642C2C1Ev),
  NSPAIR(_ZN7S7642C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C4;
extern VTBL_ENTRY _ZTI7S7642C4[];
extern  VTBL_ENTRY _ZTV7S7642C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C4[];
extern Class_Descriptor cd_S7642C9_nt;
extern VTBL_ENTRY _ZTI10S7642C9_nt[];
extern  VTBL_ENTRY _ZTV10S7642C9_nt[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C15;
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C14;
extern VTBL_ENTRY _ZTI8S7642C14[];
extern  VTBL_ENTRY _ZTV8S7642C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C14[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C13;
extern VTBL_ENTRY _ZTI8S7642C13[];
extern  VTBL_ENTRY _ZTV8S7642C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C13[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C16;
extern VTBL_ENTRY _ZTI8S7642C16[];
extern  VTBL_ENTRY _ZTV8S7642C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C16[];
extern Class_Descriptor cd_S7642C10;
extern VTBL_ENTRY _ZTI8S7642C10[];
extern  VTBL_ENTRY _ZTV8S7642C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C10[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
static Base_Class bases_S7642C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    ABISELECT(384,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C7,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(424,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(424,240), //bcp->offset
    209, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(400,228), //bcp->offset
    179, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7642C5,    ABISELECT(384,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7642C4,    ABISELECT(384,216), //bcp->offset
    149, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C9_nt,    ABISELECT(440,248), //bcp->offset
    221, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7642C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    15, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(88,52), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(464,260), //bcp->offset
    227, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7642C3_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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C8,    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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C5,    ABISELECT(120,64), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(128,68), //bcp->offset
    87, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(192,108), //bcp->offset
    90, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C15,    ABISELECT(112,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(232,132), //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
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7642C14,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(528,300), //bcp->offset
    231, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7642C3_nt,    ABISELECT(240,136), //bcp->offset
    113, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S7642C13,    ABISELECT(64,40), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    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
    30, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(280,152), //bcp->offset
    134, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(304,160), //bcp->offset
    146, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7642C16,    ABISELECT(256,140), //bcp->offset
    117, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7642C10,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C3_nt,    ABISELECT(552,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
    11, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(552,312), //bcp->offset
    246, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7642C2[];
extern void _ZN8S7642C113v33Ev();
extern void _ZN7S7642C2D1Ev();
extern void _ZN7S7642C2D0Ev();
extern void _ZN7S7642C23v46Ev();
extern void _ZN7S7642C23v47Ev();
extern void _ZN7S7642C23v48Ev();
extern void _ZN7S7642C23v49Ev();
extern void _ZN7S7642C23v50Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn64_N7S7642C2D1Ev,_ZThn40_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7642C2D0Ev,_ZThn40_N7S7642C2D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn112_N7S7642C2D1Ev,_ZThn60_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7642C2D0Ev,_ZThn60_N7S7642C2D0Ev)();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn120_N7S7642C2D1Ev,_ZThn64_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7642C2D0Ev,_ZThn64_N7S7642C2D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn256_N7S7642C2D1Ev,_ZThn140_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7642C2D0Ev,_ZThn140_N7S7642C2D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C2D1Ev,_ZTv0_n28_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S7642C2D1Ev,_ZThn216_N7S7642C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C2D0Ev,_ZTv0_n28_N7S7642C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S7642C2D0Ev,_ZThn216_N7S7642C2D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C2D1Ev,_ZTv0_n40_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn400_N7S7642C2D1Ev,_ZThn228_N7S7642C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C2D0Ev,_ZTv0_n40_N7S7642C2D0Ev)();
extern void ABISELECT(_ZThn400_N7S7642C2D0Ev,_ZThn228_N7S7642C2D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C9_nt3v31Ev();
extern void _ZN10S7642C9_nt3v32Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C2[] = {
  ABISELECT(552,312),
  ABISELECT(440,248),
  ABISELECT(384,216),
  ABISELECT(528,300),
  ABISELECT(384,216),
  ABISELECT(464,260),
  ABISELECT(400,228),
  ABISELECT(384,216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  (VTBL_ENTRY)&_ZN7S7642C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v50Ev,
  ABISELECT(464,260),
  ABISELECT(320,176),
  ABISELECT(336,188),
  ABISELECT(400,220),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7642C2D1Ev,_ZThn40_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7642C2D0Ev,_ZThn40_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(272,156),
  ABISELECT(288,168),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7642C2D1Ev,_ZThn60_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7642C2D0Ev,_ZThn60_N7S7642C2D0Ev),
  ABISELECT(264,152),
  ABISELECT(280,164),
  ABISELECT(264,152),
  ABISELECT(264,152),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7642C2D1Ev,_ZThn64_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7642C2D0Ev,_ZThn64_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7642C2D1Ev,_ZThn140_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7642C2D0Ev,_ZThn140_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-216),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C2D1Ev,_ZTv0_n28_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C2D0Ev,_ZTv0_n28_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-400,-228),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C2D1Ev,_ZTv0_n40_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C2D0Ev,_ZTv0_n40_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-424,-240),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  0,
  0,
  ABISELECT(-440,-248),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v32Ev,
  0,
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-552,-312),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7642C2[];
extern void _ZN8S7642C113v33Ev();
extern void _ZN8S7642C10D1Ev();
extern void _ZN8S7642C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C10__7S7642C2[] = {
  ABISELECT(528,300),
  ABISELECT(384,216),
  ABISELECT(464,260),
  ABISELECT(400,228),
  ABISELECT(384,216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  (VTBL_ENTRY)&_ZN8S7642C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C10D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C13D1Ev();
extern void _ZN8S7642C13D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(464,260),
  ABISELECT(320,176),
  ABISELECT(336,188),
  ABISELECT(400,220),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C14D1Ev();
extern void _ZN8S7642C14D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(336,188),
  ABISELECT(400,220),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(272,156),
  ABISELECT(288,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  ABISELECT(264,152),
  ABISELECT(280,164),
  ABISELECT(264,152),
  ABISELECT(264,152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn280_N7S7642C5D1Ev,_ZThn164_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn280_N7S7642C5D0Ev,_ZThn164_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-280,-164),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-280,-164),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  0,
  0,
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[] = {
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C148S7642C138S7642C10__A2__7S7642C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C148S7642C138S7642C10__A2__7S7642C2[] = {
  0,
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(264,152),
  ABISELECT(280,164),
  ABISELECT(264,152),
  ABISELECT(264,152),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn288_N8S7642C15D1Ev,_ZThn168_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn288_N8S7642C15D0Ev,_ZThn168_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-168),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__A1__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[] = {
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(-312,-180),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  0,
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C15__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(272,156),
  ABISELECT(288,168),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C15__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(264,152),
  ABISELECT(280,164),
  ABISELECT(264,152),
  ABISELECT(264,152),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn336_N8S7642C14D1Ev,_ZThn188_N8S7642C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev)();
extern void ABISELECT(_ZThn336_N8S7642C14D0Ev,_ZThn188_N8S7642C14D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A1__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-336,-188),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A2__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(-360,-200),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C15__A2__8S7642C148S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn336_N8S7642C13D1Ev,_ZThn188_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn336_N8S7642C13D0Ev,_ZThn188_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-336,-188),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn320_N8S7642C13D1Ev,_ZThn176_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn320_N8S7642C13D0Ev,_ZThn176_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C138S7642C10__7S7642C2[] = {
  0,
  0,
  ABISELECT(-320,-176),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__8S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(-360,-200),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C138S7642C10__7S7642C2[] = {
  0,
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C14__8S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(272,156),
  ABISELECT(288,168),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C14__8S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(264,152),
  ABISELECT(280,164),
  ABISELECT(264,152),
  ABISELECT(264,152),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C138S7642C10__7S7642C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C138S7642C10__7S7642C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C16D1Ev();
extern void _ZN8S7642C16D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C168S7642C10__7S7642C2[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C168S7642C10__A2__7S7642C2[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C168S7642C10__A4__7S7642C2[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C168S7642C10__A4__7S7642C2[] = {
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C168S7642C10__A2__7S7642C2[] = {
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__8S7642C168S7642C10__7S7642C2[] = {
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn384_N8S7642C10D1Ev,_ZThn216_N8S7642C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev)();
extern void ABISELECT(_ZThn384_N8S7642C10D0Ev,_ZThn216_N8S7642C10D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C10__7S7642C2[] = {
  0,
  0,
  ABISELECT(-384,-216),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn64_N8S7642C10D1Ev,_ZThn40_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7642C10D0Ev,_ZThn40_N8S7642C10D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C13__8S7642C10__7S7642C2[] = {
  ABISELECT(464,260),
  ABISELECT(320,176),
  ABISELECT(336,188),
  ABISELECT(400,220),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7642C10D1Ev,_ZThn40_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7642C10D0Ev,_ZThn40_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn400_N8S7642C10D1Ev,_ZThn228_N8S7642C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev)();
extern void ABISELECT(_ZThn400_N8S7642C10D0Ev,_ZThn228_N8S7642C10D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C10__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-400,-228),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__8S7642C10__7S7642C2[] = {
  ABISELECT(-424,-240),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__A1__8S7642C10__7S7642C2[] = {
  0,
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn112_N8S7642C10D1Ev,_ZThn60_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7642C10D0Ev,_ZThn60_N8S7642C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C148S7642C13__8S7642C10__7S7642C2[] = {
  ABISELECT(272,156),
  ABISELECT(288,168),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7642C10D1Ev,_ZThn60_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7642C10D0Ev,_ZThn60_N8S7642C10D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn120_N8S7642C10D1Ev,_ZThn64_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S7642C10D0Ev,_ZThn64_N8S7642C10D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C148S7642C13__8S7642C10__7S7642C2[] = {
  ABISELECT(264,152),
  ABISELECT(280,164),
  ABISELECT(264,152),
  ABISELECT(264,152),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7642C10D1Ev,_ZThn64_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7642C10D0Ev,_ZThn64_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C10__7S7642C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C10__7S7642C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn256_N8S7642C10D1Ev,_ZThn140_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7642C10D0Ev,_ZThn140_N8S7642C10D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C16__8S7642C10__7S7642C2[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7642C10D1Ev,_ZThn140_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7642C10D0Ev,_ZThn140_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev)();
extern void _ZN7S7642C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev)();
extern void _ZN7S7642C4D0Ev() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C4__7S7642C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7642C4D1Ev,_ZThn12_N7S7642C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7642C4D0Ev,_ZThn12_N7S7642C4D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C4__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C4__7S7642C2[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__7S7642C2[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7642C5D1Ev,_ZThn12_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7642C5D0Ev,_ZThn12_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5__7S7642C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C5__7S7642C2[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__7S7642C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C2[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C6__7S7642C2[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__7S7642C2[] = {
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C7__A3__7S7642C2[] = {
  0,
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C2[] = {
  {&(_ZTV7S7642C2[10]),  10,268},
  {&(_tg__ZTV8S7642C10__7S7642C2[7]),  7,10},
  {&(_tg__ZTV8S7642C138S7642C10__7S7642C2[9]),  9,23},
  {&(_tg__ZTV8S7642C148S7642C138S7642C10__7S7642C2[7]),  7,18},
  {&(_tg__ZTV7S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C148S7642C138S7642C10__A1__7S7642C2[4]),  4,6},
  {&(_tg__ZTV8S7642C158S7642C148S7642C138S7642C10__7S7642C2[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C148S7642C138S7642C10__A2__7S7642C2[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C148S7642C138S7642C10__A2__7S7642C2[4]),  4,6},
  {&(_tg__ZTV7S7642C5__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__A1__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C158S7642C148S7642C138S7642C10__7S7642C2[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__8S7642C148S7642C138S7642C10__7S7642C2[4]),  4,6},
  {&(_tg__ZTV8S7642C11__8S7642C148S7642C138S7642C10__7S7642C2[3]),  3,4},
  {&(_tg__ZTV8S7642C15__8S7642C148S7642C138S7642C10__7S7642C2[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C15__8S7642C148S7642C138S7642C10__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C6__A1__8S7642C148S7642C138S7642C10__7S7642C2[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A2__8S7642C148S7642C138S7642C10__7S7642C2[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C15__A2__8S7642C148S7642C138S7642C10__7S7642C2[5]),  5,11},
  {&(_tg__ZTV7S7642C6__8S7642C138S7642C10__7S7642C2[20]),  20,30},
  {&(_tg__ZTV7S7642C5__A1__8S7642C138S7642C10__7S7642C2[9]),  9,15},
  {&(_tg__ZTV7S7642C87S7642C6__8S7642C138S7642C10__7S7642C2[2]),  2,12},
  {&(_tg__ZTV8S7642C11__8S7642C138S7642C10__7S7642C2[3]),  3,4},
  {&(_tg__ZTV8S7642C158S7642C14__8S7642C138S7642C10__7S7642C2[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C14__8S7642C138S7642C10__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C138S7642C10__7S7642C2[5]),  5,11},
  {&(_tg__ZTV7S7642C5__A1__8S7642C138S7642C10__7S7642C2[9]),  9,15},
  {&(_tg__ZTV7S7642C7__A3__8S7642C138S7642C10__7S7642C2[9]),  9,15},
  {&(_tg__ZTV8S7642C168S7642C10__7S7642C2[5]),  5,17},
  {&(_tg__ZTV7S7642C68S7642C168S7642C10__A2__7S7642C2[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C168S7642C10__A4__7S7642C2[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C168S7642C10__A4__7S7642C2[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C168S7642C10__A2__7S7642C2[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__8S7642C168S7642C10__7S7642C2[4]),  4,6},
  {&(_tg__ZTV7S7642C5__A1__8S7642C10__7S7642C2[9]),  9,15},
  {&(_tg__ZTV8S7642C13__8S7642C10__7S7642C2[9]),  9,23},
  {&(_tg__ZTV7S7642C6__8S7642C10__7S7642C2[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__8S7642C10__7S7642C2[2]),  2,12},
  {&(_tg__ZTV8S7642C11__A1__8S7642C10__7S7642C2[3]),  3,4},
  {&(_tg__ZTV8S7642C158S7642C148S7642C13__8S7642C10__7S7642C2[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C148S7642C13__8S7642C10__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C10__7S7642C2[5]),  5,11},
  {&(_tg__ZTV7S7642C5__A1__8S7642C10__7S7642C2[9]),  9,15},
  {&(_tg__ZTV7S7642C7__A3__8S7642C10__7S7642C2[9]),  9,15},
  {&(_tg__ZTV8S7642C16__8S7642C10__7S7642C2[5]),  5,17},
  {&(_ZTV7S7642C2[166]),  166,268},
  {&(_ZTV7S7642C2[166]),  166,268},
  {&(_ZTV7S7642C2[166]),  166,268},
  {&(_ZTV7S7642C2[199]),  199,268},
  {&(_ZTV7S7642C2[211]),  211,268},
  {&(_ZTV7S7642C2[225]),  225,268},
  {&(_ZTV7S7642C2[27]),  27,268},
  {&(_ZTV7S7642C2[230]),  230,268},
  {&(_ZTV7S7642C2[57]),  57,268},
  {&(_ZTV7S7642C2[81]),  81,268},
  {&(_ZTV7S7642C2[95]),  95,268},
  {&(_ZTV7S7642C2[240]),  240,268},
  {&(_ZTV7S7642C2[122]),  122,268},
  {&(_ZTV7S7642C2[258]),  258,268},
  {&(_tg__ZTV7S7642C4__7S7642C2[10]),  10,23},
  {&(_tg__ZTV7S7642C4__7S7642C2[10]),  10,23},
  {&(_tg__ZTV7S7642C6__7S7642C4__7S7642C2[20]),  20,30},
  {&(_tg__ZTV7S7642C4__7S7642C2[10]),  10,23},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C4__7S7642C2[2]),  2,12},
  {&(_tg__ZTV7S7642C5__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C5__7S7642C2[20]),  20,30},
  {&(_tg__ZTV7S7642C5__7S7642C2[6]),  6,12},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C5__7S7642C2[2]),  2,12},
  {&(_tg__ZTV7S7642C6__7S7642C2[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__7S7642C2[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C2[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C6__7S7642C2[4]),  4,6},
  {&(_tg__ZTV7S7642C7__A3__7S7642C2[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C7__A3__7S7642C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7642C2[];
extern  VTBL_ENTRY _ZTV7S7642C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C2[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C4D0Ev,_ZThn12_N7S7642C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C4D1Ev,_ZThn12_N7S7642C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7642C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7642C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7642C10D0Ev,_ZThn228_N8S7642C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7642C10D1Ev,_ZThn228_N8S7642C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7642C10D0Ev,_ZThn216_N8S7642C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7642C10D1Ev,_ZThn216_N8S7642C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7642C13D0Ev,_ZThn176_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7642C13D1Ev,_ZThn176_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7642C13D0Ev,_ZThn188_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7642C13D1Ev,_ZThn188_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7642C14D0Ev,_ZThn188_N8S7642C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7642C14D1Ev,_ZThn188_N8S7642C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7642C15D0Ev,_ZThn168_N8S7642C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7642C15D1Ev,_ZThn168_N8S7642C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C5D0Ev,_ZThn12_N7S7642C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7642C5D0Ev,_ZThn164_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C5D1Ev,_ZThn12_N7S7642C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7642C5D1Ev,_ZThn164_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C2D0Ev,_ZTv0_n40_N7S7642C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7642C2D0Ev,_ZThn228_N7S7642C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C2D1Ev,_ZTv0_n40_N7S7642C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7642C2D1Ev,_ZThn228_N7S7642C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C2D0Ev,_ZTv0_n28_N7S7642C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7642C2D0Ev,_ZThn216_N7S7642C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C2D1Ev,_ZTv0_n28_N7S7642C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7642C2D1Ev,_ZThn216_N7S7642C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C2 = {  "S7642C2", // class name
  bases_S7642C2, 35,
  &(vtc_S7642C2[0]), // expected_vtbl_contents
  &(vtt_S7642C2[0]), // expected_vtt_contents
  ABISELECT(560,316), // object size
  NSPAIRA(_ZTI7S7642C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7642C2),268, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7642C2),82, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7642C1  : S7642C2 , S7642C4 , S7642C14 {
  virtual void  v1(); // _ZN7S7642C12v1Ev
  virtual void  v2(); // _ZN7S7642C12v2Ev
  virtual void  v3(); // _ZN7S7642C12v3Ev
  virtual void  v4(); // _ZN7S7642C12v4Ev
  virtual void  v5(); // _ZN7S7642C12v5Ev
  ~S7642C1(); // tgen
  S7642C1(); // tgen
};
//SIG(1 S7642C1) C1{ BC2{ VBC3{ v6 v7} VBC4{ VBC5{ VBC6{ VBC3 BC7{ VBC3 v8 v9 v10 v11 Fp Fc} BC8{ BC3 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC3} vd v22 v23} vd v24 v25 v26 v27 v28 v29 v30 FL:40} VBC9{ v31 v32 FL} BC10{ BC11{ v33 FU12{ m FD[3]}} VBC3 BC13{ VBC6 BC14{ VBC3 BC6 VBC11 BC15{ BC8 BC5 BC11 BC7 v34 v35 v36 v37 v38 v39 Fp FL} BC8 vd v40} VBC5 VBC7 BC3 vd v41 v42 v43} BC16{ BC6 BC11 v44 v45} vd FL} VBC8 v46 v47 v48 v49 v50 FL} BC4 BC14 v1 v2 v3 v4 v5}


void  S7642C1 ::v1(){vfunc_called(this, "_ZN7S7642C12v1Ev");}
void  S7642C1 ::v2(){vfunc_called(this, "_ZN7S7642C12v2Ev");}
void  S7642C1 ::v3(){vfunc_called(this, "_ZN7S7642C12v3Ev");}
void  S7642C1 ::v4(){vfunc_called(this, "_ZN7S7642C12v4Ev");}
void  S7642C1 ::v5(){vfunc_called(this, "_ZN7S7642C12v5Ev");}
S7642C1 ::~S7642C1(){ note_dtor("S7642C1", this);} // tgen
S7642C1 ::S7642C1(){ note_ctor("S7642C1", this);} // tgen

static void Test_S7642C1()
{
  extern Class_Descriptor cd_S7642C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,107)];
    init_test(&cd_S7642C1, buf);
    S7642C1 *dp, &lv = *(dp=new (buf) S7642C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,424), "sizeof(S7642C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7642C1)");
    /*is_ambiguous_... S7642C2::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C10::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C6::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C14*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C6*)(S7642C14*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C6*)(S7642C14*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C7*)(S7642C15*)(S7642C14*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*), ABISELECT(592,336), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*), ABISELECT(616,348), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*), ABISELECT(616,348), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C5*), ABISELECT(592,336), "S7642C1");
    /*is_ambiguous_... S7642C13::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(592,336), "S7642C1");
    check_base_class_offset(lv, (S7642C6*)(S7642C5*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(592,336), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C5*)(S7642C15*)(S7642C14*), ABISELECT(592,336), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C4 */ AMB_check_base_class_offset(lv, (S7642C5*)(S7642C4*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C13::S7642C5 */ AMB_check_base_class_offset(lv, (S7642C5*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C4 */ AMB_check_base_class_offset(lv, (S7642C5*)(S7642C4*), ABISELECT(576,324), "S7642C1");
    check_base_class_offset(lv, (S7642C4*)(S7642C2*), ABISELECT(576,324), "S7642C1");
    check_base_class_offset(lv, (S7642C9_nt*)(S7642C2*), ABISELECT(632,356), "S7642C1");
    /*is_ambiguous_... S7642C10::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C10*)(S7642C2*), 0, "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(64,40), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(88,52), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(88,52), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C6 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(64,40), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C11 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(656,368), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C14*), ABISELECT(656,368), "S7642C1");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(112,60), "S7642C1");
    /*is_ambiguous_... S7642C15::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(112,60), "S7642C1");
    check_base_class_offset(lv, (S7642C5*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(120,64), "S7642C1");
    check_base_class_offset(lv, (S7642C11*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(128,68), "S7642C1");
    /*is_ambiguous_... S7642C15::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(192,108), "S7642C1");
    check_base_class_offset(lv, (S7642C15*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(112,60), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(232,132), "S7642C1");
    /*is_ambiguous_... S7642C14::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(232,132), "S7642C1");
    check_base_class_offset(lv, (S7642C14*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(64,40), "S7642C1");
    /*is_ambiguous_... S7642C13::S7642C7 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(720,408), "S7642C1");
    /*is_ambiguous_... S7642C13::S7642C3_nt */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(240,136), "S7642C1");
    check_base_class_offset(lv, (S7642C13*)(S7642C10*)(S7642C2*), ABISELECT(64,40), "S7642C1");
    check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(256,140), "S7642C1");
    check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(280,152), "S7642C1");
    check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(280,152), "S7642C1");
    check_base_class_offset(lv, (S7642C6*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(256,140), "S7642C1");
    check_base_class_offset(lv, (S7642C11*)(S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(304,160), "S7642C1");
    check_base_class_offset(lv, (S7642C16*)(S7642C10*)(S7642C2*), ABISELECT(256,140), "S7642C1");
    check_base_class_offset(lv, (S7642C10*)(S7642C2*), 0, "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*), ABISELECT(744,420), "S7642C1");
    /*is_ambiguous_... S7642C2::S7642C8 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C2*), ABISELECT(744,420), "S7642C1");
    check_base_class_offset(lv, (S7642C2*), 0, "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C4 */ AMB_check_base_class_offset(lv, (S7642C4*), ABISELECT(384,216), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C6*)(S7642C14*), ABISELECT(400,228), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C6*)(S7642C14*), ABISELECT(424,240), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C6*)(S7642C14*), ABISELECT(424,240), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C6*)(S7642C14*), ABISELECT(400,228), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C15*)(S7642C14*), ABISELECT(448,248), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C15*)(S7642C14*), ABISELECT(448,248), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C5*)(S7642C15*)(S7642C14*), ABISELECT(456,252), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C11*)(S7642C15*)(S7642C14*), ABISELECT(464,256), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C7*)(S7642C15*)(S7642C14*), ABISELECT(528,296), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C15*)(S7642C14*), ABISELECT(448,248), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C3_nt*)(S7642C8*)(S7642C14*), ABISELECT(568,320), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C8*)(S7642C14*), ABISELECT(568,320), "S7642C1");
    /*is_ambiguous_... S7642C1::S7642C14 */ AMB_check_base_class_offset(lv, (S7642C14*), ABISELECT(400,228), "S7642C1");
    test_class_info(&lv, &cd_S7642C1);
    dp->~S7642C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7642C1(Test_S7642C1, "S7642C1", ABISELECT(752,424));

#else // __cplusplus

extern void _ZN7S7642C1C1Ev();
extern void _ZN7S7642C1D1Ev();
Name_Map name_map_S7642C1[] = {
  NSPAIR(_ZN7S7642C1C1Ev),
  NSPAIR(_ZN7S7642C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C4;
extern VTBL_ENTRY _ZTI7S7642C4[];
extern  VTBL_ENTRY _ZTV7S7642C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C4[];
extern Class_Descriptor cd_S7642C9_nt;
extern VTBL_ENTRY _ZTI10S7642C9_nt[];
extern  VTBL_ENTRY _ZTV10S7642C9_nt[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C15;
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C14;
extern VTBL_ENTRY _ZTI8S7642C14[];
extern  VTBL_ENTRY _ZTV8S7642C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C14[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C13;
extern VTBL_ENTRY _ZTI8S7642C13[];
extern  VTBL_ENTRY _ZTV8S7642C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C13[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C16;
extern VTBL_ENTRY _ZTI8S7642C16[];
extern  VTBL_ENTRY _ZTV8S7642C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C16[];
extern Class_Descriptor cd_S7642C10;
extern VTBL_ENTRY _ZTI8S7642C10[];
extern  VTBL_ENTRY _ZTV8S7642C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C10[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C2;
extern VTBL_ENTRY _ZTI7S7642C2[];
extern  VTBL_ENTRY _ZTV7S7642C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C2[];
extern Class_Descriptor cd_S7642C4;
extern VTBL_ENTRY _ZTI7S7642C4[];
extern  VTBL_ENTRY _ZTV7S7642C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C4[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C6;
extern VTBL_ENTRY _ZTI7S7642C6[];
extern  VTBL_ENTRY _ZTV7S7642C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C6[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C5;
extern VTBL_ENTRY _ZTI7S7642C5[];
extern  VTBL_ENTRY _ZTV7S7642C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C5[];
extern Class_Descriptor cd_S7642C11;
extern VTBL_ENTRY _ZTI8S7642C11[];
extern  VTBL_ENTRY _ZTV8S7642C11[];
extern Class_Descriptor cd_S7642C7;
extern VTBL_ENTRY _ZTI7S7642C7[];
extern  VTBL_ENTRY _ZTV7S7642C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C7[];
extern Class_Descriptor cd_S7642C15;
extern VTBL_ENTRY _ZTI8S7642C15[];
extern  VTBL_ENTRY _ZTV8S7642C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C15[];
extern Class_Descriptor cd_S7642C3_nt;
extern VTBL_ENTRY _ZTI10S7642C3_nt[];
extern  VTBL_ENTRY _ZTV10S7642C3_nt[];
extern Class_Descriptor cd_S7642C8;
extern VTBL_ENTRY _ZTI7S7642C8[];
extern  VTBL_ENTRY _ZTV7S7642C8[];
extern Class_Descriptor cd_S7642C14;
extern VTBL_ENTRY _ZTI8S7642C14[];
extern  VTBL_ENTRY _ZTV8S7642C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7642C14[];
static Base_Class bases_S7642C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7642C3_nt,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7642C7,    ABISELECT(592,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(616,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(616,348), //bcp->offset
    327, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(592,336), //bcp->offset
    297, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7642C5,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7642C4,    ABISELECT(576,324), //bcp->offset
    267, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7642C9_nt,    ABISELECT(632,356), //bcp->offset
    339, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7642C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7642C3_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
    15, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(88,52), //bcp->offset
    46, //bcp->virtual_function_table_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_S7642C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(656,368), //bcp->offset
    345, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7642C3_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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7642C8,    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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C5,    ABISELECT(120,64), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(128,68), //bcp->offset
    92, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(192,108), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7642C15,    ABISELECT(112,60), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(232,132), //bcp->offset
    106, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S7642C14,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(720,408), //bcp->offset
    349, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7642C3_nt,    ABISELECT(240,136), //bcp->offset
    118, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S7642C13,    ABISELECT(64,40), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    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
    30, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(280,152), //bcp->offset
    139, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(304,160), //bcp->offset
    151, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7642C16,    ABISELECT(256,140), //bcp->offset
    122, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7642C10,    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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(744,420), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(744,420), //bcp->offset
    364, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7642C2,    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
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C4,    ABISELECT(384,216), //bcp->offset
    154, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7642C7,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(424,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
    39, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(424,240), //bcp->offset
    195, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7642C6,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(448,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
    42, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(448,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
    43, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7642C5,    ABISELECT(456,252), //bcp->offset
    229, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7642C11,    ABISELECT(464,256), //bcp->offset
    241, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7642C7,    ABISELECT(528,296), //bcp->offset
    244, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7642C15,    ABISELECT(448,248), //bcp->offset
    207, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7642C3_nt,    ABISELECT(568,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7642C8,    ABISELECT(568,320), //bcp->offset
    255, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7642C14,    ABISELECT(400,228), //bcp->offset
    177, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7642C1[];
extern void _ZN8S7642C113v33Ev();
extern void _ZN7S7642C1D1Ev();
extern void _ZN7S7642C1D0Ev();
extern void _ZN7S7642C23v46Ev();
extern void _ZN7S7642C23v47Ev();
extern void _ZN7S7642C23v48Ev();
extern void _ZN7S7642C23v49Ev();
extern void _ZN7S7642C23v50Ev();
extern void _ZN7S7642C12v1Ev();
extern void _ZN7S7642C12v2Ev();
extern void _ZN7S7642C12v3Ev();
extern void _ZN7S7642C12v4Ev();
extern void _ZN7S7642C12v5Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn64_N7S7642C1D1Ev,_ZThn40_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7642C1D0Ev,_ZThn40_N7S7642C1D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn112_N7S7642C1D1Ev,_ZThn60_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7642C1D0Ev,_ZThn60_N7S7642C1D0Ev)();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn120_N7S7642C1D1Ev,_ZThn64_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7642C1D0Ev,_ZThn64_N7S7642C1D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn256_N7S7642C1D1Ev,_ZThn140_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7642C1D0Ev,_ZThn140_N7S7642C1D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C1D1Ev,_ZTv0_n28_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S7642C1D1Ev,_ZThn216_N7S7642C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C1D0Ev,_ZTv0_n28_N7S7642C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S7642C1D0Ev,_ZThn216_N7S7642C1D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn400_N7S7642C1D1Ev,_ZThn228_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn400_N7S7642C1D0Ev,_ZThn228_N7S7642C1D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn448_N7S7642C1D1Ev,_ZThn248_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S7642C1D0Ev,_ZThn248_N7S7642C1D0Ev)();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn456_N7S7642C1D1Ev,_ZThn252_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7642C1D0Ev,_ZThn252_N7S7642C1D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C1D1Ev,_ZTv0_n28_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn576_N7S7642C1D1Ev,_ZThn324_N7S7642C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C1D0Ev,_ZTv0_n28_N7S7642C1D0Ev)();
extern void ABISELECT(_ZThn576_N7S7642C1D0Ev,_ZThn324_N7S7642C1D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C1D1Ev,_ZTv0_n40_N7S7642C1D1Ev)();
extern void ABISELECT(_ZThn592_N7S7642C1D1Ev,_ZThn336_N7S7642C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C1D0Ev,_ZTv0_n40_N7S7642C1D0Ev)();
extern void ABISELECT(_ZThn592_N7S7642C1D0Ev,_ZThn336_N7S7642C1D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN10S7642C9_nt3v31Ev();
extern void _ZN10S7642C9_nt3v32Ev();
extern void _ZN8S7642C113v33Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY vtc_S7642C1[] = {
  ABISELECT(744,420),
  ABISELECT(632,356),
  ABISELECT(576,324),
  ABISELECT(720,408),
  ABISELECT(576,324),
  ABISELECT(656,368),
  ABISELECT(592,336),
  ABISELECT(576,324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  (VTBL_ENTRY)&_ZN7S7642C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v50Ev,
  (VTBL_ENTRY)&_ZN7S7642C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7642C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7642C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7642C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7642C12v5Ev,
  ABISELECT(656,368),
  ABISELECT(512,284),
  ABISELECT(528,296),
  ABISELECT(592,328),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7642C1D1Ev,_ZThn40_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7642C1D0Ev,_ZThn40_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(464,264),
  ABISELECT(480,276),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7642C1D1Ev,_ZThn60_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7642C1D0Ev,_ZThn60_N7S7642C1D0Ev),
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7642C1D1Ev,_ZThn64_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7642C1D0Ev,_ZThn64_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7642C1D1Ev,_ZThn140_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7642C1D0Ev,_ZThn140_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-384,-216),
  ABISELECT(192,108),
  ABISELECT(208,120),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C1D1Ev,_ZTv0_n28_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C1D0Ev,_ZTv0_n28_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
  ABISELECT(192,108),
  ABISELECT(256,140),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N7S7642C1D1Ev,_ZThn228_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N7S7642C1D0Ev,_ZThn228_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  ABISELECT(-424,-240),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  ABISELECT(128,76),
  ABISELECT(144,88),
  ABISELECT(-448,-248),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn448_N7S7642C1D1Ev,_ZThn248_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn448_N7S7642C1D0Ev,_ZThn248_N7S7642C1D0Ev),
  ABISELECT(120,72),
  ABISELECT(136,84),
  ABISELECT(120,72),
  ABISELECT(120,72),
  ABISELECT(-456,-252),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn456_N7S7642C1D1Ev,_ZThn252_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn456_N7S7642C1D0Ev,_ZThn252_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  ABISELECT(-568,-320),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-324),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C1D1Ev,_ZTv0_n28_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C1D0Ev,_ZTv0_n28_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-592,-336),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C1D1Ev,_ZTv0_n40_N7S7642C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C1D0Ev,_ZTv0_n40_N7S7642C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  ABISELECT(-616,-348),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  0,
  0,
  ABISELECT(-632,-356),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v32Ev,
  0,
  ABISELECT(-656,-368),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-744,-420),
  (VTBL_ENTRY)&(_ZTI7S7642C1[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7642C1[];
extern void _ZN8S7642C113v33Ev();
extern void _ZN7S7642C2D1Ev();
extern void _ZN7S7642C2D0Ev();
extern void _ZN7S7642C23v46Ev();
extern void _ZN7S7642C23v47Ev();
extern void _ZN7S7642C23v48Ev();
extern void _ZN7S7642C23v49Ev();
extern void _ZN7S7642C23v50Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C2__7S7642C1[] = {
  ABISELECT(744,420),
  ABISELECT(632,356),
  ABISELECT(576,324),
  ABISELECT(720,408),
  ABISELECT(576,324),
  ABISELECT(656,368),
  ABISELECT(592,336),
  ABISELECT(576,324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  (VTBL_ENTRY)&_ZN7S7642C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7642C23v50Ev,
};
extern void _ZN8S7642C113v33Ev();
extern void _ZN8S7642C10D1Ev();
extern void _ZN8S7642C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(720,408),
  ABISELECT(576,324),
  ABISELECT(656,368),
  ABISELECT(592,336),
  ABISELECT(576,324),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
  (VTBL_ENTRY)&_ZN8S7642C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C10D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C13D1Ev();
extern void _ZN8S7642C13D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(656,368),
  ABISELECT(512,284),
  ABISELECT(528,296),
  ABISELECT(592,328),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C14D1Ev();
extern void _ZN8S7642C14D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(528,296),
  ABISELECT(592,328),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  0,
  0,
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  0,
  0,
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(464,264),
  ABISELECT(480,276),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn472_N7S7642C5D1Ev,_ZThn272_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn472_N7S7642C5D0Ev,_ZThn272_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-472,-272),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  0,
  0,
  ABISELECT(-456,-260),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[] = {
  ABISELECT(-496,-284),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C148S7642C138S7642C107S7642C2__A2__7S7642C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C148S7642C138S7642C107S7642C2__A2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn480_N8S7642C15D1Ev,_ZThn276_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn480_N8S7642C15D0Ev,_ZThn276_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-480,-276),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__A1__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-464,-264),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  0,
  ABISELECT(-592,-328),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C15__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(464,264),
  ABISELECT(480,276),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C15__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn528_N8S7642C14D1Ev,_ZThn296_N8S7642C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev)();
extern void ABISELECT(_ZThn528_N8S7642C14D0Ev,_ZThn296_N8S7642C14D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A1__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-528,-296),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A2__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(-552,-308),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C15__A2__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn528_N8S7642C13D1Ev,_ZThn296_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn528_N8S7642C13D0Ev,_ZThn296_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-528,-296),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn512_N8S7642C13D1Ev,_ZThn284_N8S7642C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev)();
extern void ABISELECT(_ZThn512_N8S7642C13D0Ev,_ZThn284_N8S7642C13D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-512,-284),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(-552,-308),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  0,
  ABISELECT(-592,-328),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C14__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(464,264),
  ABISELECT(480,276),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D1Ev,_ZThn20_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C13D0Ev,_ZThn20_N8S7642C13D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C14__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D1Ev,_ZThn24_N8S7642C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C13D0Ev,_ZThn24_N8S7642C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C138S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-656,-368),
  (VTBL_ENTRY)&(_ZTI8S7642C13[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C16D1Ev();
extern void _ZN8S7642C16D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C168S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(320,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C168S7642C107S7642C2__A2__7S7642C1[] = {
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(320,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C168S7642C107S7642C2__A4__7S7642C1[] = {
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(320,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C168S7642C107S7642C2__A4__7S7642C1[] = {
  0,
  0,
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C168S7642C107S7642C2__A2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__8S7642C168S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI8S7642C16[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn576_N8S7642C10D1Ev,_ZThn324_N8S7642C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev)();
extern void ABISELECT(_ZThn576_N8S7642C10D0Ev,_ZThn324_N8S7642C10D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__A1__8S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-576,-324),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn64_N8S7642C10D1Ev,_ZThn40_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7642C10D0Ev,_ZThn40_N8S7642C10D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C13__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(656,368),
  ABISELECT(512,284),
  ABISELECT(528,296),
  ABISELECT(592,328),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7642C10D1Ev,_ZThn40_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7642C10D0Ev,_ZThn40_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn592_N8S7642C10D1Ev,_ZThn336_N8S7642C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev)();
extern void ABISELECT(_ZThn592_N8S7642C10D0Ev,_ZThn336_N8S7642C10D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-592,-336),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(-616,-348),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__A1__8S7642C107S7642C2__7S7642C1[] = {
  0,
  ABISELECT(-656,-368),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn112_N8S7642C10D1Ev,_ZThn60_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7642C10D0Ev,_ZThn60_N8S7642C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C148S7642C13__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(464,264),
  ABISELECT(480,276),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7642C10D1Ev,_ZThn60_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7642C10D0Ev,_ZThn60_N8S7642C10D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn120_N8S7642C10D1Ev,_ZThn64_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S7642C10D0Ev,_ZThn64_N8S7642C10D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C148S7642C13__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7642C10D1Ev,_ZThn64_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7642C10D0Ev,_ZThn64_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__8S7642C107S7642C2__7S7642C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn256_N8S7642C10D1Ev,_ZThn140_N8S7642C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7642C10D0Ev,_ZThn140_N8S7642C10D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C16__8S7642C107S7642C2__7S7642C1[] = {
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S7642C10[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7642C10D1Ev,_ZThn140_N8S7642C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7642C10D0Ev,_ZThn140_N8S7642C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C2D1Ev,_ZTv0_n28_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn576_N7S7642C2D1Ev,_ZThn324_N7S7642C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C2D0Ev,_ZTv0_n28_N7S7642C2D0Ev)();
extern void ABISELECT(_ZThn576_N7S7642C2D0Ev,_ZThn324_N7S7642C2D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C4__7S7642C2__7S7642C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-324),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C2D1Ev,_ZTv0_n28_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C2D0Ev,_ZTv0_n28_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C2D1Ev,_ZTv0_n40_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn592_N7S7642C2D1Ev,_ZThn336_N7S7642C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C2D0Ev,_ZTv0_n40_N7S7642C2D0Ev)();
extern void ABISELECT(_ZThn592_N7S7642C2D0Ev,_ZThn336_N7S7642C2D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C2__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-592,-336),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C2D1Ev,_ZTv0_n40_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C2D0Ev,_ZTv0_n40_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C2__7S7642C1[] = {
  ABISELECT(-616,-348),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C9_nt3v31Ev();
extern void _ZN10S7642C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C9_nt__7S7642C2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-632,-356),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7642C9_nt3v32Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn64_N7S7642C2D1Ev,_ZThn40_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7642C2D0Ev,_ZThn40_N7S7642C2D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
extern void _ZN8S7642C133v41Ev();
extern void _ZN8S7642C133v42Ev();
extern void _ZN8S7642C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C138S7642C10__7S7642C2__7S7642C1[] = {
  ABISELECT(656,368),
  ABISELECT(512,284),
  ABISELECT(528,296),
  ABISELECT(592,328),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(512,284),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7642C2D1Ev,_ZThn40_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7642C2D0Ev,_ZThn40_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7642C133v43Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__A1__7S7642C2__7S7642C1[] = {
  0,
  ABISELECT(-656,-368),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn112_N7S7642C2D1Ev,_ZThn60_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7642C2D0Ev,_ZThn60_N7S7642C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C148S7642C138S7642C10__7S7642C2__7S7642C1[] = {
  ABISELECT(464,264),
  ABISELECT(480,276),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7642C2D1Ev,_ZThn60_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7642C2D0Ev,_ZThn60_N7S7642C2D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn120_N7S7642C2D1Ev,_ZThn64_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7642C2D0Ev,_ZThn64_N7S7642C2D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2__7S7642C1[] = {
  ABISELECT(456,260),
  ABISELECT(472,272),
  ABISELECT(456,260),
  ABISELECT(456,260),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7642C2D1Ev,_ZThn64_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7642C2D0Ev,_ZThn64_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C148S7642C138S7642C10__A2__7S7642C2__7S7642C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__7S7642C2__7S7642C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZThn256_N7S7642C2D1Ev,_ZThn140_N7S7642C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7642C2D0Ev,_ZThn140_N7S7642C2D0Ev)();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C163v44Ev();
extern void _ZN8S7642C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C168S7642C10__7S7642C2__7S7642C1[] = {
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(320,184),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7642C2D1Ev,_ZThn140_N7S7642C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7642C2D0Ev,_ZThn140_N7S7642C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7642C163v45Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C8__A5__7S7642C2__7S7642C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-744,-420),
  (VTBL_ENTRY)&(_ZTI7S7642C2[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev)();
extern void _ZN7S7642C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev)();
extern void _ZN7S7642C4D0Ev() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C4__A__7S7642C1[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(192,108),
  0,
  ABISELECT(192,108),
  ABISELECT(208,120),
  ABISELECT(192,108),
  ABISELECT(192,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev)();
extern void ABISELECT(_ZThn192_N7S7642C4D1Ev,_ZThn108_N7S7642C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev)();
extern void ABISELECT(_ZThn192_N7S7642C4D0Ev,_ZThn108_N7S7642C4D0Ev)() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__7S7642C4__A__7S7642C1[] = {
  0,
  0,
  ABISELECT(-192,-108),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S7642C4D1Ev,_ZThn120_N7S7642C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S7642C4D0Ev,_ZThn120_N7S7642C4D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C4__A__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-208,-120),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C4__A__7S7642C1[] = {
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN8S7642C14D1Ev();
extern void _ZN8S7642C14D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
extern void _ZN8S7642C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C14__A1__7S7642C1[] = {
  ABISELECT(192,108),
  ABISELECT(256,140),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7642C143v40Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C68S7642C14__A3__7S7642C1[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C68S7642C14__A5__7S7642C1[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C14__A5__7S7642C1[] = {
  0,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C68S7642C14__A3__7S7642C1[] = {
  0,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void _ZN8S7642C15D1Ev();
extern void _ZN8S7642C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C158S7642C14__A1__7S7642C1[] = {
  ABISELECT(128,76),
  ABISELECT(144,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7642C15D0Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C158S7642C14__A2__7S7642C1[] = {
  ABISELECT(120,72),
  ABISELECT(136,84),
  ABISELECT(120,72),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S7642C5D1Ev,_ZThn84_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S7642C5D0Ev,_ZThn84_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C58S7642C158S7642C14__A2__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-136,-84),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C58S7642C158S7642C14__A2__7S7642C1[] = {
  0,
  0,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C14__A2__7S7642C1[] = {
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C158S7642C14__A6__7S7642C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C14__A6__7S7642C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__8S7642C158S7642C14__A1__7S7642C1[] = {
  ABISELECT(120,72),
  ABISELECT(136,84),
  ABISELECT(120,72),
  ABISELECT(120,72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D1Ev,_ZThn4_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7642C15D0Ev,_ZThn4_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S7642C15D1Ev,_ZThn88_N8S7642C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S7642C15D0Ev,_ZThn88_N8S7642C15D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__8S7642C158S7642C14__A1__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-144,-88),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__A1__8S7642C158S7642C14__A1__7S7642C1[] = {
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C14__A1__7S7642C1[] = {
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A1__8S7642C158S7642C14__A1__7S7642C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7642C15[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__8S7642C14__A1__7S7642C1[] = {
  0,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN8S7642C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7642C11__8S7642C14__A1__7S7642C1[] = {
  0,
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN8S7642C113v33Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
extern void _ZN8S7642C153v34Ev();
extern void _ZN8S7642C153v35Ev();
extern void _ZN8S7642C153v36Ev();
extern void _ZN8S7642C153v37Ev();
extern void _ZN8S7642C153v38Ev();
extern void _ZN8S7642C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7642C15__8S7642C14__A1__7S7642C1[] = {
  ABISELECT(128,76),
  ABISELECT(144,88),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7642C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D1Ev,_ZThn20_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7642C14D0Ev,_ZThn20_N8S7642C14D0Ev),
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev)();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C58S7642C15__8S7642C14__A1__7S7642C1[] = {
  ABISELECT(120,72),
  ABISELECT(136,84),
  ABISELECT(120,72),
  ABISELECT(120,72),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D1Ev,_ZThn24_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7642C14D0Ev,_ZThn24_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev)();
extern void ABISELECT(_ZThn192_N8S7642C14D1Ev,_ZThn108_N8S7642C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev)();
extern void ABISELECT(_ZThn192_N8S7642C14D0Ev,_ZThn108_N8S7642C14D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__A1__8S7642C14__A1__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-108),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__A2__8S7642C14__A1__7S7642C1[] = {
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C78S7642C15__A2__8S7642C14__A1__7S7642C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7642C14[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev)();
extern void _ZN7S7642C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev)();
extern void _ZN7S7642C4D0Ev() __attribute__((weak));
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
extern void _ZN7S7642C43v24Ev();
extern void _ZN7S7642C43v25Ev();
extern void _ZN7S7642C43v26Ev();
extern void _ZN7S7642C43v27Ev();
extern void _ZN7S7642C43v28Ev();
extern void _ZN7S7642C43v29Ev();
extern void _ZN7S7642C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C4__7S7642C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7642C43v30Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7642C4D1Ev,_ZThn12_N7S7642C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7642C4D0Ev,_ZThn12_N7S7642C4D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C4__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C4__7S7642C1[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7642C4[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C5D1Ev();
extern void _ZN7S7642C5D0Ev();
extern void _ZN7S7642C53v22Ev();
extern void _ZN7S7642C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C5__7S7642C1[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7642C53v23Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7642C5D1Ev,_ZThn12_N7S7642C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7642C5D0Ev,_ZThn12_N7S7642C5D0Ev)() __attribute__((weak));
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C5__7S7642C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C83v12Ev();
extern void _ZN7S7642C83v13Ev();
extern void _ZN7S7642C83v14Ev();
extern void _ZN7S7642C83v15Ev();
extern void _ZN7S7642C83v16Ev();
extern void _ZN7S7642C83v17Ev();
extern void _ZN7S7642C83v18Ev();
extern void _ZN7S7642C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C87S7642C6__7S7642C5__7S7642C1[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7642C5[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7642C83v19Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
extern void _ZN7S7642C6D1Ev();
extern void _ZN7S7642C6D0Ev();
extern void _ZN7S7642C63v20Ev();
extern void _ZN7S7642C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C6__7S7642C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7642C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7642C63v21Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C77S7642C6__7S7642C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C1[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C6__7S7642C1[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7642C6[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
extern void _ZN7S7642C72v8Ev();
extern void _ZN7S7642C72v9Ev();
extern void _ZN7S7642C73v10Ev();
extern void _ZN7S7642C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7642C7__A3__7S7642C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7642C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7642C73v11Ev,
};
extern void _ZN10S7642C3_nt2v6Ev();
extern void _ZN10S7642C3_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV10S7642C3_nt__7S7642C7__A3__7S7642C1[] = {
  0,
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI7S7642C7[0]),
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7642C3_nt2v7Ev,
};
static  VTT_ENTRY vtt_S7642C1[] = {
  {&(_ZTV7S7642C1[10]),  10,386},
  {&(_tg__ZTV7S7642C2__7S7642C1[10]),  10,18},
  {&(_tg__ZTV8S7642C107S7642C2__7S7642C1[7]),  7,10},
  {&(_tg__ZTV8S7642C138S7642C107S7642C2__7S7642C1[9]),  9,23},
  {&(_tg__ZTV8S7642C148S7642C138S7642C107S7642C2__7S7642C1[7]),  7,18},
  {&(_tg__ZTV7S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[4]),  4,6},
  {&(_tg__ZTV8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C148S7642C138S7642C107S7642C2__A1__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C148S7642C138S7642C107S7642C2__A2__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C148S7642C138S7642C107S7642C2__A2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C5__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__A1__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C158S7642C148S7642C138S7642C107S7642C2__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV8S7642C11__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[3]),  3,4},
  {&(_tg__ZTV8S7642C15__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C15__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__A1__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A2__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C15__A2__8S7642C148S7642C138S7642C107S7642C2__7S7642C1[5]),  5,11},
  {&(_tg__ZTV7S7642C6__8S7642C138S7642C107S7642C2__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C5__A1__8S7642C138S7642C107S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV7S7642C87S7642C6__8S7642C138S7642C107S7642C2__7S7642C1[2]),  2,12},
  {&(_tg__ZTV8S7642C11__8S7642C138S7642C107S7642C2__7S7642C1[3]),  3,4},
  {&(_tg__ZTV8S7642C158S7642C14__8S7642C138S7642C107S7642C2__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C14__8S7642C138S7642C107S7642C2__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C14__A2__8S7642C138S7642C107S7642C2__7S7642C1[5]),  5,11},
  {&(_tg__ZTV7S7642C5__A1__8S7642C138S7642C107S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV7S7642C7__A3__8S7642C138S7642C107S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV8S7642C168S7642C107S7642C2__7S7642C1[5]),  5,17},
  {&(_tg__ZTV7S7642C68S7642C168S7642C107S7642C2__A2__7S7642C1[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C168S7642C107S7642C2__A4__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C168S7642C107S7642C2__A4__7S7642C1[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C168S7642C107S7642C2__A2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__8S7642C168S7642C107S7642C2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C5__A1__8S7642C107S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV8S7642C13__8S7642C107S7642C2__7S7642C1[9]),  9,23},
  {&(_tg__ZTV7S7642C6__8S7642C107S7642C2__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__8S7642C107S7642C2__7S7642C1[2]),  2,12},
  {&(_tg__ZTV8S7642C11__A1__8S7642C107S7642C2__7S7642C1[3]),  3,4},
  {&(_tg__ZTV8S7642C158S7642C148S7642C13__8S7642C107S7642C2__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C148S7642C13__8S7642C107S7642C2__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C148S7642C13__A2__8S7642C107S7642C2__7S7642C1[5]),  5,11},
  {&(_tg__ZTV7S7642C5__A1__8S7642C107S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV7S7642C7__A3__8S7642C107S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV8S7642C16__8S7642C107S7642C2__7S7642C1[5]),  5,17},
  {&(_tg__ZTV7S7642C4__7S7642C2__7S7642C1[17]),  17,30},
  {&(_tg__ZTV7S7642C4__7S7642C2__7S7642C1[17]),  17,30},
  {&(_tg__ZTV7S7642C4__7S7642C2__7S7642C1[17]),  17,30},
  {&(_tg__ZTV7S7642C6__7S7642C2__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C2__7S7642C1[2]),  2,12},
  {&(_tg__ZTV10S7642C9_nt__7S7642C2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV8S7642C138S7642C10__7S7642C2__7S7642C1[9]),  9,23},
  {&(_tg__ZTV8S7642C11__A1__7S7642C2__7S7642C1[3]),  3,4},
  {&(_tg__ZTV8S7642C158S7642C148S7642C138S7642C10__7S7642C2__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C148S7642C138S7642C10__A1__7S7642C2__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C148S7642C138S7642C10__A2__7S7642C2__7S7642C1[5]),  5,11},
  {&(_tg__ZTV7S7642C7__A3__7S7642C2__7S7642C1[9]),  9,15},
  {&(_tg__ZTV8S7642C168S7642C10__7S7642C2__7S7642C1[5]),  5,17},
  {&(_tg__ZTV7S7642C8__A5__7S7642C2__7S7642C1[12]),  12,22},
  {&(_tg__ZTV7S7642C4__A__7S7642C1[10]),  10,23},
  {&(_tg__ZTV7S7642C5__7S7642C4__A__7S7642C1[9]),  9,15},
  {&(_tg__ZTV7S7642C6__7S7642C4__A__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C5__7S7642C4__A__7S7642C1[9]),  9,15},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C4__A__7S7642C1[2]),  2,12},
  {&(_tg__ZTV8S7642C14__A1__7S7642C1[7]),  7,18},
  {&(_tg__ZTV7S7642C68S7642C14__A3__7S7642C1[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C68S7642C14__A5__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C68S7642C14__A5__7S7642C1[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C68S7642C14__A3__7S7642C1[4]),  4,6},
  {&(_tg__ZTV8S7642C158S7642C14__A1__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C158S7642C14__A2__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C58S7642C158S7642C14__A2__7S7642C1[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__7S7642C58S7642C158S7642C14__A2__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C58S7642C158S7642C14__A2__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C158S7642C14__A6__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C78S7642C158S7642C14__A6__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C5__8S7642C158S7642C14__A1__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__8S7642C158S7642C14__A1__7S7642C1[20]),  20,30},
  {&(_tg__ZTV10S7642C3_nt__A1__8S7642C158S7642C14__A1__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C87S7642C6__A1__8S7642C158S7642C14__A1__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C7__A1__8S7642C158S7642C14__A1__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__8S7642C14__A1__7S7642C1[4]),  4,6},
  {&(_tg__ZTV8S7642C11__8S7642C14__A1__7S7642C1[3]),  3,4},
  {&(_tg__ZTV8S7642C15__8S7642C14__A1__7S7642C1[4]),  4,22},
  {&(_tg__ZTV7S7642C58S7642C15__8S7642C14__A1__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__A1__8S7642C14__A1__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C87S7642C6__A2__8S7642C14__A1__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C78S7642C15__A2__8S7642C14__A1__7S7642C1[5]),  5,11},
  {&(_ZTV7S7642C1[284]),  284,386},
  {&(_ZTV7S7642C1[284]),  284,386},
  {&(_ZTV7S7642C1[284]),  284,386},
  {&(_ZTV7S7642C1[317]),  317,386},
  {&(_ZTV7S7642C1[329]),  329,386},
  {&(_ZTV7S7642C1[343]),  343,386},
  {&(_ZTV7S7642C1[32]),  32,386},
  {&(_ZTV7S7642C1[348]),  348,386},
  {&(_ZTV7S7642C1[62]),  62,386},
  {&(_ZTV7S7642C1[86]),  86,386},
  {&(_ZTV7S7642C1[100]),  100,386},
  {&(_ZTV7S7642C1[358]),  358,386},
  {&(_ZTV7S7642C1[127]),  127,386},
  {&(_ZTV7S7642C1[376]),  376,386},
  {&(_ZTV7S7642C1[164]),  164,386},
  {&(_ZTV7S7642C1[184]),  184,386},
  {&(_ZTV7S7642C1[211]),  211,386},
  {&(_ZTV7S7642C1[235]),  235,386},
  {&(_ZTV7S7642C1[249]),  249,386},
  {&(_tg__ZTV7S7642C4__7S7642C1[10]),  10,23},
  {&(_tg__ZTV7S7642C4__7S7642C1[10]),  10,23},
  {&(_tg__ZTV7S7642C6__7S7642C4__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C4__7S7642C1[10]),  10,23},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C4__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C5__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C6__7S7642C5__7S7642C1[20]),  20,30},
  {&(_tg__ZTV7S7642C5__7S7642C1[6]),  6,12},
  {&(_tg__ZTV7S7642C87S7642C6__7S7642C5__7S7642C1[2]),  2,12},
  {&(_tg__ZTV7S7642C6__7S7642C1[5]),  5,15},
  {&(_tg__ZTV7S7642C77S7642C6__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C77S7642C6__7S7642C1[4]),  4,6},
  {&(_tg__ZTV10S7642C3_nt__7S7642C6__7S7642C1[4]),  4,6},
  {&(_tg__ZTV7S7642C7__A3__7S7642C1[5]),  5,11},
  {&(_tg__ZTV10S7642C3_nt__7S7642C7__A3__7S7642C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7642C1[];
extern  VTBL_ENTRY _ZTV7S7642C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7642C1[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C4D0Ev,_ZTv0_n40_N7S7642C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C4D0Ev,_ZThn12_N7S7642C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7642C4D0Ev,_ZThn120_N7S7642C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C4D1Ev,_ZTv0_n40_N7S7642C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C4D1Ev,_ZThn12_N7S7642C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7642C4D1Ev,_ZThn120_N7S7642C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C4D0Ev,_ZTv0_n28_N7S7642C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7642C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7642C4D0Ev,_ZThn108_N7S7642C4D0Ev),
  (VTBL_ENTRY)_ZN7S7642C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C4D1Ev,_ZTv0_n28_N7S7642C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7642C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7642C4D1Ev,_ZThn108_N7S7642C4D1Ev),
  (VTBL_ENTRY)_ZN7S7642C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C2D0Ev,_ZTv0_n40_N7S7642C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7642C2D0Ev,_ZThn336_N7S7642C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C2D1Ev,_ZTv0_n40_N7S7642C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7642C2D1Ev,_ZThn336_N7S7642C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C2D0Ev,_ZTv0_n28_N7S7642C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7642C2D0Ev,_ZThn324_N7S7642C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C2D1Ev,_ZTv0_n28_N7S7642C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7642C2D1Ev,_ZThn324_N7S7642C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C10D0Ev,_ZTv0_n40_N8S7642C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N8S7642C10D0Ev,_ZThn336_N8S7642C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C10D1Ev,_ZTv0_n40_N8S7642C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N8S7642C10D1Ev,_ZThn336_N8S7642C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C10D0Ev,_ZTv0_n28_N8S7642C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7642C10D0Ev,_ZThn324_N8S7642C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C10D1Ev,_ZTv0_n28_N8S7642C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7642C10D1Ev,_ZThn324_N8S7642C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D0Ev,_ZTv0_n28_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S7642C13D0Ev,_ZThn284_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7642C13D1Ev,_ZTv0_n28_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S7642C13D1Ev,_ZThn284_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D0Ev,_ZTv0_n40_N8S7642C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7642C13D0Ev,_ZThn296_N8S7642C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C13D1Ev,_ZTv0_n40_N8S7642C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7642C13D1Ev,_ZThn296_N8S7642C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D0Ev,_ZTv0_n40_N8S7642C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7642C14D0Ev,_ZThn108_N8S7642C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7642C14D0Ev,_ZThn296_N8S7642C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C14D1Ev,_ZTv0_n40_N8S7642C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7642C14D1Ev,_ZThn108_N8S7642C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7642C14D1Ev,_ZThn296_N8S7642C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D0Ev,_ZTv0_n40_N8S7642C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7642C15D0Ev,_ZThn88_N8S7642C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7642C15D0Ev,_ZThn276_N8S7642C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7642C15D1Ev,_ZTv0_n40_N8S7642C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7642C15D1Ev,_ZThn88_N8S7642C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7642C15D1Ev,_ZThn276_N8S7642C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D0Ev,_ZTv0_n40_N7S7642C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C5D0Ev,_ZThn12_N7S7642C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7642C5D0Ev,_ZThn84_N7S7642C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S7642C5D0Ev,_ZThn272_N7S7642C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C5D1Ev,_ZTv0_n40_N7S7642C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7642C5D1Ev,_ZThn12_N7S7642C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7642C5D1Ev,_ZThn84_N7S7642C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S7642C5D1Ev,_ZThn272_N7S7642C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C1D0Ev,_ZTv0_n40_N7S7642C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7642C1D0Ev,_ZThn336_N7S7642C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7642C1D1Ev,_ZTv0_n40_N7S7642C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7642C1D1Ev,_ZThn336_N7S7642C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C1D0Ev,_ZTv0_n28_N7S7642C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7642C1D0Ev,_ZThn324_N7S7642C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7642C1D0Ev,_ZThn216_N7S7642C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7642C1D1Ev,_ZTv0_n28_N7S7642C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7642C1D1Ev,_ZThn324_N7S7642C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7642C1D1Ev,_ZThn216_N7S7642C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7642C1 = {  "S7642C1", // class name
  bases_S7642C1, 50,
  &(vtc_S7642C1[0]), // expected_vtbl_contents
  &(vtt_S7642C1[0]), // expected_vtt_contents
  ABISELECT(752,424), // object size
  NSPAIRA(_ZTI7S7642C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7642C1),386, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7642C1),131, //virtual table table var
  50, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C3  {
  virtual void  v6(); // _ZN7S7641C32v6Ev
  virtual void  v7(); // _ZN7S7641C32v7Ev
  ~S7641C3(); // tgen
  S7641C3(); // tgen
};
//SIG(-1 S7641C3) C1{ v1 v2}


void  S7641C3 ::v6(){vfunc_called(this, "_ZN7S7641C32v6Ev");}
void  S7641C3 ::v7(){vfunc_called(this, "_ZN7S7641C32v7Ev");}
S7641C3 ::~S7641C3(){ note_dtor("S7641C3", this);} // tgen
S7641C3 ::S7641C3(){ note_ctor("S7641C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7641C3C1Ev();
extern void _ZN7S7641C3D1Ev();
Name_Map name_map_S7641C3[] = {
  NSPAIR(_ZN7S7641C3C1Ev),
  NSPAIR(_ZN7S7641C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7641C3[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY vtc_S7641C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C3[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
Class_Descriptor cd_S7641C3 = {  "S7641C3", // class name
  0,0,//no base classes
  &(vtc_S7641C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7641C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7641C3),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  S7641C7  : virtual S7641C3 {
  void *s7641c7f0;
  char s7641c7f1;
  virtual void  v8(); // _ZN7S7641C72v8Ev
  virtual void  v9(); // _ZN7S7641C72v9Ev
  virtual void  v10(); // _ZN7S7641C73v10Ev
  virtual void  v11(); // _ZN7S7641C73v11Ev
  ~S7641C7(); // tgen
  S7641C7(); // tgen
};
//SIG(-1 S7641C7) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S7641C7 ::v8(){vfunc_called(this, "_ZN7S7641C72v8Ev");}
void  S7641C7 ::v9(){vfunc_called(this, "_ZN7S7641C72v9Ev");}
void  S7641C7 ::v10(){vfunc_called(this, "_ZN7S7641C73v10Ev");}
void  S7641C7 ::v11(){vfunc_called(this, "_ZN7S7641C73v11Ev");}
S7641C7 ::~S7641C7(){ note_dtor("S7641C7", this);} // tgen
S7641C7 ::S7641C7(){ note_ctor("S7641C7", this);} // tgen

static void Test_S7641C7()
{
  extern Class_Descriptor cd_S7641C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7641C7, buf);
    S7641C7 *dp, &lv = *(dp=new (buf) S7641C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7641C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7641C7)");
    check_base_class_offset(lv, (S7641C3*), 0, "S7641C7");
    check_field_offset(lv, s7641c7f0, ABISELECT(8,4), "S7641C7.s7641c7f0");
    check_field_offset(lv, s7641c7f1, ABISELECT(16,8), "S7641C7.s7641c7f1");
    test_class_info(&lv, &cd_S7641C7);
    dp->~S7641C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C7(Test_S7641C7, "S7641C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7641C7C1Ev();
extern void _ZN7S7641C7D1Ev();
Name_Map name_map_S7641C7[] = {
  NSPAIR(_ZN7S7641C7C1Ev),
  NSPAIR(_ZN7S7641C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
static Base_Class bases_S7641C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    0, //bcp->offset
    -1, //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 _ZTI7S7641C7[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY vtc_S7641C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7641C7[];
static  VTT_ENTRY vtt_S7641C7[] = {
  {&(_ZTV7S7641C7[5]),  5,11},
  {&(_ZTV7S7641C7[5]),  5,11},
};
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
Class_Descriptor cd_S7641C7 = {  "S7641C7", // class name
  bases_S7641C7, 1,
  &(vtc_S7641C7[0]), // expected_vtbl_contents
  &(vtt_S7641C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7641C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7641C7),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7641C7),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  S7641C8  : S7641C3 {
  virtual void  v12(); // _ZN7S7641C83v12Ev
  virtual void  v13(); // _ZN7S7641C83v13Ev
  virtual void  v14(); // _ZN7S7641C83v14Ev
  virtual void  v15(); // _ZN7S7641C83v15Ev
  virtual void  v16(); // _ZN7S7641C83v16Ev
  virtual void  v17(); // _ZN7S7641C83v17Ev
  virtual void  v18(); // _ZN7S7641C83v18Ev
  virtual void  v19(); // _ZN7S7641C83v19Ev
  ~S7641C8(); // tgen
  S7641C8(); // tgen
};
//SIG(-1 S7641C8) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S7641C8 ::v12(){vfunc_called(this, "_ZN7S7641C83v12Ev");}
void  S7641C8 ::v13(){vfunc_called(this, "_ZN7S7641C83v13Ev");}
void  S7641C8 ::v14(){vfunc_called(this, "_ZN7S7641C83v14Ev");}
void  S7641C8 ::v15(){vfunc_called(this, "_ZN7S7641C83v15Ev");}
void  S7641C8 ::v16(){vfunc_called(this, "_ZN7S7641C83v16Ev");}
void  S7641C8 ::v17(){vfunc_called(this, "_ZN7S7641C83v17Ev");}
void  S7641C8 ::v18(){vfunc_called(this, "_ZN7S7641C83v18Ev");}
void  S7641C8 ::v19(){vfunc_called(this, "_ZN7S7641C83v19Ev");}
S7641C8 ::~S7641C8(){ note_dtor("S7641C8", this);} // tgen
S7641C8 ::S7641C8(){ note_ctor("S7641C8", this);} // tgen

static void Test_S7641C8()
{
  extern Class_Descriptor cd_S7641C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7641C8, buf);
    S7641C8 *dp, &lv = *(dp=new (buf) S7641C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7641C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7641C8)");
    check_base_class_offset(lv, (S7641C3*), 0, "S7641C8");
    test_class_info(&lv, &cd_S7641C8);
    dp->~S7641C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C8(Test_S7641C8, "S7641C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7641C8C1Ev();
extern void _ZN7S7641C8D1Ev();
Name_Map name_map_S7641C8[] = {
  NSPAIR(_ZN7S7641C8C1Ev),
  NSPAIR(_ZN7S7641C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
static Base_Class bases_S7641C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7641C8[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C8[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
Class_Descriptor cd_S7641C8 = {  "S7641C8", // class name
  bases_S7641C8, 1,
  &(vtc_S7641C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7641C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7641C8),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  S7641C6  : virtual S7641C3 , S7641C7 , S7641C8 {
  ::S7641C3 s7641c6f0;
  virtual  ~S7641C6(); // _ZN7S7641C6D2Ev
  virtual void  v20(); // _ZN7S7641C63v20Ev
  virtual void  v21(); // _ZN7S7641C63v21Ev
  S7641C6(); // tgen
};
//SIG(-1 S7641C6) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S7641C6 ::~S7641C6(){ note_dtor("S7641C6", this);}
void  S7641C6 ::v20(){vfunc_called(this, "_ZN7S7641C63v20Ev");}
void  S7641C6 ::v21(){vfunc_called(this, "_ZN7S7641C63v21Ev");}
S7641C6 ::S7641C6(){ note_ctor("S7641C6", this);} // tgen

static void Test_S7641C6()
{
  extern Class_Descriptor cd_S7641C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7641C6, buf);
    S7641C6 *dp, &lv = *(dp=new (buf) S7641C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7641C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7641C6)");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*), 0, "S7641C6");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*), 0, "S7641C6");
    check_base_class_offset(lv, (S7641C7*), 0, "S7641C6");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*), ABISELECT(24,12), "S7641C6");
    check_base_class_offset(lv, (S7641C8*), ABISELECT(24,12), "S7641C6");
    check_field_offset(lv, s7641c6f0, ABISELECT(32,16), "S7641C6.s7641c6f0");
    test_class_info(&lv, &cd_S7641C6);
    dp->~S7641C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C6(Test_S7641C6, "S7641C6", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7641C6C1Ev();
extern void _ZN7S7641C6D2Ev();
Name_Map name_map_S7641C6[] = {
  NSPAIR(_ZN7S7641C6C1Ev),
  NSPAIR(_ZN7S7641C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
static Base_Class bases_S7641C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C3,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7641C6[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7641C6[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__7S7641C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
static  VTT_ENTRY vtt_S7641C6[] = {
  {&(_ZTV7S7641C6[5]),  5,27},
  {&(_tg__ZTV7S7641C7__7S7641C6[5]),  5,11},
  {&(_tg__ZTV7S7641C7__7S7641C6[5]),  5,11},
  {&(_ZTV7S7641C6[5]),  5,27},
};
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
Class_Descriptor cd_S7641C6 = {  "S7641C6", // class name
  bases_S7641C6, 4,
  &(vtc_S7641C6[0]), // expected_vtbl_contents
  &(vtt_S7641C6[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7641C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7641C6),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7641C6),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  S7641C5  : virtual S7641C6 {
  virtual  ~S7641C5(); // _ZN7S7641C5D2Ev
  virtual void  v22(); // _ZN7S7641C53v22Ev
  virtual void  v23(); // _ZN7S7641C53v23Ev
  S7641C5(); // tgen
};
//SIG(-1 S7641C5) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S7641C5 ::~S7641C5(){ note_dtor("S7641C5", this);}
void  S7641C5 ::v22(){vfunc_called(this, "_ZN7S7641C53v22Ev");}
void  S7641C5 ::v23(){vfunc_called(this, "_ZN7S7641C53v23Ev");}
S7641C5 ::S7641C5(){ note_ctor("S7641C5", this);} // tgen

static void Test_S7641C5()
{
  extern Class_Descriptor cd_S7641C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7641C5, buf);
    S7641C5 *dp, &lv = *(dp=new (buf) S7641C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7641C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7641C5)");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), 0, "S7641C5");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), 0, "S7641C5");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(8,4), "S7641C5");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(32,16), "S7641C5");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(32,16), "S7641C5");
    check_base_class_offset(lv, (S7641C6*), ABISELECT(8,4), "S7641C5");
    test_class_info(&lv, &cd_S7641C5);
    dp->~S7641C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C5(Test_S7641C5, "S7641C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7641C5C1Ev();
extern void _ZN7S7641C5D2Ev();
Name_Map name_map_S7641C5[] = {
  NSPAIR(_ZN7S7641C5C1Ev),
  NSPAIR(_ZN7S7641C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
static Base_Class bases_S7641C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    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
    1, //immediately_derived
  0, 1},
  {&cd_S7641C7,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI7S7641C5[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S7641C5D1Ev,_ZThn4_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S7641C5D0Ev,_ZThn4_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7641C5[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__7S7641C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C5[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C6__7S7641C5[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C5[] = {
  {&(_ZTV7S7641C5[6]),  6,54},
  {&(_ZTV7S7641C5[32]),  32,54},
  {&(_ZTV7S7641C5[6]),  6,54},
  {&(_ZTV7S7641C5[44]),  44,54},
  {&(_tg__ZTV7S7641C6__7S7641C5[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__7S7641C5[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C5[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C6__7S7641C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7641C5D0Ev,_ZThn4_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7641C5D1Ev,_ZThn4_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C5 = {  "S7641C5", // class name
  bases_S7641C5, 5,
  &(vtc_S7641C5[0]), // expected_vtbl_contents
  &(vtt_S7641C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7641C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7641C5),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7641C5),8, //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  S7641C4  : virtual S7641C5 {
  __tsi64 s7641c4f0:40;
  virtual  ~S7641C4(); // _ZN7S7641C4D2Ev
  virtual void  v24(); // _ZN7S7641C43v24Ev
  virtual void  v25(); // _ZN7S7641C43v25Ev
  virtual void  v26(); // _ZN7S7641C43v26Ev
  virtual void  v27(); // _ZN7S7641C43v27Ev
  virtual void  v28(); // _ZN7S7641C43v28Ev
  virtual void  v29(); // _ZN7S7641C43v29Ev
  virtual void  v30(); // _ZN7S7641C43v30Ev
  S7641C4(); // tgen
};
//SIG(-1 S7641C4) C1{ VBC2{ VBC3{ VBC4{ v8 v9} BC5{ VBC4 v10 v11 v12 v13 Fp Fc} BC6{ BC4 v14 v15 v16 v17 v18 v19 v20 v21} vd v22 v23 FC4} vd v24 v25} vd v1 v2 v3 v4 v5 v6 v7 FL:40}


 S7641C4 ::~S7641C4(){ note_dtor("S7641C4", this);}
void  S7641C4 ::v24(){vfunc_called(this, "_ZN7S7641C43v24Ev");}
void  S7641C4 ::v25(){vfunc_called(this, "_ZN7S7641C43v25Ev");}
void  S7641C4 ::v26(){vfunc_called(this, "_ZN7S7641C43v26Ev");}
void  S7641C4 ::v27(){vfunc_called(this, "_ZN7S7641C43v27Ev");}
void  S7641C4 ::v28(){vfunc_called(this, "_ZN7S7641C43v28Ev");}
void  S7641C4 ::v29(){vfunc_called(this, "_ZN7S7641C43v29Ev");}
void  S7641C4 ::v30(){vfunc_called(this, "_ZN7S7641C43v30Ev");}
S7641C4 ::S7641C4(){ note_ctor("S7641C4", this);} // tgen

static void Test_S7641C4()
{
  extern Class_Descriptor cd_S7641C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7641C4, buf);
    S7641C4 *dp, &lv = *(dp=new (buf) S7641C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7641C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7641C4)");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), 0, "S7641C4");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), 0, "S7641C4");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(16,12), "S7641C4");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(40,24), "S7641C4");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(40,24), "S7641C4");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*), ABISELECT(16,12), "S7641C4");
    check_base_class_offset(lv, (S7641C5*), 0, "S7641C4");
    set_bf_and_test(lv, s7641c4f0, ABISELECT(8,4), 0, 40, 1, "S7641C4");
    set_bf_and_test(lv, s7641c4f0, ABISELECT(8,4), 0, 40, hide_sll(1LL<<39), "S7641C4");
    test_class_info(&lv, &cd_S7641C4);
    dp->~S7641C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C4(Test_S7641C4, "S7641C4", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S7641C4C1Ev();
extern void _ZN7S7641C4D2Ev();
Name_Map name_map_S7641C4[] = {
  NSPAIR(_ZN7S7641C4C1Ev),
  NSPAIR(_ZN7S7641C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
static Base_Class bases_S7641C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    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
    1, //immediately_derived
  0, 1},
  {&cd_S7641C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(40,24), //bcp->offset
    53, //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_S7641C6,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7641C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7641C4[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C4D1Ev();
extern void _ZN7S7641C4D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7641C4D1Ev,_ZThn12_N7S7641C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7641C4D0Ev,_ZThn12_N7S7641C4D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7641C4[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__7S7641C4[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7641C5D1Ev,_ZThn12_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7641C5D0Ev,_ZThn12_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5__7S7641C4[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C5__7S7641C4[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__7S7641C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C4[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C6__7S7641C4[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C4[] = {
  {&(_ZTV7S7641C4[10]),  10,65},
  {&(_ZTV7S7641C4[10]),  10,65},
  {&(_ZTV7S7641C4[43]),  43,65},
  {&(_ZTV7S7641C4[10]),  10,65},
  {&(_ZTV7S7641C4[55]),  55,65},
  {&(_tg__ZTV7S7641C5__7S7641C4[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C5__7S7641C4[20]),  20,30},
  {&(_tg__ZTV7S7641C5__7S7641C4[6]),  6,12},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C5__7S7641C4[2]),  2,12},
  {&(_tg__ZTV7S7641C6__7S7641C4[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__7S7641C4[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C4[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C6__7S7641C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7641C4[];
extern  VTBL_ENTRY _ZTV7S7641C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C4[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C5D0Ev,_ZThn12_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C5D1Ev,_ZThn12_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C4D0Ev,_ZThn12_N7S7641C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C4D1Ev,_ZThn12_N7S7641C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C4 = {  "S7641C4", // class name
  bases_S7641C4, 6,
  &(vtc_S7641C4[0]), // expected_vtbl_contents
  &(vtt_S7641C4[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S7641C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7641C4),65, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7641C4),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C9  {
  __tsi64 s7641c9f0;
  virtual void  v31(); // _ZN7S7641C93v31Ev
  virtual void  v32(); // _ZN7S7641C93v32Ev
  ~S7641C9(); // tgen
  S7641C9(); // tgen
};
//SIG(-1 S7641C9) C1{ v1 v2 FL}


void  S7641C9 ::v31(){vfunc_called(this, "_ZN7S7641C93v31Ev");}
void  S7641C9 ::v32(){vfunc_called(this, "_ZN7S7641C93v32Ev");}
S7641C9 ::~S7641C9(){ note_dtor("S7641C9", this);} // tgen
S7641C9 ::S7641C9(){ note_ctor("S7641C9", this);} // tgen

static void Test_S7641C9()
{
  extern Class_Descriptor cd_S7641C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7641C9, buf);
    S7641C9 *dp, &lv = *(dp=new (buf) S7641C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7641C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7641C9)");
    check_field_offset(lv, s7641c9f0, ABISELECT(8,4), "S7641C9.s7641c9f0");
    test_class_info(&lv, &cd_S7641C9);
    dp->~S7641C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C9(Test_S7641C9, "S7641C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7641C9C1Ev();
extern void _ZN7S7641C9D1Ev();
Name_Map name_map_S7641C9[] = {
  NSPAIR(_ZN7S7641C9C1Ev),
  NSPAIR(_ZN7S7641C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7641C9[];
extern void _ZN7S7641C93v31Ev();
extern void _ZN7S7641C93v32Ev();
static  VTBL_ENTRY vtc_S7641C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C9[0]),
  (VTBL_ENTRY)&_ZN7S7641C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7641C93v32Ev,
};
extern VTBL_ENTRY _ZTI7S7641C9[];
extern  VTBL_ENTRY _ZTV7S7641C9[];
Class_Descriptor cd_S7641C9 = {  "S7641C9", // class name
  0,0,//no base classes
  &(vtc_S7641C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7641C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7641C9),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  S7641C11  {
  ::S7642C12 s7641c11f0;
  virtual void  v33(); // _ZN8S7641C113v33Ev
  ~S7641C11(); // tgen
  S7641C11(); // tgen
};
//SIG(-1 S7641C11) C1{ v1 FU2{ m FD[3]}}


void  S7641C11 ::v33(){vfunc_called(this, "_ZN8S7641C113v33Ev");}
S7641C11 ::~S7641C11(){ note_dtor("S7641C11", this);} // tgen
S7641C11 ::S7641C11(){ note_ctor("S7641C11", this);} // tgen

static void Test_S7641C11()
{
  extern Class_Descriptor cd_S7641C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S7641C11, buf);
    S7641C11 *dp, &lv = *(dp=new (buf) S7641C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7641C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C11)");
    check_field_offset(lv, s7641c11f0, ABISELECT(16,4), "S7641C11.s7641c11f0");
    test_class_info(&lv, &cd_S7641C11);
    dp->~S7641C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C11(Test_S7641C11, "S7641C11", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S7641C11C1Ev();
extern void _ZN8S7641C11D1Ev();
Name_Map name_map_S7641C11[] = {
  NSPAIR(_ZN8S7641C11C1Ev),
  NSPAIR(_ZN8S7641C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7641C11[];
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY vtc_S7641C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C11[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
Class_Descriptor cd_S7641C11 = {  "S7641C11", // class name
  0,0,//no base classes
  &(vtc_S7641C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S7641C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7641C11),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  S7641C15  : S7641C8 , S7641C5 , S7641C11 , S7641C7 {
  void *s7641c15f0;
  long s7641c15f1;
  virtual void  v34(); // _ZN8S7641C153v34Ev
  virtual void  v35(); // _ZN8S7641C153v35Ev
  virtual void  v36(); // _ZN8S7641C153v36Ev
  virtual void  v37(); // _ZN8S7641C153v37Ev
  virtual void  v38(); // _ZN8S7641C153v38Ev
  virtual void  v39(); // _ZN8S7641C153v39Ev
  ~S7641C15(); // tgen
  S7641C15(); // tgen
};
//SIG(-1 S7641C15) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp Fl}


void  S7641C15 ::v34(){vfunc_called(this, "_ZN8S7641C153v34Ev");}
void  S7641C15 ::v35(){vfunc_called(this, "_ZN8S7641C153v35Ev");}
void  S7641C15 ::v36(){vfunc_called(this, "_ZN8S7641C153v36Ev");}
void  S7641C15 ::v37(){vfunc_called(this, "_ZN8S7641C153v37Ev");}
void  S7641C15 ::v38(){vfunc_called(this, "_ZN8S7641C153v38Ev");}
void  S7641C15 ::v39(){vfunc_called(this, "_ZN8S7641C153v39Ev");}
S7641C15 ::~S7641C15(){ note_dtor("S7641C15", this);} // tgen
S7641C15 ::S7641C15(){ note_ctor("S7641C15", this);} // tgen

static void Test_S7641C15()
{
  extern Class_Descriptor cd_S7641C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,23)];
    init_test(&cd_S7641C15, buf);
    S7641C15 *dp, &lv = *(dp=new (buf) S7641C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S7641C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C15)");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*), 0, "S7641C15");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*), 0, "S7641C15");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), ABISELECT(8,4), "S7641C15");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), ABISELECT(8,4), "S7641C15");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*), ABISELECT(8,4), "S7641C15");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(120,68), "S7641C15");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(144,80), "S7641C15");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(144,80), "S7641C15");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*), ABISELECT(120,68), "S7641C15");
    check_base_class_offset(lv, (S7641C5*), ABISELECT(8,4), "S7641C15");
    check_base_class_offset(lv, (S7641C11*), ABISELECT(16,8), "S7641C15");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*), ABISELECT(80,48), "S7641C15");
    check_field_offset(lv, s7641c15f0, ABISELECT(104,60), "S7641C15.s7641c15f0");
    check_field_offset(lv, s7641c15f1, ABISELECT(112,64), "S7641C15.s7641c15f1");
    test_class_info(&lv, &cd_S7641C15);
    dp->~S7641C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C15(Test_S7641C15, "S7641C15", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN8S7641C15C1Ev();
extern void _ZN8S7641C15D1Ev();
Name_Map name_map_S7641C15[] = {
  NSPAIR(_ZN8S7641C15C1Ev),
  NSPAIR(_ZN8S7641C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
static Base_Class bases_S7641C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S7641C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7641C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7641C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(144,80), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(120,68), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7641C5,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C11,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C7,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7641C15[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn120_N8S7641C15D1Ev,_ZThn68_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn120_N8S7641C15D0Ev,_ZThn68_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C15[] = {
  ABISELECT(8,4),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
  0,
  ABISELECT(112,64),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV8S7641C15[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C15[] = {
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7641C5D1Ev,_ZThn64_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7641C5D0Ev,_ZThn64_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5__8S7641C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C5__8S7641C15[] = {
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C15[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C7__A1__8S7641C15[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C15[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__8S7641C15[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C6__8S7641C15[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C6__8S7641C15[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C15[] = {
  {&(_ZTV8S7641C15[4]),  4,90},
  {&(_tg__ZTV7S7641C5__8S7641C15[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C5__8S7641C15[20]),  20,30},
  {&(_tg__ZTV7S7641C5__8S7641C15[6]),  6,12},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C5__8S7641C15[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C15[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C7__A1__8S7641C15[4]),  4,6},
  {&(_ZTV8S7641C15[28]),  28,90},
  {&(_ZTV8S7641C15[68]),  68,90},
  {&(_ZTV8S7641C15[28]),  28,90},
  {&(_ZTV8S7641C15[80]),  80,90},
  {&(_ZTV8S7641C15[42]),  42,90},
  {&(_tg__ZTV7S7641C6__8S7641C15[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C15[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C6__8S7641C15[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C6__8S7641C15[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7641C5D0Ev,_ZThn64_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7641C5D1Ev,_ZThn64_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7641C15D0Ev,_ZThn68_N8S7641C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7641C15D1Ev,_ZThn68_N8S7641C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C15 = {  "S7641C15", // class name
  bases_S7641C15, 10,
  &(vtc_S7641C15[0]), // expected_vtbl_contents
  &(vtt_S7641C15[0]), // expected_vtt_contents
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI8S7641C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7641C15),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7641C15),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C14  : virtual S7641C3 , S7641C6 , virtual S7641C11 , S7641C15 , S7641C8 {
  virtual  ~S7641C14(); // _ZN8S7641C14D2Ev
  virtual void  v40(); // _ZN8S7641C143v40Ev
  S7641C14(); // tgen
};
//SIG(-1 S7641C14) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp Fl} BC5 vd v1}


 S7641C14 ::~S7641C14(){ note_dtor("S7641C14", this);}
void  S7641C14 ::v40(){vfunc_called(this, "_ZN8S7641C143v40Ev");}
S7641C14 ::S7641C14(){ note_ctor("S7641C14", this);} // tgen

static void Test_S7641C14()
{
  extern Class_Descriptor cd_S7641C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,39)];
    init_test(&cd_S7641C14, buf);
    S7641C14 *dp, &lv = *(dp=new (buf) S7641C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,152), "sizeof(S7641C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C14)");
    /*is_ambiguous_... S7641C14::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), 0, "S7641C14");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C15*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(24,12), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(24,12), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*), 0, "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*), ABISELECT(176,92), "S7641C14");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C15*), ABISELECT(48,20), "S7641C14");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C15*), ABISELECT(48,20), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(240,132), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(264,144), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(264,144), "S7641C14");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*)(S7641C15*), ABISELECT(240,132), "S7641C14");
    check_base_class_offset(lv, (S7641C5*)(S7641C15*), ABISELECT(56,24), "S7641C14");
    check_base_class_offset(lv, (S7641C11*)(S7641C15*), ABISELECT(64,28), "S7641C14");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C15*), ABISELECT(128,68), "S7641C14");
    check_base_class_offset(lv, (S7641C15*), ABISELECT(48,20), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*), ABISELECT(168,88), "S7641C14");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*), ABISELECT(168,88), "S7641C14");
    test_class_info(&lv, &cd_S7641C14);
    dp->~S7641C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C14(Test_S7641C14, "S7641C14", ABISELECT(288,152));

#else // __cplusplus

extern void _ZN8S7641C14C1Ev();
extern void _ZN8S7641C14D2Ev();
Name_Map name_map_S7641C14[] = {
  NSPAIR(_ZN8S7641C14C1Ev),
  NSPAIR(_ZN8S7641C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C15;
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
static Base_Class bases_S7641C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C7,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C6,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C11,    ABISELECT(176,92), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(264,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(240,132), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7641C5,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C15,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C3,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(168,88), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S7641C14[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C14D1Ev();
extern void _ZN8S7641C14D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev)();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn240_N8S7641C14D1Ev,_ZThn132_N8S7641C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev)();
extern void ABISELECT(_ZThn240_N8S7641C14D0Ev,_ZThn132_N8S7641C14D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C14[] = {
  ABISELECT(240,132),
  ABISELECT(176,92),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV8S7641C14[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A__8S7641C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__8S7641C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C15__8S7641C14[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C15__8S7641C14[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn184_N7S7641C5D1Ev,_ZThn108_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn184_N7S7641C5D0Ev,_ZThn108_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C58S7641C15__8S7641C14[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-108),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C58S7641C15__8S7641C14[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C58S7641C15__8S7641C14[] = {
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C15__A2__8S7641C14[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C78S7641C15__A2__8S7641C14[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C15__8S7641C14[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn192_N8S7641C15D1Ev,_ZThn112_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn192_N8S7641C15D0Ev,_ZThn112_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C15__8S7641C14[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__A1__8S7641C15__8S7641C14[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A1__8S7641C15__8S7641C14[] = {
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C15__8S7641C14[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A1__8S7641C14[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__A1__8S7641C14[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C6__A1__8S7641C14[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C6__A1__8S7641C14[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C14[] = {
  {&(_ZTV8S7641C14[7]),  7,136},
  {&(_tg__ZTV7S7641C6__A__8S7641C14[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C14[5]),  5,11},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C14[5]),  5,11},
  {&(_tg__ZTV7S7641C6__A__8S7641C14[5]),  5,15},
  {&(_tg__ZTV8S7641C15__8S7641C14[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C15__8S7641C14[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C15__8S7641C14[20]),  20,30},
  {&(_tg__ZTV7S7641C3__7S7641C58S7641C15__8S7641C14[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C58S7641C15__8S7641C14[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C15__A2__8S7641C14[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C78S7641C15__A2__8S7641C14[4]),  4,6},
  {&(_tg__ZTV7S7641C5__8S7641C15__8S7641C14[6]),  6,12},
  {&(_tg__ZTV7S7641C6__8S7641C15__8S7641C14[20]),  20,30},
  {&(_tg__ZTV7S7641C3__A1__8S7641C15__8S7641C14[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__A1__8S7641C15__8S7641C14[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C15__8S7641C14[5]),  5,11},
  {&(_ZTV8S7641C14[7]),  7,136},
  {&(_ZTV8S7641C14[93]),  93,136},
  {&(_ZTV8S7641C14[34]),  34,136},
  {&(_ZTV8S7641C14[58]),  58,136},
  {&(_ZTV8S7641C14[114]),  114,136},
  {&(_ZTV8S7641C14[126]),  126,136},
  {&(_ZTV8S7641C14[72]),  72,136},
  {&(_tg__ZTV7S7641C6__A1__8S7641C14[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__A1__8S7641C14[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C6__A1__8S7641C14[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C6__A1__8S7641C14[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7641C14[];
extern  VTBL_ENTRY _ZTV8S7641C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C14[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7641C15D0Ev,_ZThn112_N8S7641C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7641C15D1Ev,_ZThn112_N8S7641C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7641C5D0Ev,_ZThn108_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7641C5D1Ev,_ZThn108_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7641C14D0Ev,_ZThn132_N8S7641C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7641C14D1Ev,_ZThn132_N8S7641C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C14 = {  "S7641C14", // class name
  bases_S7641C14, 18,
  &(vtc_S7641C14[0]), // expected_vtbl_contents
  &(vtt_S7641C14[0]), // expected_vtt_contents
  ABISELECT(288,152), // object size
  NSPAIRA(_ZTI8S7641C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7641C14),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7641C14),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C13  : virtual S7641C6 , S7641C14 , virtual S7641C5 , virtual S7641C7 , S7641C3 {
  virtual  ~S7641C13(); // _ZN8S7641C13D2Ev
  virtual void  v41(); // _ZN8S7641C133v41Ev
  virtual void  v42(); // _ZN8S7641C133v42Ev
  virtual void  v43(); // _ZN8S7641C133v43Ev
  S7641C13(); // tgen
};
//SIG(-1 S7641C13) C1{ VBC2{ VBC3{ v4 v5} BC4{ VBC3 v6 v7 v8 v9 Fp Fc} BC5{ BC3 v10 v11 v12 v13 v14 v15 v16 v17} vd v18 v19 FC3} BC6{ VBC3 BC2 VBC7{ v20 FU8{ m FD[3]}} BC9{ BC5 BC10{ VBC2 vd v21 v22} BC7 BC4 v23 v24 v25 v26 v27 v28 Fp Fl} BC5 vd v29} VBC10 VBC4 BC3 vd v1 v2 v3}


 S7641C13 ::~S7641C13(){ note_dtor("S7641C13", this);}
void  S7641C13 ::v41(){vfunc_called(this, "_ZN8S7641C133v41Ev");}
void  S7641C13 ::v42(){vfunc_called(this, "_ZN8S7641C133v42Ev");}
void  S7641C13 ::v43(){vfunc_called(this, "_ZN8S7641C133v43Ev");}
S7641C13 ::S7641C13(){ note_ctor("S7641C13", this);} // tgen

static void Test_S7641C13()
{
  extern Class_Descriptor cd_S7641C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,44)];
    init_test(&cd_S7641C13, buf);
    S7641C13 *dp, &lv = *(dp=new (buf) S7641C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,172), "sizeof(S7641C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C13)");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C14*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C14*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C14*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C15*)(S7641C14*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(208,108), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(208,108), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*), ABISELECT(184,96), "S7641C13");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*)(S7641C15*)(S7641C14*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C5*), ABISELECT(184,96), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C14*), 0, "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C14*), ABISELECT(24,12), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C14*), ABISELECT(24,12), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C14*), 0, "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C14*), ABISELECT(224,116), "S7641C13");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C15*)(S7641C14*), ABISELECT(48,20), "S7641C13");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C15*)(S7641C14*), ABISELECT(48,20), "S7641C13");
    check_base_class_offset(lv, (S7641C5*)(S7641C15*)(S7641C14*), ABISELECT(56,24), "S7641C13");
    check_base_class_offset(lv, (S7641C11*)(S7641C15*)(S7641C14*), ABISELECT(64,28), "S7641C13");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C15*)(S7641C14*), ABISELECT(128,68), "S7641C13");
    check_base_class_offset(lv, (S7641C15*)(S7641C14*), ABISELECT(48,20), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C14*), ABISELECT(168,88), "S7641C13");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C14*), ABISELECT(168,88), "S7641C13");
    check_base_class_offset(lv, (S7641C14*), 0, "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C5*), ABISELECT(288,156), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*), ABISELECT(296,160), "S7641C13");
    /*is_ambiguous_... S7641C13::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*), ABISELECT(176,92), "S7641C13");
    test_class_info(&lv, &cd_S7641C13);
    dp->~S7641C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C13(Test_S7641C13, "S7641C13", ABISELECT(320,172));

#else // __cplusplus

extern void _ZN8S7641C13C1Ev();
extern void _ZN8S7641C13D2Ev();
Name_Map name_map_S7641C13[] = {
  NSPAIR(_ZN8S7641C13C1Ev),
  NSPAIR(_ZN8S7641C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C15;
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C14;
extern VTBL_ENTRY _ZTI8S7641C14[];
extern  VTBL_ENTRY _ZTV8S7641C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C14[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
static Base_Class bases_S7641C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    ABISELECT(184,96), //bcp->offset
    -1, //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
    1, //immediately_derived
  0, 1},
  {&cd_S7641C7,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(208,108), //bcp->offset
    129, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(184,96), //bcp->offset
    99, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    10, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(24,12), //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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7641C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(224,116), //bcp->offset
    141, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7641C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C5,    ABISELECT(56,24), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(64,28), //bcp->offset
    69, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(128,68), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C15,    ABISELECT(48,20), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(168,88), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7641C14,    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_S7641C5,    ABISELECT(288,156), //bcp->offset
    145, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C7,    ABISELECT(296,160), //bcp->offset
    160, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C3,    ABISELECT(176,92), //bcp->offset
    95, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7641C13[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C13D1Ev();
extern void _ZN8S7641C13D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev)();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn184_N8S7641C13D1Ev,_ZThn96_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn184_N8S7641C13D0Ev,_ZThn96_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn288_N8S7641C13D1Ev,_ZThn156_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn288_N8S7641C13D0Ev,_ZThn156_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY vtc_S7641C13[] = {
  ABISELECT(296,160),
  ABISELECT(288,156),
  ABISELECT(184,96),
  ABISELECT(224,116),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(136,76),
  ABISELECT(136,76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern VTBL_ENTRY _ZTV8S7641C13[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C14D1Ev();
extern void _ZN8S7641C14D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C14__8S7641C13[] = {
  ABISELECT(184,96),
  ABISELECT(224,116),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C14__A1__8S7641C13[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C14__A1__8S7641C13[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C14__A1__8S7641C13[] = {
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C14__A1__8S7641C13[] = {
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S7641C5D1Ev,_ZThn72_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S7641C5D0Ev,_ZThn72_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C58S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-128,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C13[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C78S7641C158S7641C14__A2__8S7641C13[] = {
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn136_N8S7641C15D1Ev,_ZThn76_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn136_N8S7641C15D0Ev,_ZThn76_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-136,-76),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C158S7641C14__8S7641C13[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn184_N8S7641C14D1Ev,_ZThn96_N8S7641C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev)();
extern void ABISELECT(_ZThn184_N8S7641C14D0Ev,_ZThn96_N8S7641C14D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A1__8S7641C14__8S7641C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C14__8S7641C13[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C15__8S7641C14__8S7641C13[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C15__8S7641C14__8S7641C13[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A2__8S7641C14__8S7641C13[] = {
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C15__A2__8S7641C14__8S7641C13[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__8S7641C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5__A1__8S7641C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C5__A1__8S7641C13[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C13[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C7__A3__8S7641C13[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C13[] = {
  {&(_ZTV8S7641C13[9]),  9,175},
  {&(_tg__ZTV8S7641C14__8S7641C13[7]),  7,18},
  {&(_tg__ZTV7S7641C68S7641C14__A1__8S7641C13[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C14__A1__8S7641C13[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C14__A1__8S7641C13[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C14__A1__8S7641C13[4]),  4,6},
  {&(_tg__ZTV8S7641C158S7641C14__8S7641C13[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C14__8S7641C13[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C14__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C14__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C14__8S7641C13[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C13[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C78S7641C158S7641C14__A2__8S7641C13[4]),  4,6},
  {&(_tg__ZTV7S7641C5__8S7641C158S7641C14__8S7641C13[6]),  6,12},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C14__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C14__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C14__8S7641C13[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C158S7641C14__8S7641C13[5]),  5,11},
  {&(_tg__ZTV7S7641C6__A1__8S7641C14__8S7641C13[20]),  20,30},
  {&(_tg__ZTV8S7641C11__8S7641C14__8S7641C13[3]),  3,4},
  {&(_tg__ZTV8S7641C15__8S7641C14__8S7641C13[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C15__8S7641C14__8S7641C13[6]),  6,12},
  {&(_tg__ZTV7S7641C6__A1__8S7641C14__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A2__8S7641C14__8S7641C13[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C15__A2__8S7641C14__8S7641C13[5]),  5,11},
  {&(_ZTV8S7641C13[119]),  119,175},
  {&(_ZTV8S7641C13[119]),  119,175},
  {&(_ZTV8S7641C13[131]),  131,175},
  {&(_ZTV8S7641C13[144]),  144,175},
  {&(_ZTV8S7641C13[39]),  39,175},
  {&(_ZTV8S7641C13[63]),  63,175},
  {&(_ZTV8S7641C13[77]),  77,175},
  {&(_ZTV8S7641C13[154]),  154,175},
  {&(_ZTV8S7641C13[169]),  169,175},
  {&(_tg__ZTV7S7641C6__8S7641C13[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C13[5]),  5,11},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C13[5]),  5,11},
  {&(_tg__ZTV7S7641C6__8S7641C13[5]),  5,15},
  {&(_tg__ZTV7S7641C5__A1__8S7641C13[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C5__A1__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C6__7S7641C5__A1__8S7641C13[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C5__A1__8S7641C13[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A3__8S7641C13[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C7__A3__8S7641C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7641C13[];
extern  VTBL_ENTRY _ZTV8S7641C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C13[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7641C14D0Ev,_ZThn96_N8S7641C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7641C14D1Ev,_ZThn96_N8S7641C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7641C15D0Ev,_ZThn76_N8S7641C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7641C15D1Ev,_ZThn76_N8S7641C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7641C5D0Ev,_ZThn72_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7641C5D1Ev,_ZThn72_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7641C13D0Ev,_ZThn156_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7641C13D1Ev,_ZThn156_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7641C13D0Ev,_ZThn96_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7641C13D1Ev,_ZThn96_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C13 = {  "S7641C13", // class name
  bases_S7641C13, 22,
  &(vtc_S7641C13[0]), // expected_vtbl_contents
  &(vtt_S7641C13[0]), // expected_vtt_contents
  ABISELECT(320,172), // object size
  NSPAIRA(_ZTI8S7641C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7641C13),175, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7641C13),44, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C16  : S7641C6 , S7641C11 {
  virtual void  v44(); // _ZN8S7641C163v44Ev
  virtual void  v45(); // _ZN8S7641C163v45Ev
  ~S7641C16(); // tgen
  S7641C16(); // tgen
};
//SIG(-1 S7641C16) C1{ BC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} BC6{ v19 FU7{ m FD[3]}} v1 v2}


void  S7641C16 ::v44(){vfunc_called(this, "_ZN8S7641C163v44Ev");}
void  S7641C16 ::v45(){vfunc_called(this, "_ZN8S7641C163v45Ev");}
S7641C16 ::~S7641C16(){ note_dtor("S7641C16", this);} // tgen
S7641C16 ::S7641C16(){ note_ctor("S7641C16", this);} // tgen

static void Test_S7641C16()
{
  extern Class_Descriptor cd_S7641C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S7641C16, buf);
    S7641C16 *dp, &lv = *(dp=new (buf) S7641C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7641C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C16)");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), 0, "S7641C16");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), 0, "S7641C16");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*), 0, "S7641C16");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(24,12), "S7641C16");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(24,12), "S7641C16");
    check_base_class_offset(lv, (S7641C6*), 0, "S7641C16");
    check_base_class_offset(lv, (S7641C11*), ABISELECT(48,20), "S7641C16");
    test_class_info(&lv, &cd_S7641C16);
    dp->~S7641C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C16(Test_S7641C16, "S7641C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S7641C16C1Ev();
extern void _ZN8S7641C16D1Ev();
Name_Map name_map_S7641C16[] = {
  NSPAIR(_ZN8S7641C16C1Ev),
  NSPAIR(_ZN8S7641C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
static Base_Class bases_S7641C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7641C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(24,12), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C6,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C11,    ABISELECT(48,20), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7641C16[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C16D1Ev();
extern void _ZN8S7641C16D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY vtc_S7641C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern VTBL_ENTRY _ZTV8S7641C16[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__8S7641C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
static  VTT_ENTRY vtt_S7641C16[] = {
  {&(_ZTV8S7641C16[5]),  5,32},
  {&(_tg__ZTV7S7641C6__8S7641C16[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C16[5]),  5,11},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C16[5]),  5,11},
  {&(_tg__ZTV7S7641C6__8S7641C16[5]),  5,15},
  {&(_ZTV8S7641C16[5]),  5,32},
};
extern VTBL_ENTRY _ZTI8S7641C16[];
extern  VTBL_ENTRY _ZTV8S7641C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C16[];
Class_Descriptor cd_S7641C16 = {  "S7641C16", // class name
  bases_S7641C16, 6,
  &(vtc_S7641C16[0]), // expected_vtbl_contents
  &(vtt_S7641C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S7641C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7641C16),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7641C16),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C10  : S7641C11 , virtual S7641C3 , S7641C13 , S7641C16 {
  __tsi64 s7641c10f0;
  virtual  ~S7641C10(); // _ZN8S7641C10D2Ev
  S7641C10(); // tgen
};
//SIG(-1 S7641C10) C1{ BC2{ v1 FU3{ m FD[3]}} VBC4{ v2 v3} BC5{ VBC6{ VBC4 BC7{ VBC4 v4 v5 v6 v7 Fp Fc} BC8{ BC4 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC4} BC9{ VBC4 BC6 VBC2 BC10{ BC8 BC11{ VBC6 vd v18 v19} BC2 BC7 v20 v21 v22 v23 v24 v25 Fp Fl} BC8 vd v26} VBC11 VBC7 BC4 vd v27 v28 v29} BC12{ BC6 BC2 v30 v31} vd FL}


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

static void Test_S7641C10()
{
  extern Class_Descriptor cd_S7641C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,71)];
    init_test(&cd_S7641C10, buf);
    S7641C10 *dp, &lv = *(dp=new (buf) S7641C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,280), "sizeof(S7641C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C10)");
    /*is_ambiguous_... S7641C10::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*), 0, "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C14*)(S7641C13*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C14*)(S7641C13*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C14*)(S7641C13*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C16*), ABISELECT(376,204), "S7641C10");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C16*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(400,216), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(400,216), "S7641C10");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C13*), ABISELECT(376,204), "S7641C10");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C10::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C5*), ABISELECT(376,204), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C14*)(S7641C13*), ABISELECT(64,40), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C14*)(S7641C13*), ABISELECT(88,52), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C14*)(S7641C13*), ABISELECT(88,52), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C14*)(S7641C13*), ABISELECT(64,40), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C14*)(S7641C13*), ABISELECT(416,224), "S7641C10");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(112,60), "S7641C10");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(112,60), "S7641C10");
    check_base_class_offset(lv, (S7641C5*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(120,64), "S7641C10");
    check_base_class_offset(lv, (S7641C11*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(128,68), "S7641C10");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(192,108), "S7641C10");
    check_base_class_offset(lv, (S7641C15*)(S7641C14*)(S7641C13*), ABISELECT(112,60), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C14*)(S7641C13*), ABISELECT(232,128), "S7641C10");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C14*)(S7641C13*), ABISELECT(232,128), "S7641C10");
    check_base_class_offset(lv, (S7641C14*)(S7641C13*), ABISELECT(64,40), "S7641C10");
    /*is_ambiguous_... S7641C13::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C5*)(S7641C13*), ABISELECT(480,264), "S7641C10");
    /*is_ambiguous_... S7641C13::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C13*), ABISELECT(488,268), "S7641C10");
    /*is_ambiguous_... S7641C13::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C13*), ABISELECT(240,132), "S7641C10");
    check_base_class_offset(lv, (S7641C13*), ABISELECT(64,40), "S7641C10");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C16*), ABISELECT(256,136), "S7641C10");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C16*), ABISELECT(280,148), "S7641C10");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C16*), ABISELECT(280,148), "S7641C10");
    check_base_class_offset(lv, (S7641C6*)(S7641C16*), ABISELECT(256,136), "S7641C10");
    check_base_class_offset(lv, (S7641C11*)(S7641C16*), ABISELECT(304,156), "S7641C10");
    check_base_class_offset(lv, (S7641C16*), ABISELECT(256,136), "S7641C10");
    check_field_offset(lv, s7641c10f0, ABISELECT(368,196), "S7641C10.s7641c10f0");
    test_class_info(&lv, &cd_S7641C10);
    dp->~S7641C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C10(Test_S7641C10, "S7641C10", ABISELECT(512,280));

#else // __cplusplus

extern void _ZN8S7641C10C1Ev();
extern void _ZN8S7641C10D2Ev();
Name_Map name_map_S7641C10[] = {
  NSPAIR(_ZN8S7641C10C1Ev),
  NSPAIR(_ZN8S7641C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C15;
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C14;
extern VTBL_ENTRY _ZTI8S7641C14[];
extern  VTBL_ENTRY _ZTV8S7641C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C14[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C13;
extern VTBL_ENTRY _ZTI8S7641C13[];
extern  VTBL_ENTRY _ZTV8S7641C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C13[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C16;
extern VTBL_ENTRY _ZTI8S7641C16[];
extern  VTBL_ENTRY _ZTV8S7641C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C16[];
static Base_Class bases_S7641C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7641C3,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C7,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(400,216), //bcp->offset
    171, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(376,204), //bcp->offset
    141, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7641C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(88,52), //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
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(416,224), //bcp->offset
    183, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7641C3,    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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7641C8,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7641C5,    ABISELECT(120,64), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(128,68), //bcp->offset
    79, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(192,108), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7641C15,    ABISELECT(112,60), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(232,128), //bcp->offset
    93, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7641C14,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7641C5,    ABISELECT(480,264), //bcp->offset
    187, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7641C7,    ABISELECT(488,268), //bcp->offset
    202, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7641C3,    ABISELECT(240,132), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7641C13,    ABISELECT(64,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C7,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(280,148), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(304,156), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7641C16,    ABISELECT(256,136), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7641C10[];
extern void _ZN8S7641C113v33Ev();
extern void _ZN8S7641C10D1Ev();
extern void _ZN8S7641C10D0Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn64_N8S7641C10D1Ev,_ZThn40_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7641C10D0Ev,_ZThn40_N8S7641C10D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn112_N8S7641C10D1Ev,_ZThn60_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7641C10D0Ev,_ZThn60_N8S7641C10D0Ev)();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn120_N8S7641C10D1Ev,_ZThn64_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S7641C10D0Ev,_ZThn64_N8S7641C10D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn256_N8S7641C10D1Ev,_ZThn136_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7641C10D0Ev,_ZThn136_N8S7641C10D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn376_N8S7641C10D1Ev,_ZThn204_N8S7641C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev)();
extern void ABISELECT(_ZThn376_N8S7641C10D0Ev,_ZThn204_N8S7641C10D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn480_N8S7641C10D1Ev,_ZThn264_N8S7641C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev)();
extern void ABISELECT(_ZThn480_N8S7641C10D0Ev,_ZThn264_N8S7641C10D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY vtc_S7641C10[] = {
  ABISELECT(488,268),
  ABISELECT(480,264),
  ABISELECT(416,224),
  ABISELECT(376,204),
  ABISELECT(376,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  (VTBL_ENTRY)&_ZN8S7641C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C10D0Ev,
  ABISELECT(424,228),
  ABISELECT(416,224),
  ABISELECT(312,164),
  ABISELECT(352,184),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7641C10D1Ev,_ZThn40_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7641C10D0Ev,_ZThn40_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7641C10D1Ev,_ZThn60_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7641C10D0Ev,_ZThn60_N8S7641C10D0Ev),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7641C10D1Ev,_ZThn64_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7641C10D0Ev,_ZThn64_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7641C10D1Ev,_ZThn136_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7641C10D0Ev,_ZThn136_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-376,-204),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-400,-216),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  0,
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  0,
  0,
  ABISELECT(-480,-264),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-488,-268),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern VTBL_ENTRY _ZTV8S7641C10[];
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C13D1Ev();
extern void _ZN8S7641C13D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C13__8S7641C10[] = {
  ABISELECT(424,228),
  ABISELECT(416,224),
  ABISELECT(312,164),
  ABISELECT(352,184),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C14D1Ev();
extern void _ZN8S7641C14D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(312,164),
  ABISELECT(352,184),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C148S7641C13__A1__8S7641C10[] = {
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C148S7641C13__A1__8S7641C10[] = {
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C148S7641C13__A1__8S7641C10[] = {
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C148S7641C13__A1__8S7641C10[] = {
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(264,144),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn256_N7S7641C5D1Ev,_ZThn140_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn256_N7S7641C5D0Ev,_ZThn140_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-256,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C10[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C10[] = {
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn264_N8S7641C15D1Ev,_ZThn144_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn264_N8S7641C15D0Ev,_ZThn144_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-264,-144),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C158S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn312_N8S7641C14D1Ev,_ZThn164_N8S7641C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev)();
extern void ABISELECT(_ZThn312_N8S7641C14D0Ev,_ZThn164_N8S7641C14D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A1__8S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-164),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C148S7641C13__8S7641C10[] = {
  0,
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C15__8S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C15__8S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A2__8S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C15__A2__8S7641C148S7641C13__8S7641C10[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn312_N8S7641C13D1Ev,_ZThn164_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn312_N8S7641C13D0Ev,_ZThn164_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C13__8S7641C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-164),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__8S7641C13__8S7641C10[] = {
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C13__8S7641C10[] = {
  0,
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C14__8S7641C13__8S7641C10[] = {
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C14__8S7641C13__8S7641C10[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C13__8S7641C10[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn416_N8S7641C13D1Ev,_ZThn224_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn416_N8S7641C13D0Ev,_ZThn224_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C13__8S7641C10[] = {
  0,
  0,
  ABISELECT(-416,-224),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C13__8S7641C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-424,-228),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C16D1Ev();
extern void _ZN8S7641C16D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C16__8S7641C10[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C16__A2__8S7641C10[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C16__A4__8S7641C10[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C16__A4__8S7641C10[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C16__A2__8S7641C10[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__8S7641C16__8S7641C10[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C10[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__8S7641C10[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C10[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5__A1__8S7641C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C5__A1__8S7641C10[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C10[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C7__A3__8S7641C10[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C10[] = {
  {&(_ZTV8S7641C10[7]),  7,217},
  {&(_tg__ZTV8S7641C13__8S7641C10[9]),  9,23},
  {&(_tg__ZTV8S7641C148S7641C13__8S7641C10[7]),  7,18},
  {&(_tg__ZTV7S7641C68S7641C148S7641C13__A1__8S7641C10[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C148S7641C13__A1__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C148S7641C13__A1__8S7641C10[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C148S7641C13__A1__8S7641C10[4]),  4,6},
  {&(_tg__ZTV8S7641C158S7641C148S7641C13__8S7641C10[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C148S7641C13__8S7641C10[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C148S7641C13__8S7641C10[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C10[4]),  4,6},
  {&(_tg__ZTV7S7641C5__8S7641C158S7641C148S7641C13__8S7641C10[6]),  6,12},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C148S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C148S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C148S7641C13__8S7641C10[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C158S7641C148S7641C13__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C6__A1__8S7641C148S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV8S7641C11__8S7641C148S7641C13__8S7641C10[3]),  3,4},
  {&(_tg__ZTV8S7641C15__8S7641C148S7641C13__8S7641C10[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C15__8S7641C148S7641C13__8S7641C10[6]),  6,12},
  {&(_tg__ZTV7S7641C6__A1__8S7641C148S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A2__8S7641C148S7641C13__8S7641C10[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C15__A2__8S7641C148S7641C13__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C6__8S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C6__8S7641C13__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__8S7641C13__8S7641C10[2]),  2,12},
  {&(_tg__ZTV8S7641C11__8S7641C13__8S7641C10[3]),  3,4},
  {&(_tg__ZTV8S7641C158S7641C14__8S7641C13__8S7641C10[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C14__8S7641C13__8S7641C10[6]),  6,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C13__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C5__A1__8S7641C13__8S7641C10[9]),  9,15},
  {&(_tg__ZTV7S7641C7__A3__8S7641C13__8S7641C10[9]),  9,15},
  {&(_tg__ZTV8S7641C16__8S7641C10[5]),  5,17},
  {&(_tg__ZTV7S7641C68S7641C16__A2__8S7641C10[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C16__A4__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C16__A4__8S7641C10[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C16__A2__8S7641C10[4]),  4,6},
  {&(_tg__ZTV7S7641C3__8S7641C16__8S7641C10[4]),  4,6},
  {&(_ZTV8S7641C10[161]),  161,217},
  {&(_ZTV8S7641C10[19]),  19,217},
  {&(_ZTV8S7641C10[161]),  161,217},
  {&(_ZTV8S7641C10[173]),  173,217},
  {&(_ZTV8S7641C10[186]),  186,217},
  {&(_ZTV8S7641C10[49]),  49,217},
  {&(_ZTV8S7641C10[73]),  73,217},
  {&(_ZTV8S7641C10[87]),  87,217},
  {&(_ZTV8S7641C10[196]),  196,217},
  {&(_ZTV8S7641C10[211]),  211,217},
  {&(_ZTV8S7641C10[114]),  114,217},
  {&(_tg__ZTV7S7641C6__8S7641C10[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C77S7641C6__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C6__8S7641C10[5]),  5,15},
  {&(_tg__ZTV7S7641C5__A1__8S7641C10[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C5__A1__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C6__7S7641C5__A1__8S7641C10[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C5__A1__8S7641C10[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A3__8S7641C10[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C7__A3__8S7641C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7641C10[];
extern  VTBL_ENTRY _ZTV8S7641C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C10[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7641C13D0Ev,_ZThn224_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7641C13D1Ev,_ZThn224_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7641C13D0Ev,_ZThn164_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7641C13D1Ev,_ZThn164_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7641C14D0Ev,_ZThn164_N8S7641C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7641C14D1Ev,_ZThn164_N8S7641C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7641C15D0Ev,_ZThn144_N8S7641C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7641C15D1Ev,_ZThn144_N8S7641C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7641C5D0Ev,_ZThn140_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7641C5D1Ev,_ZThn140_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7641C10D0Ev,_ZThn264_N8S7641C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7641C10D1Ev,_ZThn264_N8S7641C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7641C10D0Ev,_ZThn204_N8S7641C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7641C10D1Ev,_ZThn204_N8S7641C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C10 = {  "S7641C10", // class name
  bases_S7641C10, 30,
  &(vtc_S7641C10[0]), // expected_vtbl_contents
  &(vtt_S7641C10[0]), // expected_vtt_contents
  ABISELECT(512,280), // object size
  NSPAIRA(_ZTI8S7641C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7641C10),217, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7641C10),62, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C2  : virtual S7641C3 , virtual S7641C4 , virtual S7641C9 , S7641C10 , virtual S7641C8 {
  long s7641c2f0;
  virtual void  v46(); // _ZN7S7641C23v46Ev
  virtual void  v47(); // _ZN7S7641C23v47Ev
  virtual void  v48(); // _ZN7S7641C23v48Ev
  virtual void  v49(); // _ZN7S7641C23v49Ev
  virtual void  v50(); // _ZN7S7641C23v50Ev
  ~S7641C2(); // tgen
  S7641C2(); // tgen
};
//SIG(-1 S7641C2) C1{ VBC2{ v6 v7} VBC3{ VBC4{ VBC5{ VBC2 BC6{ VBC2 v8 v9 v10 v11 Fp Fc} BC7{ BC2 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC2} vd v22 v23} vd v24 v25 v26 v27 v28 v29 v30 FL:40} VBC8{ v31 v32 FL} BC9{ BC10{ v33 FU11{ m FD[3]}} VBC2 BC12{ VBC5 BC13{ VBC2 BC5 VBC10 BC14{ BC7 BC4 BC10 BC6 v34 v35 v36 v37 v38 v39 Fp Fl} BC7 vd v40} VBC4 VBC6 BC2 vd v41 v42 v43} BC15{ BC5 BC10 v44 v45} vd FL} VBC7 v1 v2 v3 v4 v5 Fl}


void  S7641C2 ::v46(){vfunc_called(this, "_ZN7S7641C23v46Ev");}
void  S7641C2 ::v47(){vfunc_called(this, "_ZN7S7641C23v47Ev");}
void  S7641C2 ::v48(){vfunc_called(this, "_ZN7S7641C23v48Ev");}
void  S7641C2 ::v49(){vfunc_called(this, "_ZN7S7641C23v49Ev");}
void  S7641C2 ::v50(){vfunc_called(this, "_ZN7S7641C23v50Ev");}
S7641C2 ::~S7641C2(){ note_dtor("S7641C2", this);} // tgen
S7641C2 ::S7641C2(){ note_ctor("S7641C2", this);} // tgen

static void Test_S7641C2()
{
  extern Class_Descriptor cd_S7641C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,78)];
    init_test(&cd_S7641C2, buf);
    S7641C2 *dp, &lv = *(dp=new (buf) S7641C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,308), "sizeof(S7641C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C2)");
    /*is_ambiguous_... S7641C2::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C10::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C16*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C16*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(400,220), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(424,232), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(424,232), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C5*), ABISELECT(400,220), "S7641C2");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C13*)(S7641C10*), ABISELECT(400,220), "S7641C2");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(400,220), "S7641C2");
    check_base_class_offset(lv, (S7641C5*)(S7641C4*), ABISELECT(384,208), "S7641C2");
    /*is_ambiguous_... S7641C13::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C5*)(S7641C13*)(S7641C10*), ABISELECT(384,208), "S7641C2");
    check_base_class_offset(lv, (S7641C4*), ABISELECT(384,208), "S7641C2");
    check_base_class_offset(lv, (S7641C9*), ABISELECT(440,240), "S7641C2");
    /*is_ambiguous_... S7641C10::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C10*), 0, "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(64,40), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(88,52), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(88,52), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(64,40), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(464,252), "S7641C2");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(112,60), "S7641C2");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(112,60), "S7641C2");
    check_base_class_offset(lv, (S7641C5*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(120,64), "S7641C2");
    check_base_class_offset(lv, (S7641C11*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(128,68), "S7641C2");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(192,108), "S7641C2");
    check_base_class_offset(lv, (S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(112,60), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(232,128), "S7641C2");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(232,128), "S7641C2");
    check_base_class_offset(lv, (S7641C14*)(S7641C13*)(S7641C10*), ABISELECT(64,40), "S7641C2");
    /*is_ambiguous_... S7641C13::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C13*)(S7641C10*), ABISELECT(528,292), "S7641C2");
    /*is_ambiguous_... S7641C13::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C13*)(S7641C10*), ABISELECT(240,132), "S7641C2");
    check_base_class_offset(lv, (S7641C13*)(S7641C10*), ABISELECT(64,40), "S7641C2");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C16*)(S7641C10*), ABISELECT(256,136), "S7641C2");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C16*)(S7641C10*), ABISELECT(280,148), "S7641C2");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C16*)(S7641C10*), ABISELECT(280,148), "S7641C2");
    check_base_class_offset(lv, (S7641C6*)(S7641C16*)(S7641C10*), ABISELECT(256,136), "S7641C2");
    check_base_class_offset(lv, (S7641C11*)(S7641C16*)(S7641C10*), ABISELECT(304,156), "S7641C2");
    check_base_class_offset(lv, (S7641C16*)(S7641C10*), ABISELECT(256,136), "S7641C2");
    check_base_class_offset(lv, (S7641C10*), 0, "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*), ABISELECT(552,304), "S7641C2");
    /*is_ambiguous_... S7641C2::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*), ABISELECT(552,304), "S7641C2");
    check_field_offset(lv, s7641c2f0, ABISELECT(376,204), "S7641C2.s7641c2f0");
    test_class_info(&lv, &cd_S7641C2);
    dp->~S7641C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C2(Test_S7641C2, "S7641C2", ABISELECT(560,308));

#else // __cplusplus

extern void _ZN7S7641C2C1Ev();
extern void _ZN7S7641C2D1Ev();
Name_Map name_map_S7641C2[] = {
  NSPAIR(_ZN7S7641C2C1Ev),
  NSPAIR(_ZN7S7641C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C4;
extern VTBL_ENTRY _ZTI7S7641C4[];
extern  VTBL_ENTRY _ZTV7S7641C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C4[];
extern Class_Descriptor cd_S7641C9;
extern VTBL_ENTRY _ZTI7S7641C9[];
extern  VTBL_ENTRY _ZTV7S7641C9[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C15;
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C14;
extern VTBL_ENTRY _ZTI8S7641C14[];
extern  VTBL_ENTRY _ZTV8S7641C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C14[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C13;
extern VTBL_ENTRY _ZTI8S7641C13[];
extern  VTBL_ENTRY _ZTV8S7641C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C13[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C16;
extern VTBL_ENTRY _ZTI8S7641C16[];
extern  VTBL_ENTRY _ZTV8S7641C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C16[];
extern Class_Descriptor cd_S7641C10;
extern VTBL_ENTRY _ZTI8S7641C10[];
extern  VTBL_ENTRY _ZTV8S7641C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C10[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
static Base_Class bases_S7641C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C7,    ABISELECT(400,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    ABISELECT(424,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(424,232), //bcp->offset
    209, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(400,220), //bcp->offset
    179, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7641C5,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7641C4,    ABISELECT(384,208), //bcp->offset
    149, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C9,    ABISELECT(440,240), //bcp->offset
    221, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7641C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    15, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(88,52), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(464,252), //bcp->offset
    227, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7641C3,    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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C8,    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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C5,    ABISELECT(120,64), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(128,68), //bcp->offset
    87, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(192,108), //bcp->offset
    90, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C15,    ABISELECT(112,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(232,128), //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
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7641C14,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(528,292), //bcp->offset
    231, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7641C3,    ABISELECT(240,132), //bcp->offset
    113, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S7641C13,    ABISELECT(64,40), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    30, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(280,148), //bcp->offset
    134, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(304,156), //bcp->offset
    146, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7641C16,    ABISELECT(256,136), //bcp->offset
    117, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7641C10,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C3,    ABISELECT(552,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
    11, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(552,304), //bcp->offset
    246, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7641C2[];
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C2D1Ev();
extern void _ZN7S7641C2D0Ev();
extern void _ZN7S7641C23v46Ev();
extern void _ZN7S7641C23v47Ev();
extern void _ZN7S7641C23v48Ev();
extern void _ZN7S7641C23v49Ev();
extern void _ZN7S7641C23v50Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn64_N7S7641C2D1Ev,_ZThn40_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7641C2D0Ev,_ZThn40_N7S7641C2D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn112_N7S7641C2D1Ev,_ZThn60_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7641C2D0Ev,_ZThn60_N7S7641C2D0Ev)();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn120_N7S7641C2D1Ev,_ZThn64_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7641C2D0Ev,_ZThn64_N7S7641C2D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn256_N7S7641C2D1Ev,_ZThn136_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7641C2D0Ev,_ZThn136_N7S7641C2D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C2D1Ev,_ZTv0_n28_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S7641C2D1Ev,_ZThn208_N7S7641C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C2D0Ev,_ZTv0_n28_N7S7641C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S7641C2D0Ev,_ZThn208_N7S7641C2D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C2D1Ev,_ZTv0_n40_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn400_N7S7641C2D1Ev,_ZThn220_N7S7641C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C2D0Ev,_ZTv0_n40_N7S7641C2D0Ev)();
extern void ABISELECT(_ZThn400_N7S7641C2D0Ev,_ZThn220_N7S7641C2D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C93v31Ev();
extern void _ZN7S7641C93v32Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C2[] = {
  ABISELECT(552,304),
  ABISELECT(440,240),
  ABISELECT(384,208),
  ABISELECT(528,292),
  ABISELECT(384,208),
  ABISELECT(464,252),
  ABISELECT(400,220),
  ABISELECT(384,208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  (VTBL_ENTRY)&_ZN7S7641C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v50Ev,
  ABISELECT(464,252),
  ABISELECT(320,168),
  ABISELECT(336,180),
  ABISELECT(400,212),
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7641C2D1Ev,_ZThn40_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7641C2D0Ev,_ZThn40_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(272,148),
  ABISELECT(288,160),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7641C2D1Ev,_ZThn60_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7641C2D0Ev,_ZThn60_N7S7641C2D0Ev),
  ABISELECT(264,144),
  ABISELECT(280,156),
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7641C2D1Ev,_ZThn64_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7641C2D0Ev,_ZThn64_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7641C2D1Ev,_ZThn136_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7641C2D0Ev,_ZThn136_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-208),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C2D1Ev,_ZTv0_n28_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C2D0Ev,_ZTv0_n28_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-400,-220),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C2D1Ev,_ZTv0_n40_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C2D0Ev,_ZTv0_n40_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-424,-232),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  0,
  0,
  ABISELECT(-440,-240),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7641C93v32Ev,
  0,
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-552,-304),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7641C2[];
extern void _ZN8S7641C113v33Ev();
extern void _ZN8S7641C10D1Ev();
extern void _ZN8S7641C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C10__7S7641C2[] = {
  ABISELECT(528,292),
  ABISELECT(384,208),
  ABISELECT(464,252),
  ABISELECT(400,220),
  ABISELECT(384,208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  (VTBL_ENTRY)&_ZN8S7641C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C10D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C13D1Ev();
extern void _ZN8S7641C13D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(464,252),
  ABISELECT(320,168),
  ABISELECT(336,180),
  ABISELECT(400,212),
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(320,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C14D1Ev();
extern void _ZN8S7641C14D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(336,180),
  ABISELECT(400,212),
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(320,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(320,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(320,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  0,
  0,
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  0,
  0,
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(272,148),
  ABISELECT(288,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  ABISELECT(264,144),
  ABISELECT(280,156),
  ABISELECT(264,144),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn280_N7S7641C5D1Ev,_ZThn156_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn280_N7S7641C5D0Ev,_ZThn156_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-280,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  0,
  0,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[] = {
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C148S7641C138S7641C10__A2__7S7641C2[] = {
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(192,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C78S7641C158S7641C148S7641C138S7641C10__A2__7S7641C2[] = {
  0,
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(264,144),
  ABISELECT(280,156),
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn288_N8S7641C15D1Ev,_ZThn160_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn288_N8S7641C15D0Ev,_ZThn160_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__A1__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[] = {
  0,
  0,
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  0,
  0,
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  0,
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C15__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(272,148),
  ABISELECT(288,160),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C15__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(264,144),
  ABISELECT(280,156),
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn336_N8S7641C14D1Ev,_ZThn180_N8S7641C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev)();
extern void ABISELECT(_ZThn336_N8S7641C14D0Ev,_ZThn180_N8S7641C14D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A1__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-336,-180),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A2__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C15__A2__8S7641C148S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn336_N8S7641C13D1Ev,_ZThn180_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn336_N8S7641C13D0Ev,_ZThn180_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-336,-180),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn320_N8S7641C13D1Ev,_ZThn168_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn320_N8S7641C13D0Ev,_ZThn168_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C138S7641C10__7S7641C2[] = {
  0,
  0,
  ABISELECT(-320,-168),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__8S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C138S7641C10__7S7641C2[] = {
  0,
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C14__8S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(272,148),
  ABISELECT(288,160),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C14__8S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(264,144),
  ABISELECT(280,156),
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C138S7641C10__7S7641C2[] = {
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C138S7641C10__7S7641C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C16D1Ev();
extern void _ZN8S7641C16D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C168S7641C10__7S7641C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C168S7641C10__A2__7S7641C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C168S7641C10__A4__7S7641C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C168S7641C10__A4__7S7641C2[] = {
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C168S7641C10__A2__7S7641C2[] = {
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__8S7641C168S7641C10__7S7641C2[] = {
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn384_N8S7641C10D1Ev,_ZThn208_N8S7641C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev)();
extern void ABISELECT(_ZThn384_N8S7641C10D0Ev,_ZThn208_N8S7641C10D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C10__7S7641C2[] = {
  0,
  0,
  ABISELECT(-384,-208),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn64_N8S7641C10D1Ev,_ZThn40_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7641C10D0Ev,_ZThn40_N8S7641C10D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C13__8S7641C10__7S7641C2[] = {
  ABISELECT(464,252),
  ABISELECT(320,168),
  ABISELECT(336,180),
  ABISELECT(400,212),
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(320,168),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7641C10D1Ev,_ZThn40_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7641C10D0Ev,_ZThn40_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn400_N8S7641C10D1Ev,_ZThn220_N8S7641C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev)();
extern void ABISELECT(_ZThn400_N8S7641C10D0Ev,_ZThn220_N8S7641C10D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C10__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-400,-220),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__8S7641C10__7S7641C2[] = {
  ABISELECT(-424,-232),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__A1__8S7641C10__7S7641C2[] = {
  0,
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn112_N8S7641C10D1Ev,_ZThn60_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7641C10D0Ev,_ZThn60_N8S7641C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C148S7641C13__8S7641C10__7S7641C2[] = {
  ABISELECT(272,148),
  ABISELECT(288,160),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7641C10D1Ev,_ZThn60_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7641C10D0Ev,_ZThn60_N8S7641C10D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn120_N8S7641C10D1Ev,_ZThn64_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S7641C10D0Ev,_ZThn64_N8S7641C10D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C148S7641C13__8S7641C10__7S7641C2[] = {
  ABISELECT(264,144),
  ABISELECT(280,156),
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7641C10D1Ev,_ZThn64_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7641C10D0Ev,_ZThn64_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C10__7S7641C2[] = {
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C10__7S7641C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn256_N8S7641C10D1Ev,_ZThn136_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7641C10D0Ev,_ZThn136_N8S7641C10D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C16__8S7641C10__7S7641C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7641C10D1Ev,_ZThn136_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7641C10D0Ev,_ZThn136_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev)();
extern void _ZN7S7641C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev)();
extern void _ZN7S7641C4D0Ev() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C4__7S7641C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7641C4D1Ev,_ZThn12_N7S7641C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7641C4D0Ev,_ZThn12_N7S7641C4D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C4__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C4__7S7641C2[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__7S7641C2[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7641C5D1Ev,_ZThn12_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7641C5D0Ev,_ZThn12_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5__7S7641C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C5__7S7641C2[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__7S7641C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C2[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C6__7S7641C2[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__7S7641C2[] = {
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C7__A3__7S7641C2[] = {
  0,
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C2[] = {
  {&(_ZTV7S7641C2[10]),  10,268},
  {&(_tg__ZTV8S7641C10__7S7641C2[7]),  7,10},
  {&(_tg__ZTV8S7641C138S7641C10__7S7641C2[9]),  9,23},
  {&(_tg__ZTV8S7641C148S7641C138S7641C10__7S7641C2[7]),  7,18},
  {&(_tg__ZTV7S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C148S7641C138S7641C10__A1__7S7641C2[4]),  4,6},
  {&(_tg__ZTV8S7641C158S7641C148S7641C138S7641C10__7S7641C2[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C3__7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C148S7641C138S7641C10__A2__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C78S7641C158S7641C148S7641C138S7641C10__A2__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C5__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C3__A1__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C158S7641C148S7641C138S7641C10__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C3__8S7641C148S7641C138S7641C10__7S7641C2[4]),  4,6},
  {&(_tg__ZTV8S7641C11__8S7641C148S7641C138S7641C10__7S7641C2[3]),  3,4},
  {&(_tg__ZTV8S7641C15__8S7641C148S7641C138S7641C10__7S7641C2[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C15__8S7641C148S7641C138S7641C10__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C6__A1__8S7641C148S7641C138S7641C10__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A2__8S7641C148S7641C138S7641C10__7S7641C2[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C15__A2__8S7641C148S7641C138S7641C10__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C6__8S7641C138S7641C10__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C5__A1__8S7641C138S7641C10__7S7641C2[9]),  9,15},
  {&(_tg__ZTV7S7641C87S7641C6__8S7641C138S7641C10__7S7641C2[2]),  2,12},
  {&(_tg__ZTV8S7641C11__8S7641C138S7641C10__7S7641C2[3]),  3,4},
  {&(_tg__ZTV8S7641C158S7641C14__8S7641C138S7641C10__7S7641C2[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C14__8S7641C138S7641C10__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C138S7641C10__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C5__A1__8S7641C138S7641C10__7S7641C2[9]),  9,15},
  {&(_tg__ZTV7S7641C7__A3__8S7641C138S7641C10__7S7641C2[9]),  9,15},
  {&(_tg__ZTV8S7641C168S7641C10__7S7641C2[5]),  5,17},
  {&(_tg__ZTV7S7641C68S7641C168S7641C10__A2__7S7641C2[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C168S7641C10__A4__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C168S7641C10__A4__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C168S7641C10__A2__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C3__8S7641C168S7641C10__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C5__A1__8S7641C10__7S7641C2[9]),  9,15},
  {&(_tg__ZTV8S7641C13__8S7641C10__7S7641C2[9]),  9,23},
  {&(_tg__ZTV7S7641C6__8S7641C10__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__8S7641C10__7S7641C2[2]),  2,12},
  {&(_tg__ZTV8S7641C11__A1__8S7641C10__7S7641C2[3]),  3,4},
  {&(_tg__ZTV8S7641C158S7641C148S7641C13__8S7641C10__7S7641C2[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C148S7641C13__8S7641C10__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C10__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C5__A1__8S7641C10__7S7641C2[9]),  9,15},
  {&(_tg__ZTV7S7641C7__A3__8S7641C10__7S7641C2[9]),  9,15},
  {&(_tg__ZTV8S7641C16__8S7641C10__7S7641C2[5]),  5,17},
  {&(_ZTV7S7641C2[166]),  166,268},
  {&(_ZTV7S7641C2[166]),  166,268},
  {&(_ZTV7S7641C2[166]),  166,268},
  {&(_ZTV7S7641C2[199]),  199,268},
  {&(_ZTV7S7641C2[211]),  211,268},
  {&(_ZTV7S7641C2[225]),  225,268},
  {&(_ZTV7S7641C2[27]),  27,268},
  {&(_ZTV7S7641C2[230]),  230,268},
  {&(_ZTV7S7641C2[57]),  57,268},
  {&(_ZTV7S7641C2[81]),  81,268},
  {&(_ZTV7S7641C2[95]),  95,268},
  {&(_ZTV7S7641C2[240]),  240,268},
  {&(_ZTV7S7641C2[122]),  122,268},
  {&(_ZTV7S7641C2[258]),  258,268},
  {&(_tg__ZTV7S7641C4__7S7641C2[10]),  10,23},
  {&(_tg__ZTV7S7641C4__7S7641C2[10]),  10,23},
  {&(_tg__ZTV7S7641C6__7S7641C4__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C4__7S7641C2[10]),  10,23},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C4__7S7641C2[2]),  2,12},
  {&(_tg__ZTV7S7641C5__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C5__7S7641C2[20]),  20,30},
  {&(_tg__ZTV7S7641C5__7S7641C2[6]),  6,12},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C5__7S7641C2[2]),  2,12},
  {&(_tg__ZTV7S7641C6__7S7641C2[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C6__7S7641C2[4]),  4,6},
  {&(_tg__ZTV7S7641C7__A3__7S7641C2[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C7__A3__7S7641C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7641C2[];
extern  VTBL_ENTRY _ZTV7S7641C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C2[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C4D0Ev,_ZThn12_N7S7641C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C4D1Ev,_ZThn12_N7S7641C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7641C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7641C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7641C10D0Ev,_ZThn220_N8S7641C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7641C10D1Ev,_ZThn220_N8S7641C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7641C10D0Ev,_ZThn208_N8S7641C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7641C10D1Ev,_ZThn208_N8S7641C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7641C13D0Ev,_ZThn168_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7641C13D1Ev,_ZThn168_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7641C13D0Ev,_ZThn180_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7641C13D1Ev,_ZThn180_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7641C14D0Ev,_ZThn180_N8S7641C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7641C14D1Ev,_ZThn180_N8S7641C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7641C15D0Ev,_ZThn160_N8S7641C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7641C15D1Ev,_ZThn160_N8S7641C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C5D0Ev,_ZThn12_N7S7641C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7641C5D0Ev,_ZThn156_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C5D1Ev,_ZThn12_N7S7641C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7641C5D1Ev,_ZThn156_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C2D0Ev,_ZTv0_n40_N7S7641C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7641C2D0Ev,_ZThn220_N7S7641C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C2D1Ev,_ZTv0_n40_N7S7641C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7641C2D1Ev,_ZThn220_N7S7641C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C2D0Ev,_ZTv0_n28_N7S7641C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7641C2D0Ev,_ZThn208_N7S7641C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C2D1Ev,_ZTv0_n28_N7S7641C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7641C2D1Ev,_ZThn208_N7S7641C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C2 = {  "S7641C2", // class name
  bases_S7641C2, 35,
  &(vtc_S7641C2[0]), // expected_vtbl_contents
  &(vtt_S7641C2[0]), // expected_vtt_contents
  ABISELECT(560,308), // object size
  NSPAIRA(_ZTI7S7641C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7641C2),268, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7641C2),82, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7641C1  : S7641C2 , S7641C4 , S7641C14 {
  virtual void  v1(); // _ZN7S7641C12v1Ev
  virtual void  v2(); // _ZN7S7641C12v2Ev
  virtual void  v3(); // _ZN7S7641C12v3Ev
  virtual void  v4(); // _ZN7S7641C12v4Ev
  virtual void  v5(); // _ZN7S7641C12v5Ev
  ~S7641C1(); // tgen
  S7641C1(); // tgen
};
//SIG(1 S7641C1) C1{ BC2{ VBC3{ v6 v7} VBC4{ VBC5{ VBC6{ VBC3 BC7{ VBC3 v8 v9 v10 v11 Fp Fc} BC8{ BC3 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC3} vd v22 v23} vd v24 v25 v26 v27 v28 v29 v30 FL:40} VBC9{ v31 v32 FL} BC10{ BC11{ v33 FU12{ m FD[3]}} VBC3 BC13{ VBC6 BC14{ VBC3 BC6 VBC11 BC15{ BC8 BC5 BC11 BC7 v34 v35 v36 v37 v38 v39 Fp Fl} BC8 vd v40} VBC5 VBC7 BC3 vd v41 v42 v43} BC16{ BC6 BC11 v44 v45} vd FL} VBC8 v46 v47 v48 v49 v50 Fl} BC4 BC14 v1 v2 v3 v4 v5}


void  S7641C1 ::v1(){vfunc_called(this, "_ZN7S7641C12v1Ev");}
void  S7641C1 ::v2(){vfunc_called(this, "_ZN7S7641C12v2Ev");}
void  S7641C1 ::v3(){vfunc_called(this, "_ZN7S7641C12v3Ev");}
void  S7641C1 ::v4(){vfunc_called(this, "_ZN7S7641C12v4Ev");}
void  S7641C1 ::v5(){vfunc_called(this, "_ZN7S7641C12v5Ev");}
S7641C1 ::~S7641C1(){ note_dtor("S7641C1", this);} // tgen
S7641C1 ::S7641C1(){ note_ctor("S7641C1", this);} // tgen

static void Test_S7641C1()
{
  extern Class_Descriptor cd_S7641C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,104)];
    init_test(&cd_S7641C1, buf);
    S7641C1 *dp, &lv = *(dp=new (buf) S7641C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,412), "sizeof(S7641C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7641C1)");
    /*is_ambiguous_... S7641C2::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C10::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C6::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C14*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C6*)(S7641C14*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C6*)(S7641C14*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C7*)(S7641C15*)(S7641C14*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*), ABISELECT(592,324), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*), ABISELECT(616,336), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*), ABISELECT(616,336), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C5*), ABISELECT(592,324), "S7641C1");
    /*is_ambiguous_... S7641C13::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(592,324), "S7641C1");
    check_base_class_offset(lv, (S7641C6*)(S7641C5*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(592,324), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C5*)(S7641C15*)(S7641C14*), ABISELECT(592,324), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C4 */ AMB_check_base_class_offset(lv, (S7641C5*)(S7641C4*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C13::S7641C5 */ AMB_check_base_class_offset(lv, (S7641C5*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C4 */ AMB_check_base_class_offset(lv, (S7641C5*)(S7641C4*), ABISELECT(576,312), "S7641C1");
    check_base_class_offset(lv, (S7641C4*)(S7641C2*), ABISELECT(576,312), "S7641C1");
    check_base_class_offset(lv, (S7641C9*)(S7641C2*), ABISELECT(632,344), "S7641C1");
    /*is_ambiguous_... S7641C10::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C10*)(S7641C2*), 0, "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(64,40), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(88,52), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(88,52), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C6 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(64,40), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C11 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(656,356), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C14*), ABISELECT(656,356), "S7641C1");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(112,60), "S7641C1");
    /*is_ambiguous_... S7641C15::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(112,60), "S7641C1");
    check_base_class_offset(lv, (S7641C5*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(120,64), "S7641C1");
    check_base_class_offset(lv, (S7641C11*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(128,68), "S7641C1");
    /*is_ambiguous_... S7641C15::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(192,108), "S7641C1");
    check_base_class_offset(lv, (S7641C15*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(112,60), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(232,128), "S7641C1");
    /*is_ambiguous_... S7641C14::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(232,128), "S7641C1");
    check_base_class_offset(lv, (S7641C14*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(64,40), "S7641C1");
    /*is_ambiguous_... S7641C13::S7641C7 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(720,396), "S7641C1");
    /*is_ambiguous_... S7641C13::S7641C3 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(240,132), "S7641C1");
    check_base_class_offset(lv, (S7641C13*)(S7641C10*)(S7641C2*), ABISELECT(64,40), "S7641C1");
    check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(256,136), "S7641C1");
    check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(280,148), "S7641C1");
    check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(280,148), "S7641C1");
    check_base_class_offset(lv, (S7641C6*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(256,136), "S7641C1");
    check_base_class_offset(lv, (S7641C11*)(S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(304,156), "S7641C1");
    check_base_class_offset(lv, (S7641C16*)(S7641C10*)(S7641C2*), ABISELECT(256,136), "S7641C1");
    check_base_class_offset(lv, (S7641C10*)(S7641C2*), 0, "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*), ABISELECT(744,408), "S7641C1");
    /*is_ambiguous_... S7641C2::S7641C8 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C2*), ABISELECT(744,408), "S7641C1");
    check_base_class_offset(lv, (S7641C2*), 0, "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C4 */ AMB_check_base_class_offset(lv, (S7641C4*), ABISELECT(384,208), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C6*)(S7641C14*), ABISELECT(400,220), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C6*)(S7641C14*), ABISELECT(424,232), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C6*)(S7641C14*), ABISELECT(424,232), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C6*)(S7641C14*), ABISELECT(400,220), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C15*)(S7641C14*), ABISELECT(448,240), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C15*)(S7641C14*), ABISELECT(448,240), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C5*)(S7641C15*)(S7641C14*), ABISELECT(456,244), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C11*)(S7641C15*)(S7641C14*), ABISELECT(464,248), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C7*)(S7641C15*)(S7641C14*), ABISELECT(528,288), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C15*)(S7641C14*), ABISELECT(448,240), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C3*)(S7641C8*)(S7641C14*), ABISELECT(568,308), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C8*)(S7641C14*), ABISELECT(568,308), "S7641C1");
    /*is_ambiguous_... S7641C1::S7641C14 */ AMB_check_base_class_offset(lv, (S7641C14*), ABISELECT(400,220), "S7641C1");
    test_class_info(&lv, &cd_S7641C1);
    dp->~S7641C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7641C1(Test_S7641C1, "S7641C1", ABISELECT(752,412));

#else // __cplusplus

extern void _ZN7S7641C1C1Ev();
extern void _ZN7S7641C1D1Ev();
Name_Map name_map_S7641C1[] = {
  NSPAIR(_ZN7S7641C1C1Ev),
  NSPAIR(_ZN7S7641C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C4;
extern VTBL_ENTRY _ZTI7S7641C4[];
extern  VTBL_ENTRY _ZTV7S7641C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C4[];
extern Class_Descriptor cd_S7641C9;
extern VTBL_ENTRY _ZTI7S7641C9[];
extern  VTBL_ENTRY _ZTV7S7641C9[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C15;
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C14;
extern VTBL_ENTRY _ZTI8S7641C14[];
extern  VTBL_ENTRY _ZTV8S7641C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C14[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C13;
extern VTBL_ENTRY _ZTI8S7641C13[];
extern  VTBL_ENTRY _ZTV8S7641C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C13[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C16;
extern VTBL_ENTRY _ZTI8S7641C16[];
extern  VTBL_ENTRY _ZTV8S7641C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C16[];
extern Class_Descriptor cd_S7641C10;
extern VTBL_ENTRY _ZTI8S7641C10[];
extern  VTBL_ENTRY _ZTV8S7641C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C10[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C2;
extern VTBL_ENTRY _ZTI7S7641C2[];
extern  VTBL_ENTRY _ZTV7S7641C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C2[];
extern Class_Descriptor cd_S7641C4;
extern VTBL_ENTRY _ZTI7S7641C4[];
extern  VTBL_ENTRY _ZTV7S7641C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C4[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C6;
extern VTBL_ENTRY _ZTI7S7641C6[];
extern  VTBL_ENTRY _ZTV7S7641C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C6[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C5;
extern VTBL_ENTRY _ZTI7S7641C5[];
extern  VTBL_ENTRY _ZTV7S7641C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C5[];
extern Class_Descriptor cd_S7641C11;
extern VTBL_ENTRY _ZTI8S7641C11[];
extern  VTBL_ENTRY _ZTV8S7641C11[];
extern Class_Descriptor cd_S7641C7;
extern VTBL_ENTRY _ZTI7S7641C7[];
extern  VTBL_ENTRY _ZTV7S7641C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C7[];
extern Class_Descriptor cd_S7641C15;
extern VTBL_ENTRY _ZTI8S7641C15[];
extern  VTBL_ENTRY _ZTV8S7641C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C15[];
extern Class_Descriptor cd_S7641C3;
extern VTBL_ENTRY _ZTI7S7641C3[];
extern  VTBL_ENTRY _ZTV7S7641C3[];
extern Class_Descriptor cd_S7641C8;
extern VTBL_ENTRY _ZTI7S7641C8[];
extern  VTBL_ENTRY _ZTV7S7641C8[];
extern Class_Descriptor cd_S7641C14;
extern VTBL_ENTRY _ZTI8S7641C14[];
extern  VTBL_ENTRY _ZTV8S7641C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7641C14[];
static Base_Class bases_S7641C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7641C3,    ABISELECT(576,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7641C7,    ABISELECT(592,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C3,    ABISELECT(616,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(616,336), //bcp->offset
    327, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(592,324), //bcp->offset
    297, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7641C5,    ABISELECT(576,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7641C4,    ABISELECT(576,312), //bcp->offset
    267, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7641C9,    ABISELECT(632,344), //bcp->offset
    339, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7641C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    15, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(88,52), //bcp->offset
    46, //bcp->virtual_function_table_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_S7641C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(656,356), //bcp->offset
    345, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7641C3,    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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7641C8,    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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C5,    ABISELECT(120,64), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(128,68), //bcp->offset
    92, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(192,108), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7641C15,    ABISELECT(112,60), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(232,128), //bcp->offset
    106, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S7641C14,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(720,396), //bcp->offset
    349, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7641C3,    ABISELECT(240,132), //bcp->offset
    118, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S7641C13,    ABISELECT(64,40), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    30, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(280,148), //bcp->offset
    139, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(304,156), //bcp->offset
    151, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7641C16,    ABISELECT(256,136), //bcp->offset
    122, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7641C10,    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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7641C3,    ABISELECT(744,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(744,408), //bcp->offset
    364, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7641C2,    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
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C4,    ABISELECT(384,208), //bcp->offset
    154, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7641C7,    ABISELECT(400,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7641C3,    ABISELECT(424,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
    39, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(424,232), //bcp->offset
    195, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7641C6,    ABISELECT(400,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7641C3,    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
    42, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7641C8,    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
    43, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7641C5,    ABISELECT(456,244), //bcp->offset
    229, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7641C11,    ABISELECT(464,248), //bcp->offset
    241, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7641C7,    ABISELECT(528,288), //bcp->offset
    244, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7641C15,    ABISELECT(448,240), //bcp->offset
    207, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7641C3,    ABISELECT(568,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
    48, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7641C8,    ABISELECT(568,308), //bcp->offset
    255, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7641C14,    ABISELECT(400,220), //bcp->offset
    177, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7641C1[];
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C1D1Ev();
extern void _ZN7S7641C1D0Ev();
extern void _ZN7S7641C23v46Ev();
extern void _ZN7S7641C23v47Ev();
extern void _ZN7S7641C23v48Ev();
extern void _ZN7S7641C23v49Ev();
extern void _ZN7S7641C23v50Ev();
extern void _ZN7S7641C12v1Ev();
extern void _ZN7S7641C12v2Ev();
extern void _ZN7S7641C12v3Ev();
extern void _ZN7S7641C12v4Ev();
extern void _ZN7S7641C12v5Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn64_N7S7641C1D1Ev,_ZThn40_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7641C1D0Ev,_ZThn40_N7S7641C1D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn112_N7S7641C1D1Ev,_ZThn60_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7641C1D0Ev,_ZThn60_N7S7641C1D0Ev)();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn120_N7S7641C1D1Ev,_ZThn64_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7641C1D0Ev,_ZThn64_N7S7641C1D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn256_N7S7641C1D1Ev,_ZThn136_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7641C1D0Ev,_ZThn136_N7S7641C1D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C1D1Ev,_ZTv0_n28_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S7641C1D1Ev,_ZThn208_N7S7641C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C1D0Ev,_ZTv0_n28_N7S7641C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S7641C1D0Ev,_ZThn208_N7S7641C1D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn400_N7S7641C1D1Ev,_ZThn220_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn400_N7S7641C1D0Ev,_ZThn220_N7S7641C1D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn448_N7S7641C1D1Ev,_ZThn240_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S7641C1D0Ev,_ZThn240_N7S7641C1D0Ev)();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn456_N7S7641C1D1Ev,_ZThn244_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7641C1D0Ev,_ZThn244_N7S7641C1D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C1D1Ev,_ZTv0_n28_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn576_N7S7641C1D1Ev,_ZThn312_N7S7641C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C1D0Ev,_ZTv0_n28_N7S7641C1D0Ev)();
extern void ABISELECT(_ZThn576_N7S7641C1D0Ev,_ZThn312_N7S7641C1D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C1D1Ev,_ZTv0_n40_N7S7641C1D1Ev)();
extern void ABISELECT(_ZThn592_N7S7641C1D1Ev,_ZThn324_N7S7641C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C1D0Ev,_ZTv0_n40_N7S7641C1D0Ev)();
extern void ABISELECT(_ZThn592_N7S7641C1D0Ev,_ZThn324_N7S7641C1D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN7S7641C93v31Ev();
extern void _ZN7S7641C93v32Ev();
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY vtc_S7641C1[] = {
  ABISELECT(744,408),
  ABISELECT(632,344),
  ABISELECT(576,312),
  ABISELECT(720,396),
  ABISELECT(576,312),
  ABISELECT(656,356),
  ABISELECT(592,324),
  ABISELECT(576,312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  (VTBL_ENTRY)&_ZN7S7641C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v50Ev,
  (VTBL_ENTRY)&_ZN7S7641C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7641C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7641C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7641C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7641C12v5Ev,
  ABISELECT(656,356),
  ABISELECT(512,272),
  ABISELECT(528,284),
  ABISELECT(592,316),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7641C1D1Ev,_ZThn40_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7641C1D0Ev,_ZThn40_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(464,252),
  ABISELECT(480,264),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7641C1D1Ev,_ZThn60_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7641C1D0Ev,_ZThn60_N7S7641C1D0Ev),
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7641C1D1Ev,_ZThn64_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7641C1D0Ev,_ZThn64_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7641C1D1Ev,_ZThn136_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7641C1D0Ev,_ZThn136_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(-384,-208),
  ABISELECT(192,104),
  ABISELECT(208,116),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C1D1Ev,_ZTv0_n28_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C1D0Ev,_ZTv0_n28_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
  ABISELECT(192,104),
  ABISELECT(256,136),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N7S7641C1D1Ev,_ZThn220_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N7S7641C1D0Ev,_ZThn220_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  ABISELECT(-424,-232),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  ABISELECT(128,72),
  ABISELECT(144,84),
  ABISELECT(-448,-240),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn448_N7S7641C1D1Ev,_ZThn240_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn448_N7S7641C1D0Ev,_ZThn240_N7S7641C1D0Ev),
  ABISELECT(120,68),
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn456_N7S7641C1D1Ev,_ZThn244_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn456_N7S7641C1D0Ev,_ZThn244_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  ABISELECT(-464,-248),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-528,-288),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  ABISELECT(-568,-308),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-312),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-576,-312),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C1D1Ev,_ZTv0_n28_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C1D0Ev,_ZTv0_n28_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-592,-324),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-592,-324),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C1D1Ev,_ZTv0_n40_N7S7641C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C1D0Ev,_ZTv0_n40_N7S7641C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  ABISELECT(-616,-336),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  0,
  0,
  ABISELECT(-632,-344),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7641C93v32Ev,
  0,
  ABISELECT(-656,-356),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-744,-408),
  (VTBL_ENTRY)&(_ZTI7S7641C1[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern VTBL_ENTRY _ZTV7S7641C1[];
extern void _ZN8S7641C113v33Ev();
extern void _ZN7S7641C2D1Ev();
extern void _ZN7S7641C2D0Ev();
extern void _ZN7S7641C23v46Ev();
extern void _ZN7S7641C23v47Ev();
extern void _ZN7S7641C23v48Ev();
extern void _ZN7S7641C23v49Ev();
extern void _ZN7S7641C23v50Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C2__7S7641C1[] = {
  ABISELECT(744,408),
  ABISELECT(632,344),
  ABISELECT(576,312),
  ABISELECT(720,396),
  ABISELECT(576,312),
  ABISELECT(656,356),
  ABISELECT(592,324),
  ABISELECT(576,312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  (VTBL_ENTRY)&_ZN7S7641C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7641C23v50Ev,
};
extern void _ZN8S7641C113v33Ev();
extern void _ZN8S7641C10D1Ev();
extern void _ZN8S7641C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(720,396),
  ABISELECT(576,312),
  ABISELECT(656,356),
  ABISELECT(592,324),
  ABISELECT(576,312),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
  (VTBL_ENTRY)&_ZN8S7641C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C10D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C13D1Ev();
extern void _ZN8S7641C13D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(656,356),
  ABISELECT(512,272),
  ABISELECT(528,284),
  ABISELECT(592,316),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C14D1Ev();
extern void _ZN8S7641C14D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(528,284),
  ABISELECT(592,316),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  0,
  0,
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  0,
  0,
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(464,252),
  ABISELECT(480,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn472_N7S7641C5D1Ev,_ZThn260_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn472_N7S7641C5D0Ev,_ZThn260_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-472,-260),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-472,-260),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  0,
  0,
  ABISELECT(-456,-248),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[] = {
  ABISELECT(-496,-272),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C148S7641C138S7641C107S7641C2__A2__7S7641C1[] = {
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C78S7641C158S7641C148S7641C138S7641C107S7641C2__A2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-384,-204),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn480_N8S7641C15D1Ev,_ZThn264_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn480_N8S7641C15D0Ev,_ZThn264_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-480,-264),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__A1__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(-504,-276),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  0,
  ABISELECT(-592,-316),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C15__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(464,252),
  ABISELECT(480,264),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C15__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn528_N8S7641C14D1Ev,_ZThn284_N8S7641C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev)();
extern void ABISELECT(_ZThn528_N8S7641C14D0Ev,_ZThn284_N8S7641C14D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A1__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-528,-284),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-528,-284),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A2__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(-552,-296),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C15__A2__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn528_N8S7641C13D1Ev,_ZThn284_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn528_N8S7641C13D0Ev,_ZThn284_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-528,-284),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-528,-284),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn512_N8S7641C13D1Ev,_ZThn272_N8S7641C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev)();
extern void ABISELECT(_ZThn512_N8S7641C13D0Ev,_ZThn272_N8S7641C13D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-512,-272),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(-552,-296),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  0,
  ABISELECT(-592,-316),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C14__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(464,252),
  ABISELECT(480,264),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D1Ev,_ZThn20_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C13D0Ev,_ZThn20_N8S7641C13D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C14__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D1Ev,_ZThn24_N8S7641C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C13D0Ev,_ZThn24_N8S7641C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C138S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-656,-356),
  (VTBL_ENTRY)&(_ZTI8S7641C13[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C16D1Ev();
extern void _ZN8S7641C16D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C168S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C16D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C168S7641C107S7641C2__A2__7S7641C1[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C168S7641C107S7641C2__A4__7S7641C1[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C168S7641C107S7641C2__A4__7S7641C1[] = {
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C168S7641C107S7641C2__A2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__8S7641C168S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S7641C16[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn576_N8S7641C10D1Ev,_ZThn312_N8S7641C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev)();
extern void ABISELECT(_ZThn576_N8S7641C10D0Ev,_ZThn312_N8S7641C10D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__A1__8S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-576,-312),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-576,-312),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn64_N8S7641C10D1Ev,_ZThn40_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7641C10D0Ev,_ZThn40_N8S7641C10D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C13__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(656,356),
  ABISELECT(512,272),
  ABISELECT(528,284),
  ABISELECT(592,316),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7641C10D1Ev,_ZThn40_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S7641C10D0Ev,_ZThn40_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn592_N8S7641C10D1Ev,_ZThn324_N8S7641C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev)();
extern void ABISELECT(_ZThn592_N8S7641C10D0Ev,_ZThn324_N8S7641C10D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-592,-324),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-592,-324),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(-616,-336),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__A1__8S7641C107S7641C2__7S7641C1[] = {
  0,
  ABISELECT(-656,-356),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn112_N8S7641C10D1Ev,_ZThn60_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7641C10D0Ev,_ZThn60_N8S7641C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C148S7641C13__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(464,252),
  ABISELECT(480,264),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7641C10D1Ev,_ZThn60_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7641C10D0Ev,_ZThn60_N8S7641C10D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn120_N8S7641C10D1Ev,_ZThn64_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn120_N8S7641C10D0Ev,_ZThn64_N8S7641C10D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C148S7641C13__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7641C10D1Ev,_ZThn64_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S7641C10D0Ev,_ZThn64_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__8S7641C107S7641C2__7S7641C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn256_N8S7641C10D1Ev,_ZThn136_N8S7641C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7641C10D0Ev,_ZThn136_N8S7641C10D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C16__8S7641C107S7641C2__7S7641C1[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S7641C10[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7641C10D1Ev,_ZThn136_N8S7641C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S7641C10D0Ev,_ZThn136_N8S7641C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C2D1Ev,_ZTv0_n28_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn576_N7S7641C2D1Ev,_ZThn312_N7S7641C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C2D0Ev,_ZTv0_n28_N7S7641C2D0Ev)();
extern void ABISELECT(_ZThn576_N7S7641C2D0Ev,_ZThn312_N7S7641C2D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C4__7S7641C2__7S7641C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-312),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-576,-312),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C2D1Ev,_ZTv0_n28_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C2D0Ev,_ZTv0_n28_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C2D1Ev,_ZTv0_n40_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn592_N7S7641C2D1Ev,_ZThn324_N7S7641C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C2D0Ev,_ZTv0_n40_N7S7641C2D0Ev)();
extern void ABISELECT(_ZThn592_N7S7641C2D0Ev,_ZThn324_N7S7641C2D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C2__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-592,-324),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-592,-324),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C2D1Ev,_ZTv0_n40_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C2D0Ev,_ZTv0_n40_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C2__7S7641C1[] = {
  ABISELECT(-616,-336),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C93v31Ev();
extern void _ZN7S7641C93v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C9__7S7641C2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-632,-344),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7641C93v32Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn64_N7S7641C2D1Ev,_ZThn40_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7641C2D0Ev,_ZThn40_N7S7641C2D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
extern void _ZN8S7641C133v41Ev();
extern void _ZN8S7641C133v42Ev();
extern void _ZN8S7641C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C138S7641C10__7S7641C2__7S7641C1[] = {
  ABISELECT(656,356),
  ABISELECT(512,272),
  ABISELECT(528,284),
  ABISELECT(592,316),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(512,272),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7641C2D1Ev,_ZThn40_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7641C2D0Ev,_ZThn40_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v41Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v42Ev,
  (VTBL_ENTRY)&_ZN8S7641C133v43Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__A1__7S7641C2__7S7641C1[] = {
  0,
  ABISELECT(-656,-356),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn112_N7S7641C2D1Ev,_ZThn60_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7641C2D0Ev,_ZThn60_N7S7641C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C148S7641C138S7641C10__7S7641C2__7S7641C1[] = {
  ABISELECT(464,252),
  ABISELECT(480,264),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7641C2D1Ev,_ZThn60_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7641C2D0Ev,_ZThn60_N7S7641C2D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn120_N7S7641C2D1Ev,_ZThn64_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7641C2D0Ev,_ZThn64_N7S7641C2D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2__7S7641C1[] = {
  ABISELECT(456,248),
  ABISELECT(472,260),
  ABISELECT(456,248),
  ABISELECT(456,248),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7641C2D1Ev,_ZThn64_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7641C2D0Ev,_ZThn64_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C148S7641C138S7641C10__A2__7S7641C2__7S7641C1[] = {
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(384,204),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__7S7641C2__7S7641C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZThn256_N7S7641C2D1Ev,_ZThn136_N7S7641C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7641C2D0Ev,_ZThn136_N7S7641C2D0Ev)();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C163v44Ev();
extern void _ZN8S7641C163v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C168S7641C10__7S7641C2__7S7641C1[] = {
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(320,176),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7641C2D1Ev,_ZThn136_N7S7641C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7641C2D0Ev,_ZThn136_N7S7641C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v44Ev,
  (VTBL_ENTRY)&_ZN8S7641C163v45Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C8__A5__7S7641C2__7S7641C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-744,-408),
  (VTBL_ENTRY)&(_ZTI7S7641C2[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev)();
extern void _ZN7S7641C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev)();
extern void _ZN7S7641C4D0Ev() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C4__A__7S7641C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(192,104),
  0,
  ABISELECT(192,104),
  ABISELECT(208,116),
  ABISELECT(192,104),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev)();
extern void ABISELECT(_ZThn192_N7S7641C4D1Ev,_ZThn104_N7S7641C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev)();
extern void ABISELECT(_ZThn192_N7S7641C4D0Ev,_ZThn104_N7S7641C4D0Ev)() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__7S7641C4__A__7S7641C1[] = {
  0,
  0,
  ABISELECT(-192,-104),
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S7641C4D1Ev,_ZThn116_N7S7641C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S7641C4D0Ev,_ZThn116_N7S7641C4D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C4__A__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-208,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C4__A__7S7641C1[] = {
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN8S7641C14D1Ev();
extern void _ZN8S7641C14D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
extern void _ZN8S7641C143v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C14__A1__7S7641C1[] = {
  ABISELECT(192,104),
  ABISELECT(256,136),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(176,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
  (VTBL_ENTRY)&_ZN8S7641C143v40Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C68S7641C14__A3__7S7641C1[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(176,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C68S7641C14__A5__7S7641C1[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(176,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C68S7641C14__A5__7S7641C1[] = {
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C68S7641C14__A3__7S7641C1[] = {
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void _ZN8S7641C15D1Ev();
extern void _ZN8S7641C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C158S7641C14__A1__7S7641C1[] = {
  ABISELECT(128,72),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7641C15D0Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C158S7641C14__A2__7S7641C1[] = {
  ABISELECT(120,68),
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S7641C5D1Ev,_ZThn80_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S7641C5D0Ev,_ZThn80_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C58S7641C158S7641C14__A2__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-136,-80),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C58S7641C158S7641C14__A2__7S7641C1[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C14__A2__7S7641C1[] = {
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C158S7641C14__A6__7S7641C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C78S7641C158S7641C14__A6__7S7641C1[] = {
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__8S7641C158S7641C14__A1__7S7641C1[] = {
  ABISELECT(120,68),
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D1Ev,_ZThn4_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7641C15D0Ev,_ZThn4_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S7641C15D1Ev,_ZThn84_N8S7641C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S7641C15D0Ev,_ZThn84_N8S7641C15D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__8S7641C158S7641C14__A1__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-144,-84),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__A1__8S7641C158S7641C14__A1__7S7641C1[] = {
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C14__A1__7S7641C1[] = {
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A1__8S7641C158S7641C14__A1__7S7641C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7641C15[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__8S7641C14__A1__7S7641C1[] = {
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN8S7641C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7641C11__8S7641C14__A1__7S7641C1[] = {
  0,
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN8S7641C113v33Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
extern void _ZN8S7641C153v34Ev();
extern void _ZN8S7641C153v35Ev();
extern void _ZN8S7641C153v36Ev();
extern void _ZN8S7641C153v37Ev();
extern void _ZN8S7641C153v38Ev();
extern void _ZN8S7641C153v39Ev();
extern void ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7641C15__8S7641C14__A1__7S7641C1[] = {
  ABISELECT(128,72),
  ABISELECT(144,84),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7641C153v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D1Ev,_ZThn20_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7641C14D0Ev,_ZThn20_N8S7641C14D0Ev),
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev)();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C58S7641C15__8S7641C14__A1__7S7641C1[] = {
  ABISELECT(120,68),
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D1Ev,_ZThn24_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7641C14D0Ev,_ZThn24_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev)();
extern void ABISELECT(_ZThn192_N8S7641C14D1Ev,_ZThn104_N8S7641C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev)();
extern void ABISELECT(_ZThn192_N8S7641C14D0Ev,_ZThn104_N8S7641C14D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__A1__8S7641C14__A1__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-104),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__A2__8S7641C14__A1__7S7641C1[] = {
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C78S7641C15__A2__8S7641C14__A1__7S7641C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7641C14[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev)();
extern void _ZN7S7641C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev)();
extern void _ZN7S7641C4D0Ev() __attribute__((weak));
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
extern void _ZN7S7641C43v24Ev();
extern void _ZN7S7641C43v25Ev();
extern void _ZN7S7641C43v26Ev();
extern void _ZN7S7641C43v27Ev();
extern void _ZN7S7641C43v28Ev();
extern void _ZN7S7641C43v29Ev();
extern void _ZN7S7641C43v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C4__7S7641C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7641C43v30Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7641C4D1Ev,_ZThn12_N7S7641C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7641C4D0Ev,_ZThn12_N7S7641C4D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C4__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C4__7S7641C1[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C4[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C5D1Ev();
extern void _ZN7S7641C5D0Ev();
extern void _ZN7S7641C53v22Ev();
extern void _ZN7S7641C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C5__7S7641C1[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7641C53v23Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7641C5D1Ev,_ZThn12_N7S7641C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7641C5D0Ev,_ZThn12_N7S7641C5D0Ev)() __attribute__((weak));
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C5__7S7641C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C83v12Ev();
extern void _ZN7S7641C83v13Ev();
extern void _ZN7S7641C83v14Ev();
extern void _ZN7S7641C83v15Ev();
extern void _ZN7S7641C83v16Ev();
extern void _ZN7S7641C83v17Ev();
extern void _ZN7S7641C83v18Ev();
extern void _ZN7S7641C83v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C87S7641C6__7S7641C5__7S7641C1[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7641C5[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v13Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v15Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v16Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v17Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7641C83v19Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
extern void _ZN7S7641C6D1Ev();
extern void _ZN7S7641C6D0Ev();
extern void _ZN7S7641C63v20Ev();
extern void _ZN7S7641C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C6__7S7641C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7641C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7641C63v21Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C77S7641C6__7S7641C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C1[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C6__7S7641C1[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7641C6[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
extern void _ZN7S7641C72v8Ev();
extern void _ZN7S7641C72v9Ev();
extern void _ZN7S7641C73v10Ev();
extern void _ZN7S7641C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C7__A3__7S7641C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v8Ev,
  (VTBL_ENTRY)&_ZN7S7641C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7641C73v11Ev,
};
extern void _ZN7S7641C32v6Ev();
extern void _ZN7S7641C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7641C3__7S7641C7__A3__7S7641C1[] = {
  0,
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI7S7641C7[0]),
  (VTBL_ENTRY)&_ZN7S7641C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7641C32v7Ev,
};
static  VTT_ENTRY vtt_S7641C1[] = {
  {&(_ZTV7S7641C1[10]),  10,386},
  {&(_tg__ZTV7S7641C2__7S7641C1[10]),  10,18},
  {&(_tg__ZTV8S7641C107S7641C2__7S7641C1[7]),  7,10},
  {&(_tg__ZTV8S7641C138S7641C107S7641C2__7S7641C1[9]),  9,23},
  {&(_tg__ZTV8S7641C148S7641C138S7641C107S7641C2__7S7641C1[7]),  7,18},
  {&(_tg__ZTV7S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[4]),  4,6},
  {&(_tg__ZTV8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C3__7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C148S7641C138S7641C107S7641C2__A1__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C148S7641C138S7641C107S7641C2__A2__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C78S7641C158S7641C148S7641C138S7641C107S7641C2__A2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C5__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C3__A1__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C158S7641C148S7641C138S7641C107S7641C2__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV8S7641C11__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[3]),  3,4},
  {&(_tg__ZTV8S7641C15__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C15__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__A1__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A2__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C15__A2__8S7641C148S7641C138S7641C107S7641C2__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C6__8S7641C138S7641C107S7641C2__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C5__A1__8S7641C138S7641C107S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV7S7641C87S7641C6__8S7641C138S7641C107S7641C2__7S7641C1[2]),  2,12},
  {&(_tg__ZTV8S7641C11__8S7641C138S7641C107S7641C2__7S7641C1[3]),  3,4},
  {&(_tg__ZTV8S7641C158S7641C14__8S7641C138S7641C107S7641C2__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C14__8S7641C138S7641C107S7641C2__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C14__A2__8S7641C138S7641C107S7641C2__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C5__A1__8S7641C138S7641C107S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV7S7641C7__A3__8S7641C138S7641C107S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV8S7641C168S7641C107S7641C2__7S7641C1[5]),  5,17},
  {&(_tg__ZTV7S7641C68S7641C168S7641C107S7641C2__A2__7S7641C1[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C168S7641C107S7641C2__A4__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C168S7641C107S7641C2__A4__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C168S7641C107S7641C2__A2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C3__8S7641C168S7641C107S7641C2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C5__A1__8S7641C107S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV8S7641C13__8S7641C107S7641C2__7S7641C1[9]),  9,23},
  {&(_tg__ZTV7S7641C6__8S7641C107S7641C2__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__8S7641C107S7641C2__7S7641C1[2]),  2,12},
  {&(_tg__ZTV8S7641C11__A1__8S7641C107S7641C2__7S7641C1[3]),  3,4},
  {&(_tg__ZTV8S7641C158S7641C148S7641C13__8S7641C107S7641C2__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C148S7641C13__8S7641C107S7641C2__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C148S7641C13__A2__8S7641C107S7641C2__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C5__A1__8S7641C107S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV7S7641C7__A3__8S7641C107S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV8S7641C16__8S7641C107S7641C2__7S7641C1[5]),  5,17},
  {&(_tg__ZTV7S7641C4__7S7641C2__7S7641C1[17]),  17,30},
  {&(_tg__ZTV7S7641C4__7S7641C2__7S7641C1[17]),  17,30},
  {&(_tg__ZTV7S7641C4__7S7641C2__7S7641C1[17]),  17,30},
  {&(_tg__ZTV7S7641C6__7S7641C2__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C2__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C9__7S7641C2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV8S7641C138S7641C10__7S7641C2__7S7641C1[9]),  9,23},
  {&(_tg__ZTV8S7641C11__A1__7S7641C2__7S7641C1[3]),  3,4},
  {&(_tg__ZTV8S7641C158S7641C148S7641C138S7641C10__7S7641C2__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C148S7641C138S7641C10__A1__7S7641C2__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C148S7641C138S7641C10__A2__7S7641C2__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C7__A3__7S7641C2__7S7641C1[9]),  9,15},
  {&(_tg__ZTV8S7641C168S7641C10__7S7641C2__7S7641C1[5]),  5,17},
  {&(_tg__ZTV7S7641C8__A5__7S7641C2__7S7641C1[12]),  12,22},
  {&(_tg__ZTV7S7641C4__A__7S7641C1[10]),  10,23},
  {&(_tg__ZTV7S7641C5__7S7641C4__A__7S7641C1[9]),  9,15},
  {&(_tg__ZTV7S7641C6__7S7641C4__A__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C5__7S7641C4__A__7S7641C1[9]),  9,15},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C4__A__7S7641C1[2]),  2,12},
  {&(_tg__ZTV8S7641C14__A1__7S7641C1[7]),  7,18},
  {&(_tg__ZTV7S7641C68S7641C14__A3__7S7641C1[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C68S7641C14__A5__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C68S7641C14__A5__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C68S7641C14__A3__7S7641C1[4]),  4,6},
  {&(_tg__ZTV8S7641C158S7641C14__A1__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C158S7641C14__A2__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C58S7641C158S7641C14__A2__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C3__7S7641C58S7641C158S7641C14__A2__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C58S7641C158S7641C14__A2__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C158S7641C14__A6__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C78S7641C158S7641C14__A6__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C5__8S7641C158S7641C14__A1__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__8S7641C158S7641C14__A1__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C3__A1__8S7641C158S7641C14__A1__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C87S7641C6__A1__8S7641C158S7641C14__A1__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C7__A1__8S7641C158S7641C14__A1__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__8S7641C14__A1__7S7641C1[4]),  4,6},
  {&(_tg__ZTV8S7641C11__8S7641C14__A1__7S7641C1[3]),  3,4},
  {&(_tg__ZTV8S7641C15__8S7641C14__A1__7S7641C1[4]),  4,22},
  {&(_tg__ZTV7S7641C58S7641C15__8S7641C14__A1__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__A1__8S7641C14__A1__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C87S7641C6__A2__8S7641C14__A1__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C78S7641C15__A2__8S7641C14__A1__7S7641C1[5]),  5,11},
  {&(_ZTV7S7641C1[284]),  284,386},
  {&(_ZTV7S7641C1[284]),  284,386},
  {&(_ZTV7S7641C1[284]),  284,386},
  {&(_ZTV7S7641C1[317]),  317,386},
  {&(_ZTV7S7641C1[329]),  329,386},
  {&(_ZTV7S7641C1[343]),  343,386},
  {&(_ZTV7S7641C1[32]),  32,386},
  {&(_ZTV7S7641C1[348]),  348,386},
  {&(_ZTV7S7641C1[62]),  62,386},
  {&(_ZTV7S7641C1[86]),  86,386},
  {&(_ZTV7S7641C1[100]),  100,386},
  {&(_ZTV7S7641C1[358]),  358,386},
  {&(_ZTV7S7641C1[127]),  127,386},
  {&(_ZTV7S7641C1[376]),  376,386},
  {&(_ZTV7S7641C1[164]),  164,386},
  {&(_ZTV7S7641C1[184]),  184,386},
  {&(_ZTV7S7641C1[211]),  211,386},
  {&(_ZTV7S7641C1[235]),  235,386},
  {&(_ZTV7S7641C1[249]),  249,386},
  {&(_tg__ZTV7S7641C4__7S7641C1[10]),  10,23},
  {&(_tg__ZTV7S7641C4__7S7641C1[10]),  10,23},
  {&(_tg__ZTV7S7641C6__7S7641C4__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C4__7S7641C1[10]),  10,23},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C4__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C5__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C6__7S7641C5__7S7641C1[20]),  20,30},
  {&(_tg__ZTV7S7641C5__7S7641C1[6]),  6,12},
  {&(_tg__ZTV7S7641C87S7641C6__7S7641C5__7S7641C1[2]),  2,12},
  {&(_tg__ZTV7S7641C6__7S7641C1[5]),  5,15},
  {&(_tg__ZTV7S7641C77S7641C6__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C77S7641C6__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C3__7S7641C6__7S7641C1[4]),  4,6},
  {&(_tg__ZTV7S7641C7__A3__7S7641C1[5]),  5,11},
  {&(_tg__ZTV7S7641C3__7S7641C7__A3__7S7641C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7641C1[];
extern  VTBL_ENTRY _ZTV7S7641C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7641C1[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C4D0Ev,_ZTv0_n40_N7S7641C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C4D0Ev,_ZThn12_N7S7641C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7641C4D0Ev,_ZThn116_N7S7641C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C4D1Ev,_ZTv0_n40_N7S7641C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C4D1Ev,_ZThn12_N7S7641C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7641C4D1Ev,_ZThn116_N7S7641C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C4D0Ev,_ZTv0_n28_N7S7641C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7641C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7641C4D0Ev,_ZThn104_N7S7641C4D0Ev),
  (VTBL_ENTRY)_ZN7S7641C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C4D1Ev,_ZTv0_n28_N7S7641C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7641C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7641C4D1Ev,_ZThn104_N7S7641C4D1Ev),
  (VTBL_ENTRY)_ZN7S7641C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C2D0Ev,_ZTv0_n40_N7S7641C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7641C2D0Ev,_ZThn324_N7S7641C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C2D1Ev,_ZTv0_n40_N7S7641C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7641C2D1Ev,_ZThn324_N7S7641C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C2D0Ev,_ZTv0_n28_N7S7641C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7641C2D0Ev,_ZThn312_N7S7641C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C2D1Ev,_ZTv0_n28_N7S7641C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7641C2D1Ev,_ZThn312_N7S7641C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C10D0Ev,_ZTv0_n40_N8S7641C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N8S7641C10D0Ev,_ZThn324_N8S7641C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C10D1Ev,_ZTv0_n40_N8S7641C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N8S7641C10D1Ev,_ZThn324_N8S7641C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C10D0Ev,_ZTv0_n28_N8S7641C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7641C10D0Ev,_ZThn312_N8S7641C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C10D1Ev,_ZTv0_n28_N8S7641C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7641C10D1Ev,_ZThn312_N8S7641C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D0Ev,_ZTv0_n28_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S7641C13D0Ev,_ZThn272_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7641C13D1Ev,_ZTv0_n28_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S7641C13D1Ev,_ZThn272_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D0Ev,_ZTv0_n40_N8S7641C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7641C13D0Ev,_ZThn284_N8S7641C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C13D1Ev,_ZTv0_n40_N8S7641C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7641C13D1Ev,_ZThn284_N8S7641C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D0Ev,_ZTv0_n40_N8S7641C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7641C14D0Ev,_ZThn104_N8S7641C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7641C14D0Ev,_ZThn284_N8S7641C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C14D1Ev,_ZTv0_n40_N8S7641C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7641C14D1Ev,_ZThn104_N8S7641C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S7641C14D1Ev,_ZThn284_N8S7641C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D0Ev,_ZTv0_n40_N8S7641C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7641C15D0Ev,_ZThn84_N8S7641C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7641C15D0Ev,_ZThn264_N8S7641C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7641C15D1Ev,_ZTv0_n40_N8S7641C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7641C15D1Ev,_ZThn84_N8S7641C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7641C15D1Ev,_ZThn264_N8S7641C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D0Ev,_ZTv0_n40_N7S7641C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C5D0Ev,_ZThn12_N7S7641C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7641C5D0Ev,_ZThn80_N7S7641C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S7641C5D0Ev,_ZThn260_N7S7641C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C5D1Ev,_ZTv0_n40_N7S7641C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7641C5D1Ev,_ZThn12_N7S7641C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7641C5D1Ev,_ZThn80_N7S7641C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S7641C5D1Ev,_ZThn260_N7S7641C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C1D0Ev,_ZTv0_n40_N7S7641C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7641C1D0Ev,_ZThn324_N7S7641C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7641C1D1Ev,_ZTv0_n40_N7S7641C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7641C1D1Ev,_ZThn324_N7S7641C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C1D0Ev,_ZTv0_n28_N7S7641C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7641C1D0Ev,_ZThn312_N7S7641C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7641C1D0Ev,_ZThn208_N7S7641C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7641C1D1Ev,_ZTv0_n28_N7S7641C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S7641C1D1Ev,_ZThn312_N7S7641C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7641C1D1Ev,_ZThn208_N7S7641C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7641C1 = {  "S7641C1", // class name
  bases_S7641C1, 50,
  &(vtc_S7641C1[0]), // expected_vtbl_contents
  &(vtt_S7641C1[0]), // expected_vtt_contents
  ABISELECT(752,412), // object size
  NSPAIRA(_ZTI7S7641C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7641C1),386, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7641C1),131, //virtual table table var
  50, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19490C3  : virtual S1538C28_nt {
  void *s19490c3f0[2];
  ~S19490C3(); // tgen
  S19490C3(); // tgen
};
//SIG(-1 S19490C3) C1{ VBC2{ m} Fp[2]}


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

static void Test_S19490C3()
{
  extern Class_Descriptor cd_S19490C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19490C3, buf);
    S19490C3 *dp, &lv = *(dp=new (buf) S19490C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19490C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C3)");
    check_base_class_offset(lv, (S1538C28_nt*), 0, "S19490C3");
    check_field_offset(lv, s19490c3f0, ABISELECT(8,4), "S19490C3.s19490c3f0");
    test_class_info(&lv, &cd_S19490C3);
    dp->~S19490C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C3(Test_S19490C3, "S19490C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19490C3C1Ev();
extern void _ZN8S19490C3D1Ev();
Name_Map name_map_S19490C3[] = {
  NSPAIR(_ZN8S19490C3C1Ev),
  NSPAIR(_ZN8S19490C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S19490C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19490C3[];
static  VTBL_ENTRY vtc_S19490C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
extern VTBL_ENTRY _ZTV8S19490C3[];
static  VTT_ENTRY vtt_S19490C3[] = {
  {&(_ZTV8S19490C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
Class_Descriptor cd_S19490C3 = {  "S19490C3", // class name
  bases_S19490C3, 1,
  &(vtc_S19490C3[0]), // expected_vtbl_contents
  &(vtt_S19490C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19490C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19490C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19490C3),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  S19490C2  : S19490C3 {
  ~S19490C2(); // tgen
  S19490C2(); // tgen
};
//SIG(-1 S19490C2) C1{ BC2{ VBC3{ m} Fp[2]}}


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

static void Test_S19490C2()
{
  extern Class_Descriptor cd_S19490C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19490C2, buf);
    S19490C2 *dp, &lv = *(dp=new (buf) S19490C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19490C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C2)");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), 0, "S19490C2");
    check_base_class_offset(lv, (S19490C3*), 0, "S19490C2");
    test_class_info(&lv, &cd_S19490C2);
    dp->~S19490C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C2(Test_S19490C2, "S19490C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19490C2C1Ev();
extern void _ZN8S19490C2D1Ev();
Name_Map name_map_S19490C2[] = {
  NSPAIR(_ZN8S19490C2C1Ev),
  NSPAIR(_ZN8S19490C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
static Base_Class bases_S19490C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C3,    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 _ZTI8S19490C2[];
static  VTBL_ENTRY vtc_S19490C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C2[0]),
};
extern VTBL_ENTRY _ZTV8S19490C2[];
static  VTBL_ENTRY _tg__ZTV8S19490C3__8S19490C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTT_ENTRY vtt_S19490C2[] = {
  {&(_ZTV8S19490C2[3]),  3,3},
  {&(_tg__ZTV8S19490C3__8S19490C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19490C2[];
extern  VTBL_ENTRY _ZTV8S19490C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C2[];
Class_Descriptor cd_S19490C2 = {  "S19490C2", // class name
  bases_S19490C2, 2,
  &(vtc_S19490C2[0]), // expected_vtbl_contents
  &(vtt_S19490C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19490C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19490C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19490C2),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  S19490C6_nt  {
  void  mf19490c6(); // _ZN11S19490C6_nt9mf19490c6Ev
};
//SIG(-1 S19490C6_nt) C1{ m}


void  S19490C6_nt ::mf19490c6(){}

//skip512 S19490C6_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19490C6_nt[];
VTBL_ENTRY *P__ZTI11S19490C6_nt = _ZTI11S19490C6_nt; 
Class_Descriptor cd_S19490C6_nt = {  "S19490C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S19490C6_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  S19490C7  {
  void  mf19490c7(); // _ZN8S19490C79mf19490c7Ev
};
//SIG(-1 S19490C7) C1{ m}


void  S19490C7 ::mf19490c7(){}

static void Test_S19490C7()
{
  {
    init_simple_test("S19490C7");
    S19490C7 lv;
    check2(sizeof(lv), 1, "sizeof(S19490C7)");
    check2(__alignof__(lv), 1, "__alignof__(S19490C7)");
  }
}
static Arrange_To_Call_Me vS19490C7(Test_S19490C7, "S19490C7", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19490C7[];
VTBL_ENTRY *P__ZTI8S19490C7 = _ZTI8S19490C7; 
Class_Descriptor cd_S19490C7 = {  "S19490C7", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S19490C7),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  S19490C10_nt  {
  void *s19490c10f0;
  void  mf19490c10(); // _ZN12S19490C10_nt10mf19490c10Ev
};
//SIG(-1 S19490C10_nt) C1{ m Fp}


void  S19490C10_nt ::mf19490c10(){}

//skip512 S19490C10_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19490C10_nt[];
VTBL_ENTRY *P__ZTI12S19490C10_nt = _ZTI12S19490C10_nt; 
Class_Descriptor cd_S19490C10_nt = {  "S19490C10_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19490C10_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  S19490C11  {
  void  mf19490c11(); // _ZN9S19490C1110mf19490c11Ev
};
//SIG(-1 S19490C11) C1{ m}


void  S19490C11 ::mf19490c11(){}

static void Test_S19490C11()
{
  {
    init_simple_test("S19490C11");
    S19490C11 lv;
    check2(sizeof(lv), 1, "sizeof(S19490C11)");
    check2(__alignof__(lv), 1, "__alignof__(S19490C11)");
  }
}
static Arrange_To_Call_Me vS19490C11(Test_S19490C11, "S19490C11", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19490C11[];
VTBL_ENTRY *P__ZTI9S19490C11 = _ZTI9S19490C11; 
Class_Descriptor cd_S19490C11 = {  "S19490C11", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19490C11),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  S19490C9  : S19490C10_nt , S19490C11 , S1538C28_nt {
};
//SIG(-1 S19490C9) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S19490C9()
{
  extern Class_Descriptor cd_S19490C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19490C9, buf);
    S19490C9 &lv = *(new (buf) S19490C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19490C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C9)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S19490C9");
    check_base_class_offset(lv, (S19490C11*), 0, "S19490C9");
    check_base_class_offset(lv, (S1538C28_nt*), 0, "S19490C9");
    test_class_info(&lv, &cd_S19490C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C9(Test_S19490C9, "S19490C9", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S19490C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19490C9[];
Class_Descriptor cd_S19490C9 = {  "S19490C9", // class name
  bases_S19490C9, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19490C9),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19490C12  {
  void  mf19490c12(); // _ZN9S19490C1210mf19490c12Ev
};
//SIG(-1 S19490C12) C1{ m}


void  S19490C12 ::mf19490c12(){}

static void Test_S19490C12()
{
  {
    init_simple_test("S19490C12");
    S19490C12 lv;
    check2(sizeof(lv), 1, "sizeof(S19490C12)");
    check2(__alignof__(lv), 1, "__alignof__(S19490C12)");
  }
}
static Arrange_To_Call_Me vS19490C12(Test_S19490C12, "S19490C12", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19490C12[];
VTBL_ENTRY *P__ZTI9S19490C12 = _ZTI9S19490C12; 
Class_Descriptor cd_S19490C12 = {  "S19490C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19490C12),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  S19490C8  : virtual S19490C9 , virtual S19490C12 , S19490C11 {
  ~S19490C8(); // tgen
  S19490C8(); // tgen
};
//SIG(-1 S19490C8) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S19490C8()
{
  extern Class_Descriptor cd_S19490C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19490C8, buf);
    S19490C8 *dp, &lv = *(dp=new (buf) S19490C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19490C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C8)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(8,4), "S19490C8");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(8,4), "S19490C8");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(8,4), "S19490C8");
    check_base_class_offset(lv, (S19490C9*), ABISELECT(8,4), "S19490C8");
    check_base_class_offset(lv, (S19490C12*), 0, "S19490C8");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*), 0, "S19490C8");
    test_class_info(&lv, &cd_S19490C8);
    dp->~S19490C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C8(Test_S19490C8, "S19490C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19490C8C1Ev();
extern void _ZN8S19490C8D1Ev();
Name_Map name_map_S19490C8[] = {
  NSPAIR(_ZN8S19490C8C1Ev),
  NSPAIR(_ZN8S19490C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
static Base_Class bases_S19490C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19490C8[];
static  VTBL_ENTRY vtc_S19490C8[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
extern VTBL_ENTRY _ZTV8S19490C8[];
static  VTT_ENTRY vtt_S19490C8[] = {
  {&(_ZTV8S19490C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
Class_Descriptor cd_S19490C8 = {  "S19490C8", // class name
  bases_S19490C8, 6,
  &(vtc_S19490C8[0]), // expected_vtbl_contents
  &(vtt_S19490C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19490C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19490C8),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19490C8),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  S19490C5  : virtual S19490C6_nt , S19490C7 , virtual S19490C8 {
  __tsi64 s19490c5f0[5];
  virtual  ~S19490C5(); // _ZN8S19490C5D2Ev
  virtual void  v1(); // _ZN8S19490C52v1Ev
  S19490C5(); // tgen
};
//SIG(-1 S19490C5) C1{ VBC2{ m} BC3{ m} VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} vd v1 FL[5]}


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

static void Test_S19490C5()
{
  extern Class_Descriptor cd_S19490C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S19490C5, buf);
    S19490C5 *dp, &lv = *(dp=new (buf) S19490C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S19490C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C5)");
    check_base_class_offset(lv, (S19490C6_nt*), 0, "S19490C5");
    check_base_class_offset(lv, (S19490C7*), 0, "S19490C5");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(48,44), "S19490C5");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(48,44), "S19490C5");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(48,44), "S19490C5");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(48,44), "S19490C5");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C5");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), 0, "S19490C5");
    check_base_class_offset(lv, (S19490C8*), 0, "S19490C5");
    check_field_offset(lv, s19490c5f0, ABISELECT(8,4), "S19490C5.s19490c5f0");
    test_class_info(&lv, &cd_S19490C5);
    dp->~S19490C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C5(Test_S19490C5, "S19490C5", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN8S19490C5C1Ev();
extern void _ZN8S19490C5D2Ev();
Name_Map name_map_S19490C5[] = {
  NSPAIR(_ZN8S19490C5C1Ev),
  NSPAIR(_ZN8S19490C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
static Base_Class bases_S19490C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19490C5[];
extern void _ZN8S19490C5D1Ev();
extern void _ZN8S19490C5D0Ev();
extern void _ZN8S19490C52v1Ev();
static  VTBL_ENTRY vtc_S19490C5[] = {
  0,
  0,
  0,
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C5[0]),
  (VTBL_ENTRY)&_ZN8S19490C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19490C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19490C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19490C5[];
static  VTBL_ENTRY _tg__ZTV8S19490C8__8S19490C5[] = {
  0,
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTT_ENTRY vtt_S19490C5[] = {
  {&(_ZTV8S19490C5[6]),  6,9},
  {&(_ZTV8S19490C5[6]),  6,9},
  {&(_tg__ZTV8S19490C8__8S19490C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19490C5[];
extern  VTBL_ENTRY _ZTV8S19490C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C5[];
Class_Descriptor cd_S19490C5 = {  "S19490C5", // class name
  bases_S19490C5, 9,
  &(vtc_S19490C5[0]), // expected_vtbl_contents
  &(vtt_S19490C5[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI8S19490C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19490C5),9, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19490C5),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  S19490C16  : S19490C10_nt , virtual S1538C28_nt , virtual S19490C11 {
  ~S19490C16(); // tgen
  S19490C16(); // tgen
};
//SIG(-1 S19490C16) C1{ BC2{ m Fp} VBC3{ m} VBC4{ m}}


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

static void Test_S19490C16()
{
  extern Class_Descriptor cd_S19490C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19490C16, buf);
    S19490C16 *dp, &lv = *(dp=new (buf) S19490C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19490C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C16)");
    check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19490C16");
    check_base_class_offset(lv, (S1538C28_nt*), 0, "S19490C16");
    check_base_class_offset(lv, (S19490C11*), 0, "S19490C16");
    test_class_info(&lv, &cd_S19490C16);
    dp->~S19490C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C16(Test_S19490C16, "S19490C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19490C16C1Ev();
extern void _ZN9S19490C16D1Ev();
Name_Map name_map_S19490C16[] = {
  NSPAIR(_ZN9S19490C16C1Ev),
  NSPAIR(_ZN9S19490C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
static Base_Class bases_S19490C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19490C16[];
static  VTBL_ENTRY vtc_S19490C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
extern VTBL_ENTRY _ZTV9S19490C16[];
static  VTT_ENTRY vtt_S19490C16[] = {
  {&(_ZTV9S19490C16[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
Class_Descriptor cd_S19490C16 = {  "S19490C16", // class name
  bases_S19490C16, 3,
  &(vtc_S19490C16[0]), // expected_vtbl_contents
  &(vtt_S19490C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19490C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19490C16),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C16),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  S19490C15  : virtual S19490C3 , S19490C10_nt , virtual S19490C16 {
  ::S19490C16 s19490c15f0;
  ~S19490C15(); // tgen
  S19490C15(); // tgen
};
//SIG(-1 S19490C15) C1{ VBC2{ VBC3{ m} Fp[2]} BC4{ m Fp} VBC5{ BC4 VBC3 VBC6{ m}} FC5}


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

static void Test_S19490C15()
{
  extern Class_Descriptor cd_S19490C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19490C15, buf);
    S19490C15 *dp, &lv = *(dp=new (buf) S19490C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19490C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C15)");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), 0, "S19490C15");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*), 0, "S19490C15");
    check_base_class_offset(lv, (S19490C3*), ABISELECT(32,16), "S19490C15");
    /*is_ambiguous_... S19490C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19490C15");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*), ABISELECT(64,32), "S19490C15");
    check_base_class_offset(lv, (S19490C11*)(S19490C16*), 0, "S19490C15");
    check_base_class_offset(lv, (S19490C16*), ABISELECT(56,28), "S19490C15");
    check_field_offset(lv, s19490c15f0, ABISELECT(16,8), "S19490C15.s19490c15f0");
    test_class_info(&lv, &cd_S19490C15);
    dp->~S19490C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C15(Test_S19490C15, "S19490C15", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S19490C15C1Ev();
extern void _ZN9S19490C15D1Ev();
Name_Map name_map_S19490C15[] = {
  NSPAIR(_ZN9S19490C15C1Ev),
  NSPAIR(_ZN9S19490C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
static Base_Class bases_S19490C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C3,    ABISELECT(32,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19490C16,    ABISELECT(56,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C15[];
static  VTBL_ENTRY vtc_S19490C15[] = {
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
extern VTBL_ENTRY _ZTV9S19490C15[];
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C15[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
static  VTT_ENTRY vtt_S19490C15[] = {
  {&(_ZTV9S19490C15[6]),  6,13},
  {&(_ZTV9S19490C15[9]),  9,13},
  {&(_ZTV9S19490C15[13]),  13,13},
  {&(_tg__ZTV8S19490C3__9S19490C15[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19490C15[];
extern  VTBL_ENTRY _ZTV9S19490C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C15[];
Class_Descriptor cd_S19490C15 = {  "S19490C15", // class name
  bases_S19490C15, 6,
  &(vtc_S19490C15[0]), // expected_vtbl_contents
  &(vtt_S19490C15[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S19490C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19490C15),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19490C18  {
  void  mf19490c18(); // _ZN9S19490C1810mf19490c18Ev
};
//SIG(-1 S19490C18) C1{ m}


void  S19490C18 ::mf19490c18(){}

static void Test_S19490C18()
{
  {
    init_simple_test("S19490C18");
    S19490C18 lv;
    check2(sizeof(lv), 1, "sizeof(S19490C18)");
    check2(__alignof__(lv), 1, "__alignof__(S19490C18)");
  }
}
static Arrange_To_Call_Me vS19490C18(Test_S19490C18, "S19490C18", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19490C18[];
VTBL_ENTRY *P__ZTI9S19490C18 = _ZTI9S19490C18; 
Class_Descriptor cd_S19490C18 = {  "S19490C18", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19490C18),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  S19490C19_nt  : virtual S1538C28_nt {
  int s19490c19f0;
  ~S19490C19_nt(); // tgen
  S19490C19_nt(); // tgen
};
//SIG(-1 S19490C19_nt) C1{ VBC2{ m} Fi}


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

//skip512 S19490C19_nt

#else // __cplusplus

extern void _ZN12S19490C19_ntC1Ev();
extern void _ZN12S19490C19_ntD1Ev();
Name_Map name_map_S19490C19_nt[] = {
  NSPAIR(_ZN12S19490C19_ntC1Ev),
  NSPAIR(_ZN12S19490C19_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S19490C19_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S19490C19_nt[];
static  VTBL_ENTRY vtc_S19490C19_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19490C19_nt[];
static  VTT_ENTRY vtt_S19490C19_nt[] = {
  {&(_ZTV12S19490C19_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
VTBL_ENTRY *P__ZTI12S19490C19_nt = _ZTI12S19490C19_nt; 
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
Class_Descriptor cd_S19490C19_nt = {  "S19490C19_nt", // class name
  bases_S19490C19_nt, 1,
  &(vtc_S19490C19_nt[0]), // expected_vtbl_contents
  &(vtt_S19490C19_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI12S19490C19_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19490C19_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19490C19_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  S19490C17  : virtual S19490C18 , S19490C9 , S19490C12 , virtual S19490C19_nt {
  ~S19490C17(); // tgen
  S19490C17(); // tgen
};
//SIG(-1 S19490C17) C1{ VBC2{ m} BC3{ BC4{ m Fp} BC5{ m} BC6{ m}} BC7{ m} VBC8{ VBC6 Fi}}


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

static void Test_S19490C17()
{
  extern Class_Descriptor cd_S19490C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19490C17, buf);
    S19490C17 *dp, &lv = *(dp=new (buf) S19490C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19490C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C17)");
    check_base_class_offset(lv, (S19490C18*), 0, "S19490C17");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(8,4), "S19490C17");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(8,4), "S19490C17");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(8,4), "S19490C17");
    check_base_class_offset(lv, (S19490C9*), ABISELECT(8,4), "S19490C17");
    check_base_class_offset(lv, (S19490C12*), 0, "S19490C17");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), 0, "S19490C17");
    check_base_class_offset(lv, (S19490C19_nt*), ABISELECT(16,8), "S19490C17");
    test_class_info(&lv, &cd_S19490C17);
    dp->~S19490C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C17(Test_S19490C17, "S19490C17", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19490C17C1Ev();
extern void _ZN9S19490C17D1Ev();
Name_Map name_map_S19490C17[] = {
  NSPAIR(_ZN9S19490C17C1Ev),
  NSPAIR(_ZN9S19490C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
static Base_Class bases_S19490C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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, 0},
  {&cd_S19490C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C28_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, 0},
  {&cd_S19490C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C19_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C17[];
static  VTBL_ENTRY vtc_S19490C17[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
extern VTBL_ENTRY _ZTV9S19490C17[];
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C17[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTT_ENTRY vtt_S19490C17[] = {
  {&(_ZTV9S19490C17[5]),  5,8},
  {&(_ZTV9S19490C17[8]),  8,8},
  {&(_tg__ZTV12S19490C19_nt__9S19490C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C17[];
extern  VTBL_ENTRY _ZTV9S19490C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C17[];
Class_Descriptor cd_S19490C17 = {  "S19490C17", // class name
  bases_S19490C17, 8,
  &(vtc_S19490C17[0]), // expected_vtbl_contents
  &(vtt_S19490C17[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19490C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19490C17),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C17),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  S19490C20_nt  : virtual S19490C11 {
  ~S19490C20_nt(); // tgen
  S19490C20_nt(); // tgen
};
//SIG(-1 S19490C20_nt) C1{ VBC2{ m}}


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

//skip512 S19490C20_nt

#else // __cplusplus

extern void _ZN12S19490C20_ntC1Ev();
extern void _ZN12S19490C20_ntD1Ev();
Name_Map name_map_S19490C20_nt[] = {
  NSPAIR(_ZN12S19490C20_ntC1Ev),
  NSPAIR(_ZN12S19490C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
static Base_Class bases_S19490C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S19490C20_nt[];
static  VTBL_ENTRY vtc_S19490C20_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19490C20_nt[];
static  VTT_ENTRY vtt_S19490C20_nt[] = {
  {&(_ZTV12S19490C20_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
VTBL_ENTRY *P__ZTI12S19490C20_nt = _ZTI12S19490C20_nt; 
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
Class_Descriptor cd_S19490C20_nt = {  "S19490C20_nt", // class name
  bases_S19490C20_nt, 1,
  &(vtc_S19490C20_nt[0]), // expected_vtbl_contents
  &(vtt_S19490C20_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19490C20_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19490C20_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19490C20_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  S19490C14  : S1538C28_nt , virtual S19490C11 , virtual S19490C15 , virtual S19490C17 , S19490C20_nt {
  int s19490c14f0;
  char s19490c14f1;
  ~S19490C14(); // tgen
  S19490C14(); // tgen
};
//SIG(-1 S19490C14) C1{ BC2{ m} VBC3{ m} VBC4{ VBC5{ VBC2 Fp[2]} BC6{ m Fp} VBC7{ BC6 VBC2 VBC3} FC7} VBC8{ VBC9{ m} BC10{ BC6 BC3 BC2} BC11{ m} VBC12{ VBC2 Fi}} BC13{ VBC3} Fi Fc}


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

static void Test_S19490C14()
{
  extern Class_Descriptor cd_S19490C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19490C14, buf);
    S19490C14 *dp, &lv = *(dp=new (buf) S19490C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19490C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C14)");
    /*is_ambiguous_... S19490C14::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S19490C14");
    /*is_ambiguous_... S19490C14::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*), 0, "S19490C14");
    check_base_class_offset(lv, (S19490C11*)(S19490C16*), 0, "S19490C14");
    check_base_class_offset(lv, (S19490C11*)(S19490C20_nt*), 0, "S19490C14");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), ABISELECT(72,40), "S19490C14");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*), ABISELECT(72,40), "S19490C14");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), ABISELECT(72,40), "S19490C14");
    check_base_class_offset(lv, (S19490C3*)(S19490C15*), ABISELECT(48,28), "S19490C14");
    /*is_ambiguous_... S19490C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C15*), ABISELECT(24,16), "S19490C14");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*), ABISELECT(80,44), "S19490C14");
    check_base_class_offset(lv, (S19490C16*)(S19490C15*), ABISELECT(72,40), "S19490C14");
    check_base_class_offset(lv, (S19490C15*), ABISELECT(16,12), "S19490C14");
    check_base_class_offset(lv, (S19490C18*)(S19490C17*), 0, "S19490C14");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C17*), ABISELECT(96,52), "S19490C14");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C17*), ABISELECT(96,52), "S19490C14");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C17*), ABISELECT(96,52), "S19490C14");
    check_base_class_offset(lv, (S19490C9*)(S19490C17*), ABISELECT(96,52), "S19490C14");
    check_base_class_offset(lv, (S19490C12*)(S19490C17*), ABISELECT(88,48), "S19490C14");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C17*), ABISELECT(104,56), "S19490C14");
    check_base_class_offset(lv, (S19490C17*), ABISELECT(88,48), "S19490C14");
    check_base_class_offset(lv, (S19490C20_nt*), 0, "S19490C14");
    check_field_offset(lv, s19490c14f0, ABISELECT(8,4), "S19490C14.s19490c14f0");
    check_field_offset(lv, s19490c14f1, ABISELECT(12,8), "S19490C14.s19490c14f1");
    test_class_info(&lv, &cd_S19490C14);
    dp->~S19490C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C14(Test_S19490C14, "S19490C14", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19490C14C1Ev();
extern void _ZN9S19490C14D1Ev();
Name_Map name_map_S19490C14[] = {
  NSPAIR(_ZN9S19490C14C1Ev),
  NSPAIR(_ZN9S19490C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
extern Class_Descriptor cd_S19490C15;
extern VTBL_ENTRY _ZTI9S19490C15[];
extern  VTBL_ENTRY _ZTV9S19490C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
extern Class_Descriptor cd_S19490C17;
extern VTBL_ENTRY _ZTI9S19490C17[];
extern  VTBL_ENTRY _ZTV9S19490C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C17[];
extern Class_Descriptor cd_S19490C20_nt;
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
static Base_Class bases_S19490C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C28_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
    3, //immediately_derived
  0, 1},
  {&cd_S19490C3,    ABISELECT(48,28), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C16,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C15,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    12, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C19_nt,    ABISELECT(104,56), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C17,    ABISELECT(88,48), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C20_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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C14[];
static  VTBL_ENTRY vtc_S19490C14[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
  ABISELECT(-72,-40),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
  ABISELECT(-32,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
extern VTBL_ENTRY _ZTV9S19490C14[];
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__9S19490C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C15__9S19490C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C15__9S19490C14[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C15__9S19490C14[] = {
  ABISELECT(-72,-40),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C14[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C14[] = {
  ABISELECT(-72,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C17__9S19490C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C14[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTT_ENTRY vtt_S19490C14[] = {
  {&(_ZTV9S19490C14[10]),  10,31},
  {&(_tg__ZTV12S19490C20_nt__9S19490C14[3]),  3,3},
  {&(_ZTV9S19490C14[16]),  16,31},
  {&(_ZTV9S19490C14[19]),  19,31},
  {&(_ZTV9S19490C14[23]),  23,31},
  {&(_ZTV9S19490C14[28]),  28,31},
  {&(_ZTV9S19490C14[31]),  31,31},
  {&(_tg__ZTV9S19490C15__9S19490C14[6]),  6,6},
  {&(_tg__ZTV8S19490C3__9S19490C15__9S19490C14[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C15__9S19490C14[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C14[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C14[4]),  4,4},
  {&(_tg__ZTV9S19490C17__9S19490C14[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C17__9S19490C14[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C14[];
extern  VTBL_ENTRY _ZTV9S19490C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C14[];
Class_Descriptor cd_S19490C14 = {  "S19490C14", // class name
  bases_S19490C14, 17,
  &(vtc_S19490C14[0]), // expected_vtbl_contents
  &(vtt_S19490C14[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19490C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19490C14),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C14),15, //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  S19490C22  : virtual S19490C8 , S19490C10_nt , S1538C28_nt {
  long double s19490c22f0;
  int s19490c22f1;
  virtual  ~S19490C22(); // _ZN9S19490C22D2Ev
  S19490C22(); // tgen
};
//SIG(-1 S19490C22) C1{ VBC2{ VBC3{ BC4{ m Fp} BC5{ m} BC6{ m}} VBC7{ m} BC5} BC4 BC6 vd FD Fi}


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

static void Test_S19490C22()
{
  extern Class_Descriptor cd_S19490C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19490C22, buf);
    S19490C22 *dp, &lv = *(dp=new (buf) S19490C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19490C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C22)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(40,24), "S19490C22");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(40,24), "S19490C22");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(40,24), "S19490C22");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(40,24), "S19490C22");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C22");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), 0, "S19490C22");
    check_base_class_offset(lv, (S19490C8*), 0, "S19490C22");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19490C22");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S19490C22");
    check_field_offset(lv, s19490c22f0, ABISELECT(16,8), "S19490C22.s19490c22f0");
    check_field_offset(lv, s19490c22f1, ABISELECT(32,20), "S19490C22.s19490c22f1");
    test_class_info(&lv, &cd_S19490C22);
    dp->~S19490C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C22(Test_S19490C22, "S19490C22", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN9S19490C22C1Ev();
extern void _ZN9S19490C22D2Ev();
Name_Map name_map_S19490C22[] = {
  NSPAIR(_ZN9S19490C22C1Ev),
  NSPAIR(_ZN9S19490C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S19490C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C8,    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_S19490C10_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_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C22[];
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY vtc_S19490C22[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
extern VTBL_ENTRY _ZTV9S19490C22[];
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C22[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTT_ENTRY vtt_S19490C22[] = {
  {&(_ZTV9S19490C22[5]),  5,7},
  {&(_ZTV9S19490C22[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C22[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
Class_Descriptor cd_S19490C22 = {  "S19490C22", // class name
  bases_S19490C22, 9,
  &(vtc_S19490C22[0]), // expected_vtbl_contents
  &(vtt_S19490C22[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI9S19490C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19490C22),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C22),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  S19490C21  : S19490C16 , S19490C22 , S19490C2 , virtual S19490C20_nt {
  char s19490c21f0;
  void *s19490c21f1;
  virtual  ~S19490C21(); // _ZN9S19490C21D2Ev
  S19490C21(); // tgen
};
//SIG(-1 S19490C21) C1{ BC2{ BC3{ m Fp} VBC4{ m} VBC5{ m}} BC6{ VBC7{ VBC8{ BC3 BC5 BC4} VBC9{ m} BC5} BC3 BC4 vd FD Fi} BC10{ BC11{ VBC4 Fp[2]}} VBC12{ VBC5} vd Fc Fp}


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

static void Test_S19490C21()
{
  extern Class_Descriptor cd_S19490C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S19490C21, buf);
    S19490C21 *dp, &lv = *(dp=new (buf) S19490C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19490C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C21)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*), ABISELECT(8,4), "S19490C21");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*), 0, "S19490C21");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*)(S19490C2*), 0, "S19490C21");
    check_base_class_offset(lv, (S19490C11*)(S19490C16*), 0, "S19490C21");
    check_base_class_offset(lv, (S19490C11*)(S19490C20_nt*), 0, "S19490C21");
    check_base_class_offset(lv, (S19490C16*), 0, "S19490C21");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(96,52), "S19490C21");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(96,52), "S19490C21");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(96,52), "S19490C21");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(96,52), "S19490C21");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C21");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), ABISELECT(16,8), "S19490C21");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*), ABISELECT(16,8), "S19490C21");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*), ABISELECT(24,12), "S19490C21");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*), ABISELECT(16,8), "S19490C21");
    check_base_class_offset(lv, (S19490C22*), ABISELECT(16,8), "S19490C21");
    check_base_class_offset(lv, (S19490C3*)(S19490C2*), ABISELECT(56,32), "S19490C21");
    check_base_class_offset(lv, (S19490C2*), ABISELECT(56,32), "S19490C21");
    check_base_class_offset(lv, (S19490C20_nt*), ABISELECT(104,56), "S19490C21");
    check_field_offset(lv, s19490c21f0, ABISELECT(80,44), "S19490C21.s19490c21f0");
    check_field_offset(lv, s19490c21f1, ABISELECT(88,48), "S19490C21.s19490c21f1");
    test_class_info(&lv, &cd_S19490C21);
    dp->~S19490C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C21(Test_S19490C21, "S19490C21", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19490C21C1Ev();
extern void _ZN9S19490C21D2Ev();
Name_Map name_map_S19490C21[] = {
  NSPAIR(_ZN9S19490C21C1Ev),
  NSPAIR(_ZN9S19490C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C2;
extern VTBL_ENTRY _ZTI8S19490C2[];
extern  VTBL_ENTRY _ZTV8S19490C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C2[];
extern Class_Descriptor cd_S19490C20_nt;
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
static Base_Class bases_S19490C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C16,    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_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    7, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    10, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19490C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    13, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C3,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19490C2,    ABISELECT(56,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C20_nt,    ABISELECT(104,56), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C21[];
extern void _ZN9S19490C21D1Ev();
extern void _ZN9S19490C21D0Ev();
extern void ABISELECT(_ZThn16_N9S19490C21D1Ev,_ZThn8_N9S19490C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C21D0Ev,_ZThn8_N9S19490C21D0Ev)();
static  VTBL_ENTRY vtc_S19490C21[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(96,52),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  (VTBL_ENTRY)&_ZN9S19490C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C21D0Ev,
  0,
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C21D1Ev,_ZThn8_N9S19490C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C21D0Ev,_ZThn8_N9S19490C21D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
};
extern VTBL_ENTRY _ZTV9S19490C21[];
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C21[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C22__9S19490C21[] = {
  0,
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C2__9S19490C21[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C38S19490C2__9S19490C21[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C21[] = {
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__9S19490C21[] = {
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
static  VTT_ENTRY vtt_S19490C21[] = {
  {&(_ZTV9S19490C21[8]),  8,23},
  {&(_tg__ZTV9S19490C16__9S19490C21[4]),  4,4},
  {&(_tg__ZTV9S19490C22__9S19490C21[5]),  5,7},
  {&(_tg__ZTV9S19490C22__9S19490C21[5]),  5,7},
  {&(_tg__ZTV8S19490C2__9S19490C21[3]),  3,3},
  {&(_tg__ZTV8S19490C38S19490C2__9S19490C21[3]),  3,3},
  {&(_ZTV9S19490C21[15]),  15,23},
  {&(_ZTV9S19490C21[15]),  15,23},
  {&(_ZTV9S19490C21[20]),  20,23},
  {&(_ZTV9S19490C21[23]),  23,23},
  {&(_tg__ZTV8S19490C8__9S19490C21[4]),  4,4},
  {&(_tg__ZTV12S19490C20_nt__9S19490C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C21[];
extern  VTBL_ENTRY _ZTV9S19490C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C21[];
Class_Descriptor cd_S19490C21 = {  "S19490C21", // class name
  bases_S19490C21, 17,
  &(vtc_S19490C21[0]), // expected_vtbl_contents
  &(vtt_S19490C21[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19490C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19490C21),23, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C21),12, //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  S19490C25  : S19490C22 , virtual S19490C3 , virtual S19490C19_nt {
  ~S19490C25(); // tgen
  S19490C25(); // tgen
};
//SIG(-1 S19490C25) C1{ BC2{ VBC3{ VBC4{ BC5{ m Fp} BC6{ m} BC7{ m}} VBC8{ m} BC6} BC5 BC7 vd FD Fi} VBC9{ VBC7 Fp[2]} VBC10{ VBC7 Fi}}


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

static void Test_S19490C25()
{
  extern Class_Descriptor cd_S19490C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S19490C25, buf);
    S19490C25 *dp, &lv = *(dp=new (buf) S19490C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19490C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C25)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(40,24), "S19490C25");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(40,24), "S19490C25");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(40,24), "S19490C25");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(40,24), "S19490C25");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C25");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), 0, "S19490C25");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*), 0, "S19490C25");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*), ABISELECT(8,4), "S19490C25");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*), 0, "S19490C25");
    check_base_class_offset(lv, (S19490C22*), 0, "S19490C25");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), ABISELECT(72,40), "S19490C25");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), ABISELECT(72,40), "S19490C25");
    check_base_class_offset(lv, (S19490C3*), ABISELECT(48,28), "S19490C25");
    check_base_class_offset(lv, (S19490C19_nt*), ABISELECT(72,40), "S19490C25");
    test_class_info(&lv, &cd_S19490C25);
    dp->~S19490C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C25(Test_S19490C25, "S19490C25", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19490C25C1Ev();
extern void _ZN9S19490C25D1Ev();
Name_Map name_map_S19490C25[] = {
  NSPAIR(_ZN9S19490C25C1Ev),
  NSPAIR(_ZN9S19490C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
static Base_Class bases_S19490C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C8,    0, //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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_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
    11, //immediately_derived
  0, 1},
  {&cd_S19490C3,    ABISELECT(48,28), //bcp->offset
    10, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C19_nt,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C25[];
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY vtc_S19490C25[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
extern VTBL_ENTRY _ZTV9S19490C25[];
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C22__9S19490C25[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C25[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C25[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C25[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTT_ENTRY vtt_S19490C25[] = {
  {&(_ZTV9S19490C25[8]),  8,16},
  {&(_tg__ZTV9S19490C22__9S19490C25[5]),  5,7},
  {&(_tg__ZTV9S19490C22__9S19490C25[5]),  5,7},
  {&(_ZTV9S19490C25[8]),  8,16},
  {&(_ZTV9S19490C25[13]),  13,16},
  {&(_ZTV9S19490C25[16]),  16,16},
  {&(_tg__ZTV8S19490C8__9S19490C25[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C25[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C25[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
Class_Descriptor cd_S19490C25 = {  "S19490C25", // class name
  bases_S19490C25, 13,
  &(vtc_S19490C25[0]), // expected_vtbl_contents
  &(vtt_S19490C25[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19490C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19490C25),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C25),9, //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  S19490C24  : virtual S19490C3 , virtual S19490C10_nt , virtual S19490C17 , virtual S19490C7 , virtual S19490C25 {
  ~S19490C24(); // tgen
  S19490C24(); // tgen
};
//SIG(-1 S19490C24) C1{ VBC2{ VBC3{ m} Fp[2]} VBC4{ m Fp} VBC5{ VBC6{ m} BC7{ BC4 BC8{ m} BC3} BC9{ m} VBC10{ VBC3 Fi}} VBC11{ m} VBC12{ BC13{ VBC14{ VBC7 VBC9 BC8} BC4 BC3 vd FD Fi} VBC2 VBC10}}


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

static void Test_S19490C24()
{
  extern Class_Descriptor cd_S19490C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S19490C24, buf);
    S19490C24 *dp, &lv = *(dp=new (buf) S19490C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S19490C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C24)");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), 0, "S19490C24");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), 0, "S19490C24");
    check_base_class_offset(lv, (S19490C3*), ABISELECT(8,4), "S19490C24");
    check_base_class_offset(lv, (S19490C3*)(S19490C25*), ABISELECT(8,4), "S19490C24");
    /*is_ambiguous_... S19490C24::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(32,16), "S19490C24");
    check_base_class_offset(lv, (S19490C18*)(S19490C17*), 0, "S19490C24");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C17*), ABISELECT(48,24), "S19490C24");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C17*), ABISELECT(48,24), "S19490C24");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C17*), ABISELECT(48,24), "S19490C24");
    check_base_class_offset(lv, (S19490C9*)(S19490C17*), ABISELECT(48,24), "S19490C24");
    check_base_class_offset(lv, (S19490C12*)(S19490C17*), ABISELECT(40,20), "S19490C24");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C17*), ABISELECT(56,28), "S19490C24");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*), ABISELECT(56,28), "S19490C24");
    check_base_class_offset(lv, (S19490C17*), ABISELECT(40,20), "S19490C24");
    check_base_class_offset(lv, (S19490C7*), 0, "S19490C24");
    /*is_ambiguous_... S19490C24::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(120,60), "S19490C24");
    /*is_ambiguous_... S19490C24::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(120,60), "S19490C24");
    /*is_ambiguous_... S19490C24::S19490C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(120,60), "S19490C24");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(120,60), "S19490C24");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C24");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), 0, "S19490C24");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*), 0, "S19490C24");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*), ABISELECT(88,40), "S19490C24");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*), ABISELECT(80,36), "S19490C24");
    check_base_class_offset(lv, (S19490C22*)(S19490C25*), ABISELECT(80,36), "S19490C24");
    check_base_class_offset(lv, (S19490C25*), ABISELECT(80,36), "S19490C24");
    test_class_info(&lv, &cd_S19490C24);
    dp->~S19490C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C24(Test_S19490C24, "S19490C24", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN9S19490C24C1Ev();
extern void _ZN9S19490C24D1Ev();
Name_Map name_map_S19490C24[] = {
  NSPAIR(_ZN9S19490C24C1Ev),
  NSPAIR(_ZN9S19490C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
extern Class_Descriptor cd_S19490C17;
extern VTBL_ENTRY _ZTI9S19490C17[];
extern  VTBL_ENTRY _ZTV9S19490C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C17[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
static Base_Class bases_S19490C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C3,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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_S19490C10_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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_S19490C11,    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_S1538C28_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_S19490C9,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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_S19490C19_nt,    ABISELECT(56,28), //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
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19490C17,    ABISELECT(40,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    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_S19490C11,    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_S1538C28_nt,    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_S19490C9,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(88,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
    21, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(80,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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19490C25,    ABISELECT(80,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //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},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C24[];
extern void _ZN9S19490C24D1Ev();
extern void _ZN9S19490C24D0Ev();
extern void ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19490C24D1Ev,_ZThn36_N9S19490C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19490C24D0Ev,_ZThn36_N9S19490C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19490C24[] = {
  0,
  ABISELECT(80,36),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&_ZN9S19490C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C24D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  ABISELECT(-80,-36),
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S19490C24[];
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C24[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C17__9S19490C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C24[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C24[] = {
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C25__9S19490C24[] = {
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C25__9S19490C24[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C25__9S19490C24[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C25__9S19490C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,32),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C25__9S19490C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C24[] = {
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTT_ENTRY vtt_S19490C24[] = {
  {&(_ZTV9S19490C24[13]),  13,37},
  {&(_ZTV9S19490C24[18]),  18,37},
  {&(_ZTV9S19490C24[23]),  23,37},
  {&(_ZTV9S19490C24[26]),  26,37},
  {&(_ZTV9S19490C24[35]),  35,37},
  {&(_ZTV9S19490C24[13]),  13,37},
  {&(_tg__ZTV8S19490C3__9S19490C24[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C24[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C17__9S19490C24[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C24[3]),  3,3},
  {&(_tg__ZTV9S19490C25__9S19490C24[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C25__9S19490C24[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C25__9S19490C24[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C25__9S19490C24[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C25__9S19490C24[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C25__9S19490C24[3]),  3,3},
  {&(_tg__ZTV8S19490C8__9S19490C24[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19490C24[];
extern  VTBL_ENTRY _ZTV9S19490C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C24[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C24D0Ev,_ZThn36_N9S19490C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C24D1Ev,_ZThn36_N9S19490C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19490C24 = {  "S19490C24", // class name
  bases_S19490C24, 23,
  &(vtc_S19490C24[0]), // expected_vtbl_contents
  &(vtt_S19490C24[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI9S19490C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19490C24),37, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C24),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19490C26  {
  void  mf19490c26(); // _ZN9S19490C2610mf19490c26Ev
};
//SIG(-1 S19490C26) C1{ m}


void  S19490C26 ::mf19490c26(){}

static void Test_S19490C26()
{
  {
    init_simple_test("S19490C26");
    S19490C26 lv;
    check2(sizeof(lv), 1, "sizeof(S19490C26)");
    check2(__alignof__(lv), 1, "__alignof__(S19490C26)");
  }
}
static Arrange_To_Call_Me vS19490C26(Test_S19490C26, "S19490C26", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19490C26[];
VTBL_ENTRY *P__ZTI9S19490C26 = _ZTI9S19490C26; 
Class_Descriptor cd_S19490C26 = {  "S19490C26", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19490C26),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  S19490C27  : S19490C25 {
  virtual  ~S19490C27(); // _ZN9S19490C27D2Ev
  S19490C27(); // tgen
};
//SIG(-1 S19490C27) C1{ BC2{ BC3{ VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} BC6 BC8 vd FD Fi} VBC10{ VBC8 Fp[2]} VBC11{ VBC8 Fi}} vd}


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

static void Test_S19490C27()
{
  extern Class_Descriptor cd_S19490C27;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S19490C27, buf);
    S19490C27 *dp, &lv = *(dp=new (buf) S19490C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19490C27)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C27)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(40,24), "S19490C27");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(40,24), "S19490C27");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(40,24), "S19490C27");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(40,24), "S19490C27");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C27");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), 0, "S19490C27");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*), 0, "S19490C27");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*), ABISELECT(8,4), "S19490C27");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*), 0, "S19490C27");
    check_base_class_offset(lv, (S19490C22*)(S19490C25*), 0, "S19490C27");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), ABISELECT(72,40), "S19490C27");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), ABISELECT(72,40), "S19490C27");
    check_base_class_offset(lv, (S19490C3*)(S19490C25*), ABISELECT(48,28), "S19490C27");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*), ABISELECT(72,40), "S19490C27");
    check_base_class_offset(lv, (S19490C25*), 0, "S19490C27");
    test_class_info(&lv, &cd_S19490C27);
    dp->~S19490C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C27(Test_S19490C27, "S19490C27", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19490C27C1Ev();
extern void _ZN9S19490C27D2Ev();
Name_Map name_map_S19490C27[] = {
  NSPAIR(_ZN9S19490C27C1Ev),
  NSPAIR(_ZN9S19490C27D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
static Base_Class bases_S19490C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C22,    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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    11, //immediately_derived
  0, 1},
  {&cd_S19490C3,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19490C19_nt,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19490C25,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C27[];
extern void _ZN9S19490C27D1Ev();
extern void _ZN9S19490C27D0Ev();
static  VTBL_ENTRY vtc_S19490C27[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
  (VTBL_ENTRY)&_ZN9S19490C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C27D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
extern VTBL_ENTRY _ZTV9S19490C27[];
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C27[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C25__9S19490C27[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C25__9S19490C27[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C25__9S19490C27[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C27[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C27[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C27[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTT_ENTRY vtt_S19490C27[] = {
  {&(_ZTV9S19490C27[8]),  8,16},
  {&(_tg__ZTV9S19490C25__9S19490C27[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C25__9S19490C27[5]),  5,7},
  {&(_tg__ZTV9S19490C229S19490C25__9S19490C27[5]),  5,7},
  {&(_tg__ZTV9S19490C25__9S19490C27[8]),  8,10},
  {&(_tg__ZTV8S19490C3__9S19490C25__9S19490C27[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C25__9S19490C27[3]),  3,3},
  {&(_ZTV9S19490C27[8]),  8,16},
  {&(_ZTV9S19490C27[13]),  13,16},
  {&(_ZTV9S19490C27[16]),  16,16},
  {&(_tg__ZTV8S19490C8__9S19490C27[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C27[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C27[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C27[];
extern  VTBL_ENTRY _ZTV9S19490C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C27[];
Class_Descriptor cd_S19490C27 = {  "S19490C27", // class name
  bases_S19490C27, 14,
  &(vtc_S19490C27[0]), // expected_vtbl_contents
  &(vtt_S19490C27[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19490C27),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19490C27),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C27),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  S19490C23  : virtual S19490C19_nt , S19490C24 , S19490C26 , S19490C27 {
  int s19490c23f0[2];
  virtual  ~S19490C23(); // _ZN9S19490C23D2Ev
  S19490C23(); // tgen
};
//SIG(-1 S19490C23) C1{ VBC2{ VBC3{ m} Fi} BC4{ VBC5{ VBC3 Fp[2]} VBC6{ m Fp} VBC7{ VBC8{ m} BC9{ BC6 BC10{ m} BC3} BC11{ m} VBC2} VBC12{ m} VBC13{ BC14{ VBC15{ VBC9 VBC11 BC10} BC6 BC3 vd FD Fi} VBC5 VBC2}} BC16{ m} BC17{ BC13 vd} vd Fi[2]}


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

static void Test_S19490C23()
{
  extern Class_Descriptor cd_S19490C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S19490C23, buf);
    S19490C23 *dp, &lv = *(dp=new (buf) S19490C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19490C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C23)");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), 0, "S19490C23");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), 0, "S19490C23");
    check_base_class_offset(lv, (S19490C19_nt*), ABISELECT(64,36), "S19490C23");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C17*), ABISELECT(64,36), "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*), ABISELECT(64,36), "S19490C23");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*)(S19490C27*), ABISELECT(64,36), "S19490C23");
    check_base_class_offset(lv, (S19490C3*)(S19490C24*), ABISELECT(80,44), "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C3*)(S19490C25*), ABISELECT(80,44), "S19490C23");
    check_base_class_offset(lv, (S19490C3*)(S19490C25*)(S19490C27*), ABISELECT(80,44), "S19490C23");
    /*is_ambiguous_... S19490C24::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C24*), ABISELECT(104,56), "S19490C23");
    check_base_class_offset(lv, (S19490C18*)(S19490C17*), 0, "S19490C23");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C17*), ABISELECT(120,64), "S19490C23");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C17*), ABISELECT(120,64), "S19490C23");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C17*), ABISELECT(120,64), "S19490C23");
    check_base_class_offset(lv, (S19490C9*)(S19490C17*), ABISELECT(120,64), "S19490C23");
    check_base_class_offset(lv, (S19490C12*)(S19490C17*), ABISELECT(112,60), "S19490C23");
    check_base_class_offset(lv, (S19490C17*)(S19490C24*), ABISELECT(112,60), "S19490C23");
    check_base_class_offset(lv, (S19490C7*)(S19490C24*), 0, "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(168,92), "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(168,92), "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(168,92), "S19490C23");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(168,92), "S19490C23");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C23");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), 0, "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*), 0, "S19490C23");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*)(S19490C27*), 0, "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*), ABISELECT(136,72), "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C25 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*), ABISELECT(128,68), "S19490C23");
    /*is_ambiguous_... S19490C23::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C22*)(S19490C25*), ABISELECT(128,68), "S19490C23");
    check_base_class_offset(lv, (S19490C25*)(S19490C24*), ABISELECT(128,68), "S19490C23");
    check_base_class_offset(lv, (S19490C24*), 0, "S19490C23");
    check_base_class_offset(lv, (S19490C26*), 0, "S19490C23");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*)(S19490C27*), ABISELECT(24,8), "S19490C23");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*)(S19490C27*), ABISELECT(16,4), "S19490C23");
    check_base_class_offset(lv, (S19490C22*)(S19490C25*)(S19490C27*), ABISELECT(16,4), "S19490C23");
    check_base_class_offset(lv, (S19490C25*)(S19490C27*), ABISELECT(16,4), "S19490C23");
    check_base_class_offset(lv, (S19490C27*), ABISELECT(16,4), "S19490C23");
    check_field_offset(lv, s19490c23f0, ABISELECT(52,28), "S19490C23.s19490c23f0");
    test_class_info(&lv, &cd_S19490C23);
    dp->~S19490C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C23(Test_S19490C23, "S19490C23", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN9S19490C23C1Ev();
extern void _ZN9S19490C23D2Ev();
Name_Map name_map_S19490C23[] = {
  NSPAIR(_ZN9S19490C23C1Ev),
  NSPAIR(_ZN9S19490C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C17;
extern VTBL_ENTRY _ZTI9S19490C17[];
extern  VTBL_ENTRY _ZTV9S19490C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C17[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
extern Class_Descriptor cd_S19490C24;
extern VTBL_ENTRY _ZTI9S19490C24[];
extern  VTBL_ENTRY _ZTV9S19490C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C24[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
extern Class_Descriptor cd_S19490C27;
extern VTBL_ENTRY _ZTI9S19490C27[];
extern  VTBL_ENTRY _ZTV9S19490C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C27[];
static Base_Class bases_S19490C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C19_nt,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C3,    ABISELECT(80,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    23, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    8, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C17,    ABISELECT(112,60), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_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_S1538C28_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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19490C25,    ABISELECT(128,68), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C24,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1538C28_nt,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19490C25,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19490C27,    ABISELECT(16,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C23[];
extern void _ZN9S19490C23D1Ev();
extern void _ZN9S19490C23D0Ev();
extern void ABISELECT(_ZThn16_N9S19490C23D1Ev,_ZThn4_N9S19490C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C23D0Ev,_ZThn4_N9S19490C23D0Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S19490C23D1Ev,_ZThn68_N9S19490C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S19490C23D0Ev,_ZThn68_N9S19490C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19490C23[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&_ZN9S19490C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C23D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C23D1Ev,_ZThn4_N9S19490C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C23D0Ev,_ZThn4_N9S19490C23D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S19490C23[];
extern void _ZN9S19490C24D1Ev();
extern void _ZN9S19490C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C24__9S19490C23[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&_ZN9S19490C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C24__9S19490C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C24__9S19490C23[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C24__9S19490C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
extern void ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev)();
extern void ABISELECT(_ZThn128_N9S19490C24D1Ev,_ZThn68_N9S19490C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev)();
extern void ABISELECT(_ZThn128_N9S19490C24D0Ev,_ZThn68_N9S19490C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C24__9S19490C23[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev),
};
extern void _ZN9S19490C27D1Ev();
extern void _ZN9S19490C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C27__9S19490C23[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
  (VTBL_ENTRY)&_ZN9S19490C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C27D0Ev,
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C259S19490C27__A1__9S19490C23[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C259S19490C27__A1__9S19490C23[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C259S19490C27__A1__9S19490C23[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C259S19490C27__A1__9S19490C23[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C259S19490C27__A1__9S19490C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C259S19490C27__A1__9S19490C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C27__9S19490C23[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C27__9S19490C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C27__9S19490C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C23[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C23[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C23[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C17__9S19490C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C25__9S19490C23[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C25__9S19490C23[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C25__9S19490C23[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C25__9S19490C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C25__9S19490C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C23[] = {
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTT_ENTRY vtt_S19490C23[] = {
  {&(_ZTV9S19490C23[13]),  13,47},
  {&(_tg__ZTV9S19490C24__9S19490C23[13]),  13,15},
  {&(_tg__ZTV8S19490C3__9S19490C24__9S19490C23[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C24__9S19490C23[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C24__9S19490C23[3]),  3,3},
  {&(_tg__ZTV9S19490C25__9S19490C24__9S19490C23[9]),  9,11},
  {&(_tg__ZTV9S19490C24__9S19490C23[13]),  13,15},
  {&(_tg__ZTV9S19490C27__9S19490C23[8]),  8,10},
  {&(_tg__ZTV9S19490C259S19490C27__A1__9S19490C23[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C259S19490C27__A1__9S19490C23[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C259S19490C27__A1__9S19490C23[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C259S19490C27__A1__9S19490C23[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C259S19490C27__A1__9S19490C23[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C259S19490C27__A1__9S19490C23[3]),  3,3},
  {&(_tg__ZTV8S19490C8__9S19490C27__9S19490C23[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C27__9S19490C23[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C27__9S19490C23[3]),  3,3},
  {&(_ZTV9S19490C23[28]),  28,47},
  {&(_ZTV9S19490C23[31]),  31,47},
  {&(_ZTV9S19490C23[36]),  36,47},
  {&(_ZTV9S19490C23[45]),  45,47},
  {&(_ZTV9S19490C23[13]),  13,47},
  {&(_ZTV9S19490C23[23]),  23,47},
  {&(_tg__ZTV12S19490C19_nt__9S19490C23[3]),  3,3},
  {&(_tg__ZTV8S19490C3__9S19490C23[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C23[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C17__9S19490C23[3]),  3,3},
  {&(_tg__ZTV9S19490C25__9S19490C23[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C25__9S19490C23[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C25__9S19490C23[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C25__9S19490C23[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C25__9S19490C23[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C25__9S19490C23[3]),  3,3},
  {&(_tg__ZTV8S19490C8__9S19490C23[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19490C23[];
extern  VTBL_ENTRY _ZTV9S19490C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C23[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19490C24D0Ev,_ZThn68_N9S19490C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19490C24D1Ev,_ZThn68_N9S19490C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19490C23D0Ev,_ZThn68_N9S19490C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19490C23D1Ev,_ZThn68_N9S19490C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19490C23 = {  "S19490C23", // class name
  bases_S19490C23, 30,
  &(vtc_S19490C23[0]), // expected_vtbl_contents
  &(vtt_S19490C23[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI9S19490C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19490C23),47, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C23),34, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19490C28  : S19490C11 , virtual S1538C28_nt , S19490C9 {
  ~S19490C28(); // tgen
  S19490C28(); // tgen
};
//SIG(-1 S19490C28) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S19490C28()
{
  extern Class_Descriptor cd_S19490C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19490C28, buf);
    S19490C28 *dp, &lv = *(dp=new (buf) S19490C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19490C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19490C28)");
    /*is_ambiguous_... S19490C28::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*), 0, "S19490C28");
    /*is_ambiguous_... S19490C28::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*), 0, "S19490C28");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(8,4), "S19490C28");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(8,4), "S19490C28");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(8,4), "S19490C28");
    check_base_class_offset(lv, (S19490C9*), ABISELECT(8,4), "S19490C28");
    test_class_info(&lv, &cd_S19490C28);
    dp->~S19490C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C28(Test_S19490C28, "S19490C28", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19490C28C1Ev();
extern void _ZN9S19490C28D1Ev();
Name_Map name_map_S19490C28[] = {
  NSPAIR(_ZN9S19490C28C1Ev),
  NSPAIR(_ZN9S19490C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
static Base_Class bases_S19490C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C28_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19490C28[];
static  VTBL_ENTRY vtc_S19490C28[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C28[0]),
};
extern VTBL_ENTRY _ZTV9S19490C28[];
static  VTT_ENTRY vtt_S19490C28[] = {
  {&(_ZTV9S19490C28[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C28[];
extern  VTBL_ENTRY _ZTV9S19490C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C28[];
Class_Descriptor cd_S19490C28 = {  "S19490C28", // class name
  bases_S19490C28, 6,
  &(vtc_S19490C28[0]), // expected_vtbl_contents
  &(vtt_S19490C28[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19490C28),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19490C28),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C28),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  S19490C13  : S19490C14 , S19490C21 , virtual S19490C23 , S19490C28 , virtual S19490C6_nt {
  __tsi64 s19490c13f0;
  virtual  ~S19490C13(); // _ZN9S19490C13D2Ev
  S19490C13(); // tgen
};
//SIG(-1 S19490C13) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ VBC6{ VBC3 Fp[2]} BC7{ m Fp} VBC8{ BC7 VBC3 VBC4} FC8} VBC9{ VBC10{ m} BC11{ BC7 BC4 BC3} BC12{ m} VBC13{ VBC3 Fi}} BC14{ VBC4} Fi Fc} BC15{ BC8 BC16{ VBC17{ VBC11 VBC12 BC4} BC7 BC3 vd FD Fi} BC18{ BC6} VBC14 vd Fc Fp} VBC19{ VBC13 BC20{ VBC6 VBC7 VBC9 VBC21{ m} VBC22{ BC16 VBC6 VBC13}} BC23{ m} BC24{ BC22 vd} vd Fi[2]} BC25{ BC4 VBC3 BC11} VBC26{ m} vd FL}


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

static void Test_S19490C13()
{
  extern Class_Descriptor cd_S19490C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,52)];
    init_test(&cd_S19490C13, buf);
    S19490C13 *dp, &lv = *(dp=new (buf) S19490C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,204), "sizeof(S19490C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C13)");
    /*is_ambiguous_... S19490C14::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C14*), 0, "S19490C13");
    /*is_ambiguous_... S19490C14::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C14*), 0, "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C16 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C16*), 0, "S19490C13");
    check_base_class_offset(lv, (S19490C11*)(S19490C20_nt*)(S19490C14*), 0, "S19490C13");
    check_base_class_offset(lv, (S19490C11*)(S19490C16*)(S19490C21*), 0, "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C20_nt */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C20_nt*), 0, "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C3 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), ABISELECT(192,108), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C16 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*), ABISELECT(192,108), "S19490C13");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), ABISELECT(192,108), "S19490C13");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*)(S19490C21*), ABISELECT(192,108), "S19490C13");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*)(S19490C2*)(S19490C21*), ABISELECT(192,108), "S19490C13");
    /*is_ambiguous_... S19490C28::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C28*), ABISELECT(192,108), "S19490C13");
    check_base_class_offset(lv, (S19490C3*)(S19490C15*), ABISELECT(168,96), "S19490C13");
    check_base_class_offset(lv, (S19490C3*)(S19490C24*)(S19490C23*), ABISELECT(168,96), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C3*)(S19490C25*), ABISELECT(168,96), "S19490C13");
    check_base_class_offset(lv, (S19490C3*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(168,96), "S19490C13");
    /*is_ambiguous_... S19490C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C15*), ABISELECT(144,84), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C16 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*), ABISELECT(200,112), "S19490C13");
    check_base_class_offset(lv, (S19490C16*)(S19490C15*), ABISELECT(192,108), "S19490C13");
    check_base_class_offset(lv, (S19490C15*)(S19490C14*), ABISELECT(136,80), "S19490C13");
    check_base_class_offset(lv, (S19490C18*)(S19490C17*), 0, "S19490C13");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C17*), ABISELECT(216,120), "S19490C13");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C17*), ABISELECT(216,120), "S19490C13");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C17*), ABISELECT(216,120), "S19490C13");
    check_base_class_offset(lv, (S19490C9*)(S19490C17*), ABISELECT(216,120), "S19490C13");
    check_base_class_offset(lv, (S19490C12*)(S19490C17*), ABISELECT(208,116), "S19490C13");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C17*), ABISELECT(224,124), "S19490C13");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C23*), ABISELECT(224,124), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*), ABISELECT(224,124), "S19490C13");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(224,124), "S19490C13");
    check_base_class_offset(lv, (S19490C17*)(S19490C14*), ABISELECT(208,116), "S19490C13");
    check_base_class_offset(lv, (S19490C17*)(S19490C24*)(S19490C23*), ABISELECT(208,116), "S19490C13");
    check_base_class_offset(lv, (S19490C20_nt*)(S19490C14*), 0, "S19490C13");
    check_base_class_offset(lv, (S19490C14*), 0, "S19490C13");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*)(S19490C21*), ABISELECT(24,16), "S19490C13");
    check_base_class_offset(lv, (S19490C16*)(S19490C21*), ABISELECT(16,12), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(240,132), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(240,132), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(240,132), "S19490C13");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(240,132), "S19490C13");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C13");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), ABISELECT(32,20), "S19490C13");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C21*), ABISELECT(32,20), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*), ABISELECT(32,20), "S19490C13");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(32,20), "S19490C13");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C21*), ABISELECT(40,24), "S19490C13");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C21*), ABISELECT(32,20), "S19490C13");
    check_base_class_offset(lv, (S19490C22*)(S19490C21*), ABISELECT(32,20), "S19490C13");
    check_base_class_offset(lv, (S19490C3*)(S19490C2*)(S19490C21*), ABISELECT(72,44), "S19490C13");
    check_base_class_offset(lv, (S19490C2*)(S19490C21*), ABISELECT(72,44), "S19490C13");
    check_base_class_offset(lv, (S19490C20_nt*)(S19490C21*), ABISELECT(248,136), "S19490C13");
    check_base_class_offset(lv, (S19490C21*), ABISELECT(16,12), "S19490C13");
    /*is_ambiguous_... S19490C24::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C24*)(S19490C23*), ABISELECT(320,176), "S19490C13");
    check_base_class_offset(lv, (S19490C7*)(S19490C24*)(S19490C23*), 0, "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*), ABISELECT(344,184), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C25 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*), ABISELECT(336,180), "S19490C13");
    /*is_ambiguous_... S19490C13::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C22*)(S19490C25*), ABISELECT(336,180), "S19490C13");
    check_base_class_offset(lv, (S19490C25*)(S19490C24*)(S19490C23*), ABISELECT(336,180), "S19490C13");
    check_base_class_offset(lv, (S19490C24*)(S19490C23*), ABISELECT(256,140), "S19490C13");
    check_base_class_offset(lv, (S19490C26*)(S19490C23*), ABISELECT(256,140), "S19490C13");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(280,148), "S19490C13");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(272,144), "S19490C13");
    check_base_class_offset(lv, (S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(272,144), "S19490C13");
    check_base_class_offset(lv, (S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(272,144), "S19490C13");
    check_base_class_offset(lv, (S19490C27*)(S19490C23*), ABISELECT(272,144), "S19490C13");
    check_base_class_offset(lv, (S19490C23*), ABISELECT(256,140), "S19490C13");
    /*is_ambiguous_... S19490C28::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C28*), ABISELECT(112,64), "S19490C13");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C28*), ABISELECT(120,68), "S19490C13");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C28*), ABISELECT(120,68), "S19490C13");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C28*), ABISELECT(120,68), "S19490C13");
    check_base_class_offset(lv, (S19490C9*)(S19490C28*), ABISELECT(120,68), "S19490C13");
    check_base_class_offset(lv, (S19490C28*), ABISELECT(112,64), "S19490C13");
    check_base_class_offset(lv, (S19490C6_nt*), 0, "S19490C13");
    check_field_offset(lv, s19490c13f0, ABISELECT(128,72), "S19490C13.s19490c13f0");
    test_class_info(&lv, &cd_S19490C13);
    dp->~S19490C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C13(Test_S19490C13, "S19490C13", ABISELECT(384,204));

#else // __cplusplus

extern void _ZN9S19490C13C1Ev();
extern void _ZN9S19490C13D2Ev();
Name_Map name_map_S19490C13[] = {
  NSPAIR(_ZN9S19490C13C1Ev),
  NSPAIR(_ZN9S19490C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
extern Class_Descriptor cd_S19490C15;
extern VTBL_ENTRY _ZTI9S19490C15[];
extern  VTBL_ENTRY _ZTV9S19490C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
extern Class_Descriptor cd_S19490C17;
extern VTBL_ENTRY _ZTI9S19490C17[];
extern  VTBL_ENTRY _ZTV9S19490C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C17[];
extern Class_Descriptor cd_S19490C20_nt;
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
extern Class_Descriptor cd_S19490C14;
extern VTBL_ENTRY _ZTI9S19490C14[];
extern  VTBL_ENTRY _ZTV9S19490C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C14[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C2;
extern VTBL_ENTRY _ZTI8S19490C2[];
extern  VTBL_ENTRY _ZTV8S19490C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C2[];
extern Class_Descriptor cd_S19490C20_nt;
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
extern Class_Descriptor cd_S19490C21;
extern VTBL_ENTRY _ZTI9S19490C21[];
extern  VTBL_ENTRY _ZTV9S19490C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C21[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
extern Class_Descriptor cd_S19490C24;
extern VTBL_ENTRY _ZTI9S19490C24[];
extern  VTBL_ENTRY _ZTV9S19490C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C24[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
extern Class_Descriptor cd_S19490C27;
extern VTBL_ENTRY _ZTI9S19490C27[];
extern  VTBL_ENTRY _ZTV9S19490C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C27[];
extern Class_Descriptor cd_S19490C23;
extern VTBL_ENTRY _ZTI9S19490C23[];
extern  VTBL_ENTRY _ZTV9S19490C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C23[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C28;
extern VTBL_ENTRY _ZTI9S19490C28[];
extern  VTBL_ENTRY _ZTV9S19490C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C28[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
static Base_Class bases_S19490C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1538C28_nt,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19490C3,    ABISELECT(168,96), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C16,    ABISELECT(192,108), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C15,    ABISELECT(136,80), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    12, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C19_nt,    ABISELECT(224,124), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C17,    ABISELECT(208,116), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C20_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19490C14,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_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
    19, //immediately_derived
  0, 0},
  {&cd_S19490C16,    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
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(240,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
    26, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19490C11,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19490C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    29, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    29, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C3,    ABISELECT(72,44), //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19490C2,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C20_nt,    ABISELECT(248,136), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19490C21,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(320,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    38, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    38, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19490C25,    ABISELECT(336,180), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19490C24,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    47, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    44, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    44, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19490C25,    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
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19490C27,    ABISELECT(272,144), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19490C23,    ABISELECT(256,140), //bcp->offset
    68, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    52, //immediately_derived
  0, 0},
  {&cd_S1538C28_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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C9,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19490C28,    ABISELECT(112,64), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19490C13[];
extern void _ZN9S19490C13D1Ev();
extern void _ZN9S19490C13D0Ev();
extern void ABISELECT(_ZThn16_N9S19490C13D1Ev,_ZThn12_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C13D0Ev,_ZThn12_N9S19490C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S19490C13D1Ev,_ZThn20_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19490C13D0Ev,_ZThn20_N9S19490C13D0Ev)();
extern void ABISELECT(_ZTv0_n112_N9S19490C13D1Ev,_ZTv0_n56_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19490C13D1Ev,_ZThn140_N9S19490C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S19490C13D0Ev,_ZTv0_n56_N9S19490C13D0Ev)();
extern void ABISELECT(_ZThn256_N9S19490C13D0Ev,_ZThn140_N9S19490C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N9S19490C13D1Ev,_ZTvn4_n56_N9S19490C13D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N9S19490C13D0Ev,_ZTvn4_n56_N9S19490C13D0Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19490C13D1Ev,_ZTv0_n36_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn336_N9S19490C13D1Ev,_ZThn180_N9S19490C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C13D0Ev,_ZTv0_n36_N9S19490C13D0Ev)();
extern void ABISELECT(_ZThn336_N9S19490C13D0Ev,_ZThn180_N9S19490C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19490C13[] = {
  0,
  ABISELECT(336,180),
  0,
  ABISELECT(320,176),
  ABISELECT(256,140),
  ABISELECT(248,136),
  0,
  ABISELECT(240,132),
  ABISELECT(32,20),
  ABISELECT(224,124),
  0,
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(168,96),
  ABISELECT(136,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&_ZN9S19490C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C13D0Ev,
  ABISELECT(232,124),
  ABISELECT(-16,-12),
  ABISELECT(224,120),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C13D1Ev,_ZThn12_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C13D0Ev,_ZThn12_N9S19490C13D0Ev),
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19490C13D1Ev,_ZThn20_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19490C13D0Ev,_ZThn20_N9S19490C13D0Ev),
  ABISELECT(120,64),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(80,44),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(24,12),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(-192,-108),
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  ABISELECT(-256,-140),
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19490C13D1Ev,_ZTv0_n56_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19490C13D0Ev,_ZTv0_n56_N9S19490C13D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19490C13D1Ev,_ZTvn4_n56_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19490C13D0Ev,_ZTvn4_n56_N9S19490C13D0Ev),
  ABISELECT(-336,-180),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C13D1Ev,_ZTv0_n36_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C13D0Ev,_ZTv0_n36_N9S19490C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19490C13[];
static  VTBL_ENTRY _tg__ZTV9S19490C14__9S19490C13[] = {
  ABISELECT(224,124),
  0,
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(168,96),
  ABISELECT(136,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt9S19490C14__9S19490C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C15__9S19490C14__9S19490C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C14__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C14__9S19490C13[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C14__9S19490C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C14__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
extern void _ZN9S19490C21D1Ev();
extern void _ZN9S19490C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C21__9S19490C13[] = {
  ABISELECT(232,124),
  ABISELECT(-16,-12),
  ABISELECT(224,120),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  (VTBL_ENTRY)&_ZN9S19490C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19490C169S19490C21__A1__9S19490C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C21__9S19490C13[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C29S19490C21__9S19490C13[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C38S19490C29S19490C21__A1__9S19490C13[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
extern void ABISELECT(_ZThn16_N9S19490C21D1Ev,_ZThn8_N9S19490C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C21D0Ev,_ZThn8_N9S19490C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C22__9S19490C21__9S19490C13[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C21D1Ev,_ZThn8_N9S19490C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C21D0Ev,_ZThn8_N9S19490C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C2__9S19490C21__9S19490C13[] = {
  ABISELECT(120,64),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__9S19490C21__9S19490C13[] = {
  ABISELECT(-248,-136),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C28__9S19490C13[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C28[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C15__9S19490C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C15__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C15__9S19490C13[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C13[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C13[] = {
  ABISELECT(-192,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C17__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C13[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__A1__9S19490C13[] = {
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
extern void _ZN9S19490C23D1Ev();
extern void _ZN9S19490C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C23__9S19490C13[] = {
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&_ZN9S19490C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C23D0Ev,
};
extern void _ZN9S19490C24D1Ev();
extern void _ZN9S19490C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C249S19490C23__9S19490C13[] = {
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&_ZN9S19490C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C249S19490C23__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C249S19490C23__9S19490C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C249S19490C23__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
extern void ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19490C24D1Ev,_ZThn40_N9S19490C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19490C24D0Ev,_ZThn40_N9S19490C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C249S19490C23__9S19490C13[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C249S19490C23__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
extern void _ZN9S19490C27D1Ev();
extern void _ZN9S19490C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C279S19490C23__9S19490C13[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
  (VTBL_ENTRY)&_ZN9S19490C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C27D0Ev,
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C259S19490C279S19490C23__A1__9S19490C13[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C259S19490C279S19490C23__A2__9S19490C13[] = {
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C259S19490C279S19490C23__A2__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C259S19490C279S19490C23__A1__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C259S19490C279S19490C23__A1__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C259S19490C279S19490C23__A1__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C279S19490C23__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C279S19490C23__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C279S19490C23__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C23__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C23__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C23__9S19490C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
extern void ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S19490C23D1Ev,_ZThn40_N9S19490C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S19490C23D0Ev,_ZThn40_N9S19490C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C23__9S19490C13[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C23__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
extern void ABISELECT(_ZThn16_N9S19490C23D1Ev,_ZThn4_N9S19490C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C23D0Ev,_ZThn4_N9S19490C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C27__9S19490C23__9S19490C13[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C23D1Ev,_ZThn4_N9S19490C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C23D0Ev,_ZThn4_N9S19490C23D0Ev),
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C13[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C25__A1__9S19490C13[] = {
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C25__A1__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C25__9S19490C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C25__9S19490C13[] = {
  ABISELECT(24,12),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C25__9S19490C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTT_ENTRY vtt_S19490C13[] = {
  {&(_ZTV9S19490C13[19]),  19,105},
  {&(_tg__ZTV9S19490C14__9S19490C13[10]),  10,10},
  {&(_tg__ZTV12S19490C20_nt9S19490C14__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C15__9S19490C14__9S19490C13[6]),  6,6},
  {&(_tg__ZTV8S19490C3__9S19490C14__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C14__9S19490C13[4]),  4,4},
  {&(_tg__ZTV9S19490C17__9S19490C14__9S19490C13[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C14__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C21__9S19490C13[8]),  8,10},
  {&(_tg__ZTV9S19490C169S19490C21__A1__9S19490C13[4]),  4,4},
  {&(_tg__ZTV9S19490C229S19490C21__9S19490C13[5]),  5,7},
  {&(_tg__ZTV9S19490C229S19490C21__9S19490C13[5]),  5,7},
  {&(_tg__ZTV8S19490C29S19490C21__9S19490C13[3]),  3,3},
  {&(_tg__ZTV8S19490C38S19490C29S19490C21__A1__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C22__9S19490C21__9S19490C13[5]),  5,7},
  {&(_tg__ZTV9S19490C22__9S19490C21__9S19490C13[5]),  5,7},
  {&(_tg__ZTV8S19490C2__9S19490C21__9S19490C13[3]),  3,3},
  {&(_tg__ZTV12S19490C20_nt__9S19490C21__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C28__9S19490C13[3]),  3,3},
  {&(_ZTV9S19490C13[50]),  50,105},
  {&(_ZTV9S19490C13[53]),  53,105},
  {&(_ZTV9S19490C13[57]),  57,105},
  {&(_ZTV9S19490C13[62]),  62,105},
  {&(_ZTV9S19490C13[65]),  65,105},
  {&(_ZTV9S19490C13[29]),  29,105},
  {&(_ZTV9S19490C13[36]),  36,105},
  {&(_ZTV9S19490C13[36]),  36,105},
  {&(_ZTV9S19490C13[41]),  41,105},
  {&(_ZTV9S19490C13[68]),  68,105},
  {&(_ZTV9S19490C13[82]),  82,105},
  {&(_ZTV9S19490C13[103]),  103,105},
  {&(_ZTV9S19490C13[92]),  92,105},
  {&(_ZTV9S19490C13[44]),  44,105},
  {&(_tg__ZTV9S19490C15__9S19490C13[6]),  6,6},
  {&(_tg__ZTV8S19490C3__9S19490C15__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C15__9S19490C13[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C13[4]),  4,4},
  {&(_tg__ZTV9S19490C17__9S19490C13[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C17__9S19490C13[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C13[3]),  3,3},
  {&(_tg__ZTV8S19490C8__9S19490C13[4]),  4,4},
  {&(_tg__ZTV12S19490C20_nt__A1__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C23__9S19490C13[13]),  13,15},
  {&(_tg__ZTV9S19490C249S19490C23__9S19490C13[13]),  13,15},
  {&(_tg__ZTV8S19490C3__9S19490C249S19490C23__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C249S19490C23__9S19490C13[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C249S19490C23__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C25__9S19490C249S19490C23__9S19490C13[9]),  9,11},
  {&(_tg__ZTV8S19490C8__9S19490C249S19490C23__9S19490C13[4]),  4,4},
  {&(_tg__ZTV9S19490C279S19490C23__9S19490C13[8]),  8,10},
  {&(_tg__ZTV9S19490C259S19490C279S19490C23__A1__9S19490C13[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C259S19490C279S19490C23__A2__9S19490C13[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C259S19490C279S19490C23__A2__9S19490C13[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C259S19490C279S19490C23__A1__9S19490C13[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C259S19490C279S19490C23__A1__9S19490C13[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C259S19490C279S19490C23__A1__9S19490C13[3]),  3,3},
  {&(_tg__ZTV8S19490C8__9S19490C279S19490C23__9S19490C13[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C279S19490C23__9S19490C13[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C279S19490C23__9S19490C13[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C23__9S19490C13[3]),  3,3},
  {&(_tg__ZTV8S19490C3__9S19490C23__9S19490C13[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C23__9S19490C13[5]),  5,5},
  {&(_tg__ZTV9S19490C25__9S19490C23__9S19490C13[9]),  9,11},
  {&(_tg__ZTV8S19490C8__9S19490C23__9S19490C13[4]),  4,4},
  {&(_tg__ZTV9S19490C27__9S19490C23__9S19490C13[8]),  8,10},
  {&(_tg__ZTV9S19490C25__9S19490C13[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C25__A1__9S19490C13[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C25__A1__9S19490C13[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C25__9S19490C13[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C25__9S19490C13[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C25__9S19490C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19490C13[];
extern  VTBL_ENTRY _ZTV9S19490C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C13[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C23D0Ev,_ZThn40_N9S19490C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C23D1Ev,_ZThn40_N9S19490C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C24D0Ev,_ZThn40_N9S19490C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C24D1Ev,_ZThn40_N9S19490C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C13D0Ev,_ZTv0_n36_N9S19490C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19490C13D0Ev,_ZThn180_N9S19490C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C13D1Ev,_ZTv0_n36_N9S19490C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19490C13D1Ev,_ZThn180_N9S19490C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19490C13D0Ev,_ZTv0_n56_N9S19490C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19490C13D0Ev,_ZThn140_N9S19490C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19490C13D1Ev,_ZTv0_n56_N9S19490C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19490C13D1Ev,_ZThn140_N9S19490C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19490C13 = {  "S19490C13", // class name
  bases_S19490C13, 55,
  &(vtc_S19490C13[0]), // expected_vtbl_contents
  &(vtt_S19490C13[0]), // expected_vtt_contents
  ABISELECT(384,204), // object size
  NSPAIRA(_ZTI9S19490C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19490C13),105, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19490C13),72, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19490C1  : virtual S19490C2 , virtual S19490C5 , virtual S19490C13 {
  virtual  ~S19490C1(); // _ZN8S19490C1D2Ev
  S19490C1(); // tgen
};
//SIG(1 S19490C1) C1{ VBC2{ BC3{ VBC4{ m} Fp[2]}} VBC5{ VBC6{ m} BC7{ m} VBC8{ VBC9{ BC10{ m Fp} BC11{ m} BC4} VBC12{ m} BC11} vd v1 FL[5]} VBC13{ BC14{ BC4 VBC11 VBC15{ VBC3 BC10 VBC16{ BC10 VBC4 VBC11} FC16} VBC17{ VBC18{ m} BC9 BC12 VBC19{ VBC4 Fi}} BC20{ VBC11} Fi Fc} BC21{ BC16 BC22{ VBC8 BC10 BC4 vd FD Fi} BC2 VBC20 vd Fc Fp} VBC23{ VBC19 BC24{ VBC3 VBC10 VBC17 VBC7 VBC25{ BC22 VBC3 VBC19}} BC26{ m} BC27{ BC25 vd} vd Fi[2]} BC28{ BC11 VBC4 BC9} VBC6 vd FL} vd}


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

static void Test_S19490C1()
{
  extern Class_Descriptor cd_S19490C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,66)];
    init_test(&cd_S19490C1, buf);
    S19490C1 *dp, &lv = *(dp=new (buf) S19490C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,260), "sizeof(S19490C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19490C1)");
    /*is_ambiguous_... S19490C1::S19490C2 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*)(S19490C2*), 0, "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C3 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*), 0, "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C16 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*), 0, "S19490C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C19_nt*), 0, "S19490C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C16*)(S19490C21*)(S19490C13*), 0, "S19490C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C3*)(S19490C2*)(S19490C21*)(S19490C13*), 0, "S19490C1");
    /*is_ambiguous_... S19490C28::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C28*)(S19490C13*), 0, "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C2 */ AMB_check_base_class_offset(lv, (S19490C3*)(S19490C2*), ABISELECT(8,4), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C2 */ AMB_check_base_class_offset(lv, (S19490C2*), ABISELECT(8,4), "S19490C1");
    check_base_class_offset(lv, (S19490C6_nt*)(S19490C5*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C6_nt*)(S19490C13*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C7*)(S19490C5*), ABISELECT(32,16), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*), ABISELECT(80,60), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C9 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C9*), ABISELECT(80,60), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C9 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*), ABISELECT(80,60), "S19490C1");
    check_base_class_offset(lv, (S19490C9*)(S19490C8*), ABISELECT(80,60), "S19490C1");
    check_base_class_offset(lv, (S19490C12*)(S19490C8*), 0, "S19490C1");
    /*is_ambiguous_... S19490C8::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C8*), ABISELECT(32,16), "S19490C1");
    check_base_class_offset(lv, (S19490C8*)(S19490C5*), ABISELECT(32,16), "S19490C1");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C21*)(S19490C13*), ABISELECT(32,16), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*), ABISELECT(32,16), "S19490C1");
    check_base_class_offset(lv, (S19490C8*)(S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(32,16), "S19490C1");
    check_base_class_offset(lv, (S19490C5*), ABISELECT(32,16), "S19490C1");
    /*is_ambiguous_... S19490C14::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C14*)(S19490C13*), ABISELECT(96,64), "S19490C1");
    /*is_ambiguous_... S19490C14::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C14*)(S19490C13*), 0, "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C16 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C16*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C11*)(S19490C20_nt*)(S19490C14*)(S19490C13*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C11*)(S19490C16*)(S19490C21*)(S19490C13*), 0, "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C20_nt */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C20_nt*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C3*)(S19490C15*), ABISELECT(264,160), "S19490C1");
    check_base_class_offset(lv, (S19490C3*)(S19490C24*)(S19490C23*), ABISELECT(264,160), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C3*)(S19490C25*), ABISELECT(264,160), "S19490C1");
    check_base_class_offset(lv, (S19490C3*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(264,160), "S19490C1");
    /*is_ambiguous_... S19490C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C15*), ABISELECT(240,148), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C16 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*), ABISELECT(296,176), "S19490C1");
    check_base_class_offset(lv, (S19490C16*)(S19490C15*), ABISELECT(288,172), "S19490C1");
    check_base_class_offset(lv, (S19490C15*)(S19490C14*)(S19490C13*), ABISELECT(232,144), "S19490C1");
    check_base_class_offset(lv, (S19490C18*)(S19490C17*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C17*), ABISELECT(312,184), "S19490C1");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C17*), ABISELECT(312,184), "S19490C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C17*), ABISELECT(312,184), "S19490C1");
    check_base_class_offset(lv, (S19490C9*)(S19490C17*), ABISELECT(312,184), "S19490C1");
    check_base_class_offset(lv, (S19490C12*)(S19490C17*), ABISELECT(304,180), "S19490C1");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C17*), ABISELECT(320,188), "S19490C1");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C23*), ABISELECT(320,188), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*), ABISELECT(320,188), "S19490C1");
    check_base_class_offset(lv, (S19490C19_nt*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(320,188), "S19490C1");
    check_base_class_offset(lv, (S19490C17*)(S19490C14*)(S19490C13*), ABISELECT(304,180), "S19490C1");
    check_base_class_offset(lv, (S19490C17*)(S19490C24*)(S19490C23*), ABISELECT(304,180), "S19490C1");
    check_base_class_offset(lv, (S19490C20_nt*)(S19490C14*)(S19490C13*), ABISELECT(96,64), "S19490C1");
    check_base_class_offset(lv, (S19490C14*)(S19490C13*), ABISELECT(96,64), "S19490C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C16*)(S19490C21*)(S19490C13*), ABISELECT(120,80), "S19490C1");
    check_base_class_offset(lv, (S19490C16*)(S19490C21*)(S19490C13*), ABISELECT(112,76), "S19490C1");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C21*)(S19490C13*), ABISELECT(136,88), "S19490C1");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C21*)(S19490C13*), ABISELECT(128,84), "S19490C1");
    check_base_class_offset(lv, (S19490C22*)(S19490C21*)(S19490C13*), ABISELECT(128,84), "S19490C1");
    check_base_class_offset(lv, (S19490C3*)(S19490C2*)(S19490C21*)(S19490C13*), ABISELECT(168,108), "S19490C1");
    check_base_class_offset(lv, (S19490C2*)(S19490C21*)(S19490C13*), ABISELECT(168,108), "S19490C1");
    check_base_class_offset(lv, (S19490C20_nt*)(S19490C21*)(S19490C13*), 0, "S19490C1");
    check_base_class_offset(lv, (S19490C21*)(S19490C13*), ABISELECT(112,76), "S19490C1");
    /*is_ambiguous_... S19490C24::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C24*)(S19490C23*), ABISELECT(400,232), "S19490C1");
    check_base_class_offset(lv, (S19490C7*)(S19490C24*)(S19490C23*), 0, "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*), ABISELECT(424,240), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C25 */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*), ABISELECT(416,236), "S19490C1");
    /*is_ambiguous_... S19490C1::S19490C25 */ AMB_check_base_class_offset(lv, (S19490C22*)(S19490C25*), ABISELECT(416,236), "S19490C1");
    check_base_class_offset(lv, (S19490C25*)(S19490C24*)(S19490C23*), ABISELECT(416,236), "S19490C1");
    check_base_class_offset(lv, (S19490C24*)(S19490C23*), ABISELECT(336,196), "S19490C1");
    check_base_class_offset(lv, (S19490C26*)(S19490C23*), ABISELECT(336,196), "S19490C1");
    /*is_ambiguous_... S19490C22::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(360,204), "S19490C1");
    /*is_ambiguous_... S19490C22::S1538C28_nt */ AMB_check_base_class_offset(lv, (S1538C28_nt*)(S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(352,200), "S19490C1");
    check_base_class_offset(lv, (S19490C22*)(S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(352,200), "S19490C1");
    check_base_class_offset(lv, (S19490C25*)(S19490C27*)(S19490C23*), ABISELECT(352,200), "S19490C1");
    check_base_class_offset(lv, (S19490C27*)(S19490C23*), ABISELECT(352,200), "S19490C1");
    check_base_class_offset(lv, (S19490C23*)(S19490C13*), ABISELECT(336,196), "S19490C1");
    /*is_ambiguous_... S19490C28::S19490C11 */ AMB_check_base_class_offset(lv, (S19490C11*)(S19490C28*)(S19490C13*), ABISELECT(208,128), "S19490C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19490C9*)(S19490C28*)(S19490C13*), ABISELECT(216,132), "S19490C1");
    check_base_class_offset(lv, (S19490C11*)(S19490C9*)(S19490C28*)(S19490C13*), ABISELECT(216,132), "S19490C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S19490C9*)(S19490C28*)(S19490C13*), ABISELECT(216,132), "S19490C1");
    check_base_class_offset(lv, (S19490C9*)(S19490C28*)(S19490C13*), ABISELECT(216,132), "S19490C1");
    check_base_class_offset(lv, (S19490C28*)(S19490C13*), ABISELECT(208,128), "S19490C1");
    check_base_class_offset(lv, (S19490C13*), ABISELECT(96,64), "S19490C1");
    test_class_info(&lv, &cd_S19490C1);
    dp->~S19490C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19490C1(Test_S19490C1, "S19490C1", ABISELECT(464,260));

#else // __cplusplus

extern void _ZN8S19490C1C1Ev();
extern void _ZN8S19490C1D2Ev();
Name_Map name_map_S19490C1[] = {
  NSPAIR(_ZN8S19490C1C1Ev),
  NSPAIR(_ZN8S19490C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C2;
extern VTBL_ENTRY _ZTI8S19490C2[];
extern  VTBL_ENTRY _ZTV8S19490C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C2[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C8;
extern VTBL_ENTRY _ZTI8S19490C8[];
extern  VTBL_ENTRY _ZTV8S19490C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C8[];
extern Class_Descriptor cd_S19490C5;
extern VTBL_ENTRY _ZTI8S19490C5[];
extern  VTBL_ENTRY _ZTV8S19490C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C5[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
extern Class_Descriptor cd_S19490C15;
extern VTBL_ENTRY _ZTI9S19490C15[];
extern  VTBL_ENTRY _ZTV9S19490C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C19_nt;
extern VTBL_ENTRY _ZTI12S19490C19_nt[];
extern  VTBL_ENTRY _ZTV12S19490C19_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C19_nt[];
extern Class_Descriptor cd_S19490C17;
extern VTBL_ENTRY _ZTI9S19490C17[];
extern  VTBL_ENTRY _ZTV9S19490C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C17[];
extern Class_Descriptor cd_S19490C20_nt;
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
extern Class_Descriptor cd_S19490C14;
extern VTBL_ENTRY _ZTI9S19490C14[];
extern  VTBL_ENTRY _ZTV9S19490C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C14[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C16;
extern VTBL_ENTRY _ZTI9S19490C16[];
extern  VTBL_ENTRY _ZTV9S19490C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C3;
extern VTBL_ENTRY _ZTI8S19490C3[];
extern  VTBL_ENTRY _ZTV8S19490C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C3[];
extern Class_Descriptor cd_S19490C2;
extern VTBL_ENTRY _ZTI8S19490C2[];
extern  VTBL_ENTRY _ZTV8S19490C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C2[];
extern Class_Descriptor cd_S19490C20_nt;
extern VTBL_ENTRY _ZTI12S19490C20_nt[];
extern  VTBL_ENTRY _ZTV12S19490C20_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19490C20_nt[];
extern Class_Descriptor cd_S19490C21;
extern VTBL_ENTRY _ZTI9S19490C21[];
extern  VTBL_ENTRY _ZTV9S19490C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C21[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
extern Class_Descriptor cd_S19490C24;
extern VTBL_ENTRY _ZTI9S19490C24[];
extern  VTBL_ENTRY _ZTV9S19490C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C24[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C22;
extern VTBL_ENTRY _ZTI9S19490C22[];
extern  VTBL_ENTRY _ZTV9S19490C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C22[];
extern Class_Descriptor cd_S19490C25;
extern VTBL_ENTRY _ZTI9S19490C25[];
extern  VTBL_ENTRY _ZTV9S19490C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C25[];
extern Class_Descriptor cd_S19490C27;
extern VTBL_ENTRY _ZTI9S19490C27[];
extern  VTBL_ENTRY _ZTV9S19490C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C27[];
extern Class_Descriptor cd_S19490C23;
extern VTBL_ENTRY _ZTI9S19490C23[];
extern  VTBL_ENTRY _ZTV9S19490C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C23[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19490C9;
extern VTBL_ENTRY _ZTI8S19490C9[];
extern Class_Descriptor cd_S19490C28;
extern VTBL_ENTRY _ZTI9S19490C28[];
extern  VTBL_ENTRY _ZTV9S19490C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C28[];
extern Class_Descriptor cd_S19490C13;
extern VTBL_ENTRY _ZTI9S19490C13[];
extern  VTBL_ENTRY _ZTV9S19490C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19490C13[];
static Base_Class bases_S19490C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C3,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19490C2,    ABISELECT(8,4), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19490C7,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19490C11,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19490C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19490C5,    ABISELECT(32,16), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C28_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C3,    ABISELECT(264,160), //bcp->offset
    89, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(296,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
    18, //immediately_derived
  0, 0},
  {&cd_S19490C16,    ABISELECT(288,172), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19490C15,    ABISELECT(232,144), //bcp->offset
    83, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(312,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
    24, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(312,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
    24, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(312,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
    24, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(312,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
    27, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(304,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
    27, //immediately_derived
  0, 0},
  {&cd_S19490C19_nt,    ABISELECT(320,188), //bcp->offset
    101, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19490C17,    ABISELECT(304,180), //bcp->offset
    96, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19490C20_nt,    ABISELECT(96,64), //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
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19490C14,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19490C16,    ABISELECT(112,76), //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
    20, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(128,84), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19490C3,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19490C2,    ABISELECT(168,108), //bcp->offset
    77, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19490C20_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19490C21,    ABISELECT(112,76), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(400,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
    45, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(424,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
    43, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(416,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
    43, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(416,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19490C25,    ABISELECT(416,236), //bcp->offset
    130, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19490C24,    ABISELECT(336,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(336,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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(360,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
    49, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(352,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
    49, //immediately_derived
  0, 0},
  {&cd_S19490C22,    ABISELECT(352,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19490C25,    ABISELECT(352,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19490C27,    ABISELECT(352,200), //bcp->offset
    120, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19490C23,    ABISELECT(336,196), //bcp->offset
    104, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S19490C11,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19490C9,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19490C28,    ABISELECT(208,128), //bcp->offset
    80, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19490C13,    ABISELECT(96,64), //bcp->offset
    38, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19490C1[];
extern void _ZN8S19490C1D1Ev();
extern void _ZN8S19490C1D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S19490C1D1Ev,_ZTv0_n28_N8S19490C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19490C1D1Ev,_ZThn16_N8S19490C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19490C1D0Ev,_ZTv0_n28_N8S19490C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19490C1D0Ev,_ZThn16_N8S19490C1D0Ev)() __attribute__((weak));
extern void _ZN8S19490C52v1Ev();
extern void ABISELECT(_ZTv0_n160_N8S19490C1D1Ev,_ZTv0_n80_N8S19490C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19490C1D1Ev,_ZThn64_N8S19490C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S19490C1D0Ev,_ZTv0_n80_N8S19490C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19490C1D0Ev,_ZThn64_N8S19490C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n160_N8S19490C1D1Ev,_ZTvn12_n80_N8S19490C1D1Ev)();
extern void ABISELECT(_ZTvn16_n160_N8S19490C1D0Ev,_ZTvn12_n80_N8S19490C1D0Ev)();
extern void ABISELECT(_ZTvn32_n160_N8S19490C1D1Ev,_ZTvn20_n80_N8S19490C1D1Ev)();
extern void ABISELECT(_ZTvn32_n160_N8S19490C1D0Ev,_ZTvn20_n80_N8S19490C1D0Ev)();
extern void ABISELECT(_ZTv0_n112_N8S19490C1D1Ev,_ZTv0_n56_N8S19490C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19490C1D1Ev,_ZThn196_N8S19490C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19490C1D0Ev,_ZTv0_n56_N8S19490C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19490C1D0Ev,_ZThn196_N8S19490C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N8S19490C1D1Ev,_ZTvn4_n56_N8S19490C1D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N8S19490C1D0Ev,_ZTvn4_n56_N8S19490C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19490C1D1Ev,_ZTv0_n36_N8S19490C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S19490C1D1Ev,_ZThn236_N8S19490C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19490C1D0Ev,_ZTv0_n36_N8S19490C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S19490C1D0Ev,_ZThn236_N8S19490C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19490C1[] = {
  ABISELECT(416,236),
  0,
  ABISELECT(400,232),
  ABISELECT(336,196),
  0,
  ABISELECT(320,188),
  0,
  ABISELECT(304,180),
  ABISELECT(288,172),
  ABISELECT(264,160),
  ABISELECT(232,144),
  ABISELECT(96,64),
  0,
  ABISELECT(80,60),
  ABISELECT(32,16),
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&_ZN8S19490C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19490C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  0,
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19490C1D1Ev,_ZTv0_n28_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19490C1D0Ev,_ZTv0_n28_N8S19490C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19490C52v1Ev,
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  ABISELECT(320,172),
  ABISELECT(-96,-64),
  ABISELECT(304,168),
  ABISELECT(240,132),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  ABISELECT(-16,-4),
  ABISELECT(-64,-48),
  ABISELECT(224,124),
  ABISELECT(-96,-64),
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(-96,-64),
  ABISELECT(168,96),
  ABISELECT(136,80),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S19490C1D1Ev,_ZTv0_n80_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S19490C1D0Ev,_ZTv0_n80_N8S19490C1D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-32,-16),
  ABISELECT(-80,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N8S19490C1D1Ev,_ZTvn12_n80_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N8S19490C1D0Ev,_ZTvn12_n80_N8S19490C1D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-128,-84),
  ABISELECT(-48,-24),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n160_N8S19490C1D1Ev,_ZTvn20_n80_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n160_N8S19490C1D0Ev,_ZTvn20_n80_N8S19490C1D0Ev),
  ABISELECT(-168,-108),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-232,-144),
  ABISELECT(56,28),
  ABISELECT(-232,-144),
  ABISELECT(32,16),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-264,-160),
  ABISELECT(-264,-160),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-304,-180),
  ABISELECT(16,8),
  ABISELECT(-304,-180),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  ABISELECT(-336,-196),
  ABISELECT(-304,-180),
  ABISELECT(80,40),
  ABISELECT(-336,-196),
  ABISELECT(-16,-8),
  ABISELECT(-336,-196),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  ABISELECT(-336,-196),
  ABISELECT(-72,-36),
  ABISELECT(-336,-196),
  ABISELECT(-256,-136),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19490C1D1Ev,_ZTv0_n56_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19490C1D0Ev,_ZTv0_n56_N8S19490C1D0Ev),
  ABISELECT(-32,-12),
  ABISELECT(-352,-200),
  ABISELECT(-88,-40),
  ABISELECT(-320,-184),
  ABISELECT(-352,-200),
  ABISELECT(-272,-140),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19490C1D1Ev,_ZTvn4_n56_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19490C1D0Ev,_ZTvn4_n56_N8S19490C1D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-96,-48),
  ABISELECT(-416,-236),
  ABISELECT(-152,-76),
  ABISELECT(-384,-220),
  ABISELECT(-416,-236),
  ABISELECT(-336,-176),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI8S19490C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19490C1D1Ev,_ZTv0_n36_N8S19490C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19490C1D0Ev,_ZTv0_n36_N8S19490C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19490C1[];
static  VTBL_ENTRY _tg__ZTV8S19490C2__8S19490C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C38S19490C2__8S19490C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
extern void _ZN8S19490C5D1Ev();
extern void _ZN8S19490C5D0Ev();
extern void _ZN8S19490C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19490C5__8S19490C1[] = {
  0,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C5[0]),
  (VTBL_ENTRY)&_ZN8S19490C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19490C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19490C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C8[0]),
};
extern void _ZN9S19490C13D1Ev();
extern void _ZN9S19490C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C13__8S19490C1[] = {
  ABISELECT(-96,-64),
  ABISELECT(320,172),
  ABISELECT(-96,-64),
  ABISELECT(304,168),
  ABISELECT(240,132),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  ABISELECT(-16,-4),
  ABISELECT(-64,-48),
  ABISELECT(224,124),
  ABISELECT(-96,-64),
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(-96,-64),
  ABISELECT(168,96),
  ABISELECT(136,80),
  ABISELECT(-96,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&_ZN9S19490C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(224,124),
  ABISELECT(-96,-64),
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(-96,-64),
  ABISELECT(168,96),
  ABISELECT(136,80),
  ABISELECT(-96,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(-96,-64),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C15__9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(-232,-144),
  ABISELECT(56,28),
  ABISELECT(-232,-144),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(16,8),
  ABISELECT(-304,-180),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C149S19490C13__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S19490C14[0]),
};
extern void _ZN9S19490C21D1Ev();
extern void _ZN9S19490C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C219S19490C13__8S19490C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-32,-16),
  ABISELECT(-80,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  (VTBL_ENTRY)&_ZN9S19490C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19490C169S19490C219S19490C13__A1__8S19490C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C219S19490C13__8S19490C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-128,-84),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C219S19490C13__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C29S19490C219S19490C13__A1__8S19490C1[] = {
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C38S19490C29S19490C219S19490C13__A2__8S19490C1[] = {
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
extern void ABISELECT(_ZThn16_N9S19490C21D1Ev,_ZThn8_N9S19490C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C21D0Ev,_ZThn8_N9S19490C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C22__9S19490C219S19490C13__8S19490C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-128,-84),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C21D1Ev,_ZThn8_N9S19490C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C21D0Ev,_ZThn8_N9S19490C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C219S19490C13__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C2__9S19490C219S19490C13__8S19490C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__9S19490C219S19490C13__8S19490C1[] = {
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI9S19490C21[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C289S19490C13__8S19490C1[] = {
  ABISELECT(-208,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C28[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C15__9S19490C13__8S19490C1[] = {
  ABISELECT(-232,-144),
  ABISELECT(56,28),
  ABISELECT(-232,-144),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C13__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C13__8S19490C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C13__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(16,8),
  ABISELECT(-304,-180),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C13__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
extern void ABISELECT(_ZThn16_N9S19490C13D1Ev,_ZThn12_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C13D0Ev,_ZThn12_N9S19490C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C21__9S19490C13__8S19490C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-32,-16),
  ABISELECT(-80,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C13D1Ev,_ZThn12_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C13D0Ev,_ZThn12_N9S19490C13D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19490C13D1Ev,_ZThn20_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19490C13D0Ev,_ZThn20_N9S19490C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C21__9S19490C13__8S19490C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-128,-84),
  ABISELECT(-48,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19490C13D1Ev,_ZThn20_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19490C13D0Ev,_ZThn20_N9S19490C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C13__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C29S19490C21__9S19490C13__8S19490C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__A1__9S19490C13__8S19490C1[] = {
  0,
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
extern void ABISELECT(_ZTv0_n112_N9S19490C13D1Ev,_ZTv0_n56_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn240_N9S19490C13D1Ev,_ZThn132_N9S19490C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S19490C13D0Ev,_ZTv0_n56_N9S19490C13D0Ev)();
extern void ABISELECT(_ZThn240_N9S19490C13D0Ev,_ZThn132_N9S19490C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C23__9S19490C13__8S19490C1[] = {
  ABISELECT(-240,-132),
  ABISELECT(-304,-180),
  ABISELECT(80,40),
  ABISELECT(-336,-196),
  ABISELECT(-16,-8),
  ABISELECT(-336,-196),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  ABISELECT(-336,-196),
  ABISELECT(-72,-36),
  ABISELECT(-336,-196),
  ABISELECT(-256,-136),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19490C13D1Ev,_ZTv0_n56_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19490C13D0Ev,_ZTv0_n56_N9S19490C13D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N9S19490C13D1Ev,_ZTv0_n36_N9S19490C13D1Ev)();
extern void ABISELECT(_ZThn320_N9S19490C13D1Ev,_ZThn172_N9S19490C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C13D0Ev,_ZTv0_n36_N9S19490C13D0Ev)();
extern void ABISELECT(_ZThn320_N9S19490C13D0Ev,_ZThn172_N9S19490C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C13__8S19490C1[] = {
  ABISELECT(-320,-172),
  ABISELECT(-96,-48),
  ABISELECT(-416,-236),
  ABISELECT(-152,-76),
  ABISELECT(-384,-220),
  ABISELECT(-416,-236),
  ABISELECT(-336,-176),
  ABISELECT(-320,-172),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C13D1Ev,_ZTv0_n36_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C13D0Ev,_ZTv0_n36_N9S19490C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n112_N9S19490C13D1Ev,_ZTvn4_n56_N9S19490C13D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N9S19490C13D0Ev,_ZTvn4_n56_N9S19490C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C279S19490C23__9S19490C13__8S19490C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-352,-200),
  ABISELECT(-88,-40),
  ABISELECT(-320,-184),
  ABISELECT(-352,-200),
  ABISELECT(-272,-140),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19490C13D1Ev,_ZTvn4_n56_N9S19490C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19490C13D0Ev,_ZTvn4_n56_N9S19490C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19490C28__9S19490C13__8S19490C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19490C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C15__8S19490C1[] = {
  ABISELECT(-232,-144),
  ABISELECT(56,28),
  ABISELECT(-232,-144),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C15__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__9S19490C15__8S19490C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19490C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__A1__8S19490C1[] = {
  ABISELECT(-264,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19490C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C16__8S19490C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(16,8),
  ABISELECT(-304,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C17__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19490C17[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__8S19490C1[] = {
  ABISELECT(-320,-188),
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C19_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C20_nt__A1__8S19490C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19490C20_nt[0]),
};
extern void _ZN9S19490C23D1Ev();
extern void _ZN9S19490C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C23__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(80,40),
  ABISELECT(-336,-196),
  ABISELECT(-16,-8),
  ABISELECT(-336,-196),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  ABISELECT(-336,-196),
  ABISELECT(-72,-36),
  ABISELECT(-336,-196),
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&_ZN9S19490C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C23D0Ev,
};
extern void _ZN9S19490C24D1Ev();
extern void _ZN9S19490C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C249S19490C23__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(80,40),
  ABISELECT(-336,-196),
  ABISELECT(-16,-8),
  ABISELECT(-336,-196),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  ABISELECT(-336,-196),
  ABISELECT(-72,-36),
  ABISELECT(-336,-196),
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&_ZN9S19490C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C249S19490C23__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C249S19490C23__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(16,8),
  ABISELECT(-304,-180),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C249S19490C23__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
extern void ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S19490C24D1Ev,_ZThn40_N9S19490C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S19490C24D0Ev,_ZThn40_N9S19490C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C249S19490C23__8S19490C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-416,-236),
  ABISELECT(-152,-76),
  ABISELECT(-384,-220),
  ABISELECT(-416,-236),
  ABISELECT(-336,-176),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C249S19490C23__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(304,180),
  (VTBL_ENTRY)&(_ZTI9S19490C24[0]),
};
extern void _ZN9S19490C27D1Ev();
extern void _ZN9S19490C27D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C279S19490C23__8S19490C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-352,-200),
  ABISELECT(-88,-40),
  ABISELECT(-320,-184),
  ABISELECT(-352,-200),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
  (VTBL_ENTRY)&_ZN9S19490C27D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C27D0Ev,
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C259S19490C279S19490C23__A1__8S19490C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-352,-200),
  ABISELECT(-88,-40),
  ABISELECT(-320,-184),
  ABISELECT(-352,-200),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C259S19490C279S19490C23__A2__8S19490C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-352,-200),
  ABISELECT(-272,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C259S19490C279S19490C23__A2__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C259S19490C279S19490C23__A1__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C259S19490C279S19490C23__A1__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(88,40),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C259S19490C279S19490C23__A1__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C279S19490C23__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C279S19490C23__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(88,40),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C279S19490C23__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S19490C27[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C23__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C23__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19490C17__9S19490C23__8S19490C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(16,8),
  ABISELECT(-304,-180),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
extern void ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S19490C23D1Ev,_ZThn40_N9S19490C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S19490C23D0Ev,_ZThn40_N9S19490C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19490C25__9S19490C23__8S19490C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-416,-236),
  ABISELECT(-152,-76),
  ABISELECT(-384,-220),
  ABISELECT(-416,-236),
  ABISELECT(-336,-176),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C23__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(304,180),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
};
extern void ABISELECT(_ZThn16_N9S19490C23D1Ev,_ZThn4_N9S19490C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S19490C23D0Ev,_ZThn4_N9S19490C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19490C27__9S19490C23__8S19490C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-352,-200),
  ABISELECT(-88,-40),
  ABISELECT(-320,-184),
  ABISELECT(-352,-200),
  ABISELECT(-272,-140),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19490C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C23D1Ev,_ZThn4_N9S19490C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19490C23D0Ev,_ZThn4_N9S19490C23D0Ev),
};
extern void _ZN9S19490C25D1Ev();
extern void _ZN9S19490C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C25__8S19490C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-416,-236),
  ABISELECT(-152,-76),
  ABISELECT(-384,-220),
  ABISELECT(-416,-236),
  ABISELECT(-336,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
  (VTBL_ENTRY)&_ZN9S19490C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C25D0Ev,
};
extern void _ZN9S19490C22D1Ev();
extern void _ZN9S19490C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19490C229S19490C25__A1__8S19490C1[] = {
  ABISELECT(-384,-220),
  ABISELECT(-416,-236),
  ABISELECT(-336,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
  (VTBL_ENTRY)&_ZN9S19490C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19490C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C229S19490C25__A1__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S19490C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C8__9S19490C25__8S19490C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,44),
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19490C3__9S19490C25__8S19490C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19490C19_nt__9S19490C25__8S19490C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19490C25[0]),
};
static  VTT_ENTRY vtt_S19490C1[] = {
  {&(_ZTV8S19490C1[22]),  22,141},
  {&(_ZTV8S19490C1[27]),  27,141},
  {&(_ZTV8S19490C1[35]),  35,141},
  {&(_ZTV8S19490C1[35]),  35,141},
  {&(_ZTV8S19490C1[58]),  58,141},
  {&(_ZTV8S19490C1[89]),  89,141},
  {&(_ZTV8S19490C1[92]),  92,141},
  {&(_ZTV8S19490C1[96]),  96,141},
  {&(_ZTV8S19490C1[101]),  101,141},
  {&(_ZTV8S19490C1[104]),  104,141},
  {&(_ZTV8S19490C1[68]),  68,141},
  {&(_ZTV8S19490C1[75]),  75,141},
  {&(_ZTV8S19490C1[80]),  80,141},
  {&(_ZTV8S19490C1[22]),  22,141},
  {&(_ZTV8S19490C1[118]),  118,141},
  {&(_ZTV8S19490C1[139]),  139,141},
  {&(_ZTV8S19490C1[128]),  128,141},
  {&(_ZTV8S19490C1[83]),  83,141},
  {&(_tg__ZTV8S19490C2__8S19490C1[3]),  3,3},
  {&(_tg__ZTV8S19490C38S19490C2__8S19490C1[3]),  3,3},
  {&(_tg__ZTV8S19490C5__8S19490C1[6]),  6,9},
  {&(_tg__ZTV8S19490C5__8S19490C1[6]),  6,9},
  {&(_tg__ZTV8S19490C8__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C13__8S19490C1[19]),  19,21},
  {&(_tg__ZTV9S19490C149S19490C13__8S19490C1[10]),  10,10},
  {&(_tg__ZTV12S19490C20_nt9S19490C149S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C15__9S19490C149S19490C13__8S19490C1[6]),  6,6},
  {&(_tg__ZTV8S19490C3__9S19490C149S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C149S19490C13__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C17__9S19490C149S19490C13__8S19490C1[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C149S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C219S19490C13__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C169S19490C219S19490C13__A1__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C229S19490C219S19490C13__8S19490C1[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C219S19490C13__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C29S19490C219S19490C13__A1__8S19490C1[3]),  3,3},
  {&(_tg__ZTV8S19490C38S19490C29S19490C219S19490C13__A2__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C22__9S19490C219S19490C13__8S19490C1[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C219S19490C13__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C2__9S19490C219S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C20_nt__9S19490C219S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C289S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C15__9S19490C13__8S19490C1[6]),  6,6},
  {&(_tg__ZTV8S19490C3__9S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C13__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C17__9S19490C13__8S19490C1[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C21__9S19490C13__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C21__9S19490C13__8S19490C1[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C13__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C29S19490C21__9S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C20_nt__A1__9S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C23__9S19490C13__8S19490C1[14]),  14,16},
  {&(_tg__ZTV9S19490C25__9S19490C13__8S19490C1[9]),  9,11},
  {&(_tg__ZTV9S19490C279S19490C23__9S19490C13__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C28__9S19490C13__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C15__8S19490C1[6]),  6,6},
  {&(_tg__ZTV8S19490C3__9S19490C15__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C16__9S19490C15__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C3__A1__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C16__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C17__8S19490C1[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C17__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C20_nt__A1__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C23__8S19490C1[13]),  13,15},
  {&(_tg__ZTV9S19490C249S19490C23__8S19490C1[13]),  13,15},
  {&(_tg__ZTV8S19490C3__9S19490C249S19490C23__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C249S19490C23__8S19490C1[5]),  5,5},
  {&(_tg__ZTV12S19490C19_nt__9S19490C249S19490C23__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C25__9S19490C249S19490C23__8S19490C1[9]),  9,11},
  {&(_tg__ZTV8S19490C8__9S19490C249S19490C23__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C279S19490C23__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C259S19490C279S19490C23__A1__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C259S19490C279S19490C23__A2__8S19490C1[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C259S19490C279S19490C23__A2__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C259S19490C279S19490C23__A1__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C259S19490C279S19490C23__A1__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C259S19490C279S19490C23__A1__8S19490C1[3]),  3,3},
  {&(_tg__ZTV8S19490C8__9S19490C279S19490C23__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C279S19490C23__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C279S19490C23__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C23__8S19490C1[3]),  3,3},
  {&(_tg__ZTV8S19490C3__9S19490C23__8S19490C1[3]),  3,3},
  {&(_tg__ZTV9S19490C17__9S19490C23__8S19490C1[5]),  5,5},
  {&(_tg__ZTV9S19490C25__9S19490C23__8S19490C1[9]),  9,11},
  {&(_tg__ZTV8S19490C8__9S19490C23__8S19490C1[4]),  4,4},
  {&(_tg__ZTV9S19490C27__9S19490C23__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C25__8S19490C1[8]),  8,10},
  {&(_tg__ZTV9S19490C229S19490C25__A1__8S19490C1[5]),  5,7},
  {&(_tg__ZTV8S19490C8__9S19490C229S19490C25__A1__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C8__9S19490C25__8S19490C1[4]),  4,4},
  {&(_tg__ZTV8S19490C3__9S19490C25__8S19490C1[3]),  3,3},
  {&(_tg__ZTV12S19490C19_nt__9S19490C25__8S19490C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19490C1[];
extern  VTBL_ENTRY _ZTV8S19490C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19490C1[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C23D0Ev,_ZTv0_n36_N9S19490C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C23D0Ev,_ZThn40_N9S19490C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C23D1Ev,_ZTv0_n36_N9S19490C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C23D1Ev,_ZThn40_N9S19490C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D0Ev,_ZTv0_n36_N9S19490C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C24D0Ev,_ZThn40_N9S19490C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C24D1Ev,_ZTv0_n36_N9S19490C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19490C24D1Ev,_ZThn40_N9S19490C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C13D0Ev,_ZTv0_n36_N9S19490C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19490C13D0Ev,_ZThn172_N9S19490C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19490C13D1Ev,_ZTv0_n36_N9S19490C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19490C13D1Ev,_ZThn172_N9S19490C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19490C13D0Ev,_ZTv0_n56_N9S19490C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19490C13D0Ev,_ZThn132_N9S19490C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19490C13D1Ev,_ZTv0_n56_N9S19490C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19490C13D1Ev,_ZThn132_N9S19490C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19490C1D0Ev,_ZTv0_n36_N8S19490C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19490C1D0Ev,_ZThn236_N8S19490C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19490C1D1Ev,_ZTv0_n36_N8S19490C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19490C1D1Ev,_ZThn236_N8S19490C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19490C1D0Ev,_ZTv0_n56_N8S19490C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19490C1D0Ev,_ZThn196_N8S19490C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19490C1D1Ev,_ZTv0_n56_N8S19490C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19490C1D1Ev,_ZThn196_N8S19490C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S19490C1D0Ev,_ZTv0_n80_N8S19490C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19490C1D0Ev,_ZThn64_N8S19490C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S19490C1D1Ev,_ZTv0_n80_N8S19490C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19490C1D1Ev,_ZThn64_N8S19490C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19490C1D0Ev,_ZTv0_n28_N8S19490C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19490C1D0Ev,_ZThn16_N8S19490C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19490C1D1Ev,_ZTv0_n28_N8S19490C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19490C1D1Ev,_ZThn16_N8S19490C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19490C1 = {  "S19490C1", // class name
  bases_S19490C1, 60,
  &(vtc_S19490C1[0]), // expected_vtbl_contents
  &(vtt_S19490C1[0]), // expected_vtt_contents
  ABISELECT(464,260), // object size
  NSPAIRA(_ZTI8S19490C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19490C1),141, //virtual function table var
  22, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19490C1),94, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7060C2  {
  int s7060c2f0;
  __tsi64 s7060c2f1;
  void *s7060c2f2[4];
  int s7060c2f3[2];
  void *s7060c2f4;
  ::S1538C5_nt s7060c2f5;
  void *s7060c2f6[2];
  virtual  ~S7060C2(); // _ZN7S7060C2D1Ev
  virtual void  v6(); // _ZN7S7060C22v6Ev
  virtual void  v7(); // _ZN7S7060C22v7Ev
  virtual void  v8(); // _ZN7S7060C22v8Ev
  virtual void  v9(); // _ZN7S7060C22v9Ev
  virtual void  v10(); // _ZN7S7060C23v10Ev
  virtual void  v11(); // _ZN7S7060C23v11Ev
  virtual void  v12(); // _ZN7S7060C23v12Ev
  virtual void  v13(); // _ZN7S7060C23v13Ev
  virtual void  v14(); // _ZN7S7060C23v14Ev
  virtual void  v15(); // _ZN7S7060C23v15Ev
  virtual void  v16(); // _ZN7S7060C23v16Ev
  virtual void  v17(); // _ZN7S7060C23v17Ev
  virtual void  v18(); // _ZN7S7060C23v18Ev
  virtual void  v19(); // _ZN7S7060C23v19Ev
  virtual void  v20(); // _ZN7S7060C23v20Ev
  virtual void  v21(); // _ZN7S7060C23v21Ev
  virtual void  v22(); // _ZN7S7060C23v22Ev
  virtual void  v23(); // _ZN7S7060C23v23Ev
  virtual void  v24(); // _ZN7S7060C23v24Ev
  virtual void  v25(); // _ZN7S7060C23v25Ev
  virtual void  v26(); // _ZN7S7060C23v26Ev
  virtual void  v27(); // _ZN7S7060C23v27Ev
  virtual void  v28(); // _ZN7S7060C23v28Ev
  virtual void  v29(); // _ZN7S7060C23v29Ev
  virtual void  v30(); // _ZN7S7060C23v30Ev
  virtual void  v31(); // _ZN7S7060C23v31Ev
  virtual void  v32(); // _ZN7S7060C23v32Ev
  virtual void  v33(); // _ZN7S7060C23v33Ev
  virtual void  v34(); // _ZN7S7060C23v34Ev
  virtual void  v35(); // _ZN7S7060C23v35Ev
  virtual void  v36(); // _ZN7S7060C23v36Ev
  virtual void  v37(); // _ZN7S7060C23v37Ev
  virtual void  v38(); // _ZN7S7060C23v38Ev
  virtual void  v39(); // _ZN7S7060C23v39Ev
  virtual void  v40(); // _ZN7S7060C23v40Ev
  virtual void  v41(); // _ZN7S7060C23v41Ev
  virtual void  v42(); // _ZN7S7060C23v42Ev
  virtual void  v43(); // _ZN7S7060C23v43Ev
  virtual void  v44(); // _ZN7S7060C23v44Ev
  virtual void  v45(); // _ZN7S7060C23v45Ev
  virtual void  v46(); // _ZN7S7060C23v46Ev
  virtual void  v47(); // _ZN7S7060C23v47Ev
  virtual void  v48(); // _ZN7S7060C23v48Ev
  virtual void  v49(); // _ZN7S7060C23v49Ev
  virtual void  v50(); // _ZN7S7060C23v50Ev
  virtual void  v51(); // _ZN7S7060C23v51Ev
  virtual void  v52(); // _ZN7S7060C23v52Ev
  virtual void  v53(); // _ZN7S7060C23v53Ev
  virtual void  v54(); // _ZN7S7060C23v54Ev
  virtual void  v55(); // _ZN7S7060C23v55Ev
  virtual void  v56(); // _ZN7S7060C23v56Ev
  virtual void  v57(); // _ZN7S7060C23v57Ev
  virtual void  v58(); // _ZN7S7060C23v58Ev
  virtual void  v59(); // _ZN7S7060C23v59Ev
  virtual void  v60(); // _ZN7S7060C23v60Ev
  virtual void  v61(); // _ZN7S7060C23v61Ev
  virtual void  v62(); // _ZN7S7060C23v62Ev
  virtual void  v63(); // _ZN7S7060C23v63Ev
  virtual void  v64(); // _ZN7S7060C23v64Ev
  virtual void  v65(); // _ZN7S7060C23v65Ev
  virtual void  v66(); // _ZN7S7060C23v66Ev
  virtual void  v67(); // _ZN7S7060C23v67Ev
  virtual void  v68(); // _ZN7S7060C23v68Ev
  virtual void  v69(); // _ZN7S7060C23v69Ev
  S7060C2(); // tgen
};
//SIG(-1 S7060C2) 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]}


 S7060C2 ::~S7060C2(){ note_dtor("S7060C2", this);}
void  S7060C2 ::v6(){vfunc_called(this, "_ZN7S7060C22v6Ev");}
void  S7060C2 ::v7(){vfunc_called(this, "_ZN7S7060C22v7Ev");}
void  S7060C2 ::v8(){vfunc_called(this, "_ZN7S7060C22v8Ev");}
void  S7060C2 ::v9(){vfunc_called(this, "_ZN7S7060C22v9Ev");}
void  S7060C2 ::v10(){vfunc_called(this, "_ZN7S7060C23v10Ev");}
void  S7060C2 ::v11(){vfunc_called(this, "_ZN7S7060C23v11Ev");}
void  S7060C2 ::v12(){vfunc_called(this, "_ZN7S7060C23v12Ev");}
void  S7060C2 ::v13(){vfunc_called(this, "_ZN7S7060C23v13Ev");}
void  S7060C2 ::v14(){vfunc_called(this, "_ZN7S7060C23v14Ev");}
void  S7060C2 ::v15(){vfunc_called(this, "_ZN7S7060C23v15Ev");}
void  S7060C2 ::v16(){vfunc_called(this, "_ZN7S7060C23v16Ev");}
void  S7060C2 ::v17(){vfunc_called(this, "_ZN7S7060C23v17Ev");}
void  S7060C2 ::v18(){vfunc_called(this, "_ZN7S7060C23v18Ev");}
void  S7060C2 ::v19(){vfunc_called(this, "_ZN7S7060C23v19Ev");}
void  S7060C2 ::v20(){vfunc_called(this, "_ZN7S7060C23v20Ev");}
void  S7060C2 ::v21(){vfunc_called(this, "_ZN7S7060C23v21Ev");}
void  S7060C2 ::v22(){vfunc_called(this, "_ZN7S7060C23v22Ev");}
void  S7060C2 ::v23(){vfunc_called(this, "_ZN7S7060C23v23Ev");}
void  S7060C2 ::v24(){vfunc_called(this, "_ZN7S7060C23v24Ev");}
void  S7060C2 ::v25(){vfunc_called(this, "_ZN7S7060C23v25Ev");}
void  S7060C2 ::v26(){vfunc_called(this, "_ZN7S7060C23v26Ev");}
void  S7060C2 ::v27(){vfunc_called(this, "_ZN7S7060C23v27Ev");}
void  S7060C2 ::v28(){vfunc_called(this, "_ZN7S7060C23v28Ev");}
void  S7060C2 ::v29(){vfunc_called(this, "_ZN7S7060C23v29Ev");}
void  S7060C2 ::v30(){vfunc_called(this, "_ZN7S7060C23v30Ev");}
void  S7060C2 ::v31(){vfunc_called(this, "_ZN7S7060C23v31Ev");}
void  S7060C2 ::v32(){vfunc_called(this, "_ZN7S7060C23v32Ev");}
void  S7060C2 ::v33(){vfunc_called(this, "_ZN7S7060C23v33Ev");}
void  S7060C2 ::v34(){vfunc_called(this, "_ZN7S7060C23v34Ev");}
void  S7060C2 ::v35(){vfunc_called(this, "_ZN7S7060C23v35Ev");}
void  S7060C2 ::v36(){vfunc_called(this, "_ZN7S7060C23v36Ev");}
void  S7060C2 ::v37(){vfunc_called(this, "_ZN7S7060C23v37Ev");}
void  S7060C2 ::v38(){vfunc_called(this, "_ZN7S7060C23v38Ev");}
void  S7060C2 ::v39(){vfunc_called(this, "_ZN7S7060C23v39Ev");}
void  S7060C2 ::v40(){vfunc_called(this, "_ZN7S7060C23v40Ev");}
void  S7060C2 ::v41(){vfunc_called(this, "_ZN7S7060C23v41Ev");}
void  S7060C2 ::v42(){vfunc_called(this, "_ZN7S7060C23v42Ev");}
void  S7060C2 ::v43(){vfunc_called(this, "_ZN7S7060C23v43Ev");}
void  S7060C2 ::v44(){vfunc_called(this, "_ZN7S7060C23v44Ev");}
void  S7060C2 ::v45(){vfunc_called(this, "_ZN7S7060C23v45Ev");}
void  S7060C2 ::v46(){vfunc_called(this, "_ZN7S7060C23v46Ev");}
void  S7060C2 ::v47(){vfunc_called(this, "_ZN7S7060C23v47Ev");}
void  S7060C2 ::v48(){vfunc_called(this, "_ZN7S7060C23v48Ev");}
void  S7060C2 ::v49(){vfunc_called(this, "_ZN7S7060C23v49Ev");}
void  S7060C2 ::v50(){vfunc_called(this, "_ZN7S7060C23v50Ev");}
void  S7060C2 ::v51(){vfunc_called(this, "_ZN7S7060C23v51Ev");}
void  S7060C2 ::v52(){vfunc_called(this, "_ZN7S7060C23v52Ev");}
void  S7060C2 ::v53(){vfunc_called(this, "_ZN7S7060C23v53Ev");}
void  S7060C2 ::v54(){vfunc_called(this, "_ZN7S7060C23v54Ev");}
void  S7060C2 ::v55(){vfunc_called(this, "_ZN7S7060C23v55Ev");}
void  S7060C2 ::v56(){vfunc_called(this, "_ZN7S7060C23v56Ev");}
void  S7060C2 ::v57(){vfunc_called(this, "_ZN7S7060C23v57Ev");}
void  S7060C2 ::v58(){vfunc_called(this, "_ZN7S7060C23v58Ev");}
void  S7060C2 ::v59(){vfunc_called(this, "_ZN7S7060C23v59Ev");}
void  S7060C2 ::v60(){vfunc_called(this, "_ZN7S7060C23v60Ev");}
void  S7060C2 ::v61(){vfunc_called(this, "_ZN7S7060C23v61Ev");}
void  S7060C2 ::v62(){vfunc_called(this, "_ZN7S7060C23v62Ev");}
void  S7060C2 ::v63(){vfunc_called(this, "_ZN7S7060C23v63Ev");}
void  S7060C2 ::v64(){vfunc_called(this, "_ZN7S7060C23v64Ev");}
void  S7060C2 ::v65(){vfunc_called(this, "_ZN7S7060C23v65Ev");}
void  S7060C2 ::v66(){vfunc_called(this, "_ZN7S7060C23v66Ev");}
void  S7060C2 ::v67(){vfunc_called(this, "_ZN7S7060C23v67Ev");}
void  S7060C2 ::v68(){vfunc_called(this, "_ZN7S7060C23v68Ev");}
void  S7060C2 ::v69(){vfunc_called(this, "_ZN7S7060C23v69Ev");}
S7060C2 ::S7060C2(){ note_ctor("S7060C2", this);} // tgen

static void Test_S7060C2()
{
  extern Class_Descriptor cd_S7060C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S7060C2, buf);
    S7060C2 *dp, &lv = *(dp=new (buf) S7060C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S7060C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7060C2)");
    check_field_offset(lv, s7060c2f0, ABISELECT(8,4), "S7060C2.s7060c2f0");
    check_field_offset(lv, s7060c2f1, ABISELECT(16,8), "S7060C2.s7060c2f1");
    check_field_offset(lv, s7060c2f2, ABISELECT(24,16), "S7060C2.s7060c2f2");
    check_field_offset(lv, s7060c2f3, ABISELECT(56,32), "S7060C2.s7060c2f3");
    check_field_offset(lv, s7060c2f4, ABISELECT(64,40), "S7060C2.s7060c2f4");
    check_field_offset(lv, s7060c2f5, ABISELECT(72,44), "S7060C2.s7060c2f5");
    check_field_offset(lv, s7060c2f6, ABISELECT(80,52), "S7060C2.s7060c2f6");
    test_class_info(&lv, &cd_S7060C2);
    dp->~S7060C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7060C2(Test_S7060C2, "S7060C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S7060C2C1Ev();
extern void _ZN7S7060C2D1Ev();
Name_Map name_map_S7060C2[] = {
  NSPAIR(_ZN7S7060C2C1Ev),
  NSPAIR(_ZN7S7060C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7060C2[];
extern void _ZN7S7060C2D1Ev();
extern void _ZN7S7060C2D0Ev();
extern void _ZN7S7060C22v6Ev();
extern void _ZN7S7060C22v7Ev();
extern void _ZN7S7060C22v8Ev();
extern void _ZN7S7060C22v9Ev();
extern void _ZN7S7060C23v10Ev();
extern void _ZN7S7060C23v11Ev();
extern void _ZN7S7060C23v12Ev();
extern void _ZN7S7060C23v13Ev();
extern void _ZN7S7060C23v14Ev();
extern void _ZN7S7060C23v15Ev();
extern void _ZN7S7060C23v16Ev();
extern void _ZN7S7060C23v17Ev();
extern void _ZN7S7060C23v18Ev();
extern void _ZN7S7060C23v19Ev();
extern void _ZN7S7060C23v20Ev();
extern void _ZN7S7060C23v21Ev();
extern void _ZN7S7060C23v22Ev();
extern void _ZN7S7060C23v23Ev();
extern void _ZN7S7060C23v24Ev();
extern void _ZN7S7060C23v25Ev();
extern void _ZN7S7060C23v26Ev();
extern void _ZN7S7060C23v27Ev();
extern void _ZN7S7060C23v28Ev();
extern void _ZN7S7060C23v29Ev();
extern void _ZN7S7060C23v30Ev();
extern void _ZN7S7060C23v31Ev();
extern void _ZN7S7060C23v32Ev();
extern void _ZN7S7060C23v33Ev();
extern void _ZN7S7060C23v34Ev();
extern void _ZN7S7060C23v35Ev();
extern void _ZN7S7060C23v36Ev();
extern void _ZN7S7060C23v37Ev();
extern void _ZN7S7060C23v38Ev();
extern void _ZN7S7060C23v39Ev();
extern void _ZN7S7060C23v40Ev();
extern void _ZN7S7060C23v41Ev();
extern void _ZN7S7060C23v42Ev();
extern void _ZN7S7060C23v43Ev();
extern void _ZN7S7060C23v44Ev();
extern void _ZN7S7060C23v45Ev();
extern void _ZN7S7060C23v46Ev();
extern void _ZN7S7060C23v47Ev();
extern void _ZN7S7060C23v48Ev();
extern void _ZN7S7060C23v49Ev();
extern void _ZN7S7060C23v50Ev();
extern void _ZN7S7060C23v51Ev();
extern void _ZN7S7060C23v52Ev();
extern void _ZN7S7060C23v53Ev();
extern void _ZN7S7060C23v54Ev();
extern void _ZN7S7060C23v55Ev();
extern void _ZN7S7060C23v56Ev();
extern void _ZN7S7060C23v57Ev();
extern void _ZN7S7060C23v58Ev();
extern void _ZN7S7060C23v59Ev();
extern void _ZN7S7060C23v60Ev();
extern void _ZN7S7060C23v61Ev();
extern void _ZN7S7060C23v62Ev();
extern void _ZN7S7060C23v63Ev();
extern void _ZN7S7060C23v64Ev();
extern void _ZN7S7060C23v65Ev();
extern void _ZN7S7060C23v66Ev();
extern void _ZN7S7060C23v67Ev();
extern void _ZN7S7060C23v68Ev();
extern void _ZN7S7060C23v69Ev();
static  VTBL_ENTRY vtc_S7060C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7060C2[0]),
  (VTBL_ENTRY)&_ZN7S7060C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7060C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v28Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v29Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v30Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v31Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v32Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v33Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v34Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v37Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v38Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v39Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v40Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v41Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v42Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v43Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v44Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v45Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v50Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v51Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v52Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v53Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v54Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v55Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v56Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v57Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v58Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v59Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v60Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v61Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v62Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v63Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v64Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v65Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v66Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v67Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v68Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v69Ev,
};
extern VTBL_ENTRY _ZTI7S7060C2[];
extern  VTBL_ENTRY _ZTV7S7060C2[];
Class_Descriptor cd_S7060C2 = {  "S7060C2", // class name
  0,0,//no base classes
  &(vtc_S7060C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S7060C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7060C2),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  S7060C1  : S7060C2 {
  unsigned int s7060c1f0:1;
  ::S1538C30 s7060c1f1;
  ::S1538C22 s7060c1f2;
  ::S1538C18 s7060c1f3;
  ::S1538C30 s7060c1f4;
  ::S1538C5_nt s7060c1f5;
  virtual  ~S7060C1(); // _ZN7S7060C1D1Ev
  virtual void  v1(); // _ZN7S7060C12v1Ev
  virtual void  v2(); // _ZN7S7060C12v2Ev
  virtual void  v3(); // _ZN7S7060C12v3Ev
  virtual void  v4(); // _ZN7S7060C12v4Ev
  virtual void  v5(); // _ZN7S7060C12v5Ev
  S7060C1(); // tgen
};
//SIG(1 S7060C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 Fi:1 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC7{ BC8{ BC6}} FC9{ BC10{ BC6}} FC4 FC3}


 S7060C1 ::~S7060C1(){ note_dtor("S7060C1", this);}
void  S7060C1 ::v1(){vfunc_called(this, "_ZN7S7060C12v1Ev");}
void  S7060C1 ::v2(){vfunc_called(this, "_ZN7S7060C12v2Ev");}
void  S7060C1 ::v3(){vfunc_called(this, "_ZN7S7060C12v3Ev");}
void  S7060C1 ::v4(){vfunc_called(this, "_ZN7S7060C12v4Ev");}
void  S7060C1 ::v5(){vfunc_called(this, "_ZN7S7060C12v5Ev");}
S7060C1 ::S7060C1(){ note_ctor("S7060C1", this);} // tgen

static void Test_S7060C1()
{
  extern Class_Descriptor cd_S7060C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,31)];
    init_test(&cd_S7060C1, buf);
    S7060C1 *dp, &lv = *(dp=new (buf) S7060C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,120), "sizeof(S7060C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7060C1)");
    check_base_class_offset(lv, (S7060C2*), 0, "S7060C1");
    set_bf_and_test(lv, s7060c1f0, ABISELECT(96,60), 0, 1, 1, "S7060C1");
    check_field_offset(lv, s7060c1f1, ABISELECT(104,64), "S7060C1.s7060c1f1");
    check_field_offset(lv, s7060c1f2, ABISELECT(120,76), "S7060C1.s7060c1f2");
    check_field_offset(lv, s7060c1f3, ABISELECT(136,88), "S7060C1.s7060c1f3");
    check_field_offset(lv, s7060c1f4, ABISELECT(152,100), "S7060C1.s7060c1f4");
    check_field_offset(lv, s7060c1f5, ABISELECT(168,112), "S7060C1.s7060c1f5");
    test_class_info(&lv, &cd_S7060C1);
    dp->~S7060C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7060C1(Test_S7060C1, "S7060C1", ABISELECT(176,120));

#else // __cplusplus

extern void _ZN7S7060C1C1Ev();
extern void _ZN7S7060C1D1Ev();
Name_Map name_map_S7060C1[] = {
  NSPAIR(_ZN7S7060C1C1Ev),
  NSPAIR(_ZN7S7060C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7060C2;
extern VTBL_ENTRY _ZTI7S7060C2[];
extern  VTBL_ENTRY _ZTV7S7060C2[];
static Base_Class bases_S7060C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7060C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7060C1[];
extern void _ZN7S7060C1D1Ev();
extern void _ZN7S7060C1D0Ev();
extern void _ZN7S7060C22v6Ev();
extern void _ZN7S7060C22v7Ev();
extern void _ZN7S7060C22v8Ev();
extern void _ZN7S7060C22v9Ev();
extern void _ZN7S7060C23v10Ev();
extern void _ZN7S7060C23v11Ev();
extern void _ZN7S7060C23v12Ev();
extern void _ZN7S7060C23v13Ev();
extern void _ZN7S7060C23v14Ev();
extern void _ZN7S7060C23v15Ev();
extern void _ZN7S7060C23v16Ev();
extern void _ZN7S7060C23v17Ev();
extern void _ZN7S7060C23v18Ev();
extern void _ZN7S7060C23v19Ev();
extern void _ZN7S7060C23v20Ev();
extern void _ZN7S7060C23v21Ev();
extern void _ZN7S7060C23v22Ev();
extern void _ZN7S7060C23v23Ev();
extern void _ZN7S7060C23v24Ev();
extern void _ZN7S7060C23v25Ev();
extern void _ZN7S7060C23v26Ev();
extern void _ZN7S7060C23v27Ev();
extern void _ZN7S7060C23v28Ev();
extern void _ZN7S7060C23v29Ev();
extern void _ZN7S7060C23v30Ev();
extern void _ZN7S7060C23v31Ev();
extern void _ZN7S7060C23v32Ev();
extern void _ZN7S7060C23v33Ev();
extern void _ZN7S7060C23v34Ev();
extern void _ZN7S7060C23v35Ev();
extern void _ZN7S7060C23v36Ev();
extern void _ZN7S7060C23v37Ev();
extern void _ZN7S7060C23v38Ev();
extern void _ZN7S7060C23v39Ev();
extern void _ZN7S7060C23v40Ev();
extern void _ZN7S7060C23v41Ev();
extern void _ZN7S7060C23v42Ev();
extern void _ZN7S7060C23v43Ev();
extern void _ZN7S7060C23v44Ev();
extern void _ZN7S7060C23v45Ev();
extern void _ZN7S7060C23v46Ev();
extern void _ZN7S7060C23v47Ev();
extern void _ZN7S7060C23v48Ev();
extern void _ZN7S7060C23v49Ev();
extern void _ZN7S7060C23v50Ev();
extern void _ZN7S7060C23v51Ev();
extern void _ZN7S7060C23v52Ev();
extern void _ZN7S7060C23v53Ev();
extern void _ZN7S7060C23v54Ev();
extern void _ZN7S7060C23v55Ev();
extern void _ZN7S7060C23v56Ev();
extern void _ZN7S7060C23v57Ev();
extern void _ZN7S7060C23v58Ev();
extern void _ZN7S7060C23v59Ev();
extern void _ZN7S7060C23v60Ev();
extern void _ZN7S7060C23v61Ev();
extern void _ZN7S7060C23v62Ev();
extern void _ZN7S7060C23v63Ev();
extern void _ZN7S7060C23v64Ev();
extern void _ZN7S7060C23v65Ev();
extern void _ZN7S7060C23v66Ev();
extern void _ZN7S7060C23v67Ev();
extern void _ZN7S7060C23v68Ev();
extern void _ZN7S7060C23v69Ev();
extern void _ZN7S7060C12v1Ev();
extern void _ZN7S7060C12v2Ev();
extern void _ZN7S7060C12v3Ev();
extern void _ZN7S7060C12v4Ev();
extern void _ZN7S7060C12v5Ev();
static  VTBL_ENTRY vtc_S7060C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7060C1[0]),
  (VTBL_ENTRY)&_ZN7S7060C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7060C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7060C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v28Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v29Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v30Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v31Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v32Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v33Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v34Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v37Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v38Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v39Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v40Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v41Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v42Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v43Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v44Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v45Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v50Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v51Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v52Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v53Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v54Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v55Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v56Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v57Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v58Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v59Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v60Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v61Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v62Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v63Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v64Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v65Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v66Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v67Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v68Ev,
  (VTBL_ENTRY)&_ZN7S7060C23v69Ev,
  (VTBL_ENTRY)&_ZN7S7060C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7060C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7060C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7060C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7060C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7060C1[];
extern  VTBL_ENTRY _ZTV7S7060C1[];
Class_Descriptor cd_S7060C1 = {  "S7060C1", // class name
  bases_S7060C1, 1,
  &(vtc_S7060C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI7S7060C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7060C1),73, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3233C3  {
  int s3233c3f0;
  __tsi64 s3233c3f1;
  void *s3233c3f2[4];
  int s3233c3f3[2];
  void *s3233c3f4;
  ::S1538C5_nt s3233c3f5;
  void *s3233c3f6[2];
  virtual  ~S3233C3(); // _ZN7S3233C3D1Ev
  virtual void  v4(); // _ZN7S3233C32v4Ev
  virtual void  v5(); // _ZN7S3233C32v5Ev
  virtual void  v6(); // _ZN7S3233C32v6Ev
  virtual void  v7(); // _ZN7S3233C32v7Ev
  virtual void  v8(); // _ZN7S3233C32v8Ev
  virtual void  v9(); // _ZN7S3233C32v9Ev
  virtual void  v10(); // _ZN7S3233C33v10Ev
  virtual void  v11(); // _ZN7S3233C33v11Ev
  virtual void  v12(); // _ZN7S3233C33v12Ev
  virtual void  v13(); // _ZN7S3233C33v13Ev
  virtual void  v14(); // _ZN7S3233C33v14Ev
  virtual void  v15(); // _ZN7S3233C33v15Ev
  virtual void  v16(); // _ZN7S3233C33v16Ev
  virtual void  v17(); // _ZN7S3233C33v17Ev
  virtual void  v18(); // _ZN7S3233C33v18Ev
  virtual void  v19(); // _ZN7S3233C33v19Ev
  virtual void  v20(); // _ZN7S3233C33v20Ev
  virtual void  v21(); // _ZN7S3233C33v21Ev
  virtual void  v22(); // _ZN7S3233C33v22Ev
  virtual void  v23(); // _ZN7S3233C33v23Ev
  virtual void  v24(); // _ZN7S3233C33v24Ev
  virtual void  v25(); // _ZN7S3233C33v25Ev
  virtual void  v26(); // _ZN7S3233C33v26Ev
  virtual void  v27(); // _ZN7S3233C33v27Ev
  virtual void  v28(); // _ZN7S3233C33v28Ev
  virtual void  v29(); // _ZN7S3233C33v29Ev
  virtual void  v30(); // _ZN7S3233C33v30Ev
  virtual void  v31(); // _ZN7S3233C33v31Ev
  virtual void  v32(); // _ZN7S3233C33v32Ev
  virtual void  v33(); // _ZN7S3233C33v33Ev
  virtual void  v34(); // _ZN7S3233C33v34Ev
  virtual void  v35(); // _ZN7S3233C33v35Ev
  virtual void  v36(); // _ZN7S3233C33v36Ev
  virtual void  v37(); // _ZN7S3233C33v37Ev
  virtual void  v38(); // _ZN7S3233C33v38Ev
  virtual void  v39(); // _ZN7S3233C33v39Ev
  virtual void  v40(); // _ZN7S3233C33v40Ev
  virtual void  v41(); // _ZN7S3233C33v41Ev
  virtual void  v42(); // _ZN7S3233C33v42Ev
  virtual void  v43(); // _ZN7S3233C33v43Ev
  virtual void  v44(); // _ZN7S3233C33v44Ev
  virtual void  v45(); // _ZN7S3233C33v45Ev
  virtual void  v46(); // _ZN7S3233C33v46Ev
  virtual void  v47(); // _ZN7S3233C33v47Ev
  virtual void  v48(); // _ZN7S3233C33v48Ev
  virtual void  v49(); // _ZN7S3233C33v49Ev
  virtual void  v50(); // _ZN7S3233C33v50Ev
  virtual void  v51(); // _ZN7S3233C33v51Ev
  virtual void  v52(); // _ZN7S3233C33v52Ev
  virtual void  v53(); // _ZN7S3233C33v53Ev
  virtual void  v54(); // _ZN7S3233C33v54Ev
  virtual void  v55(); // _ZN7S3233C33v55Ev
  virtual void  v56(); // _ZN7S3233C33v56Ev
  virtual void  v57(); // _ZN7S3233C33v57Ev
  virtual void  v58(); // _ZN7S3233C33v58Ev
  virtual void  v59(); // _ZN7S3233C33v59Ev
  virtual void  v60(); // _ZN7S3233C33v60Ev
  virtual void  v61(); // _ZN7S3233C33v61Ev
  virtual void  v62(); // _ZN7S3233C33v62Ev
  virtual void  v63(); // _ZN7S3233C33v63Ev
  virtual void  v64(); // _ZN7S3233C33v64Ev
  virtual void  v65(); // _ZN7S3233C33v65Ev
  virtual void  v66(); // _ZN7S3233C33v66Ev
  virtual void  v67(); // _ZN7S3233C33v67Ev
  S3233C3(); // tgen
};
//SIG(-1 S3233C3) 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]}


 S3233C3 ::~S3233C3(){ note_dtor("S3233C3", this);}
void  S3233C3 ::v4(){vfunc_called(this, "_ZN7S3233C32v4Ev");}
void  S3233C3 ::v5(){vfunc_called(this, "_ZN7S3233C32v5Ev");}
void  S3233C3 ::v6(){vfunc_called(this, "_ZN7S3233C32v6Ev");}
void  S3233C3 ::v7(){vfunc_called(this, "_ZN7S3233C32v7Ev");}
void  S3233C3 ::v8(){vfunc_called(this, "_ZN7S3233C32v8Ev");}
void  S3233C3 ::v9(){vfunc_called(this, "_ZN7S3233C32v9Ev");}
void  S3233C3 ::v10(){vfunc_called(this, "_ZN7S3233C33v10Ev");}
void  S3233C3 ::v11(){vfunc_called(this, "_ZN7S3233C33v11Ev");}
void  S3233C3 ::v12(){vfunc_called(this, "_ZN7S3233C33v12Ev");}
void  S3233C3 ::v13(){vfunc_called(this, "_ZN7S3233C33v13Ev");}
void  S3233C3 ::v14(){vfunc_called(this, "_ZN7S3233C33v14Ev");}
void  S3233C3 ::v15(){vfunc_called(this, "_ZN7S3233C33v15Ev");}
void  S3233C3 ::v16(){vfunc_called(this, "_ZN7S3233C33v16Ev");}
void  S3233C3 ::v17(){vfunc_called(this, "_ZN7S3233C33v17Ev");}
void  S3233C3 ::v18(){vfunc_called(this, "_ZN7S3233C33v18Ev");}
void  S3233C3 ::v19(){vfunc_called(this, "_ZN7S3233C33v19Ev");}
void  S3233C3 ::v20(){vfunc_called(this, "_ZN7S3233C33v20Ev");}
void  S3233C3 ::v21(){vfunc_called(this, "_ZN7S3233C33v21Ev");}
void  S3233C3 ::v22(){vfunc_called(this, "_ZN7S3233C33v22Ev");}
void  S3233C3 ::v23(){vfunc_called(this, "_ZN7S3233C33v23Ev");}
void  S3233C3 ::v24(){vfunc_called(this, "_ZN7S3233C33v24Ev");}
void  S3233C3 ::v25(){vfunc_called(this, "_ZN7S3233C33v25Ev");}
void  S3233C3 ::v26(){vfunc_called(this, "_ZN7S3233C33v26Ev");}
void  S3233C3 ::v27(){vfunc_called(this, "_ZN7S3233C33v27Ev");}
void  S3233C3 ::v28(){vfunc_called(this, "_ZN7S3233C33v28Ev");}
void  S3233C3 ::v29(){vfunc_called(this, "_ZN7S3233C33v29Ev");}
void  S3233C3 ::v30(){vfunc_called(this, "_ZN7S3233C33v30Ev");}
void  S3233C3 ::v31(){vfunc_called(this, "_ZN7S3233C33v31Ev");}
void  S3233C3 ::v32(){vfunc_called(this, "_ZN7S3233C33v32Ev");}
void  S3233C3 ::v33(){vfunc_called(this, "_ZN7S3233C33v33Ev");}
void  S3233C3 ::v34(){vfunc_called(this, "_ZN7S3233C33v34Ev");}
void  S3233C3 ::v35(){vfunc_called(this, "_ZN7S3233C33v35Ev");}
void  S3233C3 ::v36(){vfunc_called(this, "_ZN7S3233C33v36Ev");}
void  S3233C3 ::v37(){vfunc_called(this, "_ZN7S3233C33v37Ev");}
void  S3233C3 ::v38(){vfunc_called(this, "_ZN7S3233C33v38Ev");}
void  S3233C3 ::v39(){vfunc_called(this, "_ZN7S3233C33v39Ev");}
void  S3233C3 ::v40(){vfunc_called(this, "_ZN7S3233C33v40Ev");}
void  S3233C3 ::v41(){vfunc_called(this, "_ZN7S3233C33v41Ev");}
void  S3233C3 ::v42(){vfunc_called(this, "_ZN7S3233C33v42Ev");}
void  S3233C3 ::v43(){vfunc_called(this, "_ZN7S3233C33v43Ev");}
void  S3233C3 ::v44(){vfunc_called(this, "_ZN7S3233C33v44Ev");}
void  S3233C3 ::v45(){vfunc_called(this, "_ZN7S3233C33v45Ev");}
void  S3233C3 ::v46(){vfunc_called(this, "_ZN7S3233C33v46Ev");}
void  S3233C3 ::v47(){vfunc_called(this, "_ZN7S3233C33v47Ev");}
void  S3233C3 ::v48(){vfunc_called(this, "_ZN7S3233C33v48Ev");}
void  S3233C3 ::v49(){vfunc_called(this, "_ZN7S3233C33v49Ev");}
void  S3233C3 ::v50(){vfunc_called(this, "_ZN7S3233C33v50Ev");}
void  S3233C3 ::v51(){vfunc_called(this, "_ZN7S3233C33v51Ev");}
void  S3233C3 ::v52(){vfunc_called(this, "_ZN7S3233C33v52Ev");}
void  S3233C3 ::v53(){vfunc_called(this, "_ZN7S3233C33v53Ev");}
void  S3233C3 ::v54(){vfunc_called(this, "_ZN7S3233C33v54Ev");}
void  S3233C3 ::v55(){vfunc_called(this, "_ZN7S3233C33v55Ev");}
void  S3233C3 ::v56(){vfunc_called(this, "_ZN7S3233C33v56Ev");}
void  S3233C3 ::v57(){vfunc_called(this, "_ZN7S3233C33v57Ev");}
void  S3233C3 ::v58(){vfunc_called(this, "_ZN7S3233C33v58Ev");}
void  S3233C3 ::v59(){vfunc_called(this, "_ZN7S3233C33v59Ev");}
void  S3233C3 ::v60(){vfunc_called(this, "_ZN7S3233C33v60Ev");}
void  S3233C3 ::v61(){vfunc_called(this, "_ZN7S3233C33v61Ev");}
void  S3233C3 ::v62(){vfunc_called(this, "_ZN7S3233C33v62Ev");}
void  S3233C3 ::v63(){vfunc_called(this, "_ZN7S3233C33v63Ev");}
void  S3233C3 ::v64(){vfunc_called(this, "_ZN7S3233C33v64Ev");}
void  S3233C3 ::v65(){vfunc_called(this, "_ZN7S3233C33v65Ev");}
void  S3233C3 ::v66(){vfunc_called(this, "_ZN7S3233C33v66Ev");}
void  S3233C3 ::v67(){vfunc_called(this, "_ZN7S3233C33v67Ev");}
S3233C3 ::S3233C3(){ note_ctor("S3233C3", this);} // tgen

static void Test_S3233C3()
{
  extern Class_Descriptor cd_S3233C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3233C3, buf);
    S3233C3 *dp, &lv = *(dp=new (buf) S3233C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3233C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3233C3)");
    check_field_offset(lv, s3233c3f0, ABISELECT(8,4), "S3233C3.s3233c3f0");
    check_field_offset(lv, s3233c3f1, ABISELECT(16,8), "S3233C3.s3233c3f1");
    check_field_offset(lv, s3233c3f2, ABISELECT(24,16), "S3233C3.s3233c3f2");
    check_field_offset(lv, s3233c3f3, ABISELECT(56,32), "S3233C3.s3233c3f3");
    check_field_offset(lv, s3233c3f4, ABISELECT(64,40), "S3233C3.s3233c3f4");
    check_field_offset(lv, s3233c3f5, ABISELECT(72,44), "S3233C3.s3233c3f5");
    check_field_offset(lv, s3233c3f6, ABISELECT(80,52), "S3233C3.s3233c3f6");
    test_class_info(&lv, &cd_S3233C3);
    dp->~S3233C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3233C3(Test_S3233C3, "S3233C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3233C3C1Ev();
extern void _ZN7S3233C3D1Ev();
Name_Map name_map_S3233C3[] = {
  NSPAIR(_ZN7S3233C3C1Ev),
  NSPAIR(_ZN7S3233C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3233C3[];
extern void _ZN7S3233C3D1Ev();
extern void _ZN7S3233C3D0Ev();
extern void _ZN7S3233C32v4Ev();
extern void _ZN7S3233C32v5Ev();
extern void _ZN7S3233C32v6Ev();
extern void _ZN7S3233C32v7Ev();
extern void _ZN7S3233C32v8Ev();
extern void _ZN7S3233C32v9Ev();
extern void _ZN7S3233C33v10Ev();
extern void _ZN7S3233C33v11Ev();
extern void _ZN7S3233C33v12Ev();
extern void _ZN7S3233C33v13Ev();
extern void _ZN7S3233C33v14Ev();
extern void _ZN7S3233C33v15Ev();
extern void _ZN7S3233C33v16Ev();
extern void _ZN7S3233C33v17Ev();
extern void _ZN7S3233C33v18Ev();
extern void _ZN7S3233C33v19Ev();
extern void _ZN7S3233C33v20Ev();
extern void _ZN7S3233C33v21Ev();
extern void _ZN7S3233C33v22Ev();
extern void _ZN7S3233C33v23Ev();
extern void _ZN7S3233C33v24Ev();
extern void _ZN7S3233C33v25Ev();
extern void _ZN7S3233C33v26Ev();
extern void _ZN7S3233C33v27Ev();
extern void _ZN7S3233C33v28Ev();
extern void _ZN7S3233C33v29Ev();
extern void _ZN7S3233C33v30Ev();
extern void _ZN7S3233C33v31Ev();
extern void _ZN7S3233C33v32Ev();
extern void _ZN7S3233C33v33Ev();
extern void _ZN7S3233C33v34Ev();
extern void _ZN7S3233C33v35Ev();
extern void _ZN7S3233C33v36Ev();
extern void _ZN7S3233C33v37Ev();
extern void _ZN7S3233C33v38Ev();
extern void _ZN7S3233C33v39Ev();
extern void _ZN7S3233C33v40Ev();
extern void _ZN7S3233C33v41Ev();
extern void _ZN7S3233C33v42Ev();
extern void _ZN7S3233C33v43Ev();
extern void _ZN7S3233C33v44Ev();
extern void _ZN7S3233C33v45Ev();
extern void _ZN7S3233C33v46Ev();
extern void _ZN7S3233C33v47Ev();
extern void _ZN7S3233C33v48Ev();
extern void _ZN7S3233C33v49Ev();
extern void _ZN7S3233C33v50Ev();
extern void _ZN7S3233C33v51Ev();
extern void _ZN7S3233C33v52Ev();
extern void _ZN7S3233C33v53Ev();
extern void _ZN7S3233C33v54Ev();
extern void _ZN7S3233C33v55Ev();
extern void _ZN7S3233C33v56Ev();
extern void _ZN7S3233C33v57Ev();
extern void _ZN7S3233C33v58Ev();
extern void _ZN7S3233C33v59Ev();
extern void _ZN7S3233C33v60Ev();
extern void _ZN7S3233C33v61Ev();
extern void _ZN7S3233C33v62Ev();
extern void _ZN7S3233C33v63Ev();
extern void _ZN7S3233C33v64Ev();
extern void _ZN7S3233C33v65Ev();
extern void _ZN7S3233C33v66Ev();
extern void _ZN7S3233C33v67Ev();
static  VTBL_ENTRY vtc_S3233C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3233C3[0]),
  (VTBL_ENTRY)&_ZN7S3233C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3233C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3233C3[];
extern  VTBL_ENTRY _ZTV7S3233C3[];
Class_Descriptor cd_S3233C3 = {  "S3233C3", // class name
  0,0,//no base classes
  &(vtc_S3233C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3233C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3233C3),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  S3233C2  : S3233C3 {
  ::S1538C29_nt s3233c2f0;
  virtual  ~S3233C2(); // _ZN7S3233C2D1Ev
  virtual void  v68(); // _ZN7S3233C23v68Ev
  virtual void  v69(); // _ZN7S3233C23v69Ev
  virtual void  v70(); // _ZN7S3233C23v70Ev
  S3233C2(); // tgen
};
//SIG(-1 S3233C2) C1{ BC2{ 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 FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}}}


 S3233C2 ::~S3233C2(){ note_dtor("S3233C2", this);}
void  S3233C2 ::v68(){vfunc_called(this, "_ZN7S3233C23v68Ev");}
void  S3233C2 ::v69(){vfunc_called(this, "_ZN7S3233C23v69Ev");}
void  S3233C2 ::v70(){vfunc_called(this, "_ZN7S3233C23v70Ev");}
S3233C2 ::S3233C2(){ note_ctor("S3233C2", this);} // tgen

static void Test_S3233C2()
{
  extern Class_Descriptor cd_S3233C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S3233C2, buf);
    S3233C2 *dp, &lv = *(dp=new (buf) S3233C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S3233C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3233C2)");
    check_base_class_offset(lv, (S3233C3*), 0, "S3233C2");
    check_field_offset(lv, s3233c2f0, ABISELECT(96,60), "S3233C2.s3233c2f0");
    test_class_info(&lv, &cd_S3233C2);
    dp->~S3233C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3233C2(Test_S3233C2, "S3233C2", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S3233C2C1Ev();
extern void _ZN7S3233C2D1Ev();
Name_Map name_map_S3233C2[] = {
  NSPAIR(_ZN7S3233C2C1Ev),
  NSPAIR(_ZN7S3233C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3233C3;
extern VTBL_ENTRY _ZTI7S3233C3[];
extern  VTBL_ENTRY _ZTV7S3233C3[];
static Base_Class bases_S3233C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3233C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3233C2[];
extern void _ZN7S3233C2D1Ev();
extern void _ZN7S3233C2D0Ev();
extern void _ZN7S3233C32v4Ev();
extern void _ZN7S3233C32v5Ev();
extern void _ZN7S3233C32v6Ev();
extern void _ZN7S3233C32v7Ev();
extern void _ZN7S3233C32v8Ev();
extern void _ZN7S3233C32v9Ev();
extern void _ZN7S3233C33v10Ev();
extern void _ZN7S3233C33v11Ev();
extern void _ZN7S3233C33v12Ev();
extern void _ZN7S3233C33v13Ev();
extern void _ZN7S3233C33v14Ev();
extern void _ZN7S3233C33v15Ev();
extern void _ZN7S3233C33v16Ev();
extern void _ZN7S3233C33v17Ev();
extern void _ZN7S3233C33v18Ev();
extern void _ZN7S3233C33v19Ev();
extern void _ZN7S3233C33v20Ev();
extern void _ZN7S3233C33v21Ev();
extern void _ZN7S3233C33v22Ev();
extern void _ZN7S3233C33v23Ev();
extern void _ZN7S3233C33v24Ev();
extern void _ZN7S3233C33v25Ev();
extern void _ZN7S3233C33v26Ev();
extern void _ZN7S3233C33v27Ev();
extern void _ZN7S3233C33v28Ev();
extern void _ZN7S3233C33v29Ev();
extern void _ZN7S3233C33v30Ev();
extern void _ZN7S3233C33v31Ev();
extern void _ZN7S3233C33v32Ev();
extern void _ZN7S3233C33v33Ev();
extern void _ZN7S3233C33v34Ev();
extern void _ZN7S3233C33v35Ev();
extern void _ZN7S3233C33v36Ev();
extern void _ZN7S3233C33v37Ev();
extern void _ZN7S3233C33v38Ev();
extern void _ZN7S3233C33v39Ev();
extern void _ZN7S3233C33v40Ev();
extern void _ZN7S3233C33v41Ev();
extern void _ZN7S3233C33v42Ev();
extern void _ZN7S3233C33v43Ev();
extern void _ZN7S3233C33v44Ev();
extern void _ZN7S3233C33v45Ev();
extern void _ZN7S3233C33v46Ev();
extern void _ZN7S3233C33v47Ev();
extern void _ZN7S3233C33v48Ev();
extern void _ZN7S3233C33v49Ev();
extern void _ZN7S3233C33v50Ev();
extern void _ZN7S3233C33v51Ev();
extern void _ZN7S3233C33v52Ev();
extern void _ZN7S3233C33v53Ev();
extern void _ZN7S3233C33v54Ev();
extern void _ZN7S3233C33v55Ev();
extern void _ZN7S3233C33v56Ev();
extern void _ZN7S3233C33v57Ev();
extern void _ZN7S3233C33v58Ev();
extern void _ZN7S3233C33v59Ev();
extern void _ZN7S3233C33v60Ev();
extern void _ZN7S3233C33v61Ev();
extern void _ZN7S3233C33v62Ev();
extern void _ZN7S3233C33v63Ev();
extern void _ZN7S3233C33v64Ev();
extern void _ZN7S3233C33v65Ev();
extern void _ZN7S3233C33v66Ev();
extern void _ZN7S3233C33v67Ev();
extern void _ZN7S3233C23v68Ev();
extern void _ZN7S3233C23v69Ev();
extern void _ZN7S3233C23v70Ev();
static  VTBL_ENTRY vtc_S3233C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3233C2[0]),
  (VTBL_ENTRY)&_ZN7S3233C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3233C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3233C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3233C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3233C23v70Ev,
};
extern VTBL_ENTRY _ZTI7S3233C2[];
extern  VTBL_ENTRY _ZTV7S3233C2[];
Class_Descriptor cd_S3233C2 = {  "S3233C2", // class name
  bases_S3233C2, 1,
  &(vtc_S3233C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S3233C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3233C2),71, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3233C1  : S3233C2 {
  ::S1538C30 s3233c1f0;
  virtual  ~S3233C1(); // _ZN7S3233C1D1Ev
  virtual void  v1(); // _ZN7S3233C12v1Ev
  virtual void  v2(); // _ZN7S3233C12v2Ev
  virtual void  v3(); // _ZN7S3233C12v3Ev
  S3233C1(); // tgen
};
//SIG(1 S3233C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v68 v69 v70 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}}} vd v1 v2 v3 FC6}


 S3233C1 ::~S3233C1(){ note_dtor("S3233C1", this);}
void  S3233C1 ::v1(){vfunc_called(this, "_ZN7S3233C12v1Ev");}
void  S3233C1 ::v2(){vfunc_called(this, "_ZN7S3233C12v2Ev");}
void  S3233C1 ::v3(){vfunc_called(this, "_ZN7S3233C12v3Ev");}
S3233C1 ::S3233C1(){ note_ctor("S3233C1", this);} // tgen

static void Test_S3233C1()
{
  extern Class_Descriptor cd_S3233C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S3233C1, buf);
    S3233C1 *dp, &lv = *(dp=new (buf) S3233C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S3233C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3233C1)");
    check_base_class_offset(lv, (S3233C3*)(S3233C2*), 0, "S3233C1");
    check_base_class_offset(lv, (S3233C2*), 0, "S3233C1");
    check_field_offset(lv, s3233c1f0, ABISELECT(112,72), "S3233C1.s3233c1f0");
    test_class_info(&lv, &cd_S3233C1);
    dp->~S3233C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3233C1(Test_S3233C1, "S3233C1", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S3233C1C1Ev();
extern void _ZN7S3233C1D1Ev();
Name_Map name_map_S3233C1[] = {
  NSPAIR(_ZN7S3233C1C1Ev),
  NSPAIR(_ZN7S3233C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3233C3;
extern VTBL_ENTRY _ZTI7S3233C3[];
extern  VTBL_ENTRY _ZTV7S3233C3[];
extern Class_Descriptor cd_S3233C2;
extern VTBL_ENTRY _ZTI7S3233C2[];
extern  VTBL_ENTRY _ZTV7S3233C2[];
static Base_Class bases_S3233C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3233C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3233C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3233C1[];
extern void _ZN7S3233C1D1Ev();
extern void _ZN7S3233C1D0Ev();
extern void _ZN7S3233C32v4Ev();
extern void _ZN7S3233C32v5Ev();
extern void _ZN7S3233C32v6Ev();
extern void _ZN7S3233C32v7Ev();
extern void _ZN7S3233C32v8Ev();
extern void _ZN7S3233C32v9Ev();
extern void _ZN7S3233C33v10Ev();
extern void _ZN7S3233C33v11Ev();
extern void _ZN7S3233C33v12Ev();
extern void _ZN7S3233C33v13Ev();
extern void _ZN7S3233C33v14Ev();
extern void _ZN7S3233C33v15Ev();
extern void _ZN7S3233C33v16Ev();
extern void _ZN7S3233C33v17Ev();
extern void _ZN7S3233C33v18Ev();
extern void _ZN7S3233C33v19Ev();
extern void _ZN7S3233C33v20Ev();
extern void _ZN7S3233C33v21Ev();
extern void _ZN7S3233C33v22Ev();
extern void _ZN7S3233C33v23Ev();
extern void _ZN7S3233C33v24Ev();
extern void _ZN7S3233C33v25Ev();
extern void _ZN7S3233C33v26Ev();
extern void _ZN7S3233C33v27Ev();
extern void _ZN7S3233C33v28Ev();
extern void _ZN7S3233C33v29Ev();
extern void _ZN7S3233C33v30Ev();
extern void _ZN7S3233C33v31Ev();
extern void _ZN7S3233C33v32Ev();
extern void _ZN7S3233C33v33Ev();
extern void _ZN7S3233C33v34Ev();
extern void _ZN7S3233C33v35Ev();
extern void _ZN7S3233C33v36Ev();
extern void _ZN7S3233C33v37Ev();
extern void _ZN7S3233C33v38Ev();
extern void _ZN7S3233C33v39Ev();
extern void _ZN7S3233C33v40Ev();
extern void _ZN7S3233C33v41Ev();
extern void _ZN7S3233C33v42Ev();
extern void _ZN7S3233C33v43Ev();
extern void _ZN7S3233C33v44Ev();
extern void _ZN7S3233C33v45Ev();
extern void _ZN7S3233C33v46Ev();
extern void _ZN7S3233C33v47Ev();
extern void _ZN7S3233C33v48Ev();
extern void _ZN7S3233C33v49Ev();
extern void _ZN7S3233C33v50Ev();
extern void _ZN7S3233C33v51Ev();
extern void _ZN7S3233C33v52Ev();
extern void _ZN7S3233C33v53Ev();
extern void _ZN7S3233C33v54Ev();
extern void _ZN7S3233C33v55Ev();
extern void _ZN7S3233C33v56Ev();
extern void _ZN7S3233C33v57Ev();
extern void _ZN7S3233C33v58Ev();
extern void _ZN7S3233C33v59Ev();
extern void _ZN7S3233C33v60Ev();
extern void _ZN7S3233C33v61Ev();
extern void _ZN7S3233C33v62Ev();
extern void _ZN7S3233C33v63Ev();
extern void _ZN7S3233C33v64Ev();
extern void _ZN7S3233C33v65Ev();
extern void _ZN7S3233C33v66Ev();
extern void _ZN7S3233C33v67Ev();
extern void _ZN7S3233C23v68Ev();
extern void _ZN7S3233C23v69Ev();
extern void _ZN7S3233C23v70Ev();
extern void _ZN7S3233C12v1Ev();
extern void _ZN7S3233C12v2Ev();
extern void _ZN7S3233C12v3Ev();
static  VTBL_ENTRY vtc_S3233C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3233C1[0]),
  (VTBL_ENTRY)&_ZN7S3233C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3233C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3233C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3233C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3233C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3233C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3233C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3233C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3233C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3233C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3233C1[];
extern  VTBL_ENTRY _ZTV7S3233C1[];
Class_Descriptor cd_S3233C1 = {  "S3233C1", // class name
  bases_S3233C1, 2,
  &(vtc_S3233C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S3233C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3233C1),74, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19903C4  : virtual S19490C18 {
  int s19903c4f0;
  ~S19903C4(); // tgen
  S19903C4(); // tgen
};
//SIG(-1 S19903C4) C1{ VBC2{ m} Fi}


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

static void Test_S19903C4()
{
  extern Class_Descriptor cd_S19903C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19903C4, buf);
    S19903C4 *dp, &lv = *(dp=new (buf) S19903C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19903C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C4)");
    check_base_class_offset(lv, (S19490C18*), 0, "S19903C4");
    check_field_offset(lv, s19903c4f0, ABISELECT(8,4), "S19903C4.s19903c4f0");
    test_class_info(&lv, &cd_S19903C4);
    dp->~S19903C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C4(Test_S19903C4, "S19903C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19903C4C1Ev();
extern void _ZN8S19903C4D1Ev();
Name_Map name_map_S19903C4[] = {
  NSPAIR(_ZN8S19903C4C1Ev),
  NSPAIR(_ZN8S19903C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S19903C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19903C4[];
static  VTBL_ENTRY vtc_S19903C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
extern VTBL_ENTRY _ZTV8S19903C4[];
static  VTT_ENTRY vtt_S19903C4[] = {
  {&(_ZTV8S19903C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
Class_Descriptor cd_S19903C4 = {  "S19903C4", // class name
  bases_S19903C4, 1,
  &(vtc_S19903C4[0]), // expected_vtbl_contents
  &(vtt_S19903C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19903C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19903C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19903C4),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  S19903C7  : virtual S19490C18 {
  void *s19903c7f0[2];
  ~S19903C7(); // tgen
  S19903C7(); // tgen
};
//SIG(-1 S19903C7) C1{ VBC2{ m} Fp[2]}


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

static void Test_S19903C7()
{
  extern Class_Descriptor cd_S19903C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19903C7, buf);
    S19903C7 *dp, &lv = *(dp=new (buf) S19903C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19903C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C7)");
    check_base_class_offset(lv, (S19490C18*), 0, "S19903C7");
    check_field_offset(lv, s19903c7f0, ABISELECT(8,4), "S19903C7.s19903c7f0");
    test_class_info(&lv, &cd_S19903C7);
    dp->~S19903C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C7(Test_S19903C7, "S19903C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19903C7C1Ev();
extern void _ZN8S19903C7D1Ev();
Name_Map name_map_S19903C7[] = {
  NSPAIR(_ZN8S19903C7C1Ev),
  NSPAIR(_ZN8S19903C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S19903C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19903C7[];
static  VTBL_ENTRY vtc_S19903C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
extern VTBL_ENTRY _ZTV8S19903C7[];
static  VTT_ENTRY vtt_S19903C7[] = {
  {&(_ZTV8S19903C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
Class_Descriptor cd_S19903C7 = {  "S19903C7", // class name
  bases_S19903C7, 1,
  &(vtc_S19903C7[0]), // expected_vtbl_contents
  &(vtt_S19903C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19903C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19903C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19903C7),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  S19903C11  : S19490C10_nt , S19490C26 , S19490C18 {
};
//SIG(-1 S19903C11) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S19903C11()
{
  extern Class_Descriptor cd_S19903C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19903C11, buf);
    S19903C11 &lv = *(new (buf) S19903C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19903C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C11)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S19903C11");
    check_base_class_offset(lv, (S19490C26*), 0, "S19903C11");
    check_base_class_offset(lv, (S19490C18*), 0, "S19903C11");
    test_class_info(&lv, &cd_S19903C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C11(Test_S19903C11, "S19903C11", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S19903C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C11[];
Class_Descriptor cd_S19903C11 = {  "S19903C11", // class name
  bases_S19903C11, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19903C11),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19903C9  : virtual S19490C12 , S19903C11 , S19490C11 , virtual S19903C4 {
  ~S19903C9(); // tgen
  S19903C9(); // tgen
};
//SIG(-1 S19903C9) C1{ VBC2{ m} BC3{ BC4{ m Fp} BC5{ m} BC6{ m}} BC7{ m} VBC8{ VBC6 Fi}}


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

static void Test_S19903C9()
{
  extern Class_Descriptor cd_S19903C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19903C9, buf);
    S19903C9 *dp, &lv = *(dp=new (buf) S19903C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19903C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C9)");
    check_base_class_offset(lv, (S19490C12*), 0, "S19903C9");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(8,4), "S19903C9");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(8,4), "S19903C9");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(8,4), "S19903C9");
    check_base_class_offset(lv, (S19903C11*), ABISELECT(8,4), "S19903C9");
    check_base_class_offset(lv, (S19490C11*), 0, "S19903C9");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), 0, "S19903C9");
    check_base_class_offset(lv, (S19903C4*), ABISELECT(16,8), "S19903C9");
    test_class_info(&lv, &cd_S19903C9);
    dp->~S19903C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C9(Test_S19903C9, "S19903C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19903C9C1Ev();
extern void _ZN8S19903C9D1Ev();
Name_Map name_map_S19903C9[] = {
  NSPAIR(_ZN8S19903C9C1Ev),
  NSPAIR(_ZN8S19903C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
static Base_Class bases_S19903C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19903C4,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19903C9[];
static  VTBL_ENTRY vtc_S19903C9[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
extern VTBL_ENTRY _ZTV8S19903C9[];
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTT_ENTRY vtt_S19903C9[] = {
  {&(_ZTV8S19903C9[5]),  5,8},
  {&(_ZTV8S19903C9[8]),  8,8},
  {&(_tg__ZTV8S19903C4__8S19903C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19903C9[];
extern  VTBL_ENTRY _ZTV8S19903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C9[];
Class_Descriptor cd_S19903C9 = {  "S19903C9", // class name
  bases_S19903C9, 8,
  &(vtc_S19903C9[0]), // expected_vtbl_contents
  &(vtt_S19903C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19903C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19903C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19903C9),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  S19903C16  : virtual S19903C11 , virtual S19490C11 , S19490C26 {
  ~S19903C16(); // tgen
  S19903C16(); // tgen
};
//SIG(-1 S19903C16) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S19903C16()
{
  extern Class_Descriptor cd_S19903C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19903C16, buf);
    S19903C16 *dp, &lv = *(dp=new (buf) S19903C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19903C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C16)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(8,4), "S19903C16");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(8,4), "S19903C16");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(8,4), "S19903C16");
    check_base_class_offset(lv, (S19903C11*), ABISELECT(8,4), "S19903C16");
    check_base_class_offset(lv, (S19490C11*), 0, "S19903C16");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19903C16");
    test_class_info(&lv, &cd_S19903C16);
    dp->~S19903C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C16(Test_S19903C16, "S19903C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19903C16C1Ev();
extern void _ZN9S19903C16D1Ev();
Name_Map name_map_S19903C16[] = {
  NSPAIR(_ZN9S19903C16C1Ev),
  NSPAIR(_ZN9S19903C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19903C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19903C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C16[];
static  VTBL_ENTRY vtc_S19903C16[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
extern VTBL_ENTRY _ZTV9S19903C16[];
static  VTT_ENTRY vtt_S19903C16[] = {
  {&(_ZTV9S19903C16[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
Class_Descriptor cd_S19903C16 = {  "S19903C16", // class name
  bases_S19903C16, 6,
  &(vtc_S19903C16[0]), // expected_vtbl_contents
  &(vtt_S19903C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19903C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19903C16),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C16),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  S19903C15  : virtual S19903C16 , S19490C10_nt , S19490C18 {
  long double s19903c15f0;
  int s19903c15f1;
  virtual  ~S19903C15(); // _ZN9S19903C15D2Ev
  S19903C15(); // tgen
};
//SIG(-1 S19903C15) C1{ VBC2{ VBC3{ BC4{ m Fp} BC5{ m} BC6{ m}} VBC7{ m} BC5} BC4 BC6 vd FD Fi}


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

static void Test_S19903C15()
{
  extern Class_Descriptor cd_S19903C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19903C15, buf);
    S19903C15 *dp, &lv = *(dp=new (buf) S19903C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19903C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C15)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(40,24), "S19903C15");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(40,24), "S19903C15");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(40,24), "S19903C15");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(40,24), "S19903C15");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C15");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), 0, "S19903C15");
    check_base_class_offset(lv, (S19903C16*), 0, "S19903C15");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19903C15");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S19903C15");
    check_field_offset(lv, s19903c15f0, ABISELECT(16,8), "S19903C15.s19903c15f0");
    check_field_offset(lv, s19903c15f1, ABISELECT(32,20), "S19903C15.s19903c15f1");
    test_class_info(&lv, &cd_S19903C15);
    dp->~S19903C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C15(Test_S19903C15, "S19903C15", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN9S19903C15C1Ev();
extern void _ZN9S19903C15D2Ev();
Name_Map name_map_S19903C15[] = {
  NSPAIR(_ZN9S19903C15C1Ev),
  NSPAIR(_ZN9S19903C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S19903C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19903C16,    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_S19490C10_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C15[];
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY vtc_S19903C15[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
extern VTBL_ENTRY _ZTV9S19903C15[];
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C15[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTT_ENTRY vtt_S19903C15[] = {
  {&(_ZTV9S19903C15[5]),  5,7},
  {&(_ZTV9S19903C15[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
Class_Descriptor cd_S19903C15 = {  "S19903C15", // class name
  bases_S19903C15, 9,
  &(vtc_S19903C15[0]), // expected_vtbl_contents
  &(vtt_S19903C15[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI9S19903C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19903C15),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C15),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  S19903C14  : S19903C15 , virtual S19903C7 , virtual S19903C4 {
  ~S19903C14(); // tgen
  S19903C14(); // tgen
};
//SIG(-1 S19903C14) C1{ BC2{ VBC3{ VBC4{ BC5{ m Fp} BC6{ m} BC7{ m}} VBC8{ m} BC6} BC5 BC7 vd FD Fi} VBC9{ VBC7 Fp[2]} VBC10{ VBC7 Fi}}


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

static void Test_S19903C14()
{
  extern Class_Descriptor cd_S19903C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S19903C14, buf);
    S19903C14 *dp, &lv = *(dp=new (buf) S19903C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19903C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C14)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(40,24), "S19903C14");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(40,24), "S19903C14");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(40,24), "S19903C14");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(40,24), "S19903C14");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C14");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), 0, "S19903C14");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*), 0, "S19903C14");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*), ABISELECT(8,4), "S19903C14");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*), 0, "S19903C14");
    check_base_class_offset(lv, (S19903C15*), 0, "S19903C14");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), ABISELECT(72,40), "S19903C14");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), ABISELECT(72,40), "S19903C14");
    check_base_class_offset(lv, (S19903C7*), ABISELECT(48,28), "S19903C14");
    check_base_class_offset(lv, (S19903C4*), ABISELECT(72,40), "S19903C14");
    test_class_info(&lv, &cd_S19903C14);
    dp->~S19903C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C14(Test_S19903C14, "S19903C14", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19903C14C1Ev();
extern void _ZN9S19903C14D1Ev();
Name_Map name_map_S19903C14[] = {
  NSPAIR(_ZN9S19903C14C1Ev),
  NSPAIR(_ZN9S19903C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
static Base_Class bases_S19903C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19903C16,    0, //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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19903C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    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, 1},
  {&cd_S19903C7,    ABISELECT(48,28), //bcp->offset
    10, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19903C4,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C14[];
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY vtc_S19903C14[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
extern VTBL_ENTRY _ZTV9S19903C14[];
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C15__9S19903C14[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C14[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C14[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTT_ENTRY vtt_S19903C14[] = {
  {&(_ZTV9S19903C14[8]),  8,16},
  {&(_tg__ZTV9S19903C15__9S19903C14[5]),  5,7},
  {&(_tg__ZTV9S19903C15__9S19903C14[5]),  5,7},
  {&(_ZTV9S19903C14[8]),  8,16},
  {&(_ZTV9S19903C14[13]),  13,16},
  {&(_ZTV9S19903C14[16]),  16,16},
  {&(_tg__ZTV9S19903C16__9S19903C14[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C14[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
Class_Descriptor cd_S19903C14 = {  "S19903C14", // class name
  bases_S19903C14, 13,
  &(vtc_S19903C14[0]), // expected_vtbl_contents
  &(vtt_S19903C14[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19903C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19903C14),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C14),9, //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  S19903C6  : virtual S19903C7 , virtual S19490C10_nt , virtual S19903C9 , virtual S19490C7 , virtual S19903C14 {
  ~S19903C6(); // tgen
  S19903C6(); // tgen
};
//SIG(-1 S19903C6) C1{ VBC2{ VBC3{ m} Fp[2]} VBC4{ m Fp} VBC5{ VBC6{ m} BC7{ BC4 BC8{ m} BC3} BC9{ m} VBC10{ VBC3 Fi}} VBC11{ m} VBC12{ BC13{ VBC14{ VBC7 VBC9 BC8} BC4 BC3 vd FD Fi} VBC2 VBC10}}


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

static void Test_S19903C6()
{
  extern Class_Descriptor cd_S19903C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S19903C6, buf);
    S19903C6 *dp, &lv = *(dp=new (buf) S19903C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S19903C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C6)");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), 0, "S19903C6");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), 0, "S19903C6");
    check_base_class_offset(lv, (S19903C7*), ABISELECT(8,4), "S19903C6");
    check_base_class_offset(lv, (S19903C7*)(S19903C14*), ABISELECT(8,4), "S19903C6");
    /*is_ambiguous_... S19903C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(32,16), "S19903C6");
    check_base_class_offset(lv, (S19490C12*)(S19903C9*), 0, "S19903C6");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C9*), ABISELECT(48,24), "S19903C6");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C9*), ABISELECT(48,24), "S19903C6");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C9*), ABISELECT(48,24), "S19903C6");
    check_base_class_offset(lv, (S19903C11*)(S19903C9*), ABISELECT(48,24), "S19903C6");
    check_base_class_offset(lv, (S19490C11*)(S19903C9*), ABISELECT(40,20), "S19903C6");
    check_base_class_offset(lv, (S19903C4*)(S19903C9*), ABISELECT(56,28), "S19903C6");
    check_base_class_offset(lv, (S19903C4*)(S19903C14*), ABISELECT(56,28), "S19903C6");
    check_base_class_offset(lv, (S19903C9*), ABISELECT(40,20), "S19903C6");
    check_base_class_offset(lv, (S19490C7*), 0, "S19903C6");
    /*is_ambiguous_... S19903C6::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(120,60), "S19903C6");
    /*is_ambiguous_... S19903C6::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(120,60), "S19903C6");
    /*is_ambiguous_... S19903C6::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(120,60), "S19903C6");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(120,60), "S19903C6");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C6");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), 0, "S19903C6");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*), 0, "S19903C6");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*), ABISELECT(88,40), "S19903C6");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*), ABISELECT(80,36), "S19903C6");
    check_base_class_offset(lv, (S19903C15*)(S19903C14*), ABISELECT(80,36), "S19903C6");
    check_base_class_offset(lv, (S19903C14*), ABISELECT(80,36), "S19903C6");
    test_class_info(&lv, &cd_S19903C6);
    dp->~S19903C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C6(Test_S19903C6, "S19903C6", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S19903C6C1Ev();
extern void _ZN8S19903C6D1Ev();
Name_Map name_map_S19903C6[] = {
  NSPAIR(_ZN8S19903C6C1Ev),
  NSPAIR(_ZN8S19903C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
extern Class_Descriptor cd_S19903C9;
extern VTBL_ENTRY _ZTI8S19903C9[];
extern  VTBL_ENTRY _ZTV8S19903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C9[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
static Base_Class bases_S19903C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C7,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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_S19490C10_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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_S19490C26,    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_S19490C18,    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_S19903C11,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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_S19903C4,    ABISELECT(56,28), //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
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19903C9,    ABISELECT(40,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    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_S19490C26,    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_S19490C18,    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_S19903C11,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19903C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(88,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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(80,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
    21, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19903C14,    ABISELECT(80,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S19903C6[];
extern void _ZN8S19903C6D1Ev();
extern void _ZN8S19903C6D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19903C6D1Ev,_ZThn36_N8S19903C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19903C6D0Ev,_ZThn36_N8S19903C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19903C6[] = {
  0,
  ABISELECT(80,36),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&_ZN8S19903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  ABISELECT(-80,-36),
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19903C6[];
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C9__8S19903C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C6[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C6[] = {
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C14__8S19903C6[] = {
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C14__8S19903C6[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C14__8S19903C6[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C14__8S19903C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,32),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C14__8S19903C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__8S19903C6[] = {
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTT_ENTRY vtt_S19903C6[] = {
  {&(_ZTV8S19903C6[13]),  13,37},
  {&(_ZTV8S19903C6[18]),  18,37},
  {&(_ZTV8S19903C6[23]),  23,37},
  {&(_ZTV8S19903C6[26]),  26,37},
  {&(_ZTV8S19903C6[35]),  35,37},
  {&(_ZTV8S19903C6[13]),  13,37},
  {&(_tg__ZTV8S19903C7__8S19903C6[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C6[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C9__8S19903C6[3]),  3,3},
  {&(_tg__ZTV8S19903C4__8S19903C6[3]),  3,3},
  {&(_tg__ZTV9S19903C14__8S19903C6[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C14__8S19903C6[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C14__8S19903C6[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C14__8S19903C6[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C14__8S19903C6[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C14__8S19903C6[3]),  3,3},
  {&(_tg__ZTV9S19903C16__8S19903C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19903C6[];
extern  VTBL_ENTRY _ZTV8S19903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C6[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19903C6D0Ev,_ZThn36_N8S19903C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19903C6D1Ev,_ZThn36_N8S19903C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19903C6 = {  "S19903C6", // class name
  bases_S19903C6, 23,
  &(vtc_S19903C6[0]), // expected_vtbl_contents
  &(vtt_S19903C6[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S19903C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19903C6),37, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19903C6),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19903C18  : S19903C14 {
  virtual  ~S19903C18(); // _ZN9S19903C18D2Ev
  S19903C18(); // tgen
};
//SIG(-1 S19903C18) C1{ BC2{ BC3{ VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} BC6 BC8 vd FD Fi} VBC10{ VBC8 Fp[2]} VBC11{ VBC8 Fi}} vd}


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

static void Test_S19903C18()
{
  extern Class_Descriptor cd_S19903C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S19903C18, buf);
    S19903C18 *dp, &lv = *(dp=new (buf) S19903C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19903C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C18)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(40,24), "S19903C18");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(40,24), "S19903C18");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(40,24), "S19903C18");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(40,24), "S19903C18");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C18");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), 0, "S19903C18");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*), 0, "S19903C18");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*), ABISELECT(8,4), "S19903C18");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*), 0, "S19903C18");
    check_base_class_offset(lv, (S19903C15*)(S19903C14*), 0, "S19903C18");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), ABISELECT(72,40), "S19903C18");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), ABISELECT(72,40), "S19903C18");
    check_base_class_offset(lv, (S19903C7*)(S19903C14*), ABISELECT(48,28), "S19903C18");
    check_base_class_offset(lv, (S19903C4*)(S19903C14*), ABISELECT(72,40), "S19903C18");
    check_base_class_offset(lv, (S19903C14*), 0, "S19903C18");
    test_class_info(&lv, &cd_S19903C18);
    dp->~S19903C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C18(Test_S19903C18, "S19903C18", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19903C18C1Ev();
extern void _ZN9S19903C18D2Ev();
Name_Map name_map_S19903C18[] = {
  NSPAIR(_ZN9S19903C18C1Ev),
  NSPAIR(_ZN9S19903C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
static Base_Class bases_S19903C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19903C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19903C15,    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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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, 1},
  {&cd_S19903C7,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19903C4,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19903C14,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C18[];
extern void _ZN9S19903C18D1Ev();
extern void _ZN9S19903C18D0Ev();
static  VTBL_ENTRY vtc_S19903C18[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
  (VTBL_ENTRY)&_ZN9S19903C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C18D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
extern VTBL_ENTRY _ZTV9S19903C18[];
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C14__9S19903C18[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C14__9S19903C18[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C14__9S19903C18[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C14__9S19903C18[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C18[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C18[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTT_ENTRY vtt_S19903C18[] = {
  {&(_ZTV9S19903C18[8]),  8,16},
  {&(_tg__ZTV9S19903C14__9S19903C18[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C14__9S19903C18[5]),  5,7},
  {&(_tg__ZTV9S19903C159S19903C14__9S19903C18[5]),  5,7},
  {&(_tg__ZTV9S19903C14__9S19903C18[8]),  8,10},
  {&(_tg__ZTV8S19903C7__9S19903C14__9S19903C18[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C14__9S19903C18[3]),  3,3},
  {&(_ZTV9S19903C18[8]),  8,16},
  {&(_ZTV9S19903C18[13]),  13,16},
  {&(_ZTV9S19903C18[16]),  16,16},
  {&(_tg__ZTV9S19903C16__9S19903C18[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C18[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C18[];
extern  VTBL_ENTRY _ZTV9S19903C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C18[];
Class_Descriptor cd_S19903C18 = {  "S19903C18", // class name
  bases_S19903C18, 14,
  &(vtc_S19903C18[0]), // expected_vtbl_contents
  &(vtt_S19903C18[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19903C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19903C18),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C18),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  S19903C3  : virtual S19903C4 , S19903C6 , S19490C6_nt , S19903C18 {
  int s19903c3f0[2];
  virtual  ~S19903C3(); // _ZN8S19903C3D2Ev
  S19903C3(); // tgen
};
//SIG(-1 S19903C3) C1{ VBC2{ VBC3{ m} Fi} BC4{ VBC5{ VBC3 Fp[2]} VBC6{ m Fp} VBC7{ VBC8{ m} BC9{ BC6 BC10{ m} BC3} BC11{ m} VBC2} VBC12{ m} VBC13{ BC14{ VBC15{ VBC9 VBC11 BC10} BC6 BC3 vd FD Fi} VBC5 VBC2}} BC16{ m} BC17{ BC13 vd} vd Fi[2]}


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

static void Test_S19903C3()
{
  extern Class_Descriptor cd_S19903C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S19903C3, buf);
    S19903C3 *dp, &lv = *(dp=new (buf) S19903C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19903C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C3)");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), 0, "S19903C3");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), 0, "S19903C3");
    check_base_class_offset(lv, (S19903C4*), ABISELECT(64,36), "S19903C3");
    check_base_class_offset(lv, (S19903C4*)(S19903C9*), ABISELECT(64,36), "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C4*)(S19903C14*), ABISELECT(64,36), "S19903C3");
    check_base_class_offset(lv, (S19903C4*)(S19903C14*)(S19903C18*), ABISELECT(64,36), "S19903C3");
    check_base_class_offset(lv, (S19903C7*)(S19903C6*), ABISELECT(80,44), "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C7*)(S19903C14*), ABISELECT(80,44), "S19903C3");
    check_base_class_offset(lv, (S19903C7*)(S19903C14*)(S19903C18*), ABISELECT(80,44), "S19903C3");
    /*is_ambiguous_... S19903C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C6*), ABISELECT(104,56), "S19903C3");
    check_base_class_offset(lv, (S19490C12*)(S19903C9*), 0, "S19903C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C9*), ABISELECT(120,64), "S19903C3");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C9*), ABISELECT(120,64), "S19903C3");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C9*), ABISELECT(120,64), "S19903C3");
    check_base_class_offset(lv, (S19903C11*)(S19903C9*), ABISELECT(120,64), "S19903C3");
    check_base_class_offset(lv, (S19490C11*)(S19903C9*), ABISELECT(112,60), "S19903C3");
    check_base_class_offset(lv, (S19903C9*)(S19903C6*), ABISELECT(112,60), "S19903C3");
    check_base_class_offset(lv, (S19490C7*)(S19903C6*), 0, "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(168,92), "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(168,92), "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(168,92), "S19903C3");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(168,92), "S19903C3");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C3");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), 0, "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*), 0, "S19903C3");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*)(S19903C18*), 0, "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C14 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*), ABISELECT(136,72), "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C14 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*), ABISELECT(128,68), "S19903C3");
    /*is_ambiguous_... S19903C3::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C15*)(S19903C14*), ABISELECT(128,68), "S19903C3");
    check_base_class_offset(lv, (S19903C14*)(S19903C6*), ABISELECT(128,68), "S19903C3");
    check_base_class_offset(lv, (S19903C6*), 0, "S19903C3");
    check_base_class_offset(lv, (S19490C6_nt*), 0, "S19903C3");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*)(S19903C18*), ABISELECT(24,8), "S19903C3");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*)(S19903C18*), ABISELECT(16,4), "S19903C3");
    check_base_class_offset(lv, (S19903C15*)(S19903C14*)(S19903C18*), ABISELECT(16,4), "S19903C3");
    check_base_class_offset(lv, (S19903C14*)(S19903C18*), ABISELECT(16,4), "S19903C3");
    check_base_class_offset(lv, (S19903C18*), ABISELECT(16,4), "S19903C3");
    check_field_offset(lv, s19903c3f0, ABISELECT(52,28), "S19903C3.s19903c3f0");
    test_class_info(&lv, &cd_S19903C3);
    dp->~S19903C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C3(Test_S19903C3, "S19903C3", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S19903C3C1Ev();
extern void _ZN8S19903C3D2Ev();
Name_Map name_map_S19903C3[] = {
  NSPAIR(_ZN8S19903C3C1Ev),
  NSPAIR(_ZN8S19903C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19903C9;
extern VTBL_ENTRY _ZTI8S19903C9[];
extern  VTBL_ENTRY _ZTV8S19903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C9[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
extern Class_Descriptor cd_S19903C6;
extern VTBL_ENTRY _ZTI8S19903C6[];
extern  VTBL_ENTRY _ZTV8S19903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C6[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
extern Class_Descriptor cd_S19903C18;
extern VTBL_ENTRY _ZTI9S19903C18[];
extern  VTBL_ENTRY _ZTV9S19903C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C18[];
static Base_Class bases_S19903C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C4,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19903C7,    ABISELECT(80,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    23, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19903C9,    ABISELECT(112,60), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19903C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_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_S19490C18,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19903C14,    ABISELECT(128,68), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19903C6,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C18,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19903C14,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19903C18,    ABISELECT(16,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19903C3[];
extern void _ZN8S19903C3D1Ev();
extern void _ZN8S19903C3D0Ev();
extern void ABISELECT(_ZThn16_N8S19903C3D1Ev,_ZThn4_N8S19903C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19903C3D0Ev,_ZThn4_N8S19903C3D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19903C3D1Ev,_ZThn68_N8S19903C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19903C3D0Ev,_ZThn68_N8S19903C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19903C3[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&_ZN8S19903C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C3D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C3D1Ev,_ZThn4_N8S19903C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C3D0Ev,_ZThn4_N8S19903C3D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19903C3[];
extern void _ZN8S19903C6D1Ev();
extern void _ZN8S19903C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19903C6__8S19903C3[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&_ZN8S19903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C6__8S19903C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C6__8S19903C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C6__8S19903C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19903C6D1Ev,_ZThn68_N8S19903C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19903C6D0Ev,_ZThn68_N8S19903C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C6__8S19903C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev),
};
extern void _ZN9S19903C18D1Ev();
extern void _ZN9S19903C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C18__8S19903C3[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
  (VTBL_ENTRY)&_ZN9S19903C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C18D0Ev,
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C149S19903C18__A1__8S19903C3[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C149S19903C18__A1__8S19903C3[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C149S19903C18__A1__8S19903C3[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C149S19903C18__A1__8S19903C3[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C149S19903C18__A1__8S19903C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C149S19903C18__A1__8S19903C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C18__8S19903C3[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C18__8S19903C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C18__8S19903C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C3[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C3[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C9__8S19903C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C3[] = {
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C14__8S19903C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C14__8S19903C3[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C14__8S19903C3[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C14__8S19903C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C14__8S19903C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__8S19903C3[] = {
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTT_ENTRY vtt_S19903C3[] = {
  {&(_ZTV8S19903C3[13]),  13,47},
  {&(_tg__ZTV8S19903C6__8S19903C3[13]),  13,15},
  {&(_tg__ZTV8S19903C7__8S19903C6__8S19903C3[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C6__8S19903C3[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C6__8S19903C3[3]),  3,3},
  {&(_tg__ZTV9S19903C14__8S19903C6__8S19903C3[9]),  9,11},
  {&(_tg__ZTV8S19903C6__8S19903C3[13]),  13,15},
  {&(_tg__ZTV9S19903C18__8S19903C3[8]),  8,10},
  {&(_tg__ZTV9S19903C149S19903C18__A1__8S19903C3[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C149S19903C18__A1__8S19903C3[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C149S19903C18__A1__8S19903C3[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C149S19903C18__A1__8S19903C3[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C149S19903C18__A1__8S19903C3[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C149S19903C18__A1__8S19903C3[3]),  3,3},
  {&(_tg__ZTV9S19903C16__9S19903C18__8S19903C3[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C18__8S19903C3[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C18__8S19903C3[3]),  3,3},
  {&(_ZTV8S19903C3[28]),  28,47},
  {&(_ZTV8S19903C3[31]),  31,47},
  {&(_ZTV8S19903C3[36]),  36,47},
  {&(_ZTV8S19903C3[45]),  45,47},
  {&(_ZTV8S19903C3[13]),  13,47},
  {&(_ZTV8S19903C3[23]),  23,47},
  {&(_tg__ZTV8S19903C4__8S19903C3[3]),  3,3},
  {&(_tg__ZTV8S19903C7__8S19903C3[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C3[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C9__8S19903C3[3]),  3,3},
  {&(_tg__ZTV9S19903C14__8S19903C3[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C14__8S19903C3[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C14__8S19903C3[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C14__8S19903C3[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C14__8S19903C3[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C14__8S19903C3[3]),  3,3},
  {&(_tg__ZTV9S19903C16__8S19903C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19903C3[];
extern  VTBL_ENTRY _ZTV8S19903C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C3[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C6D0Ev,_ZThn68_N8S19903C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C6D1Ev,_ZThn68_N8S19903C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C3D0Ev,_ZThn68_N8S19903C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C3D1Ev,_ZThn68_N8S19903C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19903C3 = {  "S19903C3", // class name
  bases_S19903C3, 30,
  &(vtc_S19903C3[0]), // expected_vtbl_contents
  &(vtt_S19903C3[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S19903C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19903C3),47, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19903C3),34, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19903C22  : S19490C10_nt , virtual S19490C18 , virtual S19490C26 {
  ~S19903C22(); // tgen
  S19903C22(); // tgen
};
//SIG(-1 S19903C22) C1{ BC2{ m Fp} VBC3{ m} VBC4{ m}}


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

static void Test_S19903C22()
{
  extern Class_Descriptor cd_S19903C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19903C22, buf);
    S19903C22 *dp, &lv = *(dp=new (buf) S19903C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19903C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C22)");
    check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19903C22");
    check_base_class_offset(lv, (S19490C18*), 0, "S19903C22");
    check_base_class_offset(lv, (S19490C26*), 0, "S19903C22");
    test_class_info(&lv, &cd_S19903C22);
    dp->~S19903C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C22(Test_S19903C22, "S19903C22", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19903C22C1Ev();
extern void _ZN9S19903C22D1Ev();
Name_Map name_map_S19903C22[] = {
  NSPAIR(_ZN9S19903C22C1Ev),
  NSPAIR(_ZN9S19903C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19903C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19903C22[];
static  VTBL_ENTRY vtc_S19903C22[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
extern VTBL_ENTRY _ZTV9S19903C22[];
static  VTT_ENTRY vtt_S19903C22[] = {
  {&(_ZTV9S19903C22[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
Class_Descriptor cd_S19903C22 = {  "S19903C22", // class name
  bases_S19903C22, 3,
  &(vtc_S19903C22[0]), // expected_vtbl_contents
  &(vtt_S19903C22[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19903C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19903C22),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C22),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  S19903C21  : virtual S19903C7 , S19490C10_nt , virtual S19903C22 {
  ::S19903C22 s19903c21f0;
  ~S19903C21(); // tgen
  S19903C21(); // tgen
};
//SIG(-1 S19903C21) C1{ VBC2{ VBC3{ m} Fp[2]} BC4{ m Fp} VBC5{ BC4 VBC3 VBC6{ m}} FC5}


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

static void Test_S19903C21()
{
  extern Class_Descriptor cd_S19903C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19903C21, buf);
    S19903C21 *dp, &lv = *(dp=new (buf) S19903C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19903C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C21)");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), 0, "S19903C21");
    check_base_class_offset(lv, (S19490C18*)(S19903C22*), 0, "S19903C21");
    check_base_class_offset(lv, (S19903C7*), ABISELECT(32,16), "S19903C21");
    /*is_ambiguous_... S19903C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19903C21");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*), ABISELECT(64,32), "S19903C21");
    check_base_class_offset(lv, (S19490C26*)(S19903C22*), 0, "S19903C21");
    check_base_class_offset(lv, (S19903C22*), ABISELECT(56,28), "S19903C21");
    check_field_offset(lv, s19903c21f0, ABISELECT(16,8), "S19903C21.s19903c21f0");
    test_class_info(&lv, &cd_S19903C21);
    dp->~S19903C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C21(Test_S19903C21, "S19903C21", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S19903C21C1Ev();
extern void _ZN9S19903C21D1Ev();
Name_Map name_map_S19903C21[] = {
  NSPAIR(_ZN9S19903C21C1Ev),
  NSPAIR(_ZN9S19903C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
static Base_Class bases_S19903C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C7,    ABISELECT(32,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19903C22,    ABISELECT(56,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C21[];
static  VTBL_ENTRY vtc_S19903C21[] = {
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
extern VTBL_ENTRY _ZTV9S19903C21[];
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C21[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C21[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
static  VTT_ENTRY vtt_S19903C21[] = {
  {&(_ZTV9S19903C21[6]),  6,13},
  {&(_ZTV9S19903C21[9]),  9,13},
  {&(_ZTV9S19903C21[13]),  13,13},
  {&(_tg__ZTV8S19903C7__9S19903C21[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C21[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19903C21[];
extern  VTBL_ENTRY _ZTV9S19903C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C21[];
Class_Descriptor cd_S19903C21 = {  "S19903C21", // class name
  bases_S19903C21, 6,
  &(vtc_S19903C21[0]), // expected_vtbl_contents
  &(vtt_S19903C21[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S19903C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19903C21),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C21),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

static void Test_S19903C23()
{
  extern Class_Descriptor cd_S19903C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19903C23, buf);
    S19903C23 *dp, &lv = *(dp=new (buf) S19903C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19903C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C23)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19903C23");
    test_class_info(&lv, &cd_S19903C23);
    dp->~S19903C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C23(Test_S19903C23, "S19903C23", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19903C23C1Ev();
extern void _ZN9S19903C23D1Ev();
Name_Map name_map_S19903C23[] = {
  NSPAIR(_ZN9S19903C23C1Ev),
  NSPAIR(_ZN9S19903C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19903C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19903C23[];
static  VTBL_ENTRY vtc_S19903C23[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
extern VTBL_ENTRY _ZTV9S19903C23[];
static  VTT_ENTRY vtt_S19903C23[] = {
  {&(_ZTV9S19903C23[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
Class_Descriptor cd_S19903C23 = {  "S19903C23", // class name
  bases_S19903C23, 1,
  &(vtc_S19903C23[0]), // expected_vtbl_contents
  &(vtt_S19903C23[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19903C23),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19903C23),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C23),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  S19903C20  : S19490C18 , virtual S19490C26 , virtual S19903C21 , virtual S19903C9 , S19903C23 {
  int s19903c20f0;
  char s19903c20f1;
  ~S19903C20(); // tgen
  S19903C20(); // tgen
};
//SIG(-1 S19903C20) C1{ BC2{ m} VBC3{ m} VBC4{ VBC5{ VBC2 Fp[2]} BC6{ m Fp} VBC7{ BC6 VBC2 VBC3} FC7} VBC8{ VBC9{ m} BC10{ BC6 BC3 BC2} BC11{ m} VBC12{ VBC2 Fi}} BC13{ VBC3} Fi Fc}


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

static void Test_S19903C20()
{
  extern Class_Descriptor cd_S19903C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19903C20, buf);
    S19903C20 *dp, &lv = *(dp=new (buf) S19903C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19903C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C20)");
    /*is_ambiguous_... S19903C20::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S19903C20");
    /*is_ambiguous_... S19903C20::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19903C20");
    check_base_class_offset(lv, (S19490C26*)(S19903C22*), 0, "S19903C20");
    check_base_class_offset(lv, (S19490C26*)(S19903C23*), 0, "S19903C20");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), ABISELECT(72,40), "S19903C20");
    check_base_class_offset(lv, (S19490C18*)(S19903C22*), ABISELECT(72,40), "S19903C20");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), ABISELECT(72,40), "S19903C20");
    check_base_class_offset(lv, (S19903C7*)(S19903C21*), ABISELECT(48,28), "S19903C20");
    /*is_ambiguous_... S19903C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C21*), ABISELECT(24,16), "S19903C20");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*), ABISELECT(80,44), "S19903C20");
    check_base_class_offset(lv, (S19903C22*)(S19903C21*), ABISELECT(72,40), "S19903C20");
    check_base_class_offset(lv, (S19903C21*), ABISELECT(16,12), "S19903C20");
    check_base_class_offset(lv, (S19490C12*)(S19903C9*), 0, "S19903C20");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C9*), ABISELECT(96,52), "S19903C20");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C9*), ABISELECT(96,52), "S19903C20");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C9*), ABISELECT(96,52), "S19903C20");
    check_base_class_offset(lv, (S19903C11*)(S19903C9*), ABISELECT(96,52), "S19903C20");
    check_base_class_offset(lv, (S19490C11*)(S19903C9*), ABISELECT(88,48), "S19903C20");
    check_base_class_offset(lv, (S19903C4*)(S19903C9*), ABISELECT(104,56), "S19903C20");
    check_base_class_offset(lv, (S19903C9*), ABISELECT(88,48), "S19903C20");
    check_base_class_offset(lv, (S19903C23*), 0, "S19903C20");
    check_field_offset(lv, s19903c20f0, ABISELECT(8,4), "S19903C20.s19903c20f0");
    check_field_offset(lv, s19903c20f1, ABISELECT(12,8), "S19903C20.s19903c20f1");
    test_class_info(&lv, &cd_S19903C20);
    dp->~S19903C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C20(Test_S19903C20, "S19903C20", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19903C20C1Ev();
extern void _ZN9S19903C20D1Ev();
Name_Map name_map_S19903C20[] = {
  NSPAIR(_ZN9S19903C20C1Ev),
  NSPAIR(_ZN9S19903C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
extern Class_Descriptor cd_S19903C21;
extern VTBL_ENTRY _ZTI9S19903C21[];
extern  VTBL_ENTRY _ZTV9S19903C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C21[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
extern Class_Descriptor cd_S19903C9;
extern VTBL_ENTRY _ZTI8S19903C9[];
extern  VTBL_ENTRY _ZTV8S19903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C9[];
extern Class_Descriptor cd_S19903C23;
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
static Base_Class bases_S19903C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19903C7,    ABISELECT(48,28), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19903C22,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19903C21,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19903C4,    ABISELECT(104,56), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19903C9,    ABISELECT(88,48), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19903C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C20[];
static  VTBL_ENTRY vtc_S19903C20[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
  ABISELECT(-72,-40),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
  ABISELECT(-32,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
extern VTBL_ENTRY _ZTV9S19903C20[];
static  VTBL_ENTRY _tg__ZTV9S19903C23__9S19903C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C21__9S19903C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C21__9S19903C20[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C21__9S19903C20[] = {
  ABISELECT(-72,-40),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C20[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C20[] = {
  ABISELECT(-72,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__9S19903C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C9__9S19903C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C20[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTT_ENTRY vtt_S19903C20[] = {
  {&(_ZTV9S19903C20[10]),  10,31},
  {&(_tg__ZTV9S19903C23__9S19903C20[3]),  3,3},
  {&(_ZTV9S19903C20[16]),  16,31},
  {&(_ZTV9S19903C20[19]),  19,31},
  {&(_ZTV9S19903C20[23]),  23,31},
  {&(_ZTV9S19903C20[28]),  28,31},
  {&(_ZTV9S19903C20[31]),  31,31},
  {&(_tg__ZTV9S19903C21__9S19903C20[6]),  6,6},
  {&(_tg__ZTV8S19903C7__9S19903C21__9S19903C20[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C21__9S19903C20[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C20[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C20[4]),  4,4},
  {&(_tg__ZTV8S19903C9__9S19903C20[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C9__9S19903C20[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C20[];
extern  VTBL_ENTRY _ZTV9S19903C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C20[];
Class_Descriptor cd_S19903C20 = {  "S19903C20", // class name
  bases_S19903C20, 17,
  &(vtc_S19903C20[0]), // expected_vtbl_contents
  &(vtt_S19903C20[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19903C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19903C20),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C20),15, //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  S19903C25  : S19903C7 {
  ~S19903C25(); // tgen
  S19903C25(); // tgen
};
//SIG(-1 S19903C25) C1{ BC2{ VBC3{ m} Fp[2]}}


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

static void Test_S19903C25()
{
  extern Class_Descriptor cd_S19903C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19903C25, buf);
    S19903C25 *dp, &lv = *(dp=new (buf) S19903C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19903C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C25)");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*), 0, "S19903C25");
    check_base_class_offset(lv, (S19903C7*), 0, "S19903C25");
    test_class_info(&lv, &cd_S19903C25);
    dp->~S19903C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C25(Test_S19903C25, "S19903C25", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19903C25C1Ev();
extern void _ZN9S19903C25D1Ev();
Name_Map name_map_S19903C25[] = {
  NSPAIR(_ZN9S19903C25C1Ev),
  NSPAIR(_ZN9S19903C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
static Base_Class bases_S19903C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C7,    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 _ZTI9S19903C25[];
static  VTBL_ENTRY vtc_S19903C25[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C25[0]),
};
extern VTBL_ENTRY _ZTV9S19903C25[];
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C25[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTT_ENTRY vtt_S19903C25[] = {
  {&(_ZTV9S19903C25[3]),  3,3},
  {&(_tg__ZTV8S19903C7__9S19903C25[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C25[];
extern  VTBL_ENTRY _ZTV9S19903C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C25[];
Class_Descriptor cd_S19903C25 = {  "S19903C25", // class name
  bases_S19903C25, 2,
  &(vtc_S19903C25[0]), // expected_vtbl_contents
  &(vtt_S19903C25[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19903C25),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19903C25),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C25),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  S19903C24  : S19903C22 , S19903C15 , S19903C25 , virtual S19903C23 {
  char s19903c24f0;
  void *s19903c24f1;
  virtual  ~S19903C24(); // _ZN9S19903C24D2Ev
  S19903C24(); // tgen
};
//SIG(-1 S19903C24) C1{ BC2{ BC3{ m Fp} VBC4{ m} VBC5{ m}} BC6{ VBC7{ VBC8{ BC3 BC5 BC4} VBC9{ m} BC5} BC3 BC4 vd FD Fi} BC10{ BC11{ VBC4 Fp[2]}} VBC12{ VBC5} vd Fc Fp}


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

static void Test_S19903C24()
{
  extern Class_Descriptor cd_S19903C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S19903C24, buf);
    S19903C24 *dp, &lv = *(dp=new (buf) S19903C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19903C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C24)");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*), ABISELECT(8,4), "S19903C24");
    check_base_class_offset(lv, (S19490C18*)(S19903C22*), 0, "S19903C24");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*)(S19903C25*), 0, "S19903C24");
    check_base_class_offset(lv, (S19490C26*)(S19903C22*), 0, "S19903C24");
    check_base_class_offset(lv, (S19490C26*)(S19903C23*), 0, "S19903C24");
    check_base_class_offset(lv, (S19903C22*), 0, "S19903C24");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(96,52), "S19903C24");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(96,52), "S19903C24");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(96,52), "S19903C24");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(96,52), "S19903C24");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C24");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), ABISELECT(16,8), "S19903C24");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*), ABISELECT(16,8), "S19903C24");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*), ABISELECT(24,12), "S19903C24");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*), ABISELECT(16,8), "S19903C24");
    check_base_class_offset(lv, (S19903C15*), ABISELECT(16,8), "S19903C24");
    check_base_class_offset(lv, (S19903C7*)(S19903C25*), ABISELECT(56,32), "S19903C24");
    check_base_class_offset(lv, (S19903C25*), ABISELECT(56,32), "S19903C24");
    check_base_class_offset(lv, (S19903C23*), ABISELECT(104,56), "S19903C24");
    check_field_offset(lv, s19903c24f0, ABISELECT(80,44), "S19903C24.s19903c24f0");
    check_field_offset(lv, s19903c24f1, ABISELECT(88,48), "S19903C24.s19903c24f1");
    test_class_info(&lv, &cd_S19903C24);
    dp->~S19903C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C24(Test_S19903C24, "S19903C24", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19903C24C1Ev();
extern void _ZN9S19903C24D2Ev();
Name_Map name_map_S19903C24[] = {
  NSPAIR(_ZN9S19903C24C1Ev),
  NSPAIR(_ZN9S19903C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19903C25;
extern VTBL_ENTRY _ZTI9S19903C25[];
extern  VTBL_ENTRY _ZTV9S19903C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C25[];
extern Class_Descriptor cd_S19903C23;
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
static Base_Class bases_S19903C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C22,    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_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    10, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19903C16,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19903C15,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19903C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19903C25,    ABISELECT(56,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19903C23,    ABISELECT(104,56), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C24[];
extern void _ZN9S19903C24D1Ev();
extern void _ZN9S19903C24D0Ev();
extern void ABISELECT(_ZThn16_N9S19903C24D1Ev,_ZThn8_N9S19903C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S19903C24D0Ev,_ZThn8_N9S19903C24D0Ev)();
static  VTBL_ENTRY vtc_S19903C24[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(96,52),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  (VTBL_ENTRY)&_ZN9S19903C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C24D0Ev,
  0,
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C24D1Ev,_ZThn8_N9S19903C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C24D0Ev,_ZThn8_N9S19903C24D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
};
extern VTBL_ENTRY _ZTV9S19903C24[];
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C24[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C15__9S19903C24[] = {
  0,
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C25__9S19903C24[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C79S19903C25__9S19903C24[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C23__9S19903C24[] = {
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
static  VTT_ENTRY vtt_S19903C24[] = {
  {&(_ZTV9S19903C24[8]),  8,23},
  {&(_tg__ZTV9S19903C22__9S19903C24[4]),  4,4},
  {&(_tg__ZTV9S19903C15__9S19903C24[5]),  5,7},
  {&(_tg__ZTV9S19903C15__9S19903C24[5]),  5,7},
  {&(_tg__ZTV9S19903C25__9S19903C24[3]),  3,3},
  {&(_tg__ZTV8S19903C79S19903C25__9S19903C24[3]),  3,3},
  {&(_ZTV9S19903C24[15]),  15,23},
  {&(_ZTV9S19903C24[15]),  15,23},
  {&(_ZTV9S19903C24[20]),  20,23},
  {&(_ZTV9S19903C24[23]),  23,23},
  {&(_tg__ZTV9S19903C16__9S19903C24[4]),  4,4},
  {&(_tg__ZTV9S19903C23__9S19903C24[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C24[];
extern  VTBL_ENTRY _ZTV9S19903C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C24[];
Class_Descriptor cd_S19903C24 = {  "S19903C24", // class name
  bases_S19903C24, 17,
  &(vtc_S19903C24[0]), // expected_vtbl_contents
  &(vtt_S19903C24[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19903C24),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19903C24),23, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C24),12, //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  S19903C26  : S19490C26 , virtual S19490C18 , S19903C11 {
  ~S19903C26(); // tgen
  S19903C26(); // tgen
};
//SIG(-1 S19903C26) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S19903C26()
{
  extern Class_Descriptor cd_S19903C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19903C26, buf);
    S19903C26 *dp, &lv = *(dp=new (buf) S19903C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19903C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19903C26)");
    /*is_ambiguous_... S19903C26::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19903C26");
    /*is_ambiguous_... S19903C26::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S19903C26");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(8,4), "S19903C26");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(8,4), "S19903C26");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(8,4), "S19903C26");
    check_base_class_offset(lv, (S19903C11*), ABISELECT(8,4), "S19903C26");
    test_class_info(&lv, &cd_S19903C26);
    dp->~S19903C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C26(Test_S19903C26, "S19903C26", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19903C26C1Ev();
extern void _ZN9S19903C26D1Ev();
Name_Map name_map_S19903C26[] = {
  NSPAIR(_ZN9S19903C26C1Ev),
  NSPAIR(_ZN9S19903C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
static Base_Class bases_S19903C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19903C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19903C26[];
static  VTBL_ENTRY vtc_S19903C26[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C26[0]),
};
extern VTBL_ENTRY _ZTV9S19903C26[];
static  VTT_ENTRY vtt_S19903C26[] = {
  {&(_ZTV9S19903C26[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C26[];
extern  VTBL_ENTRY _ZTV9S19903C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C26[];
Class_Descriptor cd_S19903C26 = {  "S19903C26", // class name
  bases_S19903C26, 6,
  &(vtc_S19903C26[0]), // expected_vtbl_contents
  &(vtt_S19903C26[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19903C26),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19903C26),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C26),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  S19903C19  : S19903C20 , S19903C24 , virtual S19903C3 , S19903C26 , virtual S1538C28_nt {
  __tsi64 s19903c19f0;
  virtual  ~S19903C19(); // _ZN9S19903C19D2Ev
  S19903C19(); // tgen
};
//SIG(-1 S19903C19) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ VBC6{ VBC3 Fp[2]} BC7{ m Fp} VBC8{ BC7 VBC3 VBC4} FC8} VBC9{ VBC10{ m} BC11{ BC7 BC4 BC3} BC12{ m} VBC13{ VBC3 Fi}} BC14{ VBC4} Fi Fc} BC15{ BC8 BC16{ VBC17{ VBC11 VBC12 BC4} BC7 BC3 vd FD Fi} BC18{ BC6} VBC14 vd Fc Fp} VBC19{ VBC13 BC20{ VBC6 VBC7 VBC9 VBC21{ m} VBC22{ BC16 VBC6 VBC13}} BC23{ m} BC24{ BC22 vd} vd Fi[2]} BC25{ BC4 VBC3 BC11} VBC26{ m} vd FL}


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

static void Test_S19903C19()
{
  extern Class_Descriptor cd_S19903C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,52)];
    init_test(&cd_S19903C19, buf);
    S19903C19 *dp, &lv = *(dp=new (buf) S19903C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,204), "sizeof(S19903C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C19)");
    /*is_ambiguous_... S19903C20::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C20*), 0, "S19903C19");
    /*is_ambiguous_... S19903C20::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C20*), 0, "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C22 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C22*), 0, "S19903C19");
    check_base_class_offset(lv, (S19490C26*)(S19903C23*)(S19903C20*), 0, "S19903C19");
    check_base_class_offset(lv, (S19490C26*)(S19903C22*)(S19903C24*), 0, "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C23 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C23*), 0, "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C7 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C7*), ABISELECT(192,108), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C22 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C22*), ABISELECT(192,108), "S19903C19");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), ABISELECT(192,108), "S19903C19");
    check_base_class_offset(lv, (S19490C18*)(S19903C22*)(S19903C24*), ABISELECT(192,108), "S19903C19");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*)(S19903C25*)(S19903C24*), ABISELECT(192,108), "S19903C19");
    /*is_ambiguous_... S19903C26::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C26*), ABISELECT(192,108), "S19903C19");
    check_base_class_offset(lv, (S19903C7*)(S19903C21*), ABISELECT(168,96), "S19903C19");
    check_base_class_offset(lv, (S19903C7*)(S19903C6*)(S19903C3*), ABISELECT(168,96), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C7*)(S19903C14*), ABISELECT(168,96), "S19903C19");
    check_base_class_offset(lv, (S19903C7*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(168,96), "S19903C19");
    /*is_ambiguous_... S19903C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C21*), ABISELECT(144,84), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C22 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*), ABISELECT(200,112), "S19903C19");
    check_base_class_offset(lv, (S19903C22*)(S19903C21*), ABISELECT(192,108), "S19903C19");
    check_base_class_offset(lv, (S19903C21*)(S19903C20*), ABISELECT(136,80), "S19903C19");
    check_base_class_offset(lv, (S19490C12*)(S19903C9*), 0, "S19903C19");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C9*), ABISELECT(216,120), "S19903C19");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C9*), ABISELECT(216,120), "S19903C19");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C9*), ABISELECT(216,120), "S19903C19");
    check_base_class_offset(lv, (S19903C11*)(S19903C9*), ABISELECT(216,120), "S19903C19");
    check_base_class_offset(lv, (S19490C11*)(S19903C9*), ABISELECT(208,116), "S19903C19");
    check_base_class_offset(lv, (S19903C4*)(S19903C9*), ABISELECT(224,124), "S19903C19");
    check_base_class_offset(lv, (S19903C4*)(S19903C3*), ABISELECT(224,124), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C4*)(S19903C14*), ABISELECT(224,124), "S19903C19");
    check_base_class_offset(lv, (S19903C4*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(224,124), "S19903C19");
    check_base_class_offset(lv, (S19903C9*)(S19903C20*), ABISELECT(208,116), "S19903C19");
    check_base_class_offset(lv, (S19903C9*)(S19903C6*)(S19903C3*), ABISELECT(208,116), "S19903C19");
    check_base_class_offset(lv, (S19903C23*)(S19903C20*), 0, "S19903C19");
    check_base_class_offset(lv, (S19903C20*), 0, "S19903C19");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*)(S19903C24*), ABISELECT(24,16), "S19903C19");
    check_base_class_offset(lv, (S19903C22*)(S19903C24*), ABISELECT(16,12), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(240,132), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(240,132), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(240,132), "S19903C19");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(240,132), "S19903C19");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C19");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), ABISELECT(32,20), "S19903C19");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C24*), ABISELECT(32,20), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*), ABISELECT(32,20), "S19903C19");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(32,20), "S19903C19");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C24*), ABISELECT(40,24), "S19903C19");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C24*), ABISELECT(32,20), "S19903C19");
    check_base_class_offset(lv, (S19903C15*)(S19903C24*), ABISELECT(32,20), "S19903C19");
    check_base_class_offset(lv, (S19903C7*)(S19903C25*)(S19903C24*), ABISELECT(72,44), "S19903C19");
    check_base_class_offset(lv, (S19903C25*)(S19903C24*), ABISELECT(72,44), "S19903C19");
    check_base_class_offset(lv, (S19903C23*)(S19903C24*), ABISELECT(248,136), "S19903C19");
    check_base_class_offset(lv, (S19903C24*), ABISELECT(16,12), "S19903C19");
    /*is_ambiguous_... S19903C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C6*)(S19903C3*), ABISELECT(320,176), "S19903C19");
    check_base_class_offset(lv, (S19490C7*)(S19903C6*)(S19903C3*), 0, "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C14 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*), ABISELECT(344,184), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C14 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*), ABISELECT(336,180), "S19903C19");
    /*is_ambiguous_... S19903C19::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C15*)(S19903C14*), ABISELECT(336,180), "S19903C19");
    check_base_class_offset(lv, (S19903C14*)(S19903C6*)(S19903C3*), ABISELECT(336,180), "S19903C19");
    check_base_class_offset(lv, (S19903C6*)(S19903C3*), ABISELECT(256,140), "S19903C19");
    check_base_class_offset(lv, (S19490C6_nt*)(S19903C3*), ABISELECT(256,140), "S19903C19");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(280,148), "S19903C19");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(272,144), "S19903C19");
    check_base_class_offset(lv, (S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(272,144), "S19903C19");
    check_base_class_offset(lv, (S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(272,144), "S19903C19");
    check_base_class_offset(lv, (S19903C18*)(S19903C3*), ABISELECT(272,144), "S19903C19");
    check_base_class_offset(lv, (S19903C3*), ABISELECT(256,140), "S19903C19");
    /*is_ambiguous_... S19903C26::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C26*), ABISELECT(112,64), "S19903C19");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C26*), ABISELECT(120,68), "S19903C19");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C26*), ABISELECT(120,68), "S19903C19");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C26*), ABISELECT(120,68), "S19903C19");
    check_base_class_offset(lv, (S19903C11*)(S19903C26*), ABISELECT(120,68), "S19903C19");
    check_base_class_offset(lv, (S19903C26*), ABISELECT(112,64), "S19903C19");
    check_base_class_offset(lv, (S1538C28_nt*), 0, "S19903C19");
    check_field_offset(lv, s19903c19f0, ABISELECT(128,72), "S19903C19.s19903c19f0");
    test_class_info(&lv, &cd_S19903C19);
    dp->~S19903C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C19(Test_S19903C19, "S19903C19", ABISELECT(384,204));

#else // __cplusplus

extern void _ZN9S19903C19C1Ev();
extern void _ZN9S19903C19D2Ev();
Name_Map name_map_S19903C19[] = {
  NSPAIR(_ZN9S19903C19C1Ev),
  NSPAIR(_ZN9S19903C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
extern Class_Descriptor cd_S19903C21;
extern VTBL_ENTRY _ZTI9S19903C21[];
extern  VTBL_ENTRY _ZTV9S19903C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C21[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
extern Class_Descriptor cd_S19903C9;
extern VTBL_ENTRY _ZTI8S19903C9[];
extern  VTBL_ENTRY _ZTV8S19903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C9[];
extern Class_Descriptor cd_S19903C23;
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
extern Class_Descriptor cd_S19903C20;
extern VTBL_ENTRY _ZTI9S19903C20[];
extern  VTBL_ENTRY _ZTV9S19903C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C20[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19903C25;
extern VTBL_ENTRY _ZTI9S19903C25[];
extern  VTBL_ENTRY _ZTV9S19903C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C25[];
extern Class_Descriptor cd_S19903C23;
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
extern Class_Descriptor cd_S19903C24;
extern VTBL_ENTRY _ZTI9S19903C24[];
extern  VTBL_ENTRY _ZTV9S19903C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C24[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
extern Class_Descriptor cd_S19903C6;
extern VTBL_ENTRY _ZTI8S19903C6[];
extern  VTBL_ENTRY _ZTV8S19903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C6[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
extern Class_Descriptor cd_S19903C18;
extern VTBL_ENTRY _ZTI9S19903C18[];
extern  VTBL_ENTRY _ZTV9S19903C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C18[];
extern Class_Descriptor cd_S19903C3;
extern VTBL_ENTRY _ZTI8S19903C3[];
extern  VTBL_ENTRY _ZTV8S19903C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19903C26;
extern VTBL_ENTRY _ZTI9S19903C26[];
extern  VTBL_ENTRY _ZTV9S19903C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C26[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S19903C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19903C7,    ABISELECT(168,96), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19903C22,    ABISELECT(192,108), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19903C21,    ABISELECT(136,80), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19903C4,    ABISELECT(224,124), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19903C9,    ABISELECT(208,116), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19903C23,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19903C20,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_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
    19, //immediately_derived
  0, 0},
  {&cd_S19903C22,    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
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19903C11,    ABISELECT(240,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
    26, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19903C16,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    29, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    29, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19903C7,    ABISELECT(72,44), //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19903C25,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19903C23,    ABISELECT(248,136), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19903C24,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(320,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    38, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    38, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19903C14,    ABISELECT(336,180), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19903C6,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19490C6_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
    47, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    44, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    44, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19903C14,    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
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19903C18,    ABISELECT(272,144), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19903C3,    ABISELECT(256,140), //bcp->offset
    68, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19903C26,    ABISELECT(112,64), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19903C19[];
extern void _ZN9S19903C19D1Ev();
extern void _ZN9S19903C19D0Ev();
extern void ABISELECT(_ZThn16_N9S19903C19D1Ev,_ZThn12_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S19903C19D0Ev,_ZThn12_N9S19903C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S19903C19D1Ev,_ZThn20_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19903C19D0Ev,_ZThn20_N9S19903C19D0Ev)();
extern void ABISELECT(_ZTv0_n112_N9S19903C19D1Ev,_ZTv0_n56_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn256_N9S19903C19D1Ev,_ZThn140_N9S19903C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S19903C19D0Ev,_ZTv0_n56_N9S19903C19D0Ev)();
extern void ABISELECT(_ZThn256_N9S19903C19D0Ev,_ZThn140_N9S19903C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N9S19903C19D1Ev,_ZTvn4_n56_N9S19903C19D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N9S19903C19D0Ev,_ZTvn4_n56_N9S19903C19D0Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19903C19D1Ev,_ZTv0_n36_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn336_N9S19903C19D1Ev,_ZThn180_N9S19903C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19903C19D0Ev,_ZTv0_n36_N9S19903C19D0Ev)();
extern void ABISELECT(_ZThn336_N9S19903C19D0Ev,_ZThn180_N9S19903C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19903C19[] = {
  0,
  ABISELECT(336,180),
  0,
  ABISELECT(320,176),
  ABISELECT(256,140),
  ABISELECT(248,136),
  0,
  ABISELECT(240,132),
  ABISELECT(32,20),
  ABISELECT(224,124),
  0,
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(168,96),
  ABISELECT(136,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&_ZN9S19903C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C19D0Ev,
  ABISELECT(232,124),
  ABISELECT(-16,-12),
  ABISELECT(224,120),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C19D1Ev,_ZThn12_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C19D0Ev,_ZThn12_N9S19903C19D0Ev),
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19903C19D1Ev,_ZThn20_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19903C19D0Ev,_ZThn20_N9S19903C19D0Ev),
  ABISELECT(120,64),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(80,44),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(24,12),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(-192,-108),
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  ABISELECT(-256,-140),
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19903C19D1Ev,_ZTv0_n56_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19903C19D0Ev,_ZTv0_n56_N9S19903C19D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19903C19D1Ev,_ZTvn4_n56_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19903C19D0Ev,_ZTvn4_n56_N9S19903C19D0Ev),
  ABISELECT(-336,-180),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19903C19D1Ev,_ZTv0_n36_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19903C19D0Ev,_ZTv0_n36_N9S19903C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S19903C19[];
static  VTBL_ENTRY _tg__ZTV9S19903C20__9S19903C19[] = {
  ABISELECT(224,124),
  0,
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(168,96),
  ABISELECT(136,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C239S19903C20__9S19903C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C21__9S19903C20__9S19903C19[] = {
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C20__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C20__9S19903C19[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__9S19903C20__9S19903C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C20__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
extern void _ZN9S19903C24D1Ev();
extern void _ZN9S19903C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C24__9S19903C19[] = {
  ABISELECT(232,124),
  ABISELECT(-16,-12),
  ABISELECT(224,120),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  (VTBL_ENTRY)&_ZN9S19903C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C229S19903C24__A1__9S19903C19[] = {
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C24__9S19903C19[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C259S19903C24__9S19903C19[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C79S19903C259S19903C24__A1__9S19903C19[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
extern void ABISELECT(_ZThn16_N9S19903C24D1Ev,_ZThn8_N9S19903C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S19903C24D0Ev,_ZThn8_N9S19903C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C15__9S19903C24__9S19903C19[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C24D1Ev,_ZThn8_N9S19903C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C24D0Ev,_ZThn8_N9S19903C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19903C25__9S19903C24__9S19903C19[] = {
  ABISELECT(120,64),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C23__9S19903C24__9S19903C19[] = {
  ABISELECT(-248,-136),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C26__9S19903C19[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C26[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C21__9S19903C19[] = {
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C21__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C21__9S19903C19[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C19[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C19[] = {
  ABISELECT(-192,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__9S19903C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C9__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C19[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C23__A1__9S19903C19[] = {
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
extern void _ZN8S19903C3D1Ev();
extern void _ZN8S19903C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19903C3__9S19903C19[] = {
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&_ZN8S19903C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C3D0Ev,
};
extern void _ZN8S19903C6D1Ev();
extern void _ZN8S19903C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19903C68S19903C3__9S19903C19[] = {
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&_ZN8S19903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C68S19903C3__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C68S19903C3__9S19903C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C68S19903C3__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19903C6D1Ev,_ZThn40_N8S19903C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19903C6D0Ev,_ZThn40_N8S19903C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C68S19903C3__9S19903C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__8S19903C68S19903C3__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
extern void _ZN9S19903C18D1Ev();
extern void _ZN9S19903C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C188S19903C3__9S19903C19[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
  (VTBL_ENTRY)&_ZN9S19903C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C18D0Ev,
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C149S19903C188S19903C3__A1__9S19903C19[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C149S19903C188S19903C3__A2__9S19903C19[] = {
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C149S19903C188S19903C3__A2__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C149S19903C188S19903C3__A1__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C149S19903C188S19903C3__A1__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C149S19903C188S19903C3__A1__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C188S19903C3__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C188S19903C3__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C188S19903C3__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C3__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C3__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C3__9S19903C19[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S19903C3D1Ev,_ZThn40_N8S19903C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S19903C3D0Ev,_ZThn40_N8S19903C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C3__9S19903C19[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__8S19903C3__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
extern void ABISELECT(_ZThn16_N8S19903C3D1Ev,_ZThn4_N8S19903C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19903C3D0Ev,_ZThn4_N8S19903C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C18__8S19903C3__9S19903C19[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C3D1Ev,_ZThn4_N8S19903C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C3D0Ev,_ZThn4_N8S19903C3D0Ev),
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C14__9S19903C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C14__A1__9S19903C19[] = {
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C14__A1__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C14__9S19903C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C14__9S19903C19[] = {
  ABISELECT(24,12),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C14__9S19903C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTT_ENTRY vtt_S19903C19[] = {
  {&(_ZTV9S19903C19[19]),  19,105},
  {&(_tg__ZTV9S19903C20__9S19903C19[10]),  10,10},
  {&(_tg__ZTV9S19903C239S19903C20__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C21__9S19903C20__9S19903C19[6]),  6,6},
  {&(_tg__ZTV8S19903C7__9S19903C20__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C20__9S19903C19[4]),  4,4},
  {&(_tg__ZTV8S19903C9__9S19903C20__9S19903C19[5]),  5,5},
  {&(_tg__ZTV8S19903C4__9S19903C20__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C24__9S19903C19[8]),  8,10},
  {&(_tg__ZTV9S19903C229S19903C24__A1__9S19903C19[4]),  4,4},
  {&(_tg__ZTV9S19903C159S19903C24__9S19903C19[5]),  5,7},
  {&(_tg__ZTV9S19903C159S19903C24__9S19903C19[5]),  5,7},
  {&(_tg__ZTV9S19903C259S19903C24__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C79S19903C259S19903C24__A1__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C15__9S19903C24__9S19903C19[5]),  5,7},
  {&(_tg__ZTV9S19903C15__9S19903C24__9S19903C19[5]),  5,7},
  {&(_tg__ZTV9S19903C25__9S19903C24__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C23__9S19903C24__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C26__9S19903C19[3]),  3,3},
  {&(_ZTV9S19903C19[50]),  50,105},
  {&(_ZTV9S19903C19[53]),  53,105},
  {&(_ZTV9S19903C19[57]),  57,105},
  {&(_ZTV9S19903C19[62]),  62,105},
  {&(_ZTV9S19903C19[65]),  65,105},
  {&(_ZTV9S19903C19[29]),  29,105},
  {&(_ZTV9S19903C19[36]),  36,105},
  {&(_ZTV9S19903C19[36]),  36,105},
  {&(_ZTV9S19903C19[41]),  41,105},
  {&(_ZTV9S19903C19[68]),  68,105},
  {&(_ZTV9S19903C19[82]),  82,105},
  {&(_ZTV9S19903C19[103]),  103,105},
  {&(_ZTV9S19903C19[92]),  92,105},
  {&(_ZTV9S19903C19[44]),  44,105},
  {&(_tg__ZTV9S19903C21__9S19903C19[6]),  6,6},
  {&(_tg__ZTV8S19903C7__9S19903C21__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C21__9S19903C19[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C19[4]),  4,4},
  {&(_tg__ZTV8S19903C9__9S19903C19[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C9__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C16__9S19903C19[4]),  4,4},
  {&(_tg__ZTV9S19903C23__A1__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C3__9S19903C19[13]),  13,15},
  {&(_tg__ZTV8S19903C68S19903C3__9S19903C19[13]),  13,15},
  {&(_tg__ZTV8S19903C7__8S19903C68S19903C3__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C68S19903C3__9S19903C19[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C68S19903C3__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C14__8S19903C68S19903C3__9S19903C19[9]),  9,11},
  {&(_tg__ZTV9S19903C16__8S19903C68S19903C3__9S19903C19[4]),  4,4},
  {&(_tg__ZTV9S19903C188S19903C3__9S19903C19[8]),  8,10},
  {&(_tg__ZTV9S19903C149S19903C188S19903C3__A1__9S19903C19[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C149S19903C188S19903C3__A2__9S19903C19[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C149S19903C188S19903C3__A2__9S19903C19[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C149S19903C188S19903C3__A1__9S19903C19[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C149S19903C188S19903C3__A1__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C149S19903C188S19903C3__A1__9S19903C19[3]),  3,3},
  {&(_tg__ZTV9S19903C16__9S19903C188S19903C3__9S19903C19[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C188S19903C3__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C188S19903C3__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C4__8S19903C3__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C7__8S19903C3__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C3__9S19903C19[5]),  5,5},
  {&(_tg__ZTV9S19903C14__8S19903C3__9S19903C19[9]),  9,11},
  {&(_tg__ZTV9S19903C16__8S19903C3__9S19903C19[4]),  4,4},
  {&(_tg__ZTV9S19903C18__8S19903C3__9S19903C19[8]),  8,10},
  {&(_tg__ZTV9S19903C14__9S19903C19[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C14__A1__9S19903C19[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C14__A1__9S19903C19[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C14__9S19903C19[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C14__9S19903C19[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C14__9S19903C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19903C19[];
extern  VTBL_ENTRY _ZTV9S19903C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C19[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19903C3D0Ev,_ZThn40_N8S19903C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19903C3D1Ev,_ZThn40_N8S19903C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19903C6D0Ev,_ZThn40_N8S19903C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19903C6D1Ev,_ZThn40_N8S19903C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19903C19D0Ev,_ZTv0_n36_N9S19903C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19903C19D0Ev,_ZThn180_N9S19903C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19903C19D1Ev,_ZTv0_n36_N9S19903C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19903C19D1Ev,_ZThn180_N9S19903C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19903C19D0Ev,_ZTv0_n56_N9S19903C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19903C19D0Ev,_ZThn140_N9S19903C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19903C19D1Ev,_ZTv0_n56_N9S19903C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19903C19D1Ev,_ZThn140_N9S19903C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19903C19 = {  "S19903C19", // class name
  bases_S19903C19, 55,
  &(vtc_S19903C19[0]), // expected_vtbl_contents
  &(vtt_S19903C19[0]), // expected_vtt_contents
  ABISELECT(384,204), // object size
  NSPAIRA(_ZTI9S19903C19),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19903C19),105, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19903C19),72, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19903C28_nt  : virtual S19490C11 {
  virtual  ~S19903C28_nt(); // _ZN12S19903C28_ntD2Ev
  S19903C28_nt(); // tgen
};
//SIG(-1 S19903C28_nt) C1{ VBC2{ m} vd}


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

//skip512 S19903C28_nt

#else // __cplusplus

extern void _ZN12S19903C28_ntC1Ev();
extern void _ZN12S19903C28_ntD2Ev();
Name_Map name_map_S19903C28_nt[] = {
  NSPAIR(_ZN12S19903C28_ntC1Ev),
  NSPAIR(_ZN12S19903C28_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
static Base_Class bases_S19903C28_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S19903C28_nt[];
extern void _ZN12S19903C28_ntD1Ev();
extern void _ZN12S19903C28_ntD0Ev();
static  VTBL_ENTRY vtc_S19903C28_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19903C28_nt[0]),
  (VTBL_ENTRY)&_ZN12S19903C28_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19903C28_ntD0Ev,
};
extern VTBL_ENTRY _ZTV12S19903C28_nt[];
static  VTT_ENTRY vtt_S19903C28_nt[] = {
  {&(_ZTV12S19903C28_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI12S19903C28_nt[];
VTBL_ENTRY *P__ZTI12S19903C28_nt = _ZTI12S19903C28_nt; 
extern  VTBL_ENTRY _ZTV12S19903C28_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19903C28_nt[];
Class_Descriptor cd_S19903C28_nt = {  "S19903C28_nt", // class name
  bases_S19903C28_nt, 1,
  &(vtc_S19903C28_nt[0]), // expected_vtbl_contents
  &(vtt_S19903C28_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19903C28_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19903C28_nt),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19903C28_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  S19903C1  : virtual S19490C26 , virtual S19903C3 , S19903C19 , S19903C28_nt {
  virtual  ~S19903C1(); // _ZN8S19903C1D2Ev
  S19903C1(); // tgen
};
//SIG(1 S19903C1) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ m} Fi} BC6{ VBC7{ VBC5 Fp[2]} VBC8{ m Fp} VBC9{ VBC10{ m} BC11{ BC8 BC2 BC5} BC12{ m} VBC4} VBC13{ m} VBC14{ BC15{ VBC16{ VBC11 VBC12 BC2} BC8 BC5 vd FD Fi} VBC7 VBC4}} BC17{ m} BC18{ BC14 vd} vd Fi[2]} BC19{ BC20{ BC5 VBC2 VBC21{ VBC7 BC8 VBC22{ BC8 VBC5 VBC2} FC22} VBC9 BC23{ VBC2} Fi Fc} BC24{ BC22 BC15 BC25{ BC7} VBC23 vd Fc Fp} VBC3 BC26{ BC2 VBC5 BC11} VBC27{ m} vd FL} BC28{ VBC12 vd} vd}


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

static void Test_S19903C1()
{
  extern Class_Descriptor cd_S19903C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,53)];
    init_test(&cd_S19903C1, buf);
    S19903C1 *dp, &lv = *(dp=new (buf) S19903C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,208), "sizeof(S19903C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19903C1)");
    /*is_ambiguous_... S19903C1::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19903C1");
    /*is_ambiguous_... S19903C20::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C20*)(S19903C19*), 0, "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C22 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C22*), 0, "S19903C1");
    check_base_class_offset(lv, (S19490C26*)(S19903C23*)(S19903C20*)(S19903C19*), 0, "S19903C1");
    check_base_class_offset(lv, (S19490C26*)(S19903C22*)(S19903C24*)(S19903C19*), 0, "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C23 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C23*), 0, "S19903C1");
    check_base_class_offset(lv, (S19490C18*)(S19903C4*), ABISELECT(220,128), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C7 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C7*), ABISELECT(220,128), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C22 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C22*), ABISELECT(220,128), "S19903C1");
    check_base_class_offset(lv, (S19490C18*)(S19903C22*)(S19903C24*)(S19903C19*), ABISELECT(220,128), "S19903C1");
    check_base_class_offset(lv, (S19490C18*)(S19903C7*)(S19903C25*)(S19903C24*)(S19903C19*), ABISELECT(220,128), "S19903C1");
    /*is_ambiguous_... S19903C26::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C26*)(S19903C19*), ABISELECT(220,128), "S19903C1");
    check_base_class_offset(lv, (S19903C4*)(S19903C3*), ABISELECT(208,120), "S19903C1");
    check_base_class_offset(lv, (S19903C4*)(S19903C9*), ABISELECT(208,120), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C4*)(S19903C14*), ABISELECT(208,120), "S19903C1");
    check_base_class_offset(lv, (S19903C4*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(208,120), "S19903C1");
    check_base_class_offset(lv, (S19903C7*)(S19903C6*)(S19903C3*), ABISELECT(224,128), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C7*)(S19903C14*), ABISELECT(224,128), "S19903C1");
    check_base_class_offset(lv, (S19903C7*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(224,128), "S19903C1");
    check_base_class_offset(lv, (S19903C7*)(S19903C21*), ABISELECT(224,128), "S19903C1");
    /*is_ambiguous_... S19903C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C6*)(S19903C3*), ABISELECT(248,140), "S19903C1");
    check_base_class_offset(lv, (S19490C12*)(S19903C9*), 0, "S19903C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C9*), ABISELECT(264,148), "S19903C1");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C9*), ABISELECT(264,148), "S19903C1");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C9*), ABISELECT(264,148), "S19903C1");
    check_base_class_offset(lv, (S19903C11*)(S19903C9*), ABISELECT(264,148), "S19903C1");
    check_base_class_offset(lv, (S19490C11*)(S19903C9*), ABISELECT(256,144), "S19903C1");
    check_base_class_offset(lv, (S19903C9*)(S19903C6*)(S19903C3*), ABISELECT(256,144), "S19903C1");
    check_base_class_offset(lv, (S19903C9*)(S19903C20*)(S19903C19*), ABISELECT(256,144), "S19903C1");
    check_base_class_offset(lv, (S19490C7*)(S19903C6*)(S19903C3*), 0, "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*), ABISELECT(312,176), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C11*), ABISELECT(312,176), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C11 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C11*), ABISELECT(312,176), "S19903C1");
    check_base_class_offset(lv, (S19903C11*)(S19903C16*), ABISELECT(312,176), "S19903C1");
    check_base_class_offset(lv, (S19490C11*)(S19903C16*), 0, "S19903C1");
    check_base_class_offset(lv, (S19490C11*)(S19903C28_nt*), 0, "S19903C1");
    /*is_ambiguous_... S19903C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C16*), ABISELECT(144,84), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*), ABISELECT(144,84), "S19903C1");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(144,84), "S19903C1");
    check_base_class_offset(lv, (S19903C16*)(S19903C15*)(S19903C24*)(S19903C19*), ABISELECT(144,84), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C14 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*), ABISELECT(280,156), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C14 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*), ABISELECT(272,152), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C14 */ AMB_check_base_class_offset(lv, (S19903C15*)(S19903C14*), ABISELECT(272,152), "S19903C1");
    check_base_class_offset(lv, (S19903C14*)(S19903C6*)(S19903C3*), ABISELECT(272,152), "S19903C1");
    check_base_class_offset(lv, (S19903C6*)(S19903C3*), ABISELECT(144,84), "S19903C1");
    check_base_class_offset(lv, (S19490C6_nt*)(S19903C3*), ABISELECT(144,84), "S19903C1");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(168,92), "S19903C1");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(160,88), "S19903C1");
    check_base_class_offset(lv, (S19903C15*)(S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(160,88), "S19903C1");
    check_base_class_offset(lv, (S19903C14*)(S19903C18*)(S19903C3*), ABISELECT(160,88), "S19903C1");
    check_base_class_offset(lv, (S19903C18*)(S19903C3*), ABISELECT(160,88), "S19903C1");
    check_base_class_offset(lv, (S19903C3*), ABISELECT(144,84), "S19903C1");
    check_base_class_offset(lv, (S19903C3*)(S19903C19*), ABISELECT(144,84), "S19903C1");
    /*is_ambiguous_... S19903C20::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C20*)(S19903C19*), 0, "S19903C1");
    /*is_ambiguous_... S19903C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C21*), ABISELECT(328,184), "S19903C1");
    /*is_ambiguous_... S19903C1::S19903C22 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*), ABISELECT(360,200), "S19903C1");
    check_base_class_offset(lv, (S19903C22*)(S19903C21*), ABISELECT(352,196), "S19903C1");
    check_base_class_offset(lv, (S19903C21*)(S19903C20*)(S19903C19*), ABISELECT(320,180), "S19903C1");
    check_base_class_offset(lv, (S19903C23*)(S19903C20*)(S19903C19*), 0, "S19903C1");
    check_base_class_offset(lv, (S19903C20*)(S19903C19*), 0, "S19903C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C22*)(S19903C24*)(S19903C19*), ABISELECT(24,16), "S19903C1");
    check_base_class_offset(lv, (S19903C22*)(S19903C24*)(S19903C19*), ABISELECT(16,12), "S19903C1");
    /*is_ambiguous_... S19903C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19903C15*)(S19903C24*)(S19903C19*), ABISELECT(40,24), "S19903C1");
    /*is_ambiguous_... S19903C15::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19903C15*)(S19903C24*)(S19903C19*), ABISELECT(32,20), "S19903C1");
    check_base_class_offset(lv, (S19903C15*)(S19903C24*)(S19903C19*), ABISELECT(32,20), "S19903C1");
    check_base_class_offset(lv, (S19903C7*)(S19903C25*)(S19903C24*)(S19903C19*), ABISELECT(72,44), "S19903C1");
    check_base_class_offset(lv, (S19903C25*)(S19903C24*)(S19903C19*), ABISELECT(72,44), "S19903C1");
    check_base_class_offset(lv, (S19903C23*)(S19903C24*)(S19903C19*), ABISELECT(368,204), "S19903C1");
    check_base_class_offset(lv, (S19903C24*)(S19903C19*), ABISELECT(16,12), "S19903C1");
    /*is_ambiguous_... S19903C26::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19903C26*)(S19903C19*), ABISELECT(112,64), "S19903C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19903C11*)(S19903C26*)(S19903C19*), ABISELECT(120,68), "S19903C1");
    check_base_class_offset(lv, (S19490C26*)(S19903C11*)(S19903C26*)(S19903C19*), ABISELECT(120,68), "S19903C1");
    check_base_class_offset(lv, (S19490C18*)(S19903C11*)(S19903C26*)(S19903C19*), ABISELECT(120,68), "S19903C1");
    check_base_class_offset(lv, (S19903C11*)(S19903C26*)(S19903C19*), ABISELECT(120,68), "S19903C1");
    check_base_class_offset(lv, (S19903C26*)(S19903C19*), ABISELECT(112,64), "S19903C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S19903C19*), 0, "S19903C1");
    check_base_class_offset(lv, (S19903C19*), 0, "S19903C1");
    check_base_class_offset(lv, (S19903C28_nt*), ABISELECT(136,80), "S19903C1");
    test_class_info(&lv, &cd_S19903C1);
    dp->~S19903C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19903C1(Test_S19903C1, "S19903C1", ABISELECT(384,208));

#else // __cplusplus

extern void _ZN8S19903C1C1Ev();
extern void _ZN8S19903C1D2Ev();
Name_Map name_map_S19903C1[] = {
  NSPAIR(_ZN8S19903C1C1Ev),
  NSPAIR(_ZN8S19903C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C4;
extern VTBL_ENTRY _ZTI8S19903C4[];
extern  VTBL_ENTRY _ZTV8S19903C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C4[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19903C9;
extern VTBL_ENTRY _ZTI8S19903C9[];
extern  VTBL_ENTRY _ZTV8S19903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C9[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19903C16;
extern VTBL_ENTRY _ZTI9S19903C16[];
extern  VTBL_ENTRY _ZTV9S19903C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
extern Class_Descriptor cd_S19903C6;
extern VTBL_ENTRY _ZTI8S19903C6[];
extern  VTBL_ENTRY _ZTV8S19903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C6[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C14;
extern VTBL_ENTRY _ZTI9S19903C14[];
extern  VTBL_ENTRY _ZTV9S19903C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C14[];
extern Class_Descriptor cd_S19903C18;
extern VTBL_ENTRY _ZTI9S19903C18[];
extern  VTBL_ENTRY _ZTV9S19903C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C18[];
extern Class_Descriptor cd_S19903C3;
extern VTBL_ENTRY _ZTI8S19903C3[];
extern  VTBL_ENTRY _ZTV8S19903C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C3[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
extern Class_Descriptor cd_S19903C21;
extern VTBL_ENTRY _ZTI9S19903C21[];
extern  VTBL_ENTRY _ZTV9S19903C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C21[];
extern Class_Descriptor cd_S19903C23;
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
extern Class_Descriptor cd_S19903C20;
extern VTBL_ENTRY _ZTI9S19903C20[];
extern  VTBL_ENTRY _ZTV9S19903C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C20[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19903C22;
extern VTBL_ENTRY _ZTI9S19903C22[];
extern  VTBL_ENTRY _ZTV9S19903C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C22[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C15;
extern VTBL_ENTRY _ZTI9S19903C15[];
extern  VTBL_ENTRY _ZTV9S19903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C15[];
extern Class_Descriptor cd_S19903C7;
extern VTBL_ENTRY _ZTI8S19903C7[];
extern  VTBL_ENTRY _ZTV8S19903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C7[];
extern Class_Descriptor cd_S19903C25;
extern VTBL_ENTRY _ZTI9S19903C25[];
extern  VTBL_ENTRY _ZTV9S19903C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C25[];
extern Class_Descriptor cd_S19903C23;
extern VTBL_ENTRY _ZTI9S19903C23[];
extern  VTBL_ENTRY _ZTV9S19903C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C23[];
extern Class_Descriptor cd_S19903C24;
extern VTBL_ENTRY _ZTI9S19903C24[];
extern  VTBL_ENTRY _ZTV9S19903C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C24[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19903C11;
extern VTBL_ENTRY _ZTI9S19903C11[];
extern Class_Descriptor cd_S19903C26;
extern VTBL_ENTRY _ZTI9S19903C26[];
extern  VTBL_ENTRY _ZTV9S19903C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C26[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S19903C19;
extern VTBL_ENTRY _ZTI9S19903C19[];
extern  VTBL_ENTRY _ZTV9S19903C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19903C19[];
extern Class_Descriptor cd_S19903C28_nt;
extern VTBL_ENTRY _ZTI12S19903C28_nt[];
extern  VTBL_ENTRY _ZTV12S19903C28_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19903C28_nt[];
static Base_Class bases_S19903C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    ABISELECT(220,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19903C4,    ABISELECT(208,120), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19903C7,    ABISELECT(224,128), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(248,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
    24, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(264,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
    9, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(264,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
    9, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(264,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
    9, //immediately_derived
  0, 0},
  {&cd_S19903C11,    ABISELECT(264,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
    11, //immediately_derived
  0, 0},
  {&cd_S19490C11,    ABISELECT(256,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
    11, //immediately_derived
  0, 0},
  {&cd_S19903C9,    ABISELECT(256,144), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(312,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
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(312,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
    16, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(312,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
    16, //immediately_derived
  0, 0},
  {&cd_S19903C11,    ABISELECT(312,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
    19, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19903C16,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(280,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19903C14,    ABISELECT(272,152), //bcp->offset
    86, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19903C6,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19490C6_nt,    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
    31, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    28, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    28, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19903C14,    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
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19903C18,    ABISELECT(160,88), //bcp->offset
    65, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19903C3,    ABISELECT(144,84), //bcp->offset
    49, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_nt,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(360,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
    35, //immediately_derived
  0, 0},
  {&cd_S19903C22,    ABISELECT(352,196), //bcp->offset
    103, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19903C21,    ABISELECT(320,180), //bcp->offset
    97, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19903C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19903C20,    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
    16, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    40, //immediately_derived
  0, 0},
  {&cd_S19903C22,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    43, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    43, //immediately_derived
  0, 0},
  {&cd_S19903C15,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19903C7,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19903C25,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19903C23,    ABISELECT(368,204), //bcp->offset
    107, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S19903C24,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19903C11,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19903C26,    ABISELECT(112,64), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19903C19,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19903C28_nt,    ABISELECT(136,80), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19903C1[];
extern void _ZN8S19903C1D1Ev();
extern void _ZN8S19903C1D0Ev();
extern void ABISELECT(_ZThn16_N8S19903C1D1Ev,_ZThn12_N8S19903C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19903C1D0Ev,_ZThn12_N8S19903C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19903C1D1Ev,_ZThn20_N8S19903C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19903C1D0Ev,_ZThn20_N8S19903C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19903C1D1Ev,_ZThn80_N8S19903C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19903C1D0Ev,_ZThn80_N8S19903C1D0Ev)();
extern void ABISELECT(_ZTv0_n112_N8S19903C1D1Ev,_ZTv0_n56_N8S19903C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19903C1D1Ev,_ZThn84_N8S19903C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19903C1D0Ev,_ZTv0_n56_N8S19903C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19903C1D0Ev,_ZThn84_N8S19903C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N8S19903C1D1Ev,_ZTvn4_n56_N8S19903C1D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N8S19903C1D0Ev,_ZTvn4_n56_N8S19903C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19903C1D1Ev,_ZTv0_n36_N8S19903C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S19903C1D1Ev,_ZThn152_N8S19903C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C1D0Ev,_ZTv0_n36_N8S19903C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S19903C1D0Ev,_ZThn152_N8S19903C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19903C1[] = {
  0,
  ABISELECT(272,152),
  0,
  ABISELECT(248,140),
  ABISELECT(144,84),
  ABISELECT(368,204),
  0,
  ABISELECT(312,176),
  ABISELECT(144,84),
  ABISELECT(208,120),
  0,
  ABISELECT(256,144),
  ABISELECT(352,196),
  ABISELECT(220,128),
  ABISELECT(224,128),
  ABISELECT(320,180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&_ZN8S19903C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C1D0Ev,
  ABISELECT(352,192),
  ABISELECT(-16,-12),
  ABISELECT(296,164),
  ABISELECT(128,72),
  ABISELECT(-16,-12),
  ABISELECT(204,116),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C1D1Ev,_ZThn12_N8S19903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C1D0Ev,_ZThn12_N8S19903C1D0Ev),
  ABISELECT(112,64),
  ABISELECT(-32,-20),
  ABISELECT(280,156),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19903C1D1Ev,_ZThn20_N8S19903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19903C1D0Ev,_ZThn20_N8S19903C1D0Ev),
  ABISELECT(148,84),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(108,64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S19903C1D1Ev,_ZThn80_N8S19903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S19903C1D0Ev,_ZThn80_N8S19903C1D0Ev),
  ABISELECT(-144,-84),
  0,
  ABISELECT(128,68),
  ABISELECT(-144,-84),
  ABISELECT(64,36),
  ABISELECT(-144,-84),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(76,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19903C1D1Ev,_ZTv0_n56_N8S19903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19903C1D0Ev,_ZTv0_n56_N8S19903C1D0Ev),
  ABISELECT(48,32),
  ABISELECT(60,40),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-160,-88),
  ABISELECT(152,88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19903C1D1Ev,_ZTvn4_n56_N8S19903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S19903C1D0Ev,_ZTvn4_n56_N8S19903C1D0Ev),
  ABISELECT(12,8),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(-4,0),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(-36,-16),
  ABISELECT(-48,-24),
  ABISELECT(-256,-144),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(-272,-152),
  ABISELECT(-64,-32),
  ABISELECT(-52,-24),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-272,-152),
  ABISELECT(40,24),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C1D1Ev,_ZTv0_n36_N8S19903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C1D0Ev,_ZTv0_n36_N8S19903C1D0Ev),
  ABISELECT(-320,-180),
  ABISELECT(32,16),
  ABISELECT(-100,-52),
  ABISELECT(-96,-52),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(-352,-196),
  ABISELECT(-132,-68),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI8S19903C1[0]),
};
extern VTBL_ENTRY _ZTV8S19903C1[];
extern void _ZN9S19903C19D1Ev();
extern void _ZN9S19903C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C19__8S19903C1[] = {
  0,
  ABISELECT(272,152),
  0,
  ABISELECT(248,140),
  ABISELECT(144,84),
  ABISELECT(368,204),
  0,
  ABISELECT(312,176),
  ABISELECT(144,84),
  ABISELECT(208,120),
  0,
  ABISELECT(256,144),
  ABISELECT(352,196),
  ABISELECT(220,128),
  ABISELECT(224,128),
  ABISELECT(320,180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&_ZN9S19903C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C209S19903C19__8S19903C1[] = {
  ABISELECT(208,120),
  0,
  ABISELECT(256,144),
  ABISELECT(352,196),
  ABISELECT(220,128),
  ABISELECT(224,128),
  ABISELECT(320,180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C239S19903C209S19903C19__8S19903C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C21__9S19903C209S19903C19__8S19903C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(32,16),
  ABISELECT(-100,-52),
  ABISELECT(-96,-52),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C209S19903C19__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C209S19903C19__8S19903C1[] = {
  ABISELECT(-352,-196),
  ABISELECT(-132,-68),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__9S19903C209S19903C19__8S19903C1[] = {
  ABISELECT(-36,-16),
  ABISELECT(-48,-24),
  ABISELECT(-256,-144),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C209S19903C19__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S19903C20[0]),
};
extern void _ZN9S19903C24D1Ev();
extern void _ZN9S19903C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C249S19903C19__8S19903C1[] = {
  ABISELECT(352,192),
  ABISELECT(-16,-12),
  ABISELECT(296,164),
  ABISELECT(128,72),
  ABISELECT(-16,-12),
  ABISELECT(204,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  (VTBL_ENTRY)&_ZN9S19903C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C229S19903C249S19903C19__A1__8S19903C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(204,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C249S19903C19__A2__8S19903C1[] = {
  ABISELECT(112,64),
  ABISELECT(-32,-20),
  ABISELECT(280,156),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C249S19903C19__A2__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C259S19903C249S19903C19__8S19903C1[] = {
  ABISELECT(148,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C79S19903C259S19903C249S19903C19__A1__8S19903C1[] = {
  ABISELECT(148,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
extern void ABISELECT(_ZThn16_N9S19903C24D1Ev,_ZThn8_N9S19903C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S19903C24D0Ev,_ZThn8_N9S19903C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C15__9S19903C249S19903C19__8S19903C1[] = {
  ABISELECT(112,64),
  ABISELECT(-32,-20),
  ABISELECT(280,156),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C24D1Ev,_ZThn8_N9S19903C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C24D0Ev,_ZThn8_N9S19903C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C249S19903C19__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C25__9S19903C249S19903C19__8S19903C1[] = {
  ABISELECT(148,84),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C23__9S19903C249S19903C19__8S19903C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI9S19903C24[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C269S19903C19__8S19903C1[] = {
  ABISELECT(108,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C26[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C21__9S19903C19__8S19903C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(32,16),
  ABISELECT(-100,-52),
  ABISELECT(-96,-52),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C19__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C19__8S19903C1[] = {
  ABISELECT(-352,-196),
  ABISELECT(-132,-68),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__9S19903C19__8S19903C1[] = {
  ABISELECT(-36,-16),
  ABISELECT(-48,-24),
  ABISELECT(-256,-144),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C19__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
extern void ABISELECT(_ZThn16_N9S19903C19D1Ev,_ZThn12_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S19903C19D0Ev,_ZThn12_N9S19903C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C24__9S19903C19__8S19903C1[] = {
  ABISELECT(352,192),
  ABISELECT(-16,-12),
  ABISELECT(296,164),
  ABISELECT(128,72),
  ABISELECT(-16,-12),
  ABISELECT(204,116),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C19D1Ev,_ZThn12_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19903C19D0Ev,_ZThn12_N9S19903C19D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19903C19D1Ev,_ZThn20_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19903C19D0Ev,_ZThn20_N9S19903C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C24__9S19903C19__8S19903C1[] = {
  ABISELECT(112,64),
  ABISELECT(-32,-20),
  ABISELECT(280,156),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19903C19D1Ev,_ZThn20_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19903C19D0Ev,_ZThn20_N9S19903C19D0Ev),
};
extern void ABISELECT(_ZTv0_n112_N9S19903C19D1Ev,_ZTv0_n56_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn144_N9S19903C19D1Ev,_ZThn84_N9S19903C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S19903C19D0Ev,_ZTv0_n56_N9S19903C19D0Ev)();
extern void ABISELECT(_ZThn144_N9S19903C19D0Ev,_ZThn84_N9S19903C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19903C3__9S19903C19__8S19903C1[] = {
  ABISELECT(-144,-84),
  0,
  ABISELECT(128,68),
  ABISELECT(-144,-84),
  ABISELECT(64,36),
  ABISELECT(-144,-84),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(76,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19903C19D1Ev,_ZTv0_n56_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S19903C19D0Ev,_ZTv0_n56_N9S19903C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19903C259S19903C24__9S19903C19__8S19903C1[] = {
  ABISELECT(148,84),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C23__A1__9S19903C19__8S19903C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
extern void ABISELECT(_ZTv0_n72_N9S19903C19D1Ev,_ZTv0_n36_N9S19903C19D1Ev)();
extern void ABISELECT(_ZThn272_N9S19903C19D1Ev,_ZThn152_N9S19903C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19903C19D0Ev,_ZTv0_n36_N9S19903C19D0Ev)();
extern void ABISELECT(_ZThn272_N9S19903C19D0Ev,_ZThn152_N9S19903C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19903C14__9S19903C19__8S19903C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(-64,-32),
  ABISELECT(-52,-24),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-272,-152),
  ABISELECT(40,24),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19903C19D1Ev,_ZTv0_n36_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19903C19D0Ev,_ZTv0_n36_N9S19903C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n112_N9S19903C19D1Ev,_ZTvn4_n56_N9S19903C19D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N9S19903C19D0Ev,_ZTvn4_n56_N9S19903C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C188S19903C3__9S19903C19__8S19903C1[] = {
  ABISELECT(48,32),
  ABISELECT(60,40),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-160,-88),
  ABISELECT(152,88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19903C19D1Ev,_ZTvn4_n56_N9S19903C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N9S19903C19D0Ev,_ZTvn4_n56_N9S19903C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19903C26__9S19903C19__8S19903C1[] = {
  ABISELECT(108,64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19903C19[0]),
};
extern void _ZN12S19903C28_ntD1Ev();
extern void _ZN12S19903C28_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19903C28_nt__8S19903C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI12S19903C28_nt[0]),
  (VTBL_ENTRY)&_ZN12S19903C28_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19903C28_ntD0Ev,
};
extern void _ZN8S19903C3D1Ev();
extern void _ZN8S19903C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19903C3__8S19903C1[] = {
  0,
  ABISELECT(128,68),
  ABISELECT(-144,-84),
  ABISELECT(64,36),
  ABISELECT(-144,-84),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(76,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&_ZN8S19903C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C3D0Ev,
};
extern void _ZN8S19903C6D1Ev();
extern void _ZN8S19903C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19903C68S19903C3__8S19903C1[] = {
  0,
  ABISELECT(128,68),
  ABISELECT(-144,-84),
  ABISELECT(64,36),
  ABISELECT(-144,-84),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(76,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&_ZN8S19903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19903C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C68S19903C3__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C68S19903C3__8S19903C1[] = {
  ABISELECT(-36,-16),
  ABISELECT(-48,-24),
  ABISELECT(-256,-144),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C68S19903C3__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19903C6D1Ev,_ZThn68_N8S19903C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19903C6D0Ev,_ZThn68_N8S19903C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C68S19903C3__8S19903C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-52,-24),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-272,-152),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19903C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev),
};
extern void _ZN9S19903C18D1Ev();
extern void _ZN9S19903C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C188S19903C3__8S19903C1[] = {
  ABISELECT(48,32),
  ABISELECT(60,40),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-160,-88),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
  (VTBL_ENTRY)&_ZN9S19903C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C18D0Ev,
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C149S19903C188S19903C3__A1__8S19903C1[] = {
  ABISELECT(48,32),
  ABISELECT(60,40),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-160,-88),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C149S19903C188S19903C3__A1__8S19903C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-160,-88),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C149S19903C188S19903C3__A1__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C149S19903C188S19903C3__A1__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C149S19903C188S19903C3__A1__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C149S19903C188S19903C3__A1__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C188S19903C3__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C188S19903C3__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C188S19903C3__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19903C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C3__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C3__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C3__8S19903C1[] = {
  ABISELECT(-36,-16),
  ABISELECT(-48,-24),
  ABISELECT(-256,-144),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19903C3D1Ev,_ZThn68_N8S19903C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19903C3D0Ev,_ZThn68_N8S19903C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C3__8S19903C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-52,-24),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-272,-152),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19903C3D1Ev,_ZThn4_N8S19903C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19903C3D0Ev,_ZThn4_N8S19903C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19903C18__8S19903C3__8S19903C1[] = {
  ABISELECT(48,32),
  ABISELECT(60,40),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-160,-88),
  ABISELECT(152,88),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19903C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C3D1Ev,_ZThn4_N8S19903C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19903C3D0Ev,_ZThn4_N8S19903C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__8S19903C1[] = {
  ABISELECT(-4,0),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C9__8S19903C1[] = {
  ABISELECT(-36,-16),
  ABISELECT(-48,-24),
  ABISELECT(-256,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__8S19903C9__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19903C9[0]),
};
extern void _ZN9S19903C14D1Ev();
extern void _ZN9S19903C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C14__8S19903C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-52,-24),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-272,-152),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
  (VTBL_ENTRY)&_ZN9S19903C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C14D0Ev,
};
extern void _ZN9S19903C15D1Ev();
extern void _ZN9S19903C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19903C159S19903C14__8S19903C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-272,-152),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
  (VTBL_ENTRY)&_ZN9S19903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19903C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C159S19903C14__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19903C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__9S19903C14__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C14__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C4__9S19903C14__8S19903C1[] = {
  ABISELECT(12,8),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19903C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C16__8S19903C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C21__8S19903C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(32,16),
  ABISELECT(-100,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19903C7__9S19903C21__8S19903C1[] = {
  ABISELECT(-4,0),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__9S19903C21__8S19903C1[] = {
  ABISELECT(-352,-196),
  ABISELECT(-132,-68),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19903C21[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C22__8S19903C1[] = {
  ABISELECT(-352,-196),
  ABISELECT(-132,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C22[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19903C23__A1__8S19903C1[] = {
  ABISELECT(-368,-204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19903C23[0]),
};
static  VTT_ENTRY vtt_S19903C1[] = {
  {&(_ZTV8S19903C1[19]),  19,110},
  {&(_tg__ZTV9S19903C19__8S19903C1[19]),  19,21},
  {&(_tg__ZTV9S19903C209S19903C19__8S19903C1[10]),  10,10},
  {&(_tg__ZTV9S19903C239S19903C209S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C21__9S19903C209S19903C19__8S19903C1[6]),  6,6},
  {&(_tg__ZTV8S19903C7__9S19903C209S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C209S19903C19__8S19903C1[4]),  4,4},
  {&(_tg__ZTV8S19903C9__9S19903C209S19903C19__8S19903C1[5]),  5,5},
  {&(_tg__ZTV8S19903C4__9S19903C209S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C249S19903C19__8S19903C1[8]),  8,10},
  {&(_tg__ZTV9S19903C229S19903C249S19903C19__A1__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C159S19903C249S19903C19__A2__8S19903C1[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C249S19903C19__A2__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C259S19903C249S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C79S19903C259S19903C249S19903C19__A1__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C15__9S19903C249S19903C19__8S19903C1[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C249S19903C19__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C25__9S19903C249S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C23__9S19903C249S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C269S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C21__9S19903C19__8S19903C1[6]),  6,6},
  {&(_tg__ZTV8S19903C7__9S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C19__8S19903C1[4]),  4,4},
  {&(_tg__ZTV8S19903C9__9S19903C19__8S19903C1[5]),  5,5},
  {&(_tg__ZTV8S19903C4__9S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C24__9S19903C19__8S19903C1[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C24__9S19903C19__8S19903C1[5]),  5,7},
  {&(_tg__ZTV8S19903C3__9S19903C19__8S19903C1[14]),  14,16},
  {&(_tg__ZTV9S19903C259S19903C24__9S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C23__A1__9S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C3__9S19903C19__8S19903C1[14]),  14,16},
  {&(_tg__ZTV9S19903C14__9S19903C19__8S19903C1[9]),  9,11},
  {&(_tg__ZTV9S19903C188S19903C3__9S19903C19__8S19903C1[8]),  8,10},
  {&(_tg__ZTV9S19903C26__9S19903C19__8S19903C1[3]),  3,3},
  {&(_tg__ZTV12S19903C28_nt__8S19903C1[3]),  3,5},
  {&(_ZTV8S19903C1[63]),  63,110},
  {&(_ZTV8S19903C1[78]),  78,110},
  {&(_ZTV8S19903C1[81]),  81,110},
  {&(_ZTV8S19903C1[86]),  86,110},
  {&(_ZTV8S19903C1[95]),  95,110},
  {&(_ZTV8S19903C1[63]),  63,110},
  {&(_ZTV8S19903C1[73]),  73,110},
  {&(_ZTV8S19903C1[103]),  103,110},
  {&(_ZTV8S19903C1[107]),  107,110},
  {&(_ZTV8S19903C1[29]),  29,110},
  {&(_ZTV8S19903C1[36]),  36,110},
  {&(_ZTV8S19903C1[41]),  41,110},
  {&(_ZTV8S19903C1[110]),  110,110},
  {&(_ZTV8S19903C1[44]),  44,110},
  {&(_ZTV8S19903C1[47]),  47,110},
  {&(_tg__ZTV8S19903C3__8S19903C1[13]),  13,15},
  {&(_tg__ZTV8S19903C68S19903C3__8S19903C1[13]),  13,15},
  {&(_tg__ZTV8S19903C7__8S19903C68S19903C3__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C68S19903C3__8S19903C1[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C68S19903C3__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C14__8S19903C68S19903C3__8S19903C1[9]),  9,11},
  {&(_tg__ZTV8S19903C68S19903C3__8S19903C1[13]),  13,15},
  {&(_tg__ZTV9S19903C188S19903C3__8S19903C1[8]),  8,10},
  {&(_tg__ZTV9S19903C149S19903C188S19903C3__A1__8S19903C1[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C149S19903C188S19903C3__A1__8S19903C1[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C149S19903C188S19903C3__A1__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C149S19903C188S19903C3__A1__8S19903C1[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C149S19903C188S19903C3__A1__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C149S19903C188S19903C3__A1__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C16__9S19903C188S19903C3__8S19903C1[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C188S19903C3__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C188S19903C3__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C4__8S19903C3__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C7__8S19903C3__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C3__8S19903C1[5]),  5,5},
  {&(_tg__ZTV9S19903C14__8S19903C3__8S19903C1[9]),  9,11},
  {&(_tg__ZTV8S19903C3__8S19903C1[13]),  13,15},
  {&(_tg__ZTV9S19903C18__8S19903C3__8S19903C1[8]),  8,10},
  {&(_tg__ZTV8S19903C4__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C7__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C9__8S19903C1[5]),  5,5},
  {&(_tg__ZTV8S19903C4__8S19903C9__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C14__8S19903C1[8]),  8,10},
  {&(_tg__ZTV9S19903C159S19903C14__8S19903C1[5]),  5,7},
  {&(_tg__ZTV9S19903C16__9S19903C159S19903C14__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C16__9S19903C14__8S19903C1[4]),  4,4},
  {&(_tg__ZTV8S19903C7__9S19903C14__8S19903C1[3]),  3,3},
  {&(_tg__ZTV8S19903C4__9S19903C14__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C16__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C21__8S19903C1[6]),  6,6},
  {&(_tg__ZTV8S19903C7__9S19903C21__8S19903C1[3]),  3,3},
  {&(_tg__ZTV9S19903C22__9S19903C21__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C22__8S19903C1[4]),  4,4},
  {&(_tg__ZTV9S19903C23__A1__8S19903C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19903C1[];
extern  VTBL_ENTRY _ZTV8S19903C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19903C1[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C3D0Ev,_ZTv0_n36_N8S19903C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C3D0Ev,_ZThn68_N8S19903C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C3D1Ev,_ZTv0_n36_N8S19903C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C3D1Ev,_ZThn68_N8S19903C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D0Ev,_ZTv0_n36_N8S19903C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C6D0Ev,_ZThn68_N8S19903C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C6D1Ev,_ZTv0_n36_N8S19903C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19903C6D1Ev,_ZThn68_N8S19903C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19903C19D0Ev,_ZTv0_n36_N9S19903C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19903C19D0Ev,_ZThn152_N9S19903C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19903C19D1Ev,_ZTv0_n36_N9S19903C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19903C19D1Ev,_ZThn152_N9S19903C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19903C19D0Ev,_ZTv0_n56_N9S19903C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19903C19D0Ev,_ZThn84_N9S19903C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S19903C19D1Ev,_ZTv0_n56_N9S19903C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19903C19D1Ev,_ZThn84_N9S19903C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C1D0Ev,_ZTv0_n36_N8S19903C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19903C1D0Ev,_ZThn152_N8S19903C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19903C1D1Ev,_ZTv0_n36_N8S19903C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19903C1D1Ev,_ZThn152_N8S19903C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19903C1D0Ev,_ZTv0_n56_N8S19903C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19903C1D0Ev,_ZThn84_N8S19903C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19903C1D1Ev,_ZTv0_n56_N8S19903C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19903C1D1Ev,_ZThn84_N8S19903C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19903C1 = {  "S19903C1", // class name
  bases_S19903C1, 57,
  &(vtc_S19903C1[0]), // expected_vtbl_contents
  &(vtt_S19903C1[0]), // expected_vtt_contents
  ABISELECT(384,208), // object size
  NSPAIRA(_ZTI8S19903C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19903C1),110, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19903C1),89, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C4  {
  virtual void  v7(); // _ZN8S21093C42v7Ev
  virtual void  v8(); // _ZN8S21093C42v8Ev
  ~S21093C4(); // tgen
  S21093C4(); // tgen
};
//SIG(-1 S21093C4) C1{ v1 v2}


void  S21093C4 ::v7(){vfunc_called(this, "_ZN8S21093C42v7Ev");}
void  S21093C4 ::v8(){vfunc_called(this, "_ZN8S21093C42v8Ev");}
S21093C4 ::~S21093C4(){ note_dtor("S21093C4", this);} // tgen
S21093C4 ::S21093C4(){ note_ctor("S21093C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21093C4C1Ev();
extern void _ZN8S21093C4D1Ev();
Name_Map name_map_S21093C4[] = {
  NSPAIR(_ZN8S21093C4C1Ev),
  NSPAIR(_ZN8S21093C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21093C4[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY vtc_S21093C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C4[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
Class_Descriptor cd_S21093C4 = {  "S21093C4", // class name
  0,0,//no base classes
  &(vtc_S21093C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21093C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21093C4),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  S21093C7  : virtual S21093C4 {
  void *s21093c7f0;
  char s21093c7f1;
  virtual void  v9(); // _ZN8S21093C72v9Ev
  virtual void  v10(); // _ZN8S21093C73v10Ev
  virtual void  v11(); // _ZN8S21093C73v11Ev
  virtual void  v12(); // _ZN8S21093C73v12Ev
  ~S21093C7(); // tgen
  S21093C7(); // tgen
};
//SIG(-1 S21093C7) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S21093C7 ::v9(){vfunc_called(this, "_ZN8S21093C72v9Ev");}
void  S21093C7 ::v10(){vfunc_called(this, "_ZN8S21093C73v10Ev");}
void  S21093C7 ::v11(){vfunc_called(this, "_ZN8S21093C73v11Ev");}
void  S21093C7 ::v12(){vfunc_called(this, "_ZN8S21093C73v12Ev");}
S21093C7 ::~S21093C7(){ note_dtor("S21093C7", this);} // tgen
S21093C7 ::S21093C7(){ note_ctor("S21093C7", this);} // tgen

static void Test_S21093C7()
{
  extern Class_Descriptor cd_S21093C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21093C7, buf);
    S21093C7 *dp, &lv = *(dp=new (buf) S21093C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21093C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21093C7)");
    check_base_class_offset(lv, (S21093C4*), 0, "S21093C7");
    check_field_offset(lv, s21093c7f0, ABISELECT(8,4), "S21093C7.s21093c7f0");
    check_field_offset(lv, s21093c7f1, ABISELECT(16,8), "S21093C7.s21093c7f1");
    test_class_info(&lv, &cd_S21093C7);
    dp->~S21093C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C7(Test_S21093C7, "S21093C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21093C7C1Ev();
extern void _ZN8S21093C7D1Ev();
Name_Map name_map_S21093C7[] = {
  NSPAIR(_ZN8S21093C7C1Ev),
  NSPAIR(_ZN8S21093C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
static Base_Class bases_S21093C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    0, //bcp->offset
    -1, //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 _ZTI8S21093C7[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY vtc_S21093C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S21093C7[];
static  VTT_ENTRY vtt_S21093C7[] = {
  {&(_ZTV8S21093C7[5]),  5,11},
  {&(_ZTV8S21093C7[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
Class_Descriptor cd_S21093C7 = {  "S21093C7", // class name
  bases_S21093C7, 1,
  &(vtc_S21093C7[0]), // expected_vtbl_contents
  &(vtt_S21093C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21093C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21093C7),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21093C7),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  S21093C8  : S21093C4 {
  virtual void  v13(); // _ZN8S21093C83v13Ev
  virtual void  v14(); // _ZN8S21093C83v14Ev
  virtual void  v15(); // _ZN8S21093C83v15Ev
  virtual void  v16(); // _ZN8S21093C83v16Ev
  virtual void  v17(); // _ZN8S21093C83v17Ev
  virtual void  v18(); // _ZN8S21093C83v18Ev
  virtual void  v19(); // _ZN8S21093C83v19Ev
  virtual void  v20(); // _ZN8S21093C83v20Ev
  ~S21093C8(); // tgen
  S21093C8(); // tgen
};
//SIG(-1 S21093C8) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S21093C8 ::v13(){vfunc_called(this, "_ZN8S21093C83v13Ev");}
void  S21093C8 ::v14(){vfunc_called(this, "_ZN8S21093C83v14Ev");}
void  S21093C8 ::v15(){vfunc_called(this, "_ZN8S21093C83v15Ev");}
void  S21093C8 ::v16(){vfunc_called(this, "_ZN8S21093C83v16Ev");}
void  S21093C8 ::v17(){vfunc_called(this, "_ZN8S21093C83v17Ev");}
void  S21093C8 ::v18(){vfunc_called(this, "_ZN8S21093C83v18Ev");}
void  S21093C8 ::v19(){vfunc_called(this, "_ZN8S21093C83v19Ev");}
void  S21093C8 ::v20(){vfunc_called(this, "_ZN8S21093C83v20Ev");}
S21093C8 ::~S21093C8(){ note_dtor("S21093C8", this);} // tgen
S21093C8 ::S21093C8(){ note_ctor("S21093C8", this);} // tgen

static void Test_S21093C8()
{
  extern Class_Descriptor cd_S21093C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21093C8, buf);
    S21093C8 *dp, &lv = *(dp=new (buf) S21093C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21093C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21093C8)");
    check_base_class_offset(lv, (S21093C4*), 0, "S21093C8");
    test_class_info(&lv, &cd_S21093C8);
    dp->~S21093C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C8(Test_S21093C8, "S21093C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21093C8C1Ev();
extern void _ZN8S21093C8D1Ev();
Name_Map name_map_S21093C8[] = {
  NSPAIR(_ZN8S21093C8C1Ev),
  NSPAIR(_ZN8S21093C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
static Base_Class bases_S21093C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21093C8[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C8[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
Class_Descriptor cd_S21093C8 = {  "S21093C8", // class name
  bases_S21093C8, 1,
  &(vtc_S21093C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21093C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21093C8),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  S21093C6  : virtual S21093C4 , S21093C7 , S21093C8 {
  ::S21093C4 s21093c6f0;
  virtual  ~S21093C6(); // _ZN8S21093C6D2Ev
  virtual void  v21(); // _ZN8S21093C63v21Ev
  virtual void  v22(); // _ZN8S21093C63v22Ev
  S21093C6(); // tgen
};
//SIG(-1 S21093C6) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S21093C6 ::~S21093C6(){ note_dtor("S21093C6", this);}
void  S21093C6 ::v21(){vfunc_called(this, "_ZN8S21093C63v21Ev");}
void  S21093C6 ::v22(){vfunc_called(this, "_ZN8S21093C63v22Ev");}
S21093C6 ::S21093C6(){ note_ctor("S21093C6", this);} // tgen

static void Test_S21093C6()
{
  extern Class_Descriptor cd_S21093C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S21093C6, buf);
    S21093C6 *dp, &lv = *(dp=new (buf) S21093C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S21093C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21093C6)");
    /*is_ambiguous_... S21093C6::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*), 0, "S21093C6");
    check_base_class_offset(lv, (S21093C4*)(S21093C7*), 0, "S21093C6");
    check_base_class_offset(lv, (S21093C7*), 0, "S21093C6");
    check_base_class_offset(lv, (S21093C4*)(S21093C8*), ABISELECT(24,12), "S21093C6");
    check_base_class_offset(lv, (S21093C8*), ABISELECT(24,12), "S21093C6");
    check_field_offset(lv, s21093c6f0, ABISELECT(32,16), "S21093C6.s21093c6f0");
    test_class_info(&lv, &cd_S21093C6);
    dp->~S21093C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C6(Test_S21093C6, "S21093C6", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S21093C6C1Ev();
extern void _ZN8S21093C6D2Ev();
Name_Map name_map_S21093C6[] = {
  NSPAIR(_ZN8S21093C6C1Ev),
  NSPAIR(_ZN8S21093C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
static Base_Class bases_S21093C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21093C6[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21093C6[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__8S21093C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
static  VTT_ENTRY vtt_S21093C6[] = {
  {&(_ZTV8S21093C6[5]),  5,27},
  {&(_tg__ZTV8S21093C7__8S21093C6[5]),  5,11},
  {&(_tg__ZTV8S21093C7__8S21093C6[5]),  5,11},
  {&(_ZTV8S21093C6[5]),  5,27},
};
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
Class_Descriptor cd_S21093C6 = {  "S21093C6", // class name
  bases_S21093C6, 4,
  &(vtc_S21093C6[0]), // expected_vtbl_contents
  &(vtt_S21093C6[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S21093C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21093C6),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21093C6),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  S21093C9  {
  ::S7642C12 s21093c9f0;
  virtual void  v23(); // _ZN8S21093C93v23Ev
  ~S21093C9(); // tgen
  S21093C9(); // tgen
};
//SIG(-1 S21093C9) C1{ v1 FU2{ m FD[3]}}


void  S21093C9 ::v23(){vfunc_called(this, "_ZN8S21093C93v23Ev");}
S21093C9 ::~S21093C9(){ note_dtor("S21093C9", this);} // tgen
S21093C9 ::S21093C9(){ note_ctor("S21093C9", this);} // tgen

static void Test_S21093C9()
{
  extern Class_Descriptor cd_S21093C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S21093C9, buf);
    S21093C9 *dp, &lv = *(dp=new (buf) S21093C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21093C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21093C9)");
    check_field_offset(lv, s21093c9f0, ABISELECT(16,4), "S21093C9.s21093c9f0");
    test_class_info(&lv, &cd_S21093C9);
    dp->~S21093C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C9(Test_S21093C9, "S21093C9", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21093C9C1Ev();
extern void _ZN8S21093C9D1Ev();
Name_Map name_map_S21093C9[] = {
  NSPAIR(_ZN8S21093C9C1Ev),
  NSPAIR(_ZN8S21093C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21093C9[];
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY vtc_S21093C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C9[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
Class_Descriptor cd_S21093C9 = {  "S21093C9", // class name
  0,0,//no base classes
  &(vtc_S21093C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21093C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21093C9),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  S21093C12  : virtual S21093C6 {
  virtual  ~S21093C12(); // _ZN9S21093C12D2Ev
  virtual void  v24(); // _ZN9S21093C123v24Ev
  virtual void  v25(); // _ZN9S21093C123v25Ev
  S21093C12(); // tgen
};
//SIG(-1 S21093C12) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S21093C12 ::~S21093C12(){ note_dtor("S21093C12", this);}
void  S21093C12 ::v24(){vfunc_called(this, "_ZN9S21093C123v24Ev");}
void  S21093C12 ::v25(){vfunc_called(this, "_ZN9S21093C123v25Ev");}
S21093C12 ::S21093C12(){ note_ctor("S21093C12", this);} // tgen

static void Test_S21093C12()
{
  extern Class_Descriptor cd_S21093C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S21093C12, buf);
    S21093C12 *dp, &lv = *(dp=new (buf) S21093C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S21093C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21093C12)");
    /*is_ambiguous_... S21093C6::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), 0, "S21093C12");
    check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), 0, "S21093C12");
    check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(8,4), "S21093C12");
    check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(32,16), "S21093C12");
    check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(32,16), "S21093C12");
    check_base_class_offset(lv, (S21093C6*), ABISELECT(8,4), "S21093C12");
    test_class_info(&lv, &cd_S21093C12);
    dp->~S21093C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C12(Test_S21093C12, "S21093C12", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S21093C12C1Ev();
extern void _ZN9S21093C12D2Ev();
Name_Map name_map_S21093C12[] = {
  NSPAIR(_ZN9S21093C12C1Ev),
  NSPAIR(_ZN9S21093C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
static Base_Class bases_S21093C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21093C7,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI9S21093C12[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C12D1Ev,_ZThn4_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn8_N9S21093C12D0Ev,_ZThn4_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV9S21093C12[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__9S21093C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__9S21093C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__9S21093C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
static  VTT_ENTRY vtt_S21093C12[] = {
  {&(_ZTV9S21093C12[6]),  6,54},
  {&(_ZTV9S21093C12[32]),  32,54},
  {&(_ZTV9S21093C12[6]),  6,54},
  {&(_ZTV9S21093C12[44]),  44,54},
  {&(_tg__ZTV8S21093C6__9S21093C12[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__9S21093C12[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__9S21093C12[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__9S21093C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21093C12D0Ev,_ZThn4_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21093C12D1Ev,_ZThn4_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C12 = {  "S21093C12", // class name
  bases_S21093C12, 5,
  &(vtc_S21093C12[0]), // expected_vtbl_contents
  &(vtt_S21093C12[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S21093C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21093C12),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21093C12),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C11  : S21093C8 , S21093C12 , S21093C9 , S21093C7 {
  void *s21093c11f0;
  long s21093c11f1;
  virtual void  v26(); // _ZN9S21093C113v26Ev
  virtual void  v27(); // _ZN9S21093C113v27Ev
  virtual void  v28(); // _ZN9S21093C113v28Ev
  virtual void  v29(); // _ZN9S21093C113v29Ev
  virtual void  v30(); // _ZN9S21093C113v30Ev
  virtual void  v31(); // _ZN9S21093C113v31Ev
  ~S21093C11(); // tgen
  S21093C11(); // tgen
};
//SIG(-1 S21093C11) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp Fl}


void  S21093C11 ::v26(){vfunc_called(this, "_ZN9S21093C113v26Ev");}
void  S21093C11 ::v27(){vfunc_called(this, "_ZN9S21093C113v27Ev");}
void  S21093C11 ::v28(){vfunc_called(this, "_ZN9S21093C113v28Ev");}
void  S21093C11 ::v29(){vfunc_called(this, "_ZN9S21093C113v29Ev");}
void  S21093C11 ::v30(){vfunc_called(this, "_ZN9S21093C113v30Ev");}
void  S21093C11 ::v31(){vfunc_called(this, "_ZN9S21093C113v31Ev");}
S21093C11 ::~S21093C11(){ note_dtor("S21093C11", this);} // tgen
S21093C11 ::S21093C11(){ note_ctor("S21093C11", this);} // tgen

static void Test_S21093C11()
{
  extern Class_Descriptor cd_S21093C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,23)];
    init_test(&cd_S21093C11, buf);
    S21093C11 *dp, &lv = *(dp=new (buf) S21093C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S21093C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21093C11)");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*), 0, "S21093C11");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*), 0, "S21093C11");
    /*is_ambiguous_... S21093C6::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), ABISELECT(8,4), "S21093C11");
    check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), ABISELECT(8,4), "S21093C11");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*), ABISELECT(8,4), "S21093C11");
    check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(120,68), "S21093C11");
    check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(144,80), "S21093C11");
    check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(144,80), "S21093C11");
    check_base_class_offset(lv, (S21093C6*)(S21093C12*), ABISELECT(120,68), "S21093C11");
    check_base_class_offset(lv, (S21093C12*), ABISELECT(8,4), "S21093C11");
    check_base_class_offset(lv, (S21093C9*), ABISELECT(16,8), "S21093C11");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*), ABISELECT(80,48), "S21093C11");
    check_field_offset(lv, s21093c11f0, ABISELECT(104,60), "S21093C11.s21093c11f0");
    check_field_offset(lv, s21093c11f1, ABISELECT(112,64), "S21093C11.s21093c11f1");
    test_class_info(&lv, &cd_S21093C11);
    dp->~S21093C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C11(Test_S21093C11, "S21093C11", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN9S21093C11C1Ev();
extern void _ZN9S21093C11D1Ev();
Name_Map name_map_S21093C11[] = {
  NSPAIR(_ZN9S21093C11C1Ev),
  NSPAIR(_ZN9S21093C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
static Base_Class bases_S21093C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S21093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21093C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21093C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    5, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(144,80), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(120,68), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21093C12,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C9,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C7,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21093C11[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S21093C11D1Ev,_ZThn68_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S21093C11D0Ev,_ZThn68_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C11[] = {
  ABISELECT(8,4),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
  0,
  ABISELECT(112,64),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV9S21093C11[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C11[] = {
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S21093C12D1Ev,_ZThn64_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S21093C12D0Ev,_ZThn64_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C12__9S21093C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C12__9S21093C11[] = {
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C7__A1__9S21093C11[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C11[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__9S21093C11[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__9S21093C11[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__9S21093C11[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
static  VTT_ENTRY vtt_S21093C11[] = {
  {&(_ZTV9S21093C11[4]),  4,90},
  {&(_tg__ZTV9S21093C12__9S21093C11[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C12__9S21093C11[20]),  20,30},
  {&(_tg__ZTV9S21093C12__9S21093C11[6]),  6,12},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C12__9S21093C11[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C11[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C7__A1__9S21093C11[4]),  4,6},
  {&(_ZTV9S21093C11[28]),  28,90},
  {&(_ZTV9S21093C11[68]),  68,90},
  {&(_ZTV9S21093C11[28]),  28,90},
  {&(_ZTV9S21093C11[80]),  80,90},
  {&(_ZTV9S21093C11[42]),  42,90},
  {&(_tg__ZTV8S21093C6__9S21093C11[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__9S21093C11[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__9S21093C11[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__9S21093C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21093C12D0Ev,_ZThn64_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21093C12D1Ev,_ZThn64_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21093C11D0Ev,_ZThn68_N9S21093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21093C11D1Ev,_ZThn68_N9S21093C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C11 = {  "S21093C11", // class name
  bases_S21093C11, 10,
  &(vtc_S21093C11[0]), // expected_vtbl_contents
  &(vtt_S21093C11[0]), // expected_vtt_contents
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI9S21093C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21093C11),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21093C11),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C5  : virtual S21093C4 , S21093C6 , virtual S21093C9 , S21093C11 , S21093C8 {
  virtual  ~S21093C5(); // _ZN8S21093C5D2Ev
  virtual void  v32(); // _ZN8S21093C53v32Ev
  S21093C5(); // tgen
};
//SIG(-1 S21093C5) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp Fl} BC5 vd v1}


 S21093C5 ::~S21093C5(){ note_dtor("S21093C5", this);}
void  S21093C5 ::v32(){vfunc_called(this, "_ZN8S21093C53v32Ev");}
S21093C5 ::S21093C5(){ note_ctor("S21093C5", this);} // tgen

static void Test_S21093C5()
{
  extern Class_Descriptor cd_S21093C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,39)];
    init_test(&cd_S21093C5, buf);
    S21093C5 *dp, &lv = *(dp=new (buf) S21093C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,152), "sizeof(S21093C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21093C5)");
    /*is_ambiguous_... S21093C5::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), 0, "S21093C5");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C11*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(24,12), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(24,12), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C6*), 0, "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C9 */ AMB_check_base_class_offset(lv, (S21093C9*), ABISELECT(176,92), "S21093C5");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C11*), ABISELECT(48,20), "S21093C5");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C11*), ABISELECT(48,20), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(240,132), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(264,144), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(264,144), "S21093C5");
    check_base_class_offset(lv, (S21093C6*)(S21093C12*)(S21093C11*), ABISELECT(240,132), "S21093C5");
    check_base_class_offset(lv, (S21093C12*)(S21093C11*), ABISELECT(56,24), "S21093C5");
    check_base_class_offset(lv, (S21093C9*)(S21093C11*), ABISELECT(64,28), "S21093C5");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C11*), ABISELECT(128,68), "S21093C5");
    check_base_class_offset(lv, (S21093C11*), ABISELECT(48,20), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*), ABISELECT(168,88), "S21093C5");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*), ABISELECT(168,88), "S21093C5");
    test_class_info(&lv, &cd_S21093C5);
    dp->~S21093C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C5(Test_S21093C5, "S21093C5", ABISELECT(288,152));

#else // __cplusplus

extern void _ZN8S21093C5C1Ev();
extern void _ZN8S21093C5D2Ev();
Name_Map name_map_S21093C5[] = {
  NSPAIR(_ZN8S21093C5C1Ev),
  NSPAIR(_ZN8S21093C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C11;
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
static Base_Class bases_S21093C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C7,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C6,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C9,    ABISELECT(176,92), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(264,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(240,132), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21093C12,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C11,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(168,88), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S21093C5[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C5D1Ev();
extern void _ZN8S21093C5D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev)();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn240_N8S21093C5D1Ev,_ZThn132_N8S21093C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev)();
extern void ABISELECT(_ZThn240_N8S21093C5D0Ev,_ZThn132_N8S21093C5D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C5[] = {
  ABISELECT(240,132),
  ABISELECT(176,92),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21093C5[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A__8S21093C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__8S21093C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C11__8S21093C5[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C11__8S21093C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn184_N9S21093C12D1Ev,_ZThn108_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn184_N9S21093C12D0Ev,_ZThn108_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C129S21093C11__8S21093C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-108),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C129S21093C11__8S21093C5[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C129S21093C11__8S21093C5[] = {
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C11__A2__8S21093C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C79S21093C11__A2__8S21093C5[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C11__8S21093C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21093C11D1Ev,_ZThn112_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21093C11D0Ev,_ZThn112_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C11__8S21093C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__A1__9S21093C11__8S21093C5[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A1__9S21093C11__8S21093C5[] = {
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C11__8S21093C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C5[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__A1__8S21093C5[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C5[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__A1__8S21093C5[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
static  VTT_ENTRY vtt_S21093C5[] = {
  {&(_ZTV8S21093C5[7]),  7,136},
  {&(_tg__ZTV8S21093C6__A__8S21093C5[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__8S21093C5[5]),  5,11},
  {&(_tg__ZTV8S21093C78S21093C6__8S21093C5[5]),  5,11},
  {&(_tg__ZTV8S21093C6__A__8S21093C5[5]),  5,15},
  {&(_tg__ZTV9S21093C11__8S21093C5[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C11__8S21093C5[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C129S21093C11__8S21093C5[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C129S21093C11__8S21093C5[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C129S21093C11__8S21093C5[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C11__A2__8S21093C5[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C79S21093C11__A2__8S21093C5[4]),  4,6},
  {&(_tg__ZTV9S21093C12__9S21093C11__8S21093C5[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C11__8S21093C5[20]),  20,30},
  {&(_tg__ZTV8S21093C4__A1__9S21093C11__8S21093C5[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__A1__9S21093C11__8S21093C5[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C11__8S21093C5[5]),  5,11},
  {&(_ZTV8S21093C5[7]),  7,136},
  {&(_ZTV8S21093C5[93]),  93,136},
  {&(_ZTV8S21093C5[34]),  34,136},
  {&(_ZTV8S21093C5[58]),  58,136},
  {&(_ZTV8S21093C5[114]),  114,136},
  {&(_ZTV8S21093C5[126]),  126,136},
  {&(_ZTV8S21093C5[72]),  72,136},
  {&(_tg__ZTV8S21093C6__A1__8S21093C5[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__A1__8S21093C5[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C5[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__A1__8S21093C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21093C5[];
extern  VTBL_ENTRY _ZTV8S21093C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C5[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21093C11D0Ev,_ZThn112_N9S21093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21093C11D1Ev,_ZThn112_N9S21093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21093C12D0Ev,_ZThn108_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21093C12D1Ev,_ZThn108_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21093C5D0Ev,_ZThn132_N8S21093C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21093C5D1Ev,_ZThn132_N8S21093C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C5 = {  "S21093C5", // class name
  bases_S21093C5, 18,
  &(vtc_S21093C5[0]), // expected_vtbl_contents
  &(vtt_S21093C5[0]), // expected_vtt_contents
  ABISELECT(288,152), // object size
  NSPAIRA(_ZTI8S21093C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21093C5),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21093C5),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C3  : virtual S21093C4 , S21093C5 , S21093C7 {
  void *s21093c3f0;
  int s21093c3f1;
  virtual void  v33(); // _ZN8S21093C33v33Ev
  virtual void  v34(); // _ZN8S21093C33v34Ev
  ~S21093C3(); // tgen
  S21093C3(); // tgen
};
//SIG(-1 S21093C3) C1{ VBC2{ v3 v4} BC3{ VBC2 BC4{ VBC2 BC5{ VBC2 v5 v6 v7 v8 Fp Fc} BC6{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC2} VBC7{ v19 FU8{ m FD[3]}} BC9{ BC6 BC10{ VBC4 vd v20 v21} BC7 BC5 v22 v23 v24 v25 v26 v27 Fp Fl} BC6 vd v28} BC5 v1 v2 Fp Fi}


void  S21093C3 ::v33(){vfunc_called(this, "_ZN8S21093C33v33Ev");}
void  S21093C3 ::v34(){vfunc_called(this, "_ZN8S21093C33v34Ev");}
S21093C3 ::~S21093C3(){ note_dtor("S21093C3", this);} // tgen
S21093C3 ::S21093C3(){ note_ctor("S21093C3", this);} // tgen

static void Test_S21093C3()
{
  extern Class_Descriptor cd_S21093C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,44)];
    init_test(&cd_S21093C3, buf);
    S21093C3 *dp, &lv = *(dp=new (buf) S21093C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,172), "sizeof(S21093C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21093C3)");
    /*is_ambiguous_... S21093C3::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*), 0, "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*)(S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*)(S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), 0, "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), 0, "S21093C3");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C11*)(S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*), 0, "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*)(S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*)(S21093C5*), ABISELECT(24,12), "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*)(S21093C5*), ABISELECT(24,12), "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C9 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C5*), ABISELECT(224,112), "S21093C3");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C11*)(S21093C5*), ABISELECT(48,20), "S21093C3");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C11*)(S21093C5*), ABISELECT(48,20), "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(288,152), "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(312,164), "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(312,164), "S21093C3");
    check_base_class_offset(lv, (S21093C6*)(S21093C12*)(S21093C11*)(S21093C5*), ABISELECT(288,152), "S21093C3");
    check_base_class_offset(lv, (S21093C12*)(S21093C11*)(S21093C5*), ABISELECT(56,24), "S21093C3");
    check_base_class_offset(lv, (S21093C9*)(S21093C11*)(S21093C5*), ABISELECT(64,28), "S21093C3");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C11*)(S21093C5*), ABISELECT(128,68), "S21093C3");
    check_base_class_offset(lv, (S21093C11*)(S21093C5*), ABISELECT(48,20), "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C5*), ABISELECT(168,88), "S21093C3");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C5*), ABISELECT(168,88), "S21093C3");
    check_base_class_offset(lv, (S21093C5*), 0, "S21093C3");
    /*is_ambiguous_... S21093C3::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*), ABISELECT(176,92), "S21093C3");
    check_field_offset(lv, s21093c3f0, ABISELECT(200,104), "S21093C3.s21093c3f0");
    check_field_offset(lv, s21093c3f1, ABISELECT(208,108), "S21093C3.s21093c3f1");
    test_class_info(&lv, &cd_S21093C3);
    dp->~S21093C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C3(Test_S21093C3, "S21093C3", ABISELECT(336,172));

#else // __cplusplus

extern void _ZN8S21093C3C1Ev();
extern void _ZN8S21093C3D1Ev();
Name_Map name_map_S21093C3[] = {
  NSPAIR(_ZN8S21093C3C1Ev),
  NSPAIR(_ZN8S21093C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C11;
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C5;
extern VTBL_ENTRY _ZTI8S21093C5[];
extern  VTBL_ENTRY _ZTV8S21093C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C5[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
static Base_Class bases_S21093C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(24,12), //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(224,112), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21093C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(312,164), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(288,152), //bcp->offset
    107, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21093C12,    ABISELECT(56,24), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(64,28), //bcp->offset
    66, //bcp->virtual_function_table_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_S21093C7,    ABISELECT(128,68), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C11,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(168,88), //bcp->offset
    80, //bcp->virtual_function_table_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_S21093C5,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C7,    ABISELECT(176,92), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21093C3[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C3D1Ev();
extern void _ZN8S21093C3D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C33v33Ev();
extern void _ZN8S21093C33v34Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C3D1Ev,_ZThn20_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C3D0Ev,_ZThn20_N8S21093C3D0Ev)();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C3D1Ev,_ZThn24_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C3D0Ev,_ZThn24_N8S21093C3D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S21093C3D1Ev,_ZThn152_N8S21093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S21093C3D0Ev,_ZThn152_N8S21093C3D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C3[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v34Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C3D1Ev,_ZThn20_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C3D0Ev,_ZThn20_N8S21093C3D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C3D1Ev,_ZThn24_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C3D0Ev,_ZThn24_N8S21093C3D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21093C3[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C5D1Ev();
extern void _ZN8S21093C5D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C5__8S21093C3[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C68S21093C5__8S21093C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C68S21093C5__8S21093C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S21093C12D1Ev,_ZThn128_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S21093C12D0Ev,_ZThn128_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C129S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-128),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C129S21093C118S21093C5__8S21093C3[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C5__A2__8S21093C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C79S21093C118S21093C5__A2__8S21093C3[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21093C11D1Ev,_ZThn132_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21093C11D0Ev,_ZThn132_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__A1__9S21093C118S21093C5__8S21093C3[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C118S21093C5__8S21093C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C5__8S21093C3[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C11__8S21093C5__8S21093C3[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C11__8S21093C5__8S21093C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S21093C5D1Ev,_ZThn152_N8S21093C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S21093C5D0Ev,_ZThn152_N8S21093C5D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C5__8S21093C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C5__8S21093C3[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C11__A2__8S21093C5__8S21093C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A3__8S21093C3[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C7__A3__8S21093C3[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C3[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__A1__8S21093C3[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C3[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__A1__8S21093C3[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
static  VTT_ENTRY vtt_S21093C3[] = {
  {&(_ZTV8S21093C3[7]),  7,149},
  {&(_tg__ZTV8S21093C5__8S21093C3[7]),  7,18},
  {&(_tg__ZTV8S21093C68S21093C5__8S21093C3[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C68S21093C5__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C78S21093C68S21093C5__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C68S21093C5__8S21093C3[5]),  5,15},
  {&(_tg__ZTV9S21093C118S21093C5__8S21093C3[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C5__8S21093C3[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C129S21093C118S21093C5__8S21093C3[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C129S21093C118S21093C5__8S21093C3[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C5__8S21093C3[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C5__A2__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C79S21093C118S21093C5__A2__8S21093C3[4]),  4,6},
  {&(_tg__ZTV9S21093C12__9S21093C118S21093C5__8S21093C3[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C118S21093C5__8S21093C3[20]),  20,30},
  {&(_tg__ZTV8S21093C4__A1__9S21093C118S21093C5__8S21093C3[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C5__8S21093C3[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C118S21093C5__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C5__8S21093C3[7]),  7,18},
  {&(_tg__ZTV8S21093C9__8S21093C5__8S21093C3[3]),  3,4},
  {&(_tg__ZTV9S21093C11__8S21093C5__8S21093C3[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C11__8S21093C5__8S21093C3[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C5__8S21093C3[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C5__8S21093C3[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C11__A2__8S21093C5__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C7__A3__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C7__A3__8S21093C3[4]),  4,6},
  {&(_ZTV8S21093C3[7]),  7,149},
  {&(_ZTV8S21093C3[106]),  106,149},
  {&(_ZTV8S21093C3[36]),  36,149},
  {&(_ZTV8S21093C3[60]),  60,149},
  {&(_ZTV8S21093C3[127]),  127,149},
  {&(_ZTV8S21093C3[139]),  139,149},
  {&(_ZTV8S21093C3[74]),  74,149},
  {&(_ZTV8S21093C3[97]),  97,149},
  {&(_tg__ZTV8S21093C6__A1__8S21093C3[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__A1__8S21093C3[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C3[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__A1__8S21093C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21093C3[];
extern  VTBL_ENTRY _ZTV8S21093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C3[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C5D0Ev,_ZThn152_N8S21093C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C5D1Ev,_ZThn152_N8S21093C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21093C11D0Ev,_ZThn132_N9S21093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21093C11D1Ev,_ZThn132_N9S21093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21093C12D0Ev,_ZThn128_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21093C12D1Ev,_ZThn128_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C3D0Ev,_ZThn152_N8S21093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C3D1Ev,_ZThn152_N8S21093C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C3 = {  "S21093C3", // class name
  bases_S21093C3, 20,
  &(vtc_S21093C3[0]), // expected_vtbl_contents
  &(vtt_S21093C3[0]), // expected_vtt_contents
  ABISELECT(336,172), // object size
  NSPAIRA(_ZTI8S21093C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21093C3),149, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21093C3),39, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C2  : virtual S21093C3 , S21093C8 , S21093C5 {
  short s21093c2f0;
  int s21093c2f1[5];
  virtual  ~S21093C2(); // _ZN8S21093C2D2Ev
  virtual void  v35(); // _ZN8S21093C23v35Ev
  virtual void  v36(); // _ZN8S21093C23v36Ev
  virtual void  v37(); // _ZN8S21093C23v37Ev
  virtual void  v38(); // _ZN8S21093C23v38Ev
  virtual void  v39(); // _ZN8S21093C23v39Ev
  S21093C2(); // tgen
};
//SIG(-1 S21093C2) C1{ VBC2{ VBC3{ v6 v7} BC4{ VBC3 BC5{ VBC3 BC6{ VBC3 v8 v9 v10 v11 Fp Fc} BC7{ BC3 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC3} VBC8{ v22 FU9{ m FD[3]}} BC10{ BC7 BC11{ VBC5 vd v23 v24} BC8 BC6 v25 v26 v27 v28 v29 v30 Fp Fl} BC7 vd v31} BC6 v32 v33 Fp Fi} BC7 BC4 vd v1 v2 v3 v4 v5 Fs Fi[5]}


 S21093C2 ::~S21093C2(){ note_dtor("S21093C2", this);}
void  S21093C2 ::v35(){vfunc_called(this, "_ZN8S21093C23v35Ev");}
void  S21093C2 ::v36(){vfunc_called(this, "_ZN8S21093C23v36Ev");}
void  S21093C2 ::v37(){vfunc_called(this, "_ZN8S21093C23v37Ev");}
void  S21093C2 ::v38(){vfunc_called(this, "_ZN8S21093C23v38Ev");}
void  S21093C2 ::v39(){vfunc_called(this, "_ZN8S21093C23v39Ev");}
S21093C2 ::S21093C2(){ note_ctor("S21093C2", this);} // tgen

static void Test_S21093C2()
{
  extern Class_Descriptor cd_S21093C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,74)];
    init_test(&cd_S21093C2, buf);
    S21093C2 *dp, &lv = *(dp=new (buf) S21093C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,292), "sizeof(S21093C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21093C2)");
    /*is_ambiguous_... S21093C3::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C3::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C5*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*)(S21093C5*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*)(S21093C5*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C11*)(S21093C5*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(248,132), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(248,132), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C9 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C5*)(S21093C3*), ABISELECT(448,232), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C5*), ABISELECT(448,232), "S21093C2");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(272,140), "S21093C2");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(272,140), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(512,272), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(536,284), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(536,284), "S21093C2");
    check_base_class_offset(lv, (S21093C6*)(S21093C12*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(512,272), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C12*)(S21093C11*)(S21093C5*), ABISELECT(512,272), "S21093C2");
    check_base_class_offset(lv, (S21093C12*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(280,144), "S21093C2");
    check_base_class_offset(lv, (S21093C9*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(288,148), "S21093C2");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(352,188), "S21093C2");
    check_base_class_offset(lv, (S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(272,140), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C5*)(S21093C3*), ABISELECT(392,208), "S21093C2");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C5*)(S21093C3*), ABISELECT(392,208), "S21093C2");
    check_base_class_offset(lv, (S21093C5*)(S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C3::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C3*), ABISELECT(400,212), "S21093C2");
    check_base_class_offset(lv, (S21093C3*), ABISELECT(224,120), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*), 0, "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*), 0, "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*)(S21093C5*), ABISELECT(16,4), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*)(S21093C5*), ABISELECT(40,16), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*)(S21093C5*), ABISELECT(40,16), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C5*), ABISELECT(16,4), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C11*)(S21093C5*), ABISELECT(64,24), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C11*)(S21093C5*), ABISELECT(64,24), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C12*)(S21093C11*)(S21093C5*), ABISELECT(72,28), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C11*)(S21093C5*), ABISELECT(80,32), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C11*)(S21093C5*), ABISELECT(144,72), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C11*)(S21093C5*), ABISELECT(64,24), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C5*), ABISELECT(184,92), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C5*), ABISELECT(184,92), "S21093C2");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C5*), ABISELECT(16,4), "S21093C2");
    check_field_offset(lv, s21093c2f0, ABISELECT(192,96), "S21093C2.s21093c2f0");
    check_field_offset(lv, s21093c2f1, ABISELECT(196,100), "S21093C2.s21093c2f1");
    test_class_info(&lv, &cd_S21093C2);
    dp->~S21093C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C2(Test_S21093C2, "S21093C2", ABISELECT(560,292));

#else // __cplusplus

extern void _ZN8S21093C2C1Ev();
extern void _ZN8S21093C2D2Ev();
Name_Map name_map_S21093C2[] = {
  NSPAIR(_ZN8S21093C2C1Ev),
  NSPAIR(_ZN8S21093C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C11;
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C5;
extern VTBL_ENTRY _ZTI8S21093C5[];
extern  VTBL_ENTRY _ZTV8S21093C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C5[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C3;
extern VTBL_ENTRY _ZTI8S21093C3[];
extern  VTBL_ENTRY _ZTV8S21093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C3[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C11;
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C5;
extern VTBL_ENTRY _ZTI8S21093C5[];
extern  VTBL_ENTRY _ZTV8S21093C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C5[];
static Base_Class bases_S21093C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    ABISELECT(224,120), //bcp->offset
    -1, //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
    1, //immediately_derived
  0, 1},
  {&cd_S21093C7,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(248,132), //bcp->offset
    160, //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(448,232), //bcp->offset
    243, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21093C4,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(512,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(536,284), //bcp->offset
    277, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(512,272), //bcp->offset
    247, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21093C12,    ABISELECT(280,144), //bcp->offset
    194, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(288,148), //bcp->offset
    206, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(352,188), //bcp->offset
    209, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C11,    ABISELECT(272,140), //bcp->offset
    172, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(392,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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(392,208), //bcp->offset
    220, //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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C5,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(400,212), //bcp->offset
    232, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21093C3,    ABISELECT(224,120), //bcp->offset
    113, //bcp->virtual_function_table_offset
    34, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21093C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(40,16), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(40,16), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C12,    ABISELECT(72,28), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(80,32), //bcp->offset
    87, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(144,72), //bcp->offset
    90, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C11,    ABISELECT(64,24), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(184,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
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(184,92), //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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21093C5,    ABISELECT(16,4), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21093C2[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C2D1Ev();
extern void _ZN8S21093C2D0Ev();
extern void _ZN8S21093C23v35Ev();
extern void _ZN8S21093C23v36Ev();
extern void _ZN8S21093C23v37Ev();
extern void _ZN8S21093C23v38Ev();
extern void _ZN8S21093C23v39Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZThn16_N8S21093C2D1Ev,_ZThn4_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21093C2D0Ev,_ZThn4_N8S21093C2D0Ev)();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn64_N8S21093C2D1Ev,_ZThn24_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21093C2D0Ev,_ZThn24_N8S21093C2D0Ev)();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn72_N8S21093C2D1Ev,_ZThn28_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21093C2D0Ev,_ZThn28_N8S21093C2D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S21093C2D1Ev,_ZTv0_n48_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21093C2D1Ev,_ZThn120_N8S21093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21093C2D0Ev,_ZTv0_n48_N8S21093C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21093C2D0Ev,_ZThn120_N8S21093C2D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C33v33Ev();
extern void _ZN8S21093C33v34Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZTvn48_n96_N8S21093C2D1Ev,_ZTvn20_n48_N8S21093C2D1Ev)();
extern void ABISELECT(_ZTvn48_n96_N8S21093C2D0Ev,_ZTvn20_n48_N8S21093C2D0Ev)();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZTvn56_n96_N8S21093C2D1Ev,_ZTvn24_n48_N8S21093C2D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N8S21093C2D0Ev,_ZTvn24_n48_N8S21093C2D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C2D1Ev,_ZTv0_n40_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn512_N8S21093C2D1Ev,_ZThn272_N8S21093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C2D0Ev,_ZTv0_n40_N8S21093C2D0Ev)();
extern void ABISELECT(_ZThn512_N8S21093C2D0Ev,_ZThn272_N8S21093C2D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C2[] = {
  ABISELECT(512,272),
  ABISELECT(448,232),
  ABISELECT(224,120),
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN8S21093C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v35Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v36Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v37Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v38Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v39Ev,
  ABISELECT(496,268),
  ABISELECT(432,228),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21093C2D1Ev,_ZThn4_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21093C2D0Ev,_ZThn4_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  ABISELECT(-40,-16),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(160,96),
  ABISELECT(448,248),
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21093C2D1Ev,_ZThn24_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21093C2D0Ev,_ZThn24_N8S21093C2D0Ev),
  ABISELECT(152,92),
  ABISELECT(440,244),
  ABISELECT(152,92),
  ABISELECT(152,92),
  ABISELECT(-72,-28),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21093C2D1Ev,_ZThn28_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21093C2D0Ev,_ZThn28_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-80,-32),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-120),
  0,
  0,
  0,
  0,
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21093C2D1Ev,_ZTv0_n48_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21093C2D0Ev,_ZTv0_n48_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v34Ev,
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21093C2D1Ev,_ZTvn20_n48_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21093C2D0Ev,_ZTvn20_n48_N8S21093C2D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21093C2D1Ev,_ZTvn24_n48_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21093C2D0Ev,_ZTvn24_n48_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(-392,-208),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  0,
  ABISELECT(-448,-232),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-512,-272),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C2D1Ev,_ZTv0_n40_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C2D0Ev,_ZTv0_n40_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21093C2[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C5D1Ev();
extern void _ZN8S21093C5D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C5__A1__8S21093C2[] = {
  ABISELECT(496,268),
  ABISELECT(432,228),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(208,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C68S21093C5__A2__8S21093C2[] = {
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(208,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C68S21093C5__A4__8S21093C2[] = {
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(208,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C68S21093C5__A4__8S21093C2[] = {
  0,
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C68S21093C5__A2__8S21093C2[] = {
  0,
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(160,96),
  ABISELECT(448,248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(152,92),
  ABISELECT(440,244),
  ABISELECT(152,92),
  ABISELECT(152,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn440_N9S21093C12D1Ev,_ZThn244_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn440_N9S21093C12D0Ev,_ZThn244_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C129S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-440,-244),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-440,-244),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C129S21093C118S21093C5__A1__8S21093C2[] = {
  0,
  0,
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C5__A5__8S21093C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C79S21093C118S21093C5__A5__8S21093C2[] = {
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(152,92),
  ABISELECT(440,244),
  ABISELECT(152,92),
  ABISELECT(152,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn448_N9S21093C11D1Ev,_ZThn248_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn448_N9S21093C11D0Ev,_ZThn248_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-448,-248),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-448,-248),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__A1__9S21093C118S21093C5__A1__8S21093C2[] = {
  0,
  0,
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(-472,-260),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C118S21093C5__A1__8S21093C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C5__A1__8S21093C2[] = {
  0,
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C5__A1__8S21093C2[] = {
  0,
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C11__8S21093C5__A1__8S21093C2[] = {
  ABISELECT(160,96),
  ABISELECT(448,248),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C11__8S21093C5__A1__8S21093C2[] = {
  ABISELECT(152,92),
  ABISELECT(440,244),
  ABISELECT(152,92),
  ABISELECT(152,92),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S21093C5D1Ev,_ZThn268_N8S21093C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S21093C5D0Ev,_ZThn268_N8S21093C5D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C5__A1__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-496,-268),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-496,-268),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C5__A1__8S21093C2[] = {
  ABISELECT(-520,-280),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C11__A2__8S21093C5__A1__8S21093C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C3D1Ev();
extern void _ZN8S21093C3D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C33v33Ev();
extern void _ZN8S21093C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C3__8S21093C2[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v34Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C5D1Ev();
extern void _ZN8S21093C5D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C68S21093C58S21093C3__8S21093C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C68S21093C58S21093C3__8S21093C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S21093C12D1Ev,_ZThn128_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S21093C12D0Ev,_ZThn128_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-128),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C129S21093C118S21093C58S21093C3__8S21093C2[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C2[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21093C11D1Ev,_ZThn132_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21093C11D0Ev,_ZThn132_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__A1__9S21093C118S21093C58S21093C3__8S21093C2[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C118S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C58S21093C3__8S21093C2[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C11__8S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C11__8S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S21093C5D1Ev,_ZThn152_N8S21093C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S21093C5D0Ev,_ZThn152_N8S21093C5D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C11__A2__8S21093C58S21093C3__8S21093C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C3__A3__8S21093C2[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C3__A3__8S21093C2[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C3__8S21093C2[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C3D1Ev,_ZThn20_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C3D0Ev,_ZThn20_N8S21093C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C5__8S21093C3__8S21093C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C3D1Ev,_ZThn20_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C3D0Ev,_ZThn20_N8S21093C3D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C3D1Ev,_ZThn24_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C3D0Ev,_ZThn24_N8S21093C3D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C5__8S21093C3__8S21093C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C3D1Ev,_ZThn24_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C3D0Ev,_ZThn24_N8S21093C3D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S21093C3D1Ev,_ZThn152_N8S21093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S21093C3D0Ev,_ZThn152_N8S21093C3D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C3__8S21093C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C3__8S21093C2[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C5__A2__8S21093C3__8S21093C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A3__8S21093C3__8S21093C2[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C2[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__A1__8S21093C2[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C2[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__A1__8S21093C2[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
static  VTT_ENTRY vtt_S21093C2[] = {
  {&(_ZTV8S21093C2[6]),  6,289},
  {&(_tg__ZTV8S21093C5__A1__8S21093C2[7]),  7,18},
  {&(_tg__ZTV8S21093C68S21093C5__A2__8S21093C2[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C68S21093C5__A4__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C68S21093C5__A4__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C68S21093C5__A2__8S21093C2[4]),  4,6},
  {&(_tg__ZTV9S21093C118S21093C5__A1__8S21093C2[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C5__A1__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C129S21093C118S21093C5__A1__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C129S21093C118S21093C5__A1__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C5__A1__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C5__A5__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C79S21093C118S21093C5__A5__8S21093C2[4]),  4,6},
  {&(_tg__ZTV9S21093C12__9S21093C118S21093C5__A1__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C118S21093C5__A1__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C4__A1__9S21093C118S21093C5__A1__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C5__A1__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C118S21093C5__A1__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C5__A1__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C9__8S21093C5__A1__8S21093C2[3]),  3,4},
  {&(_tg__ZTV9S21093C11__8S21093C5__A1__8S21093C2[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C11__8S21093C5__A1__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C5__A1__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C5__A1__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C11__A2__8S21093C5__A1__8S21093C2[5]),  5,11},
  {&(_ZTV8S21093C2[147]),  147,289},
  {&(_ZTV8S21093C2[147]),  147,289},
  {&(_ZTV8S21093C2[162]),  162,289},
  {&(_ZTV8S21093C2[246]),  246,289},
  {&(_ZTV8S21093C2[176]),  176,289},
  {&(_ZTV8S21093C2[200]),  200,289},
  {&(_ZTV8S21093C2[267]),  267,289},
  {&(_ZTV8S21093C2[279]),  279,289},
  {&(_ZTV8S21093C2[208]),  208,289},
  {&(_ZTV8S21093C2[214]),  214,289},
  {&(_ZTV8S21093C2[222]),  222,289},
  {&(_ZTV8S21093C2[237]),  237,289},
  {&(_ZTV8S21093C2[30]),  30,289},
  {&(_ZTV8S21093C2[57]),  57,289},
  {&(_ZTV8S21093C2[81]),  81,289},
  {&(_ZTV8S21093C2[95]),  95,289},
  {&(_tg__ZTV8S21093C3__8S21093C2[7]),  7,20},
  {&(_tg__ZTV8S21093C58S21093C3__8S21093C2[7]),  7,18},
  {&(_tg__ZTV8S21093C68S21093C58S21093C3__8S21093C2[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C68S21093C58S21093C3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C78S21093C68S21093C58S21093C3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C68S21093C58S21093C3__8S21093C2[5]),  5,15},
  {&(_tg__ZTV9S21093C118S21093C58S21093C3__8S21093C2[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C58S21093C3__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C129S21093C118S21093C58S21093C3__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C2[4]),  4,6},
  {&(_tg__ZTV9S21093C12__9S21093C118S21093C58S21093C3__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C118S21093C58S21093C3__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C4__A1__9S21093C118S21093C58S21093C3__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C58S21093C3__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C118S21093C58S21093C3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C58S21093C3__8S21093C2[7]),  7,18},
  {&(_tg__ZTV8S21093C9__8S21093C58S21093C3__8S21093C2[3]),  3,4},
  {&(_tg__ZTV9S21093C11__8S21093C58S21093C3__8S21093C2[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C11__8S21093C58S21093C3__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C58S21093C3__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C58S21093C3__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C11__A2__8S21093C58S21093C3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C78S21093C3__A3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C3__A3__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C3__8S21093C2[7]),  7,20},
  {&(_tg__ZTV8S21093C9__8S21093C3__8S21093C2[3]),  3,4},
  {&(_tg__ZTV9S21093C118S21093C5__8S21093C3__8S21093C2[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C5__8S21093C3__8S21093C2[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C3__8S21093C2[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C3__8S21093C2[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C5__A2__8S21093C3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C7__A3__8S21093C3__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C6__A1__8S21093C2[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__A1__8S21093C2[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C2[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__A1__8S21093C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21093C2[];
extern  VTBL_ENTRY _ZTV8S21093C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C2[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C3D0Ev,_ZThn152_N8S21093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C3D1Ev,_ZThn152_N8S21093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C5D0Ev,_ZThn152_N8S21093C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21093C5D0Ev,_ZThn268_N8S21093C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C5D1Ev,_ZThn152_N8S21093C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21093C5D1Ev,_ZThn268_N8S21093C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21093C11D0Ev,_ZThn132_N9S21093C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21093C11D0Ev,_ZThn248_N9S21093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21093C11D1Ev,_ZThn132_N9S21093C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21093C11D1Ev,_ZThn248_N9S21093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21093C12D0Ev,_ZThn128_N9S21093C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21093C12D0Ev,_ZThn244_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21093C12D1Ev,_ZThn128_N9S21093C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21093C12D1Ev,_ZThn244_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C2D0Ev,_ZTv0_n40_N8S21093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21093C2D0Ev,_ZThn272_N8S21093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C2D1Ev,_ZTv0_n40_N8S21093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21093C2D1Ev,_ZThn272_N8S21093C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21093C2D0Ev,_ZTv0_n48_N8S21093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21093C2D0Ev,_ZThn120_N8S21093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21093C2D1Ev,_ZTv0_n48_N8S21093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21093C2D1Ev,_ZThn120_N8S21093C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C2 = {  "S21093C2", // class name
  bases_S21093C2, 36,
  &(vtc_S21093C2[0]), // expected_vtbl_contents
  &(vtt_S21093C2[0]), // expected_vtt_contents
  ABISELECT(560,292), // object size
  NSPAIRA(_ZTI8S21093C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21093C2),289, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21093C2),80, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C13  : virtual S21093C12 {
  __tsi64 s21093c13f0:40;
  virtual  ~S21093C13(); // _ZN9S21093C13D2Ev
  virtual void  v40(); // _ZN9S21093C133v40Ev
  virtual void  v41(); // _ZN9S21093C133v41Ev
  virtual void  v42(); // _ZN9S21093C133v42Ev
  virtual void  v43(); // _ZN9S21093C133v43Ev
  virtual void  v44(); // _ZN9S21093C133v44Ev
  virtual void  v45(); // _ZN9S21093C133v45Ev
  virtual void  v46(); // _ZN9S21093C133v46Ev
  S21093C13(); // tgen
};
//SIG(-1 S21093C13) C1{ VBC2{ VBC3{ VBC4{ v8 v9} BC5{ VBC4 v10 v11 v12 v13 Fp Fc} BC6{ BC4 v14 v15 v16 v17 v18 v19 v20 v21} vd v22 v23 FC4} vd v24 v25} vd v1 v2 v3 v4 v5 v6 v7 FL:40}


 S21093C13 ::~S21093C13(){ note_dtor("S21093C13", this);}
void  S21093C13 ::v40(){vfunc_called(this, "_ZN9S21093C133v40Ev");}
void  S21093C13 ::v41(){vfunc_called(this, "_ZN9S21093C133v41Ev");}
void  S21093C13 ::v42(){vfunc_called(this, "_ZN9S21093C133v42Ev");}
void  S21093C13 ::v43(){vfunc_called(this, "_ZN9S21093C133v43Ev");}
void  S21093C13 ::v44(){vfunc_called(this, "_ZN9S21093C133v44Ev");}
void  S21093C13 ::v45(){vfunc_called(this, "_ZN9S21093C133v45Ev");}
void  S21093C13 ::v46(){vfunc_called(this, "_ZN9S21093C133v46Ev");}
S21093C13 ::S21093C13(){ note_ctor("S21093C13", this);} // tgen

static void Test_S21093C13()
{
  extern Class_Descriptor cd_S21093C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21093C13, buf);
    S21093C13 *dp, &lv = *(dp=new (buf) S21093C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21093C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21093C13)");
    /*is_ambiguous_... S21093C6::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), 0, "S21093C13");
    check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), 0, "S21093C13");
    check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(16,12), "S21093C13");
    check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(40,24), "S21093C13");
    check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(40,24), "S21093C13");
    check_base_class_offset(lv, (S21093C6*)(S21093C12*), ABISELECT(16,12), "S21093C13");
    check_base_class_offset(lv, (S21093C12*), 0, "S21093C13");
    set_bf_and_test(lv, s21093c13f0, ABISELECT(8,4), 0, 40, 1, "S21093C13");
    set_bf_and_test(lv, s21093c13f0, ABISELECT(8,4), 0, 40, hide_sll(1LL<<39), "S21093C13");
    test_class_info(&lv, &cd_S21093C13);
    dp->~S21093C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C13(Test_S21093C13, "S21093C13", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S21093C13C1Ev();
extern void _ZN9S21093C13D2Ev();
Name_Map name_map_S21093C13[] = {
  NSPAIR(_ZN9S21093C13C1Ev),
  NSPAIR(_ZN9S21093C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
static Base_Class bases_S21093C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21093C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(40,24), //bcp->offset
    53, //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_S21093C6,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21093C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21093C13[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C13D1Ev();
extern void _ZN9S21093C13D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN9S21093C133v40Ev();
extern void _ZN9S21093C133v41Ev();
extern void _ZN9S21093C133v42Ev();
extern void _ZN9S21093C133v43Ev();
extern void _ZN9S21093C133v44Ev();
extern void _ZN9S21093C133v45Ev();
extern void _ZN9S21093C133v46Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C13D1Ev,_ZTv0_n40_N9S21093C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S21093C13D1Ev,_ZThn12_N9S21093C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C13D0Ev,_ZTv0_n40_N9S21093C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S21093C13D0Ev,_ZThn12_N9S21093C13D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY vtc_S21093C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C13D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v40Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v41Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v42Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v43Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v44Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v45Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v46Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C13D1Ev,_ZTv0_n40_N9S21093C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C13D0Ev,_ZTv0_n40_N9S21093C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern VTBL_ENTRY _ZTV9S21093C13[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C13[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S21093C12D1Ev,_ZThn12_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S21093C12D0Ev,_ZThn12_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C12__9S21093C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C12__9S21093C13[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__9S21093C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__9S21093C13[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__9S21093C13[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
static  VTT_ENTRY vtt_S21093C13[] = {
  {&(_ZTV9S21093C13[10]),  10,65},
  {&(_ZTV9S21093C13[10]),  10,65},
  {&(_ZTV9S21093C13[43]),  43,65},
  {&(_ZTV9S21093C13[10]),  10,65},
  {&(_ZTV9S21093C13[55]),  55,65},
  {&(_tg__ZTV9S21093C12__9S21093C13[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C12__9S21093C13[20]),  20,30},
  {&(_tg__ZTV9S21093C12__9S21093C13[6]),  6,12},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C12__9S21093C13[2]),  2,12},
  {&(_tg__ZTV8S21093C6__9S21093C13[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__9S21093C13[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__9S21093C13[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__9S21093C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21093C13[];
extern  VTBL_ENTRY _ZTV9S21093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C13[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21093C12D0Ev,_ZThn12_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21093C12D1Ev,_ZThn12_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C13D0Ev,_ZTv0_n40_N9S21093C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21093C13D0Ev,_ZThn12_N9S21093C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C13D1Ev,_ZTv0_n40_N9S21093C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21093C13D1Ev,_ZThn12_N9S21093C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C13 = {  "S21093C13", // class name
  bases_S21093C13, 6,
  &(vtc_S21093C13[0]), // expected_vtbl_contents
  &(vtt_S21093C13[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S21093C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21093C13),65, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21093C13),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21093C1  : virtual S21093C2 , virtual S21093C12 , virtual S21093C13 {
  long s21093c1f0;
  virtual  ~S21093C1(); // _ZN8S21093C1D2Ev
  virtual void  v1(); // _ZN8S21093C12v1Ev
  virtual void  v2(); // _ZN8S21093C12v2Ev
  virtual void  v3(); // _ZN8S21093C12v3Ev
  virtual void  v4(); // _ZN8S21093C12v4Ev
  virtual void  v5(); // _ZN8S21093C12v5Ev
  virtual void  v6(); // _ZN8S21093C12v6Ev
  S21093C1(); // tgen
};
//SIG(1 S21093C1) C1{ VBC2{ VBC3{ VBC4{ v7 v8} BC5{ VBC4 BC6{ VBC4 BC7{ VBC4 v9 v10 v11 v12 Fp Fc} BC8{ BC4 v13 v14 v15 v16 v17 v18 v19 v20} vd v21 v22 FC4} VBC9{ v23 FU10{ m FD[3]}} BC11{ BC8 BC12{ VBC6 vd v24 v25} BC9 BC7 v26 v27 v28 v29 v30 v31 Fp Fl} BC8 vd v32} BC7 v33 v34 Fp Fi} BC8 BC5 vd v35 v36 v37 v38 v39 Fs Fi[5]} VBC12 VBC13{ VBC12 vd v40 v41 v42 v43 v44 v45 v46 FL:40} vd v1 v2 v3 v4 v5 v6 Fl}


 S21093C1 ::~S21093C1(){ note_dtor("S21093C1", this);}
void  S21093C1 ::v1(){vfunc_called(this, "_ZN8S21093C12v1Ev");}
void  S21093C1 ::v2(){vfunc_called(this, "_ZN8S21093C12v2Ev");}
void  S21093C1 ::v3(){vfunc_called(this, "_ZN8S21093C12v3Ev");}
void  S21093C1 ::v4(){vfunc_called(this, "_ZN8S21093C12v4Ev");}
void  S21093C1 ::v5(){vfunc_called(this, "_ZN8S21093C12v5Ev");}
void  S21093C1 ::v6(){vfunc_called(this, "_ZN8S21093C12v6Ev");}
S21093C1 ::S21093C1(){ note_ctor("S21093C1", this);} // tgen

static void Test_S21093C1()
{
  extern Class_Descriptor cd_S21093C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,79)];
    init_test(&cd_S21093C1, buf);
    S21093C1 *dp, &lv = *(dp=new (buf) S21093C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,312), "sizeof(S21093C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21093C1)");
    /*is_ambiguous_... S21093C3::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C3*), 0, "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C4 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C5*)(S21093C3*), 0, "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*)(S21093C5*)(S21093C3*), 0, "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*)(S21093C5*)(S21093C3*), 0, "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*), 0, "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*), 0, "S21093C1");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C11*)(S21093C5*)(S21093C3*), 0, "S21093C1");
    /*is_ambiguous_... S21093C3::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C3*), 0, "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C5*)(S21093C2*), 0, "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C6*)(S21093C5*)(S21093C2*), 0, "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C6*)(S21093C5*)(S21093C2*), 0, "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C7*)(S21093C11*)(S21093C5*)(S21093C2*), 0, "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(240,128), "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(264,140), "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(264,140), "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C5*)(S21093C3*), ABISELECT(240,128), "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C9 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C5*)(S21093C3*), ABISELECT(464,240), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C5*)(S21093C2*), ABISELECT(464,240), "S21093C1");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(288,148), "S21093C1");
    /*is_ambiguous_... S21093C11::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(288,148), "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*), ABISELECT(528,280), "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*), ABISELECT(552,292), "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C6 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*), ABISELECT(552,292), "S21093C1");
    check_base_class_offset(lv, (S21093C6*)(S21093C12*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(528,280), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C12*)(S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(528,280), "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C12 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C12*), ABISELECT(528,280), "S21093C1");
    check_base_class_offset(lv, (S21093C12*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(296,152), "S21093C1");
    check_base_class_offset(lv, (S21093C9*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(304,156), "S21093C1");
    /*is_ambiguous_... S21093C11::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(368,196), "S21093C1");
    check_base_class_offset(lv, (S21093C11*)(S21093C5*)(S21093C3*), ABISELECT(288,148), "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C5*)(S21093C3*), ABISELECT(408,216), "S21093C1");
    /*is_ambiguous_... S21093C5::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C5*)(S21093C3*), ABISELECT(408,216), "S21093C1");
    check_base_class_offset(lv, (S21093C5*)(S21093C3*), ABISELECT(240,128), "S21093C1");
    /*is_ambiguous_... S21093C3::S21093C7 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C3*), ABISELECT(416,220), "S21093C1");
    check_base_class_offset(lv, (S21093C3*)(S21093C2*), ABISELECT(240,128), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C2*), ABISELECT(16,8), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C8 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C2*), ABISELECT(16,8), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C6*)(S21093C5*)(S21093C2*), ABISELECT(32,12), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C6*)(S21093C5*)(S21093C2*), ABISELECT(56,24), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C6*)(S21093C5*)(S21093C2*), ABISELECT(56,24), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C6*)(S21093C5*)(S21093C2*), ABISELECT(32,12), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(80,32), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(80,32), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C12*)(S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(88,36), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C9*)(S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(96,40), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C7*)(S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(160,80), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C11*)(S21093C5*)(S21093C2*), ABISELECT(80,32), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C4*)(S21093C8*)(S21093C5*)(S21093C2*), ABISELECT(200,100), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C8*)(S21093C5*)(S21093C2*), ABISELECT(200,100), "S21093C1");
    /*is_ambiguous_... S21093C2::S21093C5 */ AMB_check_base_class_offset(lv, (S21093C5*)(S21093C2*), ABISELECT(32,12), "S21093C1");
    check_base_class_offset(lv, (S21093C2*), ABISELECT(16,8), "S21093C1");
    /*is_ambiguous_... S21093C1::S21093C12 */ AMB_check_base_class_offset(lv, (S21093C12*), ABISELECT(568,300), "S21093C1");
    check_base_class_offset(lv, (S21093C12*)(S21093C13*), ABISELECT(568,300), "S21093C1");
    check_base_class_offset(lv, (S21093C13*), ABISELECT(568,300), "S21093C1");
    check_field_offset(lv, s21093c1f0, ABISELECT(8,4), "S21093C1.s21093c1f0");
    test_class_info(&lv, &cd_S21093C1);
    dp->~S21093C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21093C1(Test_S21093C1, "S21093C1", ABISELECT(592,312));

#else // __cplusplus

extern void _ZN8S21093C1C1Ev();
extern void _ZN8S21093C1D2Ev();
Name_Map name_map_S21093C1[] = {
  NSPAIR(_ZN8S21093C1C1Ev),
  NSPAIR(_ZN8S21093C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C11;
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C5;
extern VTBL_ENTRY _ZTI8S21093C5[];
extern  VTBL_ENTRY _ZTV8S21093C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C5[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C3;
extern VTBL_ENTRY _ZTI8S21093C3[];
extern  VTBL_ENTRY _ZTV8S21093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C3[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C6;
extern VTBL_ENTRY _ZTI8S21093C6[];
extern  VTBL_ENTRY _ZTV8S21093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C6[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C9;
extern VTBL_ENTRY _ZTI8S21093C9[];
extern  VTBL_ENTRY _ZTV8S21093C9[];
extern Class_Descriptor cd_S21093C7;
extern VTBL_ENTRY _ZTI8S21093C7[];
extern  VTBL_ENTRY _ZTV8S21093C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C7[];
extern Class_Descriptor cd_S21093C11;
extern VTBL_ENTRY _ZTI9S21093C11[];
extern  VTBL_ENTRY _ZTV9S21093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C11[];
extern Class_Descriptor cd_S21093C4;
extern VTBL_ENTRY _ZTI8S21093C4[];
extern  VTBL_ENTRY _ZTV8S21093C4[];
extern Class_Descriptor cd_S21093C8;
extern VTBL_ENTRY _ZTI8S21093C8[];
extern  VTBL_ENTRY _ZTV8S21093C8[];
extern Class_Descriptor cd_S21093C5;
extern VTBL_ENTRY _ZTI8S21093C5[];
extern  VTBL_ENTRY _ZTV8S21093C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C5[];
extern Class_Descriptor cd_S21093C2;
extern VTBL_ENTRY _ZTI8S21093C2[];
extern  VTBL_ENTRY _ZTV8S21093C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C2[];
extern Class_Descriptor cd_S21093C12;
extern VTBL_ENTRY _ZTI9S21093C12[];
extern  VTBL_ENTRY _ZTV9S21093C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C12[];
extern Class_Descriptor cd_S21093C13;
extern VTBL_ENTRY _ZTI9S21093C13[];
extern  VTBL_ENTRY _ZTV9S21093C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21093C13[];
static Base_Class bases_S21093C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21093C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21093C7,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(264,140), //bcp->offset
    213, //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(464,240), //bcp->offset
    296, //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
    18, //immediately_derived
  0, 1},
  {&cd_S21093C4,    ABISELECT(288,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
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(288,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(552,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(552,292), //bcp->offset
    330, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(528,280), //bcp->offset
    300, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21093C12,    ABISELECT(296,152), //bcp->offset
    247, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(304,156), //bcp->offset
    259, //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
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(368,196), //bcp->offset
    262, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21093C11,    ABISELECT(288,148), //bcp->offset
    225, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(408,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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(408,216), //bcp->offset
    273, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21093C5,    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
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(416,220), //bcp->offset
    285, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21093C3,    ABISELECT(240,128), //bcp->offset
    166, //bcp->virtual_function_table_offset
    34, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S21093C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21093C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(56,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(56,24), //bcp->offset
    94, //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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21093C6,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(80,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
    28, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(80,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
    29, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C12,    ABISELECT(88,36), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C9,    ABISELECT(96,40), //bcp->offset
    140, //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
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C7,    ABISELECT(160,80), //bcp->offset
    143, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21093C11,    ABISELECT(80,32), //bcp->offset
    106, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21093C4,    ABISELECT(200,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
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21093C8,    ABISELECT(200,100), //bcp->offset
    154, //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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21093C5,    ABISELECT(32,12), //bcp->offset
    76, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21093C2,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    38, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C12,    ABISELECT(568,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21093C13,    ABISELECT(568,300), //bcp->offset
    342, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21093C1[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C1D1Ev();
extern void _ZN8S21093C1D0Ev();
extern void _ZN8S21093C12v1Ev();
extern void _ZN8S21093C12v2Ev();
extern void _ZN8S21093C12v3Ev();
extern void _ZN8S21093C12v4Ev();
extern void _ZN8S21093C12v5Ev();
extern void _ZN8S21093C12v6Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void ABISELECT(_ZTv0_n136_N8S21093C1D1Ev,_ZTv0_n68_N8S21093C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21093C1D1Ev,_ZThn8_N8S21093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S21093C1D0Ev,_ZTv0_n68_N8S21093C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21093C1D0Ev,_ZThn8_N8S21093C1D0Ev)() __attribute__((weak));
extern void _ZN8S21093C23v35Ev();
extern void _ZN8S21093C23v36Ev();
extern void _ZN8S21093C23v37Ev();
extern void _ZN8S21093C23v38Ev();
extern void _ZN8S21093C23v39Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTvn16_n136_N8S21093C1D1Ev,_ZTvn4_n68_N8S21093C1D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N8S21093C1D0Ev,_ZTvn4_n68_N8S21093C1D0Ev)();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZTvn64_n136_N8S21093C1D1Ev,_ZTvn24_n68_N8S21093C1D1Ev)();
extern void ABISELECT(_ZTvn64_n136_N8S21093C1D0Ev,_ZTvn24_n68_N8S21093C1D0Ev)();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZTvn72_n136_N8S21093C1D1Ev,_ZTvn28_n68_N8S21093C1D1Ev)();
extern void ABISELECT(_ZTvn72_n136_N8S21093C1D0Ev,_ZTvn28_n68_N8S21093C1D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S21093C1D1Ev,_ZTv0_n48_N8S21093C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S21093C1D1Ev,_ZThn128_N8S21093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21093C1D0Ev,_ZTv0_n48_N8S21093C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S21093C1D0Ev,_ZThn128_N8S21093C1D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C33v33Ev();
extern void _ZN8S21093C33v34Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZTvn48_n96_N8S21093C1D1Ev,_ZTvn20_n48_N8S21093C1D1Ev)();
extern void ABISELECT(_ZTvn48_n96_N8S21093C1D0Ev,_ZTvn20_n48_N8S21093C1D0Ev)();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZTvn56_n96_N8S21093C1D1Ev,_ZTvn24_n48_N8S21093C1D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N8S21093C1D0Ev,_ZTvn24_n48_N8S21093C1D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C93v23Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C1D1Ev,_ZTv0_n40_N8S21093C1D1Ev)();
extern void ABISELECT(_ZThn528_N8S21093C1D1Ev,_ZThn280_N8S21093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C1D0Ev,_ZTv0_n40_N8S21093C1D0Ev)();
extern void ABISELECT(_ZThn528_N8S21093C1D0Ev,_ZThn280_N8S21093C1D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZTv0_n56_N8S21093C1D1Ev,_ZTv0_n28_N8S21093C1D1Ev)();
extern void ABISELECT(_ZThn568_N8S21093C1D1Ev,_ZThn300_N8S21093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21093C1D0Ev,_ZTv0_n28_N8S21093C1D0Ev)();
extern void ABISELECT(_ZThn568_N8S21093C1D0Ev,_ZThn300_N8S21093C1D0Ev)() __attribute__((weak));
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN9S21093C133v40Ev();
extern void _ZN9S21093C133v41Ev();
extern void _ZN9S21093C133v42Ev();
extern void _ZN9S21093C133v43Ev();
extern void _ZN9S21093C133v44Ev();
extern void _ZN9S21093C133v45Ev();
extern void _ZN9S21093C133v46Ev();
static  VTBL_ENTRY vtc_S21093C1[] = {
  ABISELECT(568,300),
  ABISELECT(568,300),
  ABISELECT(528,280),
  ABISELECT(464,240),
  0,
  ABISELECT(240,128),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21093C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21093C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21093C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21093C12v5Ev,
  (VTBL_ENTRY)&_ZN8S21093C12v6Ev,
  ABISELECT(80,32),
  ABISELECT(72,28),
  ABISELECT(72,28),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(512,272),
  ABISELECT(448,232),
  ABISELECT(-16,-8),
  ABISELECT(224,120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21093C1D1Ev,_ZTv0_n68_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21093C1D0Ev,_ZTv0_n68_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C23v35Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v36Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v37Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v38Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v39Ev,
  ABISELECT(496,268),
  ABISELECT(432,228),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S21093C1D1Ev,_ZTvn4_n68_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S21093C1D0Ev,_ZTvn4_n68_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-80,-32),
  ABISELECT(448,248),
  ABISELECT(-80,-32),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n136_N8S21093C1D1Ev,_ZTvn24_n68_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n136_N8S21093C1D0Ev,_ZTvn24_n68_N8S21093C1D0Ev),
  ABISELECT(-88,-36),
  ABISELECT(440,244),
  ABISELECT(-88,-36),
  ABISELECT(-88,-36),
  ABISELECT(-88,-36),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n136_N8S21093C1D1Ev,_ZTvn28_n68_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n136_N8S21093C1D0Ev,_ZTvn28_n68_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-128),
  0,
  0,
  0,
  0,
  ABISELECT(288,152),
  ABISELECT(224,112),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21093C1D1Ev,_ZTv0_n48_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21093C1D0Ev,_ZTv0_n48_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v34Ev,
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-288,-148),
  ABISELECT(240,132),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21093C1D1Ev,_ZTvn20_n48_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21093C1D0Ev,_ZTvn20_n48_N8S21093C1D0Ev),
  ABISELECT(-296,-152),
  ABISELECT(232,128),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21093C1D1Ev,_ZTvn24_n48_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21093C1D0Ev,_ZTvn24_n48_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  ABISELECT(-408,-216),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  0,
  ABISELECT(-464,-240),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-528,-280),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C1D1Ev,_ZTv0_n40_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C1D0Ev,_ZTv0_n40_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  ABISELECT(-552,-292),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-568,-300),
  ABISELECT(-568,-300),
  ABISELECT(-40,-20),
  ABISELECT(-568,-300),
  ABISELECT(-568,-300),
  ABISELECT(-568,-300),
  (VTBL_ENTRY)&(_ZTI8S21093C1[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21093C1D1Ev,_ZTv0_n28_N8S21093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21093C1D0Ev,_ZTv0_n28_N8S21093C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v40Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v41Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v42Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v43Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v44Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v45Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v46Ev,
};
extern VTBL_ENTRY _ZTV8S21093C1[];
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN8S21093C2D1Ev();
extern void _ZN8S21093C2D0Ev();
extern void _ZN8S21093C23v35Ev();
extern void _ZN8S21093C23v36Ev();
extern void _ZN8S21093C23v37Ev();
extern void _ZN8S21093C23v38Ev();
extern void _ZN8S21093C23v39Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C2__8S21093C1[] = {
  ABISELECT(512,272),
  ABISELECT(448,232),
  ABISELECT(-16,-8),
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN8S21093C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v35Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v36Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v37Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v38Ev,
  (VTBL_ENTRY)&_ZN8S21093C23v39Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C5D1Ev();
extern void _ZN8S21093C5D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(496,268),
  ABISELECT(432,228),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C68S21093C58S21093C2__A2__8S21093C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C68S21093C58S21093C2__A4__8S21093C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C68S21093C58S21093C2__A4__8S21093C1[] = {
  0,
  0,
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C68S21093C58S21093C2__A2__8S21093C1[] = {
  0,
  0,
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-80,-32),
  ABISELECT(448,248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-88,-36),
  ABISELECT(440,244),
  ABISELECT(-88,-36),
  ABISELECT(-88,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn440_N9S21093C12D1Ev,_ZThn244_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn440_N9S21093C12D0Ev,_ZThn244_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-440,-244),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-440,-244),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  0,
  0,
  ABISELECT(88,36),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C58S21093C2__A5__8S21093C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C79S21093C118S21093C58S21093C2__A5__8S21093C1[] = {
  0,
  0,
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-88,-36),
  ABISELECT(440,244),
  ABISELECT(-88,-36),
  ABISELECT(-88,-36),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn448_N9S21093C11D1Ev,_ZThn248_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn448_N9S21093C11D0Ev,_ZThn248_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-448,-248),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-448,-248),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__A1__9S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  0,
  0,
  ABISELECT(80,32),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-472,-260),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C118S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C58S21093C2__A1__8S21093C1[] = {
  0,
  0,
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C58S21093C2__A1__8S21093C1[] = {
  0,
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C11__8S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-80,-32),
  ABISELECT(448,248),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C11__8S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-88,-36),
  ABISELECT(440,244),
  ABISELECT(-88,-36),
  ABISELECT(-88,-36),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S21093C5D1Ev,_ZThn268_N8S21093C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S21093C5D0Ev,_ZThn268_N8S21093C5D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-496,-268),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-496,-268),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-520,-280),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C11__A2__8S21093C58S21093C2__A1__8S21093C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S21093C2D1Ev,_ZTv0_n48_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21093C2D1Ev,_ZThn120_N8S21093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21093C2D0Ev,_ZTv0_n48_N8S21093C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21093C2D0Ev,_ZThn120_N8S21093C2D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C33v33Ev();
extern void _ZN8S21093C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C3__8S21093C2__8S21093C1[] = {
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-120),
  0,
  0,
  0,
  0,
  ABISELECT(288,152),
  ABISELECT(224,112),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21093C2D1Ev,_ZTv0_n48_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21093C2D0Ev,_ZTv0_n48_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v34Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C2__8S21093C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C68S21093C58S21093C3__8S21093C2__8S21093C1[] = {
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C2__8S21093C1[] = {
  0,
  ABISELECT(-448,-232),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZTvn48_n96_N8S21093C2D1Ev,_ZTvn20_n48_N8S21093C2D1Ev)();
extern void ABISELECT(_ZTvn48_n96_N8S21093C2D0Ev,_ZTvn20_n48_N8S21093C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C58S21093C3__8S21093C2__8S21093C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(240,132),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21093C2D1Ev,_ZTvn20_n48_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21093C2D0Ev,_ZTvn20_n48_N8S21093C2D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZTvn56_n96_N8S21093C2D1Ev,_ZTvn24_n48_N8S21093C2D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N8S21093C2D0Ev,_ZTvn24_n48_N8S21093C2D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C58S21093C3__8S21093C2__8S21093C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(232,128),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21093C2D1Ev,_ZTvn24_n48_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21093C2D0Ev,_ZTvn24_n48_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C2D1Ev,_ZTv0_n40_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn512_N8S21093C2D1Ev,_ZThn272_N8S21093C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C2D0Ev,_ZTv0_n40_N8S21093C2D0Ev)();
extern void ABISELECT(_ZThn512_N8S21093C2D0Ev,_ZThn272_N8S21093C2D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C2__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-512,-272),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C2D1Ev,_ZTv0_n40_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C2D0Ev,_ZTv0_n40_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C2__8S21093C1[] = {
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C99S21093C118S21093C58S21093C3__A1__8S21093C2__8S21093C1[] = {
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C2__8S21093C1[] = {
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C58S21093C3__A3__8S21093C2__8S21093C1[] = {
  ABISELECT(-392,-208),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C3__A3__8S21093C2__8S21093C1[] = {
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZThn16_N8S21093C2D1Ev,_ZThn4_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21093C2D0Ev,_ZThn4_N8S21093C2D0Ev)();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C5__A1__8S21093C2__8S21093C1[] = {
  ABISELECT(496,268),
  ABISELECT(432,228),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21093C2D1Ev,_ZThn4_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21093C2D0Ev,_ZThn4_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn64_N8S21093C2D1Ev,_ZThn24_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21093C2D0Ev,_ZThn24_N8S21093C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C5__A1__8S21093C2__8S21093C1[] = {
  ABISELECT(-80,-32),
  ABISELECT(448,248),
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21093C2D1Ev,_ZThn24_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21093C2D0Ev,_ZThn24_N8S21093C2D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn72_N8S21093C2D1Ev,_ZThn28_N8S21093C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21093C2D0Ev,_ZThn28_N8S21093C2D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C5__A1__8S21093C2__8S21093C1[] = {
  ABISELECT(-88,-36),
  ABISELECT(440,244),
  ABISELECT(-88,-36),
  ABISELECT(-88,-36),
  ABISELECT(-72,-28),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21093C2D1Ev,_ZThn28_N8S21093C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21093C2D0Ev,_ZThn28_N8S21093C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C5__A5__8S21093C2__8S21093C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21093C2[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C3D1Ev();
extern void _ZN8S21093C3D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
extern void _ZN8S21093C33v33Ev();
extern void _ZN8S21093C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C3__8S21093C1[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21093C33v34Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C5D1Ev();
extern void _ZN8S21093C5D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
extern void _ZN8S21093C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21093C53v32Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C68S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C68S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C68S21093C58S21093C3__8S21093C1[] = {
  0,
  0,
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C68S21093C58S21093C3__8S21093C1[] = {
  0,
  0,
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void _ZN9S21093C11D1Ev();
extern void _ZN9S21093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(240,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C11D0Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(232,128),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S21093C12D1Ev,_ZThn128_N9S21093C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S21093C12D0Ev,_ZThn128_N9S21093C12D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-128),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C129S21093C118S21093C58S21093C3__8S21093C1[] = {
  0,
  0,
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C1[] = {
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C1[] = {
  0,
  0,
  ABISELECT(368,196),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__9S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(232,128),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D1Ev,_ZThn4_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21093C11D0Ev,_ZThn4_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21093C11D1Ev,_ZThn132_N9S21093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21093C11D0Ev,_ZThn132_N9S21093C11D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__A1__9S21093C118S21093C58S21093C3__8S21093C1[] = {
  0,
  0,
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A1__9S21093C118S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21093C11[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C58S21093C3__8S21093C1[] = {
  0,
  0,
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C58S21093C3__8S21093C1[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C11__8S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D1Ev,_ZThn20_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C5D0Ev,_ZThn20_N8S21093C5D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C11__8S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(232,128),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D1Ev,_ZThn24_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C5D0Ev,_ZThn24_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S21093C5D1Ev,_ZThn152_N8S21093C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S21093C5D0Ev,_ZThn152_N8S21093C5D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C11__A2__8S21093C58S21093C3__8S21093C1[] = {
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C5[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C3__A3__8S21093C1[] = {
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C3__A3__8S21093C1[] = {
  0,
  0,
  ABISELECT(416,220),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C3__8S21093C1[] = {
  0,
  0,
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C9__8S21093C3__8S21093C1[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C93v23Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
extern void _ZN9S21093C113v26Ev();
extern void _ZN9S21093C113v27Ev();
extern void _ZN9S21093C113v28Ev();
extern void _ZN9S21093C113v29Ev();
extern void _ZN9S21093C113v30Ev();
extern void _ZN9S21093C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21093C3D1Ev,_ZThn20_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21093C3D0Ev,_ZThn20_N8S21093C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21093C118S21093C5__8S21093C3__8S21093C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21093C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C3D1Ev,_ZThn20_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21093C3D0Ev,_ZThn20_N8S21093C3D0Ev),
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21093C3D1Ev,_ZThn24_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S21093C3D0Ev,_ZThn24_N8S21093C3D0Ev)();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C129S21093C118S21093C5__8S21093C3__8S21093C1[] = {
  ABISELECT(-296,-152),
  ABISELECT(232,128),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C3D1Ev,_ZThn24_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21093C3D0Ev,_ZThn24_N8S21093C3D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S21093C3D1Ev,_ZThn152_N8S21093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S21093C3D0Ev,_ZThn152_N8S21093C3D0Ev)() __attribute__((weak));
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C3__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__A2__8S21093C3__8S21093C1[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C79S21093C118S21093C5__A2__8S21093C3__8S21093C1[] = {
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-368,-196),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C7__A3__8S21093C3__8S21093C1[] = {
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-416,-220),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21093C3[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void _ZN8S21093C6D1Ev();
extern void _ZN8S21093C6D0Ev();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__A1__8S21093C1[] = {
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21093C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C78S21093C6__A1__8S21093C1[] = {
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C1[] = {
  0,
  0,
  ABISELECT(528,280),
  (VTBL_ENTRY)&(_ZTI8S21093C7[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__8S21093C6__A1__8S21093C1[] = {
  0,
  0,
  ABISELECT(528,280),
  (VTBL_ENTRY)&(_ZTI8S21093C6[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN9S21093C12D1Ev();
extern void _ZN9S21093C12D0Ev();
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C12__A2__8S21093C1[] = {
  ABISELECT(-568,-300),
  ABISELECT(-40,-20),
  ABISELECT(-568,-300),
  ABISELECT(-568,-300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21093C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev)();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C12__A2__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C12__A2__8S21093C1[] = {
  0,
  0,
  ABISELECT(568,300),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C12__A2__8S21093C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21093C12[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void ABISELECT(_ZTv0_n56_N9S21093C13D1Ev,_ZTv0_n28_N9S21093C13D1Ev)();
extern void _ZN9S21093C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21093C13D0Ev,_ZTv0_n28_N9S21093C13D0Ev)();
extern void _ZN9S21093C13D0Ev() __attribute__((weak));
extern void _ZN9S21093C123v24Ev();
extern void _ZN9S21093C123v25Ev();
extern void _ZN9S21093C133v40Ev();
extern void _ZN9S21093C133v41Ev();
extern void _ZN9S21093C133v42Ev();
extern void _ZN9S21093C133v43Ev();
extern void _ZN9S21093C133v44Ev();
extern void _ZN9S21093C133v45Ev();
extern void _ZN9S21093C133v46Ev();
static  VTBL_ENTRY _tg__ZTV9S21093C13__8S21093C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-568,-300),
  ABISELECT(-40,-20),
  ABISELECT(-568,-300),
  ABISELECT(-568,-300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21093C13D1Ev,_ZTv0_n28_N9S21093C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21093C13D0Ev,_ZTv0_n28_N9S21093C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21093C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21093C123v25Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v40Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v41Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v42Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v43Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v44Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v45Ev,
  (VTBL_ENTRY)&_ZN9S21093C133v46Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C72v9Ev();
extern void _ZN8S21093C73v10Ev();
extern void _ZN8S21093C73v11Ev();
extern void _ZN8S21093C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21093C13D1Ev,_ZTv0_n40_N9S21093C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21093C13D0Ev,_ZTv0_n40_N9S21093C13D0Ev)();
extern void _ZN8S21093C63v21Ev();
extern void _ZN8S21093C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C6__9S21093C13__8S21093C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21093C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C13D1Ev,_ZTv0_n40_N9S21093C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21093C13D0Ev,_ZTv0_n40_N9S21093C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21093C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21093C63v22Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C4__9S21093C13__8S21093C1[] = {
  0,
  0,
  ABISELECT(568,300),
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
};
extern void _ZN8S21093C42v7Ev();
extern void _ZN8S21093C42v8Ev();
extern void _ZN8S21093C83v13Ev();
extern void _ZN8S21093C83v14Ev();
extern void _ZN8S21093C83v15Ev();
extern void _ZN8S21093C83v16Ev();
extern void _ZN8S21093C83v17Ev();
extern void _ZN8S21093C83v18Ev();
extern void _ZN8S21093C83v19Ev();
extern void _ZN8S21093C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21093C88S21093C6__9S21093C13__8S21093C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21093C13[0]),
  (VTBL_ENTRY)&_ZN8S21093C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21093C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21093C83v20Ev,
};
static  VTT_ENTRY vtt_S21093C1[] = {
  {&(_ZTV8S21093C1[11]),  11,372},
  {&(_ZTV8S21093C1[59]),  59,372},
  {&(_ZTV8S21093C1[200]),  200,372},
  {&(_ZTV8S21093C1[11]),  11,372},
  {&(_ZTV8S21093C1[215]),  215,372},
  {&(_ZTV8S21093C1[299]),  299,372},
  {&(_ZTV8S21093C1[229]),  229,372},
  {&(_ZTV8S21093C1[253]),  253,372},
  {&(_ZTV8S21093C1[320]),  320,372},
  {&(_ZTV8S21093C1[332]),  332,372},
  {&(_ZTV8S21093C1[261]),  261,372},
  {&(_ZTV8S21093C1[267]),  267,372},
  {&(_ZTV8S21093C1[275]),  275,372},
  {&(_ZTV8S21093C1[290]),  290,372},
  {&(_ZTV8S21093C1[83]),  83,372},
  {&(_ZTV8S21093C1[96]),  96,372},
  {&(_ZTV8S21093C1[110]),  110,372},
  {&(_ZTV8S21093C1[134]),  134,372},
  {&(_ZTV8S21093C1[142]),  142,372},
  {&(_ZTV8S21093C1[148]),  148,372},
  {&(_ZTV8S21093C1[156]),  156,372},
  {&(_ZTV8S21093C1[359]),  359,372},
  {&(_ZTV8S21093C1[359]),  359,372},
  {&(_tg__ZTV8S21093C2__8S21093C1[6]),  6,23},
  {&(_tg__ZTV8S21093C58S21093C2__A1__8S21093C1[7]),  7,18},
  {&(_tg__ZTV8S21093C68S21093C58S21093C2__A2__8S21093C1[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C68S21093C58S21093C2__A4__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C68S21093C58S21093C2__A4__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C68S21093C58S21093C2__A2__8S21093C1[4]),  4,6},
  {&(_tg__ZTV9S21093C118S21093C58S21093C2__A1__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C58S21093C2__A1__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C58S21093C2__A5__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C79S21093C118S21093C58S21093C2__A5__8S21093C1[4]),  4,6},
  {&(_tg__ZTV9S21093C12__9S21093C118S21093C58S21093C2__A1__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C118S21093C58S21093C2__A1__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C4__A1__9S21093C118S21093C58S21093C2__A1__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C58S21093C2__A1__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C118S21093C58S21093C2__A1__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C58S21093C2__A1__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C9__8S21093C58S21093C2__A1__8S21093C1[3]),  3,4},
  {&(_tg__ZTV9S21093C11__8S21093C58S21093C2__A1__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C11__8S21093C58S21093C2__A1__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C58S21093C2__A1__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C58S21093C2__A1__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C11__A2__8S21093C58S21093C2__A1__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C3__8S21093C2__8S21093C1[34]),  34,47},
  {&(_tg__ZTV8S21093C4__8S21093C2__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C68S21093C58S21093C3__8S21093C2__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C9__8S21093C2__8S21093C1[3]),  3,4},
  {&(_tg__ZTV9S21093C118S21093C58S21093C3__8S21093C2__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C58S21093C3__8S21093C2__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C2__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C2__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C99S21093C118S21093C58S21093C3__A1__8S21093C2__8S21093C1[2]),  2,3},
  {&(_tg__ZTV8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C2__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C88S21093C58S21093C3__A3__8S21093C2__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C78S21093C3__A3__8S21093C2__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C5__A1__8S21093C2__8S21093C1[7]),  7,18},
  {&(_tg__ZTV9S21093C118S21093C5__A1__8S21093C2__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C5__A1__8S21093C2__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C5__A5__8S21093C2__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C3__8S21093C1[7]),  7,20},
  {&(_tg__ZTV8S21093C58S21093C3__8S21093C1[7]),  7,18},
  {&(_tg__ZTV8S21093C68S21093C58S21093C3__8S21093C1[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C68S21093C58S21093C3__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C68S21093C58S21093C3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C68S21093C58S21093C3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV9S21093C118S21093C58S21093C3__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C58S21093C3__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C129S21093C118S21093C58S21093C3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C129S21093C118S21093C58S21093C3__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C79S21093C118S21093C58S21093C3__A2__8S21093C1[4]),  4,6},
  {&(_tg__ZTV9S21093C12__9S21093C118S21093C58S21093C3__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C118S21093C58S21093C3__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C4__A1__9S21093C118S21093C58S21093C3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__A1__9S21093C118S21093C58S21093C3__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C7__A1__9S21093C118S21093C58S21093C3__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C58S21093C3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C9__8S21093C58S21093C3__8S21093C1[3]),  3,4},
  {&(_tg__ZTV9S21093C11__8S21093C58S21093C3__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C11__8S21093C58S21093C3__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C58S21093C3__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C58S21093C3__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C11__A2__8S21093C58S21093C3__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C78S21093C3__A3__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C3__A3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C3__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C9__8S21093C3__8S21093C1[3]),  3,4},
  {&(_tg__ZTV9S21093C118S21093C5__8S21093C3__8S21093C1[4]),  4,22},
  {&(_tg__ZTV9S21093C129S21093C118S21093C5__8S21093C3__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__A1__8S21093C3__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C88S21093C6__A2__8S21093C3__8S21093C1[2]),  2,12},
  {&(_tg__ZTV8S21093C79S21093C118S21093C5__A2__8S21093C3__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C7__A3__8S21093C3__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C6__A1__8S21093C1[5]),  5,15},
  {&(_tg__ZTV8S21093C78S21093C6__A1__8S21093C1[5]),  5,11},
  {&(_tg__ZTV8S21093C4__8S21093C78S21093C6__A1__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C4__8S21093C6__A1__8S21093C1[4]),  4,6},
  {&(_tg__ZTV9S21093C12__A2__8S21093C1[6]),  6,12},
  {&(_tg__ZTV8S21093C6__9S21093C12__A2__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C12__A2__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C12__A2__8S21093C1[2]),  2,12},
  {&(_tg__ZTV9S21093C13__8S21093C1[10]),  10,23},
  {&(_tg__ZTV9S21093C13__8S21093C1[10]),  10,23},
  {&(_tg__ZTV8S21093C6__9S21093C13__8S21093C1[20]),  20,30},
  {&(_tg__ZTV8S21093C4__9S21093C13__8S21093C1[4]),  4,6},
  {&(_tg__ZTV8S21093C88S21093C6__9S21093C13__8S21093C1[2]),  2,12},
};
extern VTBL_ENTRY _ZTI8S21093C1[];
extern  VTBL_ENTRY _ZTV8S21093C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21093C1[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21093C13D0Ev,_ZTv0_n28_N9S21093C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21093C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21093C13D1Ev,_ZTv0_n28_N9S21093C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21093C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C3D0Ev,_ZTv0_n40_N8S21093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C3D0Ev,_ZThn152_N8S21093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C3D1Ev,_ZTv0_n40_N8S21093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C3D1Ev,_ZThn152_N8S21093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C2D0Ev,_ZTv0_n40_N8S21093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21093C2D0Ev,_ZThn272_N8S21093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C2D1Ev,_ZTv0_n40_N8S21093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21093C2D1Ev,_ZThn272_N8S21093C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21093C2D0Ev,_ZTv0_n48_N8S21093C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21093C2D0Ev,_ZThn120_N8S21093C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21093C2D1Ev,_ZTv0_n48_N8S21093C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21093C2D1Ev,_ZThn120_N8S21093C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D0Ev,_ZTv0_n40_N8S21093C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C5D0Ev,_ZThn152_N8S21093C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21093C5D0Ev,_ZThn268_N8S21093C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C5D1Ev,_ZTv0_n40_N8S21093C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21093C5D1Ev,_ZThn152_N8S21093C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21093C5D1Ev,_ZThn268_N8S21093C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D0Ev,_ZTv0_n40_N9S21093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21093C11D0Ev,_ZThn132_N9S21093C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21093C11D0Ev,_ZThn248_N9S21093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C11D1Ev,_ZTv0_n40_N9S21093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21093C11D1Ev,_ZThn132_N9S21093C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21093C11D1Ev,_ZThn248_N9S21093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D0Ev,_ZTv0_n40_N9S21093C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21093C12D0Ev,_ZThn128_N9S21093C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21093C12D0Ev,_ZThn244_N9S21093C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21093C12D1Ev,_ZTv0_n40_N9S21093C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21093C12D1Ev,_ZThn128_N9S21093C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21093C12D1Ev,_ZThn244_N9S21093C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21093C1D0Ev,_ZTv0_n28_N8S21093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S21093C1D0Ev,_ZThn300_N8S21093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21093C1D1Ev,_ZTv0_n28_N8S21093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S21093C1D1Ev,_ZThn300_N8S21093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C1D0Ev,_ZTv0_n40_N8S21093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S21093C1D0Ev,_ZThn280_N8S21093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21093C1D1Ev,_ZTv0_n40_N8S21093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S21093C1D1Ev,_ZThn280_N8S21093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21093C1D0Ev,_ZTv0_n48_N8S21093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21093C1D0Ev,_ZThn128_N8S21093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21093C1D1Ev,_ZTv0_n48_N8S21093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21093C1D1Ev,_ZThn128_N8S21093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21093C1D0Ev,_ZTv0_n68_N8S21093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21093C1D0Ev,_ZThn8_N8S21093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21093C1D1Ev,_ZTv0_n68_N8S21093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21093C1D1Ev,_ZThn8_N8S21093C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21093C1 = {  "S21093C1", // class name
  bases_S21093C1, 39,
  &(vtc_S21093C1[0]), // expected_vtbl_contents
  &(vtt_S21093C1[0]), // expected_vtt_contents
  ABISELECT(592,312), // object size
  NSPAIRA(_ZTI8S21093C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21093C1),372, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21093C1),112, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21094C4  {
  virtual void  v7(); // _ZN8S21094C42v7Ev
  virtual void  v8(); // _ZN8S21094C42v8Ev
  ~S21094C4(); // tgen
  S21094C4(); // tgen
};
//SIG(-1 S21094C4) C1{ v1 v2}


void  S21094C4 ::v7(){vfunc_called(this, "_ZN8S21094C42v7Ev");}
void  S21094C4 ::v8(){vfunc_called(this, "_ZN8S21094C42v8Ev");}
S21094C4 ::~S21094C4(){ note_dtor("S21094C4", this);} // tgen
S21094C4 ::S21094C4(){ note_ctor("S21094C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21094C4C1Ev();
extern void _ZN8S21094C4D1Ev();
Name_Map name_map_S21094C4[] = {
  NSPAIR(_ZN8S21094C4C1Ev),
  NSPAIR(_ZN8S21094C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21094C4[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY vtc_S21094C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C4[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
Class_Descriptor cd_S21094C4 = {  "S21094C4", // class name
  0,0,//no base classes
  &(vtc_S21094C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21094C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21094C4),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  S21094C7  : virtual S21094C4 {
  void *s21094c7f0;
  char s21094c7f1;
  virtual void  v9(); // _ZN8S21094C72v9Ev
  virtual void  v10(); // _ZN8S21094C73v10Ev
  virtual void  v11(); // _ZN8S21094C73v11Ev
  virtual void  v12(); // _ZN8S21094C73v12Ev
  ~S21094C7(); // tgen
  S21094C7(); // tgen
};
//SIG(-1 S21094C7) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S21094C7 ::v9(){vfunc_called(this, "_ZN8S21094C72v9Ev");}
void  S21094C7 ::v10(){vfunc_called(this, "_ZN8S21094C73v10Ev");}
void  S21094C7 ::v11(){vfunc_called(this, "_ZN8S21094C73v11Ev");}
void  S21094C7 ::v12(){vfunc_called(this, "_ZN8S21094C73v12Ev");}
S21094C7 ::~S21094C7(){ note_dtor("S21094C7", this);} // tgen
S21094C7 ::S21094C7(){ note_ctor("S21094C7", this);} // tgen

static void Test_S21094C7()
{
  extern Class_Descriptor cd_S21094C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21094C7, buf);
    S21094C7 *dp, &lv = *(dp=new (buf) S21094C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21094C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21094C7)");
    check_base_class_offset(lv, (S21094C4*), 0, "S21094C7");
    check_field_offset(lv, s21094c7f0, ABISELECT(8,4), "S21094C7.s21094c7f0");
    check_field_offset(lv, s21094c7f1, ABISELECT(16,8), "S21094C7.s21094c7f1");
    test_class_info(&lv, &cd_S21094C7);
    dp->~S21094C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C7(Test_S21094C7, "S21094C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21094C7C1Ev();
extern void _ZN8S21094C7D1Ev();
Name_Map name_map_S21094C7[] = {
  NSPAIR(_ZN8S21094C7C1Ev),
  NSPAIR(_ZN8S21094C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
static Base_Class bases_S21094C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    0, //bcp->offset
    -1, //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 _ZTI8S21094C7[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY vtc_S21094C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S21094C7[];
static  VTT_ENTRY vtt_S21094C7[] = {
  {&(_ZTV8S21094C7[5]),  5,11},
  {&(_ZTV8S21094C7[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
Class_Descriptor cd_S21094C7 = {  "S21094C7", // class name
  bases_S21094C7, 1,
  &(vtc_S21094C7[0]), // expected_vtbl_contents
  &(vtt_S21094C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21094C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21094C7),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21094C7),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  S21094C8  : S21094C4 {
  virtual void  v13(); // _ZN8S21094C83v13Ev
  virtual void  v14(); // _ZN8S21094C83v14Ev
  virtual void  v15(); // _ZN8S21094C83v15Ev
  virtual void  v16(); // _ZN8S21094C83v16Ev
  virtual void  v17(); // _ZN8S21094C83v17Ev
  virtual void  v18(); // _ZN8S21094C83v18Ev
  virtual void  v19(); // _ZN8S21094C83v19Ev
  virtual void  v20(); // _ZN8S21094C83v20Ev
  ~S21094C8(); // tgen
  S21094C8(); // tgen
};
//SIG(-1 S21094C8) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S21094C8 ::v13(){vfunc_called(this, "_ZN8S21094C83v13Ev");}
void  S21094C8 ::v14(){vfunc_called(this, "_ZN8S21094C83v14Ev");}
void  S21094C8 ::v15(){vfunc_called(this, "_ZN8S21094C83v15Ev");}
void  S21094C8 ::v16(){vfunc_called(this, "_ZN8S21094C83v16Ev");}
void  S21094C8 ::v17(){vfunc_called(this, "_ZN8S21094C83v17Ev");}
void  S21094C8 ::v18(){vfunc_called(this, "_ZN8S21094C83v18Ev");}
void  S21094C8 ::v19(){vfunc_called(this, "_ZN8S21094C83v19Ev");}
void  S21094C8 ::v20(){vfunc_called(this, "_ZN8S21094C83v20Ev");}
S21094C8 ::~S21094C8(){ note_dtor("S21094C8", this);} // tgen
S21094C8 ::S21094C8(){ note_ctor("S21094C8", this);} // tgen

static void Test_S21094C8()
{
  extern Class_Descriptor cd_S21094C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21094C8, buf);
    S21094C8 *dp, &lv = *(dp=new (buf) S21094C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21094C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21094C8)");
    check_base_class_offset(lv, (S21094C4*), 0, "S21094C8");
    test_class_info(&lv, &cd_S21094C8);
    dp->~S21094C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C8(Test_S21094C8, "S21094C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21094C8C1Ev();
extern void _ZN8S21094C8D1Ev();
Name_Map name_map_S21094C8[] = {
  NSPAIR(_ZN8S21094C8C1Ev),
  NSPAIR(_ZN8S21094C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
static Base_Class bases_S21094C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21094C8[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C8[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
Class_Descriptor cd_S21094C8 = {  "S21094C8", // class name
  bases_S21094C8, 1,
  &(vtc_S21094C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21094C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21094C8),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  S21094C6  : virtual S21094C4 , S21094C7 , S21094C8 {
  ::S21094C4 s21094c6f0;
  virtual  ~S21094C6(); // _ZN8S21094C6D2Ev
  virtual void  v21(); // _ZN8S21094C63v21Ev
  virtual void  v22(); // _ZN8S21094C63v22Ev
  S21094C6(); // tgen
};
//SIG(-1 S21094C6) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S21094C6 ::~S21094C6(){ note_dtor("S21094C6", this);}
void  S21094C6 ::v21(){vfunc_called(this, "_ZN8S21094C63v21Ev");}
void  S21094C6 ::v22(){vfunc_called(this, "_ZN8S21094C63v22Ev");}
S21094C6 ::S21094C6(){ note_ctor("S21094C6", this);} // tgen

static void Test_S21094C6()
{
  extern Class_Descriptor cd_S21094C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S21094C6, buf);
    S21094C6 *dp, &lv = *(dp=new (buf) S21094C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S21094C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21094C6)");
    /*is_ambiguous_... S21094C6::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*), 0, "S21094C6");
    check_base_class_offset(lv, (S21094C4*)(S21094C7*), 0, "S21094C6");
    check_base_class_offset(lv, (S21094C7*), 0, "S21094C6");
    check_base_class_offset(lv, (S21094C4*)(S21094C8*), ABISELECT(24,12), "S21094C6");
    check_base_class_offset(lv, (S21094C8*), ABISELECT(24,12), "S21094C6");
    check_field_offset(lv, s21094c6f0, ABISELECT(32,16), "S21094C6.s21094c6f0");
    test_class_info(&lv, &cd_S21094C6);
    dp->~S21094C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C6(Test_S21094C6, "S21094C6", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S21094C6C1Ev();
extern void _ZN8S21094C6D2Ev();
Name_Map name_map_S21094C6[] = {
  NSPAIR(_ZN8S21094C6C1Ev),
  NSPAIR(_ZN8S21094C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
static Base_Class bases_S21094C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21094C6[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21094C6[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__8S21094C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
static  VTT_ENTRY vtt_S21094C6[] = {
  {&(_ZTV8S21094C6[5]),  5,27},
  {&(_tg__ZTV8S21094C7__8S21094C6[5]),  5,11},
  {&(_tg__ZTV8S21094C7__8S21094C6[5]),  5,11},
  {&(_ZTV8S21094C6[5]),  5,27},
};
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
Class_Descriptor cd_S21094C6 = {  "S21094C6", // class name
  bases_S21094C6, 4,
  &(vtc_S21094C6[0]), // expected_vtbl_contents
  &(vtt_S21094C6[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S21094C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21094C6),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21094C6),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  S21094C9  {
  ::S7642C12 s21094c9f0;
  virtual void  v23(); // _ZN8S21094C93v23Ev
  ~S21094C9(); // tgen
  S21094C9(); // tgen
};
//SIG(-1 S21094C9) C1{ v1 FU2{ m FD[3]}}


void  S21094C9 ::v23(){vfunc_called(this, "_ZN8S21094C93v23Ev");}
S21094C9 ::~S21094C9(){ note_dtor("S21094C9", this);} // tgen
S21094C9 ::S21094C9(){ note_ctor("S21094C9", this);} // tgen

static void Test_S21094C9()
{
  extern Class_Descriptor cd_S21094C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S21094C9, buf);
    S21094C9 *dp, &lv = *(dp=new (buf) S21094C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21094C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21094C9)");
    check_field_offset(lv, s21094c9f0, ABISELECT(16,4), "S21094C9.s21094c9f0");
    test_class_info(&lv, &cd_S21094C9);
    dp->~S21094C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C9(Test_S21094C9, "S21094C9", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21094C9C1Ev();
extern void _ZN8S21094C9D1Ev();
Name_Map name_map_S21094C9[] = {
  NSPAIR(_ZN8S21094C9C1Ev),
  NSPAIR(_ZN8S21094C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21094C9[];
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY vtc_S21094C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C9[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
Class_Descriptor cd_S21094C9 = {  "S21094C9", // class name
  0,0,//no base classes
  &(vtc_S21094C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21094C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21094C9),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  S21094C12  : virtual S21094C6 {
  virtual  ~S21094C12(); // _ZN9S21094C12D2Ev
  virtual void  v24(); // _ZN9S21094C123v24Ev
  virtual void  v25(); // _ZN9S21094C123v25Ev
  S21094C12(); // tgen
};
//SIG(-1 S21094C12) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S21094C12 ::~S21094C12(){ note_dtor("S21094C12", this);}
void  S21094C12 ::v24(){vfunc_called(this, "_ZN9S21094C123v24Ev");}
void  S21094C12 ::v25(){vfunc_called(this, "_ZN9S21094C123v25Ev");}
S21094C12 ::S21094C12(){ note_ctor("S21094C12", this);} // tgen

static void Test_S21094C12()
{
  extern Class_Descriptor cd_S21094C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S21094C12, buf);
    S21094C12 *dp, &lv = *(dp=new (buf) S21094C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S21094C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21094C12)");
    /*is_ambiguous_... S21094C6::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), 0, "S21094C12");
    check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), 0, "S21094C12");
    check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(8,4), "S21094C12");
    check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(32,16), "S21094C12");
    check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(32,16), "S21094C12");
    check_base_class_offset(lv, (S21094C6*), ABISELECT(8,4), "S21094C12");
    test_class_info(&lv, &cd_S21094C12);
    dp->~S21094C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C12(Test_S21094C12, "S21094C12", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S21094C12C1Ev();
extern void _ZN9S21094C12D2Ev();
Name_Map name_map_S21094C12[] = {
  NSPAIR(_ZN9S21094C12C1Ev),
  NSPAIR(_ZN9S21094C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
static Base_Class bases_S21094C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21094C7,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI9S21094C12[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C12D1Ev,_ZThn4_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn8_N9S21094C12D0Ev,_ZThn4_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV9S21094C12[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__9S21094C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__9S21094C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__9S21094C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
static  VTT_ENTRY vtt_S21094C12[] = {
  {&(_ZTV9S21094C12[6]),  6,54},
  {&(_ZTV9S21094C12[32]),  32,54},
  {&(_ZTV9S21094C12[6]),  6,54},
  {&(_ZTV9S21094C12[44]),  44,54},
  {&(_tg__ZTV8S21094C6__9S21094C12[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__9S21094C12[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__9S21094C12[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__9S21094C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21094C12D0Ev,_ZThn4_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21094C12D1Ev,_ZThn4_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C12 = {  "S21094C12", // class name
  bases_S21094C12, 5,
  &(vtc_S21094C12[0]), // expected_vtbl_contents
  &(vtt_S21094C12[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S21094C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21094C12),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21094C12),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21094C11  : S21094C8 , S21094C12 , S21094C9 , S21094C7 {
  void *s21094c11f0;
  __tsi64 s21094c11f1;
  virtual void  v26(); // _ZN9S21094C113v26Ev
  virtual void  v27(); // _ZN9S21094C113v27Ev
  virtual void  v28(); // _ZN9S21094C113v28Ev
  virtual void  v29(); // _ZN9S21094C113v29Ev
  virtual void  v30(); // _ZN9S21094C113v30Ev
  virtual void  v31(); // _ZN9S21094C113v31Ev
  ~S21094C11(); // tgen
  S21094C11(); // tgen
};
//SIG(-1 S21094C11) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp FL}


void  S21094C11 ::v26(){vfunc_called(this, "_ZN9S21094C113v26Ev");}
void  S21094C11 ::v27(){vfunc_called(this, "_ZN9S21094C113v27Ev");}
void  S21094C11 ::v28(){vfunc_called(this, "_ZN9S21094C113v28Ev");}
void  S21094C11 ::v29(){vfunc_called(this, "_ZN9S21094C113v29Ev");}
void  S21094C11 ::v30(){vfunc_called(this, "_ZN9S21094C113v30Ev");}
void  S21094C11 ::v31(){vfunc_called(this, "_ZN9S21094C113v31Ev");}
S21094C11 ::~S21094C11(){ note_dtor("S21094C11", this);} // tgen
S21094C11 ::S21094C11(){ note_ctor("S21094C11", this);} // tgen

static void Test_S21094C11()
{
  extern Class_Descriptor cd_S21094C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S21094C11, buf);
    S21094C11 *dp, &lv = *(dp=new (buf) S21094C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S21094C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21094C11)");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*), 0, "S21094C11");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*), 0, "S21094C11");
    /*is_ambiguous_... S21094C6::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), ABISELECT(8,4), "S21094C11");
    check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), ABISELECT(8,4), "S21094C11");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*), ABISELECT(8,4), "S21094C11");
    check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(120,72), "S21094C11");
    check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(144,84), "S21094C11");
    check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(144,84), "S21094C11");
    check_base_class_offset(lv, (S21094C6*)(S21094C12*), ABISELECT(120,72), "S21094C11");
    check_base_class_offset(lv, (S21094C12*), ABISELECT(8,4), "S21094C11");
    check_base_class_offset(lv, (S21094C9*), ABISELECT(16,8), "S21094C11");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*), ABISELECT(80,48), "S21094C11");
    check_field_offset(lv, s21094c11f0, ABISELECT(104,60), "S21094C11.s21094c11f0");
    check_field_offset(lv, s21094c11f1, ABISELECT(112,64), "S21094C11.s21094c11f1");
    test_class_info(&lv, &cd_S21094C11);
    dp->~S21094C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C11(Test_S21094C11, "S21094C11", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN9S21094C11C1Ev();
extern void _ZN9S21094C11D1Ev();
Name_Map name_map_S21094C11[] = {
  NSPAIR(_ZN9S21094C11C1Ev),
  NSPAIR(_ZN9S21094C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
static Base_Class bases_S21094C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S21094C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21094C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21094C7,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    5, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(144,84), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(120,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21094C12,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C9,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C7,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21094C11[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S21094C11D1Ev,_ZThn72_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S21094C11D0Ev,_ZThn72_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C11[] = {
  ABISELECT(8,4),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
  0,
  ABISELECT(112,68),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-72),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV9S21094C11[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C11[] = {
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S21094C12D1Ev,_ZThn68_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S21094C12D0Ev,_ZThn68_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C12__9S21094C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C12__9S21094C11[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C7__A1__9S21094C11[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C11[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__9S21094C11[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__9S21094C11[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__9S21094C11[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
static  VTT_ENTRY vtt_S21094C11[] = {
  {&(_ZTV9S21094C11[4]),  4,90},
  {&(_tg__ZTV9S21094C12__9S21094C11[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C12__9S21094C11[20]),  20,30},
  {&(_tg__ZTV9S21094C12__9S21094C11[6]),  6,12},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C12__9S21094C11[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C11[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C7__A1__9S21094C11[4]),  4,6},
  {&(_ZTV9S21094C11[28]),  28,90},
  {&(_ZTV9S21094C11[68]),  68,90},
  {&(_ZTV9S21094C11[28]),  28,90},
  {&(_ZTV9S21094C11[80]),  80,90},
  {&(_ZTV9S21094C11[42]),  42,90},
  {&(_tg__ZTV8S21094C6__9S21094C11[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__9S21094C11[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__9S21094C11[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__9S21094C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21094C12D0Ev,_ZThn68_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21094C12D1Ev,_ZThn68_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21094C11D0Ev,_ZThn72_N9S21094C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21094C11D1Ev,_ZThn72_N9S21094C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C11 = {  "S21094C11", // class name
  bases_S21094C11, 10,
  &(vtc_S21094C11[0]), // expected_vtbl_contents
  &(vtt_S21094C11[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI9S21094C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21094C11),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21094C11),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21094C5  : virtual S21094C4 , S21094C6 , virtual S21094C9 , S21094C11 , S21094C8 {
  virtual  ~S21094C5(); // _ZN8S21094C5D2Ev
  virtual void  v32(); // _ZN8S21094C53v32Ev
  S21094C5(); // tgen
};
//SIG(-1 S21094C5) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp FL} BC5 vd v1}


 S21094C5 ::~S21094C5(){ note_dtor("S21094C5", this);}
void  S21094C5 ::v32(){vfunc_called(this, "_ZN8S21094C53v32Ev");}
S21094C5 ::S21094C5(){ note_ctor("S21094C5", this);} // tgen

static void Test_S21094C5()
{
  extern Class_Descriptor cd_S21094C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,40)];
    init_test(&cd_S21094C5, buf);
    S21094C5 *dp, &lv = *(dp=new (buf) S21094C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S21094C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21094C5)");
    /*is_ambiguous_... S21094C5::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), 0, "S21094C5");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C11*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(24,12), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(24,12), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C6*), 0, "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C9 */ AMB_check_base_class_offset(lv, (S21094C9*), ABISELECT(176,96), "S21094C5");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C11*), ABISELECT(48,20), "S21094C5");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C11*), ABISELECT(48,20), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(240,136), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(264,148), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(264,148), "S21094C5");
    check_base_class_offset(lv, (S21094C6*)(S21094C12*)(S21094C11*), ABISELECT(240,136), "S21094C5");
    check_base_class_offset(lv, (S21094C12*)(S21094C11*), ABISELECT(56,24), "S21094C5");
    check_base_class_offset(lv, (S21094C9*)(S21094C11*), ABISELECT(64,28), "S21094C5");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C11*), ABISELECT(128,68), "S21094C5");
    check_base_class_offset(lv, (S21094C11*), ABISELECT(48,20), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*), ABISELECT(168,92), "S21094C5");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*), ABISELECT(168,92), "S21094C5");
    test_class_info(&lv, &cd_S21094C5);
    dp->~S21094C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C5(Test_S21094C5, "S21094C5", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN8S21094C5C1Ev();
extern void _ZN8S21094C5D2Ev();
Name_Map name_map_S21094C5[] = {
  NSPAIR(_ZN8S21094C5C1Ev),
  NSPAIR(_ZN8S21094C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C11;
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
static Base_Class bases_S21094C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C7,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C6,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C9,    ABISELECT(176,96), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(264,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(264,148), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(240,136), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21094C12,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C11,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(168,92), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S21094C5[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C5D1Ev();
extern void _ZN8S21094C5D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev)();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn240_N8S21094C5D1Ev,_ZThn136_N8S21094C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev)();
extern void ABISELECT(_ZThn240_N8S21094C5D0Ev,_ZThn136_N8S21094C5D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C5[] = {
  ABISELECT(240,136),
  ABISELECT(176,96),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21094C5[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A__8S21094C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__8S21094C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C11__8S21094C5[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C11__8S21094C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn184_N9S21094C12D1Ev,_ZThn112_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn184_N9S21094C12D0Ev,_ZThn112_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C129S21094C11__8S21094C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C129S21094C11__8S21094C5[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C129S21094C11__8S21094C5[] = {
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C11__A2__8S21094C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C79S21094C11__A2__8S21094C5[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C11__8S21094C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21094C11D1Ev,_ZThn116_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21094C11D0Ev,_ZThn116_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C11__8S21094C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__A1__9S21094C11__8S21094C5[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A1__9S21094C11__8S21094C5[] = {
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C11__8S21094C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C5[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__A1__8S21094C5[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C5[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__A1__8S21094C5[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
static  VTT_ENTRY vtt_S21094C5[] = {
  {&(_ZTV8S21094C5[7]),  7,136},
  {&(_tg__ZTV8S21094C6__A__8S21094C5[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__8S21094C5[5]),  5,11},
  {&(_tg__ZTV8S21094C78S21094C6__8S21094C5[5]),  5,11},
  {&(_tg__ZTV8S21094C6__A__8S21094C5[5]),  5,15},
  {&(_tg__ZTV9S21094C11__8S21094C5[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C11__8S21094C5[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C129S21094C11__8S21094C5[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C129S21094C11__8S21094C5[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C129S21094C11__8S21094C5[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C11__A2__8S21094C5[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C79S21094C11__A2__8S21094C5[4]),  4,6},
  {&(_tg__ZTV9S21094C12__9S21094C11__8S21094C5[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C11__8S21094C5[20]),  20,30},
  {&(_tg__ZTV8S21094C4__A1__9S21094C11__8S21094C5[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__A1__9S21094C11__8S21094C5[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C11__8S21094C5[5]),  5,11},
  {&(_ZTV8S21094C5[7]),  7,136},
  {&(_ZTV8S21094C5[93]),  93,136},
  {&(_ZTV8S21094C5[34]),  34,136},
  {&(_ZTV8S21094C5[58]),  58,136},
  {&(_ZTV8S21094C5[114]),  114,136},
  {&(_ZTV8S21094C5[126]),  126,136},
  {&(_ZTV8S21094C5[72]),  72,136},
  {&(_tg__ZTV8S21094C6__A1__8S21094C5[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__A1__8S21094C5[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C5[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__A1__8S21094C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21094C5[];
extern  VTBL_ENTRY _ZTV8S21094C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C5[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21094C11D0Ev,_ZThn116_N9S21094C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21094C11D1Ev,_ZThn116_N9S21094C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21094C12D0Ev,_ZThn112_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21094C12D1Ev,_ZThn112_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21094C5D0Ev,_ZThn136_N8S21094C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21094C5D1Ev,_ZThn136_N8S21094C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C5 = {  "S21094C5", // class name
  bases_S21094C5, 18,
  &(vtc_S21094C5[0]), // expected_vtbl_contents
  &(vtt_S21094C5[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI8S21094C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21094C5),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21094C5),28, //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  S21094C3  : virtual S21094C4 , S21094C5 , S21094C7 {
  void *s21094c3f0;
  int s21094c3f1;
  virtual void  v33(); // _ZN8S21094C33v33Ev
  virtual void  v34(); // _ZN8S21094C33v34Ev
  ~S21094C3(); // tgen
  S21094C3(); // tgen
};
//SIG(-1 S21094C3) C1{ VBC2{ v3 v4} BC3{ VBC2 BC4{ VBC2 BC5{ VBC2 v5 v6 v7 v8 Fp Fc} BC6{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC2} VBC7{ v19 FU8{ m FD[3]}} BC9{ BC6 BC10{ VBC4 vd v20 v21} BC7 BC5 v22 v23 v24 v25 v26 v27 Fp FL} BC6 vd v28} BC5 v1 v2 Fp Fi}


void  S21094C3 ::v33(){vfunc_called(this, "_ZN8S21094C33v33Ev");}
void  S21094C3 ::v34(){vfunc_called(this, "_ZN8S21094C33v34Ev");}
S21094C3 ::~S21094C3(){ note_dtor("S21094C3", this);} // tgen
S21094C3 ::S21094C3(){ note_ctor("S21094C3", this);} // tgen

static void Test_S21094C3()
{
  extern Class_Descriptor cd_S21094C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,45)];
    init_test(&cd_S21094C3, buf);
    S21094C3 *dp, &lv = *(dp=new (buf) S21094C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,176), "sizeof(S21094C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21094C3)");
    /*is_ambiguous_... S21094C3::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*), 0, "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*)(S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*)(S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), 0, "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), 0, "S21094C3");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C11*)(S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*), 0, "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*)(S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*)(S21094C5*), ABISELECT(24,12), "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*)(S21094C5*), ABISELECT(24,12), "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C9 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C5*), ABISELECT(224,116), "S21094C3");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C11*)(S21094C5*), ABISELECT(48,20), "S21094C3");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C11*)(S21094C5*), ABISELECT(48,20), "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(288,156), "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(312,168), "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(312,168), "S21094C3");
    check_base_class_offset(lv, (S21094C6*)(S21094C12*)(S21094C11*)(S21094C5*), ABISELECT(288,156), "S21094C3");
    check_base_class_offset(lv, (S21094C12*)(S21094C11*)(S21094C5*), ABISELECT(56,24), "S21094C3");
    check_base_class_offset(lv, (S21094C9*)(S21094C11*)(S21094C5*), ABISELECT(64,28), "S21094C3");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C11*)(S21094C5*), ABISELECT(128,68), "S21094C3");
    check_base_class_offset(lv, (S21094C11*)(S21094C5*), ABISELECT(48,20), "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C5*), ABISELECT(168,92), "S21094C3");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C5*), ABISELECT(168,92), "S21094C3");
    check_base_class_offset(lv, (S21094C5*), 0, "S21094C3");
    /*is_ambiguous_... S21094C3::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*), ABISELECT(176,96), "S21094C3");
    check_field_offset(lv, s21094c3f0, ABISELECT(200,108), "S21094C3.s21094c3f0");
    check_field_offset(lv, s21094c3f1, ABISELECT(208,112), "S21094C3.s21094c3f1");
    test_class_info(&lv, &cd_S21094C3);
    dp->~S21094C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C3(Test_S21094C3, "S21094C3", ABISELECT(336,176));

#else // __cplusplus

extern void _ZN8S21094C3C1Ev();
extern void _ZN8S21094C3D1Ev();
Name_Map name_map_S21094C3[] = {
  NSPAIR(_ZN8S21094C3C1Ev),
  NSPAIR(_ZN8S21094C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C11;
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C5;
extern VTBL_ENTRY _ZTI8S21094C5[];
extern  VTBL_ENTRY _ZTV8S21094C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C5[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
static Base_Class bases_S21094C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(24,12), //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(224,116), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21094C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(288,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(312,168), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(288,156), //bcp->offset
    107, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21094C12,    ABISELECT(56,24), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(64,28), //bcp->offset
    66, //bcp->virtual_function_table_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_S21094C7,    ABISELECT(128,68), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C11,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(168,92), //bcp->offset
    80, //bcp->virtual_function_table_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_S21094C5,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C7,    ABISELECT(176,96), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21094C3[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C3D1Ev();
extern void _ZN8S21094C3D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C33v33Ev();
extern void _ZN8S21094C33v34Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C3D1Ev,_ZThn20_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C3D0Ev,_ZThn20_N8S21094C3D0Ev)();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C3D1Ev,_ZThn24_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C3D0Ev,_ZThn24_N8S21094C3D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S21094C3D1Ev,_ZThn156_N8S21094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S21094C3D0Ev,_ZThn156_N8S21094C3D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C3[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v34Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C3D1Ev,_ZThn20_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C3D0Ev,_ZThn20_N8S21094C3D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C3D1Ev,_ZThn24_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C3D0Ev,_ZThn24_N8S21094C3D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21094C3[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C5D1Ev();
extern void _ZN8S21094C5D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C5__8S21094C3[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C68S21094C5__8S21094C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C68S21094C5__8S21094C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S21094C12D1Ev,_ZThn132_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S21094C12D0Ev,_ZThn132_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C129S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C129S21094C118S21094C5__8S21094C3[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C5__A2__8S21094C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C79S21094C118S21094C5__A2__8S21094C3[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21094C11D1Ev,_ZThn136_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21094C11D0Ev,_ZThn136_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__A1__9S21094C118S21094C5__8S21094C3[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C118S21094C5__8S21094C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C5__8S21094C3[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C11__8S21094C5__8S21094C3[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C11__8S21094C5__8S21094C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S21094C5D1Ev,_ZThn156_N8S21094C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S21094C5D0Ev,_ZThn156_N8S21094C5D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C5__8S21094C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C5__8S21094C3[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C11__A2__8S21094C5__8S21094C3[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A3__8S21094C3[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C7__A3__8S21094C3[] = {
  0,
  0,
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C3[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__A1__8S21094C3[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C3[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__A1__8S21094C3[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
static  VTT_ENTRY vtt_S21094C3[] = {
  {&(_ZTV8S21094C3[7]),  7,149},
  {&(_tg__ZTV8S21094C5__8S21094C3[7]),  7,18},
  {&(_tg__ZTV8S21094C68S21094C5__8S21094C3[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C68S21094C5__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C78S21094C68S21094C5__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C68S21094C5__8S21094C3[5]),  5,15},
  {&(_tg__ZTV9S21094C118S21094C5__8S21094C3[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C5__8S21094C3[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C129S21094C118S21094C5__8S21094C3[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C129S21094C118S21094C5__8S21094C3[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C5__8S21094C3[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C5__A2__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C79S21094C118S21094C5__A2__8S21094C3[4]),  4,6},
  {&(_tg__ZTV9S21094C12__9S21094C118S21094C5__8S21094C3[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C118S21094C5__8S21094C3[20]),  20,30},
  {&(_tg__ZTV8S21094C4__A1__9S21094C118S21094C5__8S21094C3[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C5__8S21094C3[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C118S21094C5__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C5__8S21094C3[7]),  7,18},
  {&(_tg__ZTV8S21094C9__8S21094C5__8S21094C3[3]),  3,4},
  {&(_tg__ZTV9S21094C11__8S21094C5__8S21094C3[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C11__8S21094C5__8S21094C3[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C5__8S21094C3[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C5__8S21094C3[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C11__A2__8S21094C5__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C7__A3__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C7__A3__8S21094C3[4]),  4,6},
  {&(_ZTV8S21094C3[7]),  7,149},
  {&(_ZTV8S21094C3[106]),  106,149},
  {&(_ZTV8S21094C3[36]),  36,149},
  {&(_ZTV8S21094C3[60]),  60,149},
  {&(_ZTV8S21094C3[127]),  127,149},
  {&(_ZTV8S21094C3[139]),  139,149},
  {&(_ZTV8S21094C3[74]),  74,149},
  {&(_ZTV8S21094C3[97]),  97,149},
  {&(_tg__ZTV8S21094C6__A1__8S21094C3[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__A1__8S21094C3[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C3[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__A1__8S21094C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21094C3[];
extern  VTBL_ENTRY _ZTV8S21094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C3[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C5D0Ev,_ZThn156_N8S21094C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C5D1Ev,_ZThn156_N8S21094C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21094C11D0Ev,_ZThn136_N9S21094C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21094C11D1Ev,_ZThn136_N9S21094C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21094C12D0Ev,_ZThn132_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21094C12D1Ev,_ZThn132_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C3D0Ev,_ZThn156_N8S21094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C3D1Ev,_ZThn156_N8S21094C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C3 = {  "S21094C3", // class name
  bases_S21094C3, 20,
  &(vtc_S21094C3[0]), // expected_vtbl_contents
  &(vtt_S21094C3[0]), // expected_vtt_contents
  ABISELECT(336,176), // object size
  NSPAIRA(_ZTI8S21094C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21094C3),149, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21094C3),39, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21094C2  : virtual S21094C3 , S21094C8 , S21094C5 {
  short s21094c2f0;
  int s21094c2f1[5];
  virtual  ~S21094C2(); // _ZN8S21094C2D2Ev
  virtual void  v35(); // _ZN8S21094C23v35Ev
  virtual void  v36(); // _ZN8S21094C23v36Ev
  virtual void  v37(); // _ZN8S21094C23v37Ev
  virtual void  v38(); // _ZN8S21094C23v38Ev
  virtual void  v39(); // _ZN8S21094C23v39Ev
  S21094C2(); // tgen
};
//SIG(-1 S21094C2) C1{ VBC2{ VBC3{ v6 v7} BC4{ VBC3 BC5{ VBC3 BC6{ VBC3 v8 v9 v10 v11 Fp Fc} BC7{ BC3 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC3} VBC8{ v22 FU9{ m FD[3]}} BC10{ BC7 BC11{ VBC5 vd v23 v24} BC8 BC6 v25 v26 v27 v28 v29 v30 Fp FL} BC7 vd v31} BC6 v32 v33 Fp Fi} BC7 BC4 vd v1 v2 v3 v4 v5 Fs Fi[5]}


 S21094C2 ::~S21094C2(){ note_dtor("S21094C2", this);}
void  S21094C2 ::v35(){vfunc_called(this, "_ZN8S21094C23v35Ev");}
void  S21094C2 ::v36(){vfunc_called(this, "_ZN8S21094C23v36Ev");}
void  S21094C2 ::v37(){vfunc_called(this, "_ZN8S21094C23v37Ev");}
void  S21094C2 ::v38(){vfunc_called(this, "_ZN8S21094C23v38Ev");}
void  S21094C2 ::v39(){vfunc_called(this, "_ZN8S21094C23v39Ev");}
S21094C2 ::S21094C2(){ note_ctor("S21094C2", this);} // tgen

static void Test_S21094C2()
{
  extern Class_Descriptor cd_S21094C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,76)];
    init_test(&cd_S21094C2, buf);
    S21094C2 *dp, &lv = *(dp=new (buf) S21094C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,300), "sizeof(S21094C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21094C2)");
    /*is_ambiguous_... S21094C3::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C3::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C5*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*)(S21094C5*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*)(S21094C5*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C11*)(S21094C5*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(248,136), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(248,136), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C9 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C5*)(S21094C3*), ABISELECT(448,240), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C5*), ABISELECT(448,240), "S21094C2");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(272,144), "S21094C2");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(272,144), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(512,280), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(536,292), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(536,292), "S21094C2");
    check_base_class_offset(lv, (S21094C6*)(S21094C12*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(512,280), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C12*)(S21094C11*)(S21094C5*), ABISELECT(512,280), "S21094C2");
    check_base_class_offset(lv, (S21094C12*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(280,148), "S21094C2");
    check_base_class_offset(lv, (S21094C9*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(288,152), "S21094C2");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(352,192), "S21094C2");
    check_base_class_offset(lv, (S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(272,144), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C5*)(S21094C3*), ABISELECT(392,216), "S21094C2");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C5*)(S21094C3*), ABISELECT(392,216), "S21094C2");
    check_base_class_offset(lv, (S21094C5*)(S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C3::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C3*), ABISELECT(400,220), "S21094C2");
    check_base_class_offset(lv, (S21094C3*), ABISELECT(224,124), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*), 0, "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*), 0, "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*)(S21094C5*), ABISELECT(16,4), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*)(S21094C5*), ABISELECT(40,16), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*)(S21094C5*), ABISELECT(40,16), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C5*), ABISELECT(16,4), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C11*)(S21094C5*), ABISELECT(64,24), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C11*)(S21094C5*), ABISELECT(64,24), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C12*)(S21094C11*)(S21094C5*), ABISELECT(72,28), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C11*)(S21094C5*), ABISELECT(80,32), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C11*)(S21094C5*), ABISELECT(144,72), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C11*)(S21094C5*), ABISELECT(64,24), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C5*), ABISELECT(184,96), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C5*), ABISELECT(184,96), "S21094C2");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C5*), ABISELECT(16,4), "S21094C2");
    check_field_offset(lv, s21094c2f0, ABISELECT(192,100), "S21094C2.s21094c2f0");
    check_field_offset(lv, s21094c2f1, ABISELECT(196,104), "S21094C2.s21094c2f1");
    test_class_info(&lv, &cd_S21094C2);
    dp->~S21094C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C2(Test_S21094C2, "S21094C2", ABISELECT(560,300));

#else // __cplusplus

extern void _ZN8S21094C2C1Ev();
extern void _ZN8S21094C2D2Ev();
Name_Map name_map_S21094C2[] = {
  NSPAIR(_ZN8S21094C2C1Ev),
  NSPAIR(_ZN8S21094C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C11;
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C5;
extern VTBL_ENTRY _ZTI8S21094C5[];
extern  VTBL_ENTRY _ZTV8S21094C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C5[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C3;
extern VTBL_ENTRY _ZTI8S21094C3[];
extern  VTBL_ENTRY _ZTV8S21094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C3[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C11;
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C5;
extern VTBL_ENTRY _ZTI8S21094C5[];
extern  VTBL_ENTRY _ZTV8S21094C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C5[];
static Base_Class bases_S21094C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    ABISELECT(224,124), //bcp->offset
    -1, //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
    1, //immediately_derived
  0, 1},
  {&cd_S21094C7,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(248,136), //bcp->offset
    160, //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(448,240), //bcp->offset
    243, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21094C4,    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
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21094C8,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(512,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(536,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(536,292), //bcp->offset
    277, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(512,280), //bcp->offset
    247, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21094C12,    ABISELECT(280,148), //bcp->offset
    194, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(288,152), //bcp->offset
    206, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(352,192), //bcp->offset
    209, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C11,    ABISELECT(272,144), //bcp->offset
    172, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(392,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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(392,216), //bcp->offset
    220, //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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C5,    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
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(400,220), //bcp->offset
    232, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21094C3,    ABISELECT(224,124), //bcp->offset
    113, //bcp->virtual_function_table_offset
    34, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21094C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21094C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(40,16), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(40,16), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C12,    ABISELECT(72,28), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(80,32), //bcp->offset
    87, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(144,72), //bcp->offset
    90, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C11,    ABISELECT(64,24), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(184,96), //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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21094C5,    ABISELECT(16,4), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21094C2[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C2D1Ev();
extern void _ZN8S21094C2D0Ev();
extern void _ZN8S21094C23v35Ev();
extern void _ZN8S21094C23v36Ev();
extern void _ZN8S21094C23v37Ev();
extern void _ZN8S21094C23v38Ev();
extern void _ZN8S21094C23v39Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZThn16_N8S21094C2D1Ev,_ZThn4_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21094C2D0Ev,_ZThn4_N8S21094C2D0Ev)();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn64_N8S21094C2D1Ev,_ZThn24_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21094C2D0Ev,_ZThn24_N8S21094C2D0Ev)();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn72_N8S21094C2D1Ev,_ZThn28_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21094C2D0Ev,_ZThn28_N8S21094C2D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S21094C2D1Ev,_ZTv0_n48_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21094C2D1Ev,_ZThn124_N8S21094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21094C2D0Ev,_ZTv0_n48_N8S21094C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21094C2D0Ev,_ZThn124_N8S21094C2D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C33v33Ev();
extern void _ZN8S21094C33v34Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZTvn48_n96_N8S21094C2D1Ev,_ZTvn20_n48_N8S21094C2D1Ev)();
extern void ABISELECT(_ZTvn48_n96_N8S21094C2D0Ev,_ZTvn20_n48_N8S21094C2D0Ev)();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZTvn56_n96_N8S21094C2D1Ev,_ZTvn24_n48_N8S21094C2D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N8S21094C2D0Ev,_ZTvn24_n48_N8S21094C2D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C2D1Ev,_ZTv0_n40_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn512_N8S21094C2D1Ev,_ZThn280_N8S21094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C2D0Ev,_ZTv0_n40_N8S21094C2D0Ev)();
extern void ABISELECT(_ZThn512_N8S21094C2D0Ev,_ZThn280_N8S21094C2D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C2[] = {
  ABISELECT(512,280),
  ABISELECT(448,240),
  ABISELECT(224,124),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN8S21094C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v35Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v36Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v37Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v38Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v39Ev,
  ABISELECT(496,276),
  ABISELECT(432,236),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21094C2D1Ev,_ZThn4_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21094C2D0Ev,_ZThn4_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  ABISELECT(-40,-16),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(160,100),
  ABISELECT(448,256),
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21094C2D1Ev,_ZThn24_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21094C2D0Ev,_ZThn24_N8S21094C2D0Ev),
  ABISELECT(152,96),
  ABISELECT(440,252),
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(-72,-28),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21094C2D1Ev,_ZThn28_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21094C2D0Ev,_ZThn28_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-80,-32),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-124),
  0,
  0,
  0,
  0,
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21094C2D1Ev,_ZTv0_n48_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21094C2D0Ev,_ZTv0_n48_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v34Ev,
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21094C2D1Ev,_ZTvn20_n48_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21094C2D0Ev,_ZTvn20_n48_N8S21094C2D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21094C2D1Ev,_ZTvn24_n48_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21094C2D0Ev,_ZTvn24_n48_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(-392,-216),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  0,
  ABISELECT(-448,-240),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-512,-280),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-512,-280),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C2D1Ev,_ZTv0_n40_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C2D0Ev,_ZTv0_n40_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-536,-292),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S21094C2[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C5D1Ev();
extern void _ZN8S21094C5D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C5__A1__8S21094C2[] = {
  ABISELECT(496,276),
  ABISELECT(432,236),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C68S21094C5__A2__8S21094C2[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C68S21094C5__A4__8S21094C2[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C68S21094C5__A4__8S21094C2[] = {
  0,
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C68S21094C5__A2__8S21094C2[] = {
  0,
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(160,100),
  ABISELECT(448,256),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(152,96),
  ABISELECT(440,252),
  ABISELECT(152,96),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn440_N9S21094C12D1Ev,_ZThn252_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn440_N9S21094C12D0Ev,_ZThn252_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C129S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-440,-252),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C129S21094C118S21094C5__A1__8S21094C2[] = {
  0,
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(-464,-264),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C5__A5__8S21094C2[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C79S21094C118S21094C5__A5__8S21094C2[] = {
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(152,96),
  ABISELECT(440,252),
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn448_N9S21094C11D1Ev,_ZThn256_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn448_N9S21094C11D0Ev,_ZThn256_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-448,-256),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__A1__9S21094C118S21094C5__A1__8S21094C2[] = {
  0,
  0,
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(-472,-268),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C118S21094C5__A1__8S21094C2[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C5__A1__8S21094C2[] = {
  0,
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C5__A1__8S21094C2[] = {
  0,
  ABISELECT(-432,-236),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C11__8S21094C5__A1__8S21094C2[] = {
  ABISELECT(160,100),
  ABISELECT(448,256),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C11__8S21094C5__A1__8S21094C2[] = {
  ABISELECT(152,96),
  ABISELECT(440,252),
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S21094C5D1Ev,_ZThn276_N8S21094C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S21094C5D0Ev,_ZThn276_N8S21094C5D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C5__A1__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-496,-276),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-496,-276),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C5__A1__8S21094C2[] = {
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C11__A2__8S21094C5__A1__8S21094C2[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C3D1Ev();
extern void _ZN8S21094C3D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C33v33Ev();
extern void _ZN8S21094C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C3__8S21094C2[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v34Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C5D1Ev();
extern void _ZN8S21094C5D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C68S21094C58S21094C3__8S21094C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C68S21094C58S21094C3__8S21094C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S21094C12D1Ev,_ZThn132_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S21094C12D0Ev,_ZThn132_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C129S21094C118S21094C58S21094C3__8S21094C2[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C2[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21094C11D1Ev,_ZThn136_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21094C11D0Ev,_ZThn136_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__A1__9S21094C118S21094C58S21094C3__8S21094C2[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C118S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C58S21094C3__8S21094C2[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C11__8S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C11__8S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S21094C5D1Ev,_ZThn156_N8S21094C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S21094C5D0Ev,_ZThn156_N8S21094C5D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C11__A2__8S21094C58S21094C3__8S21094C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C3__A3__8S21094C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C3__A3__8S21094C2[] = {
  0,
  0,
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C3__8S21094C2[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C3D1Ev,_ZThn20_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C3D0Ev,_ZThn20_N8S21094C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C5__8S21094C3__8S21094C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C3D1Ev,_ZThn20_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C3D0Ev,_ZThn20_N8S21094C3D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C3D1Ev,_ZThn24_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C3D0Ev,_ZThn24_N8S21094C3D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C5__8S21094C3__8S21094C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C3D1Ev,_ZThn24_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C3D0Ev,_ZThn24_N8S21094C3D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S21094C3D1Ev,_ZThn156_N8S21094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S21094C3D0Ev,_ZThn156_N8S21094C3D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C3__8S21094C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C3__8S21094C2[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C5__A2__8S21094C3__8S21094C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A3__8S21094C3__8S21094C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C2[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__A1__8S21094C2[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C2[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__A1__8S21094C2[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
static  VTT_ENTRY vtt_S21094C2[] = {
  {&(_ZTV8S21094C2[6]),  6,289},
  {&(_tg__ZTV8S21094C5__A1__8S21094C2[7]),  7,18},
  {&(_tg__ZTV8S21094C68S21094C5__A2__8S21094C2[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C68S21094C5__A4__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C68S21094C5__A4__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C68S21094C5__A2__8S21094C2[4]),  4,6},
  {&(_tg__ZTV9S21094C118S21094C5__A1__8S21094C2[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C5__A1__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C129S21094C118S21094C5__A1__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C129S21094C118S21094C5__A1__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C5__A1__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C5__A5__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C79S21094C118S21094C5__A5__8S21094C2[4]),  4,6},
  {&(_tg__ZTV9S21094C12__9S21094C118S21094C5__A1__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C118S21094C5__A1__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C4__A1__9S21094C118S21094C5__A1__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C5__A1__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C118S21094C5__A1__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C5__A1__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C9__8S21094C5__A1__8S21094C2[3]),  3,4},
  {&(_tg__ZTV9S21094C11__8S21094C5__A1__8S21094C2[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C11__8S21094C5__A1__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C5__A1__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C5__A1__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C11__A2__8S21094C5__A1__8S21094C2[5]),  5,11},
  {&(_ZTV8S21094C2[147]),  147,289},
  {&(_ZTV8S21094C2[147]),  147,289},
  {&(_ZTV8S21094C2[162]),  162,289},
  {&(_ZTV8S21094C2[246]),  246,289},
  {&(_ZTV8S21094C2[176]),  176,289},
  {&(_ZTV8S21094C2[200]),  200,289},
  {&(_ZTV8S21094C2[267]),  267,289},
  {&(_ZTV8S21094C2[279]),  279,289},
  {&(_ZTV8S21094C2[208]),  208,289},
  {&(_ZTV8S21094C2[214]),  214,289},
  {&(_ZTV8S21094C2[222]),  222,289},
  {&(_ZTV8S21094C2[237]),  237,289},
  {&(_ZTV8S21094C2[30]),  30,289},
  {&(_ZTV8S21094C2[57]),  57,289},
  {&(_ZTV8S21094C2[81]),  81,289},
  {&(_ZTV8S21094C2[95]),  95,289},
  {&(_tg__ZTV8S21094C3__8S21094C2[7]),  7,20},
  {&(_tg__ZTV8S21094C58S21094C3__8S21094C2[7]),  7,18},
  {&(_tg__ZTV8S21094C68S21094C58S21094C3__8S21094C2[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C68S21094C58S21094C3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C78S21094C68S21094C58S21094C3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C68S21094C58S21094C3__8S21094C2[5]),  5,15},
  {&(_tg__ZTV9S21094C118S21094C58S21094C3__8S21094C2[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C58S21094C3__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C129S21094C118S21094C58S21094C3__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C2[4]),  4,6},
  {&(_tg__ZTV9S21094C12__9S21094C118S21094C58S21094C3__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C118S21094C58S21094C3__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C4__A1__9S21094C118S21094C58S21094C3__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C58S21094C3__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C118S21094C58S21094C3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C58S21094C3__8S21094C2[7]),  7,18},
  {&(_tg__ZTV8S21094C9__8S21094C58S21094C3__8S21094C2[3]),  3,4},
  {&(_tg__ZTV9S21094C11__8S21094C58S21094C3__8S21094C2[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C11__8S21094C58S21094C3__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C58S21094C3__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C58S21094C3__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C11__A2__8S21094C58S21094C3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C78S21094C3__A3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C3__A3__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C3__8S21094C2[7]),  7,20},
  {&(_tg__ZTV8S21094C9__8S21094C3__8S21094C2[3]),  3,4},
  {&(_tg__ZTV9S21094C118S21094C5__8S21094C3__8S21094C2[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C5__8S21094C3__8S21094C2[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C3__8S21094C2[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C3__8S21094C2[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C5__A2__8S21094C3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C7__A3__8S21094C3__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C6__A1__8S21094C2[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__A1__8S21094C2[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C2[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__A1__8S21094C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21094C2[];
extern  VTBL_ENTRY _ZTV8S21094C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C2[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C3D0Ev,_ZThn156_N8S21094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C3D1Ev,_ZThn156_N8S21094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C5D0Ev,_ZThn156_N8S21094C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21094C5D0Ev,_ZThn276_N8S21094C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C5D1Ev,_ZThn156_N8S21094C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21094C5D1Ev,_ZThn276_N8S21094C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21094C11D0Ev,_ZThn136_N9S21094C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21094C11D0Ev,_ZThn256_N9S21094C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21094C11D1Ev,_ZThn136_N9S21094C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21094C11D1Ev,_ZThn256_N9S21094C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21094C12D0Ev,_ZThn132_N9S21094C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21094C12D0Ev,_ZThn252_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21094C12D1Ev,_ZThn132_N9S21094C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21094C12D1Ev,_ZThn252_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C2D0Ev,_ZTv0_n40_N8S21094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21094C2D0Ev,_ZThn280_N8S21094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C2D1Ev,_ZTv0_n40_N8S21094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21094C2D1Ev,_ZThn280_N8S21094C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21094C2D0Ev,_ZTv0_n48_N8S21094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21094C2D0Ev,_ZThn124_N8S21094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21094C2D1Ev,_ZTv0_n48_N8S21094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21094C2D1Ev,_ZThn124_N8S21094C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C2 = {  "S21094C2", // class name
  bases_S21094C2, 36,
  &(vtc_S21094C2[0]), // expected_vtbl_contents
  &(vtt_S21094C2[0]), // expected_vtt_contents
  ABISELECT(560,300), // object size
  NSPAIRA(_ZTI8S21094C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21094C2),289, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21094C2),80, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21094C13  : virtual S21094C12 {
  __tsi64 s21094c13f0:40;
  virtual  ~S21094C13(); // _ZN9S21094C13D2Ev
  virtual void  v40(); // _ZN9S21094C133v40Ev
  virtual void  v41(); // _ZN9S21094C133v41Ev
  virtual void  v42(); // _ZN9S21094C133v42Ev
  virtual void  v43(); // _ZN9S21094C133v43Ev
  virtual void  v44(); // _ZN9S21094C133v44Ev
  virtual void  v45(); // _ZN9S21094C133v45Ev
  virtual void  v46(); // _ZN9S21094C133v46Ev
  S21094C13(); // tgen
};
//SIG(-1 S21094C13) C1{ VBC2{ VBC3{ VBC4{ v8 v9} BC5{ VBC4 v10 v11 v12 v13 Fp Fc} BC6{ BC4 v14 v15 v16 v17 v18 v19 v20 v21} vd v22 v23 FC4} vd v24 v25} vd v1 v2 v3 v4 v5 v6 v7 FL:40}


 S21094C13 ::~S21094C13(){ note_dtor("S21094C13", this);}
void  S21094C13 ::v40(){vfunc_called(this, "_ZN9S21094C133v40Ev");}
void  S21094C13 ::v41(){vfunc_called(this, "_ZN9S21094C133v41Ev");}
void  S21094C13 ::v42(){vfunc_called(this, "_ZN9S21094C133v42Ev");}
void  S21094C13 ::v43(){vfunc_called(this, "_ZN9S21094C133v43Ev");}
void  S21094C13 ::v44(){vfunc_called(this, "_ZN9S21094C133v44Ev");}
void  S21094C13 ::v45(){vfunc_called(this, "_ZN9S21094C133v45Ev");}
void  S21094C13 ::v46(){vfunc_called(this, "_ZN9S21094C133v46Ev");}
S21094C13 ::S21094C13(){ note_ctor("S21094C13", this);} // tgen

static void Test_S21094C13()
{
  extern Class_Descriptor cd_S21094C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21094C13, buf);
    S21094C13 *dp, &lv = *(dp=new (buf) S21094C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21094C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21094C13)");
    /*is_ambiguous_... S21094C6::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), 0, "S21094C13");
    check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), 0, "S21094C13");
    check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(16,12), "S21094C13");
    check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(40,24), "S21094C13");
    check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(40,24), "S21094C13");
    check_base_class_offset(lv, (S21094C6*)(S21094C12*), ABISELECT(16,12), "S21094C13");
    check_base_class_offset(lv, (S21094C12*), 0, "S21094C13");
    set_bf_and_test(lv, s21094c13f0, ABISELECT(8,4), 0, 40, 1, "S21094C13");
    set_bf_and_test(lv, s21094c13f0, ABISELECT(8,4), 0, 40, hide_sll(1LL<<39), "S21094C13");
    test_class_info(&lv, &cd_S21094C13);
    dp->~S21094C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C13(Test_S21094C13, "S21094C13", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S21094C13C1Ev();
extern void _ZN9S21094C13D2Ev();
Name_Map name_map_S21094C13[] = {
  NSPAIR(_ZN9S21094C13C1Ev),
  NSPAIR(_ZN9S21094C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
static Base_Class bases_S21094C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21094C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(40,24), //bcp->offset
    53, //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_S21094C6,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21094C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21094C13[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C13D1Ev();
extern void _ZN9S21094C13D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN9S21094C133v40Ev();
extern void _ZN9S21094C133v41Ev();
extern void _ZN9S21094C133v42Ev();
extern void _ZN9S21094C133v43Ev();
extern void _ZN9S21094C133v44Ev();
extern void _ZN9S21094C133v45Ev();
extern void _ZN9S21094C133v46Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C13D1Ev,_ZTv0_n40_N9S21094C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S21094C13D1Ev,_ZThn12_N9S21094C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C13D0Ev,_ZTv0_n40_N9S21094C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S21094C13D0Ev,_ZThn12_N9S21094C13D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY vtc_S21094C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C13D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v40Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v41Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v42Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v43Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v44Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v45Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v46Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C13D1Ev,_ZTv0_n40_N9S21094C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C13D0Ev,_ZTv0_n40_N9S21094C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern VTBL_ENTRY _ZTV9S21094C13[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C13[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S21094C12D1Ev,_ZThn12_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S21094C12D0Ev,_ZThn12_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C12__9S21094C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C12__9S21094C13[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__9S21094C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__9S21094C13[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__9S21094C13[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
static  VTT_ENTRY vtt_S21094C13[] = {
  {&(_ZTV9S21094C13[10]),  10,65},
  {&(_ZTV9S21094C13[10]),  10,65},
  {&(_ZTV9S21094C13[43]),  43,65},
  {&(_ZTV9S21094C13[10]),  10,65},
  {&(_ZTV9S21094C13[55]),  55,65},
  {&(_tg__ZTV9S21094C12__9S21094C13[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C12__9S21094C13[20]),  20,30},
  {&(_tg__ZTV9S21094C12__9S21094C13[6]),  6,12},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C12__9S21094C13[2]),  2,12},
  {&(_tg__ZTV8S21094C6__9S21094C13[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__9S21094C13[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__9S21094C13[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__9S21094C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21094C13[];
extern  VTBL_ENTRY _ZTV9S21094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C13[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21094C12D0Ev,_ZThn12_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21094C12D1Ev,_ZThn12_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C13D0Ev,_ZTv0_n40_N9S21094C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21094C13D0Ev,_ZThn12_N9S21094C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C13D1Ev,_ZTv0_n40_N9S21094C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21094C13D1Ev,_ZThn12_N9S21094C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C13 = {  "S21094C13", // class name
  bases_S21094C13, 6,
  &(vtc_S21094C13[0]), // expected_vtbl_contents
  &(vtt_S21094C13[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S21094C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21094C13),65, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21094C13),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21094C1  : virtual S21094C2 , virtual S21094C12 , virtual S21094C13 {
  __tsi64 s21094c1f0;
  virtual  ~S21094C1(); // _ZN8S21094C1D2Ev
  virtual void  v1(); // _ZN8S21094C12v1Ev
  virtual void  v2(); // _ZN8S21094C12v2Ev
  virtual void  v3(); // _ZN8S21094C12v3Ev
  virtual void  v4(); // _ZN8S21094C12v4Ev
  virtual void  v5(); // _ZN8S21094C12v5Ev
  virtual void  v6(); // _ZN8S21094C12v6Ev
  S21094C1(); // tgen
};
//SIG(1 S21094C1) C1{ VBC2{ VBC3{ VBC4{ v7 v8} BC5{ VBC4 BC6{ VBC4 BC7{ VBC4 v9 v10 v11 v12 Fp Fc} BC8{ BC4 v13 v14 v15 v16 v17 v18 v19 v20} vd v21 v22 FC4} VBC9{ v23 FU10{ m FD[3]}} BC11{ BC8 BC12{ VBC6 vd v24 v25} BC9 BC7 v26 v27 v28 v29 v30 v31 Fp FL} BC8 vd v32} BC7 v33 v34 Fp Fi} BC8 BC5 vd v35 v36 v37 v38 v39 Fs Fi[5]} VBC12 VBC13{ VBC12 vd v40 v41 v42 v43 v44 v45 v46 FL:40} vd v1 v2 v3 v4 v5 v6 FL}


 S21094C1 ::~S21094C1(){ note_dtor("S21094C1", this);}
void  S21094C1 ::v1(){vfunc_called(this, "_ZN8S21094C12v1Ev");}
void  S21094C1 ::v2(){vfunc_called(this, "_ZN8S21094C12v2Ev");}
void  S21094C1 ::v3(){vfunc_called(this, "_ZN8S21094C12v3Ev");}
void  S21094C1 ::v4(){vfunc_called(this, "_ZN8S21094C12v4Ev");}
void  S21094C1 ::v5(){vfunc_called(this, "_ZN8S21094C12v5Ev");}
void  S21094C1 ::v6(){vfunc_called(this, "_ZN8S21094C12v6Ev");}
S21094C1 ::S21094C1(){ note_ctor("S21094C1", this);} // tgen

static void Test_S21094C1()
{
  extern Class_Descriptor cd_S21094C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,82)];
    init_test(&cd_S21094C1, buf);
    S21094C1 *dp, &lv = *(dp=new (buf) S21094C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,324), "sizeof(S21094C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21094C1)");
    /*is_ambiguous_... S21094C3::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C3*), 0, "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C4 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C5*)(S21094C3*), 0, "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*)(S21094C5*)(S21094C3*), 0, "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*)(S21094C5*)(S21094C3*), 0, "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*), 0, "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*), 0, "S21094C1");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C11*)(S21094C5*)(S21094C3*), 0, "S21094C1");
    /*is_ambiguous_... S21094C3::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C3*), 0, "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C5*)(S21094C2*), 0, "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C6*)(S21094C5*)(S21094C2*), 0, "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C6*)(S21094C5*)(S21094C2*), 0, "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C7*)(S21094C11*)(S21094C5*)(S21094C2*), 0, "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(240,136), "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(264,148), "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(264,148), "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C5*)(S21094C3*), ABISELECT(240,136), "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C9 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C5*)(S21094C3*), ABISELECT(464,252), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C5*)(S21094C2*), ABISELECT(464,252), "S21094C1");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(288,156), "S21094C1");
    /*is_ambiguous_... S21094C11::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(288,156), "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*), ABISELECT(528,292), "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*), ABISELECT(552,304), "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C6 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*), ABISELECT(552,304), "S21094C1");
    check_base_class_offset(lv, (S21094C6*)(S21094C12*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(528,292), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C12*)(S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(528,292), "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C12 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C12*), ABISELECT(528,292), "S21094C1");
    check_base_class_offset(lv, (S21094C12*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(296,160), "S21094C1");
    check_base_class_offset(lv, (S21094C9*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(304,164), "S21094C1");
    /*is_ambiguous_... S21094C11::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(368,204), "S21094C1");
    check_base_class_offset(lv, (S21094C11*)(S21094C5*)(S21094C3*), ABISELECT(288,156), "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C5*)(S21094C3*), ABISELECT(408,228), "S21094C1");
    /*is_ambiguous_... S21094C5::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C5*)(S21094C3*), ABISELECT(408,228), "S21094C1");
    check_base_class_offset(lv, (S21094C5*)(S21094C3*), ABISELECT(240,136), "S21094C1");
    /*is_ambiguous_... S21094C3::S21094C7 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C3*), ABISELECT(416,232), "S21094C1");
    check_base_class_offset(lv, (S21094C3*)(S21094C2*), ABISELECT(240,136), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C2*), ABISELECT(16,12), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C8 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C2*), ABISELECT(16,12), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C6*)(S21094C5*)(S21094C2*), ABISELECT(32,16), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C6*)(S21094C5*)(S21094C2*), ABISELECT(56,28), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C6*)(S21094C5*)(S21094C2*), ABISELECT(56,28), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C6*)(S21094C5*)(S21094C2*), ABISELECT(32,16), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(80,36), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(80,36), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C12*)(S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(88,40), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C9*)(S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(96,44), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C7*)(S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(160,84), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C11*)(S21094C5*)(S21094C2*), ABISELECT(80,36), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C4*)(S21094C8*)(S21094C5*)(S21094C2*), ABISELECT(200,108), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C8*)(S21094C5*)(S21094C2*), ABISELECT(200,108), "S21094C1");
    /*is_ambiguous_... S21094C2::S21094C5 */ AMB_check_base_class_offset(lv, (S21094C5*)(S21094C2*), ABISELECT(32,16), "S21094C1");
    check_base_class_offset(lv, (S21094C2*), ABISELECT(16,12), "S21094C1");
    /*is_ambiguous_... S21094C1::S21094C12 */ AMB_check_base_class_offset(lv, (S21094C12*), ABISELECT(568,312), "S21094C1");
    check_base_class_offset(lv, (S21094C12*)(S21094C13*), ABISELECT(568,312), "S21094C1");
    check_base_class_offset(lv, (S21094C13*), ABISELECT(568,312), "S21094C1");
    check_field_offset(lv, s21094c1f0, ABISELECT(8,4), "S21094C1.s21094c1f0");
    test_class_info(&lv, &cd_S21094C1);
    dp->~S21094C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21094C1(Test_S21094C1, "S21094C1", ABISELECT(592,324));

#else // __cplusplus

extern void _ZN8S21094C1C1Ev();
extern void _ZN8S21094C1D2Ev();
Name_Map name_map_S21094C1[] = {
  NSPAIR(_ZN8S21094C1C1Ev),
  NSPAIR(_ZN8S21094C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C11;
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C5;
extern VTBL_ENTRY _ZTI8S21094C5[];
extern  VTBL_ENTRY _ZTV8S21094C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C5[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C3;
extern VTBL_ENTRY _ZTI8S21094C3[];
extern  VTBL_ENTRY _ZTV8S21094C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C3[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C6;
extern VTBL_ENTRY _ZTI8S21094C6[];
extern  VTBL_ENTRY _ZTV8S21094C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C6[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C9;
extern VTBL_ENTRY _ZTI8S21094C9[];
extern  VTBL_ENTRY _ZTV8S21094C9[];
extern Class_Descriptor cd_S21094C7;
extern VTBL_ENTRY _ZTI8S21094C7[];
extern  VTBL_ENTRY _ZTV8S21094C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C7[];
extern Class_Descriptor cd_S21094C11;
extern VTBL_ENTRY _ZTI9S21094C11[];
extern  VTBL_ENTRY _ZTV9S21094C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C11[];
extern Class_Descriptor cd_S21094C4;
extern VTBL_ENTRY _ZTI8S21094C4[];
extern  VTBL_ENTRY _ZTV8S21094C4[];
extern Class_Descriptor cd_S21094C8;
extern VTBL_ENTRY _ZTI8S21094C8[];
extern  VTBL_ENTRY _ZTV8S21094C8[];
extern Class_Descriptor cd_S21094C5;
extern VTBL_ENTRY _ZTI8S21094C5[];
extern  VTBL_ENTRY _ZTV8S21094C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C5[];
extern Class_Descriptor cd_S21094C2;
extern VTBL_ENTRY _ZTI8S21094C2[];
extern  VTBL_ENTRY _ZTV8S21094C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C2[];
extern Class_Descriptor cd_S21094C12;
extern VTBL_ENTRY _ZTI9S21094C12[];
extern  VTBL_ENTRY _ZTV9S21094C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C12[];
extern Class_Descriptor cd_S21094C13;
extern VTBL_ENTRY _ZTI9S21094C13[];
extern  VTBL_ENTRY _ZTV9S21094C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21094C13[];
static Base_Class bases_S21094C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21094C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21094C7,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(264,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(264,148), //bcp->offset
    213, //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(464,252), //bcp->offset
    296, //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
    18, //immediately_derived
  0, 1},
  {&cd_S21094C4,    ABISELECT(288,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(288,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(528,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(552,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(552,304), //bcp->offset
    330, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(528,292), //bcp->offset
    300, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21094C12,    ABISELECT(296,160), //bcp->offset
    247, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(304,164), //bcp->offset
    259, //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
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(368,204), //bcp->offset
    262, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21094C11,    ABISELECT(288,156), //bcp->offset
    225, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(408,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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(408,228), //bcp->offset
    273, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21094C5,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(416,232), //bcp->offset
    285, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21094C3,    ABISELECT(240,136), //bcp->offset
    166, //bcp->virtual_function_table_offset
    34, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S21094C4,    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
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21094C8,    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
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(56,28), //bcp->offset
    94, //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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21094C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21094C4,    ABISELECT(80,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
    28, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(80,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
    29, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C12,    ABISELECT(88,40), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C9,    ABISELECT(96,44), //bcp->offset
    140, //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
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C7,    ABISELECT(160,84), //bcp->offset
    143, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21094C11,    ABISELECT(80,36), //bcp->offset
    106, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21094C4,    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
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21094C8,    ABISELECT(200,108), //bcp->offset
    154, //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
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21094C5,    ABISELECT(32,16), //bcp->offset
    76, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21094C2,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    38, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C12,    ABISELECT(568,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21094C13,    ABISELECT(568,312), //bcp->offset
    342, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21094C1[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C1D1Ev();
extern void _ZN8S21094C1D0Ev();
extern void _ZN8S21094C12v1Ev();
extern void _ZN8S21094C12v2Ev();
extern void _ZN8S21094C12v3Ev();
extern void _ZN8S21094C12v4Ev();
extern void _ZN8S21094C12v5Ev();
extern void _ZN8S21094C12v6Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void ABISELECT(_ZTv0_n136_N8S21094C1D1Ev,_ZTv0_n68_N8S21094C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21094C1D1Ev,_ZThn12_N8S21094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S21094C1D0Ev,_ZTv0_n68_N8S21094C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21094C1D0Ev,_ZThn12_N8S21094C1D0Ev)() __attribute__((weak));
extern void _ZN8S21094C23v35Ev();
extern void _ZN8S21094C23v36Ev();
extern void _ZN8S21094C23v37Ev();
extern void _ZN8S21094C23v38Ev();
extern void _ZN8S21094C23v39Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTvn16_n136_N8S21094C1D1Ev,_ZTvn4_n68_N8S21094C1D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N8S21094C1D0Ev,_ZTvn4_n68_N8S21094C1D0Ev)();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZTvn64_n136_N8S21094C1D1Ev,_ZTvn24_n68_N8S21094C1D1Ev)();
extern void ABISELECT(_ZTvn64_n136_N8S21094C1D0Ev,_ZTvn24_n68_N8S21094C1D0Ev)();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZTvn72_n136_N8S21094C1D1Ev,_ZTvn28_n68_N8S21094C1D1Ev)();
extern void ABISELECT(_ZTvn72_n136_N8S21094C1D0Ev,_ZTvn28_n68_N8S21094C1D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S21094C1D1Ev,_ZTv0_n48_N8S21094C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S21094C1D1Ev,_ZThn136_N8S21094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21094C1D0Ev,_ZTv0_n48_N8S21094C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S21094C1D0Ev,_ZThn136_N8S21094C1D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C33v33Ev();
extern void _ZN8S21094C33v34Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZTvn48_n96_N8S21094C1D1Ev,_ZTvn20_n48_N8S21094C1D1Ev)();
extern void ABISELECT(_ZTvn48_n96_N8S21094C1D0Ev,_ZTvn20_n48_N8S21094C1D0Ev)();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZTvn56_n96_N8S21094C1D1Ev,_ZTvn24_n48_N8S21094C1D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N8S21094C1D0Ev,_ZTvn24_n48_N8S21094C1D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C93v23Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C1D1Ev,_ZTv0_n40_N8S21094C1D1Ev)();
extern void ABISELECT(_ZThn528_N8S21094C1D1Ev,_ZThn292_N8S21094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C1D0Ev,_ZTv0_n40_N8S21094C1D0Ev)();
extern void ABISELECT(_ZThn528_N8S21094C1D0Ev,_ZThn292_N8S21094C1D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZTv0_n56_N8S21094C1D1Ev,_ZTv0_n28_N8S21094C1D1Ev)();
extern void ABISELECT(_ZThn568_N8S21094C1D1Ev,_ZThn312_N8S21094C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21094C1D0Ev,_ZTv0_n28_N8S21094C1D0Ev)();
extern void ABISELECT(_ZThn568_N8S21094C1D0Ev,_ZThn312_N8S21094C1D0Ev)() __attribute__((weak));
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN9S21094C133v40Ev();
extern void _ZN9S21094C133v41Ev();
extern void _ZN9S21094C133v42Ev();
extern void _ZN9S21094C133v43Ev();
extern void _ZN9S21094C133v44Ev();
extern void _ZN9S21094C133v45Ev();
extern void _ZN9S21094C133v46Ev();
static  VTBL_ENTRY vtc_S21094C1[] = {
  ABISELECT(568,312),
  ABISELECT(568,312),
  ABISELECT(528,292),
  ABISELECT(464,252),
  0,
  ABISELECT(240,136),
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21094C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21094C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21094C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21094C12v5Ev,
  (VTBL_ENTRY)&_ZN8S21094C12v6Ev,
  ABISELECT(80,32),
  ABISELECT(72,28),
  ABISELECT(72,28),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(64,24),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(512,280),
  ABISELECT(448,240),
  ABISELECT(-16,-12),
  ABISELECT(224,124),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21094C1D1Ev,_ZTv0_n68_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21094C1D0Ev,_ZTv0_n68_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C23v35Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v36Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v37Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v38Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v39Ev,
  ABISELECT(496,276),
  ABISELECT(432,236),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S21094C1D1Ev,_ZTvn4_n68_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S21094C1D0Ev,_ZTvn4_n68_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-80,-36),
  ABISELECT(448,256),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n136_N8S21094C1D1Ev,_ZTvn24_n68_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n136_N8S21094C1D0Ev,_ZTvn24_n68_N8S21094C1D0Ev),
  ABISELECT(-88,-40),
  ABISELECT(440,252),
  ABISELECT(-88,-40),
  ABISELECT(-88,-40),
  ABISELECT(-88,-40),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n136_N8S21094C1D1Ev,_ZTvn28_n68_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n136_N8S21094C1D0Ev,_ZTvn28_n68_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21094C1D1Ev,_ZTv0_n48_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21094C1D0Ev,_ZTv0_n48_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v34Ev,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-288,-156),
  ABISELECT(240,136),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21094C1D1Ev,_ZTvn20_n48_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21094C1D0Ev,_ZTvn20_n48_N8S21094C1D0Ev),
  ABISELECT(-296,-160),
  ABISELECT(232,132),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21094C1D1Ev,_ZTvn24_n48_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21094C1D0Ev,_ZTvn24_n48_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  ABISELECT(-408,-228),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  0,
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-528,-292),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C1D1Ev,_ZTv0_n40_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C1D0Ev,_ZTv0_n40_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  ABISELECT(-552,-304),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-568,-312),
  ABISELECT(-568,-312),
  ABISELECT(-40,-20),
  ABISELECT(-568,-312),
  ABISELECT(-568,-312),
  ABISELECT(-568,-312),
  (VTBL_ENTRY)&(_ZTI8S21094C1[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21094C1D1Ev,_ZTv0_n28_N8S21094C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21094C1D0Ev,_ZTv0_n28_N8S21094C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v40Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v41Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v42Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v43Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v44Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v45Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v46Ev,
};
extern VTBL_ENTRY _ZTV8S21094C1[];
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN8S21094C2D1Ev();
extern void _ZN8S21094C2D0Ev();
extern void _ZN8S21094C23v35Ev();
extern void _ZN8S21094C23v36Ev();
extern void _ZN8S21094C23v37Ev();
extern void _ZN8S21094C23v38Ev();
extern void _ZN8S21094C23v39Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C2__8S21094C1[] = {
  ABISELECT(512,280),
  ABISELECT(448,240),
  ABISELECT(-16,-12),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN8S21094C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v35Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v36Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v37Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v38Ev,
  (VTBL_ENTRY)&_ZN8S21094C23v39Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C5D1Ev();
extern void _ZN8S21094C5D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(496,276),
  ABISELECT(432,236),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C68S21094C58S21094C2__A2__8S21094C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C68S21094C58S21094C2__A4__8S21094C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C68S21094C58S21094C2__A4__8S21094C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C68S21094C58S21094C2__A2__8S21094C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(448,256),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-88,-40),
  ABISELECT(440,252),
  ABISELECT(-88,-40),
  ABISELECT(-88,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn440_N9S21094C12D1Ev,_ZThn252_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn440_N9S21094C12D0Ev,_ZThn252_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-440,-252),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  0,
  0,
  ABISELECT(88,40),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-464,-264),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C58S21094C2__A5__8S21094C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C79S21094C118S21094C58S21094C2__A5__8S21094C1[] = {
  0,
  0,
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-88,-40),
  ABISELECT(440,252),
  ABISELECT(-88,-40),
  ABISELECT(-88,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn448_N9S21094C11D1Ev,_ZThn256_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn448_N9S21094C11D0Ev,_ZThn256_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-448,-256),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__A1__9S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-472,-268),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C118S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C58S21094C2__A1__8S21094C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C58S21094C2__A1__8S21094C1[] = {
  0,
  ABISELECT(-432,-236),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C11__8S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(448,256),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C11__8S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-88,-40),
  ABISELECT(440,252),
  ABISELECT(-88,-40),
  ABISELECT(-88,-40),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S21094C5D1Ev,_ZThn276_N8S21094C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S21094C5D0Ev,_ZThn276_N8S21094C5D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-496,-276),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-496,-276),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C11__A2__8S21094C58S21094C2__A1__8S21094C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n96_N8S21094C2D1Ev,_ZTv0_n48_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21094C2D1Ev,_ZThn124_N8S21094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21094C2D0Ev,_ZTv0_n48_N8S21094C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21094C2D0Ev,_ZThn124_N8S21094C2D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C33v33Ev();
extern void _ZN8S21094C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C3__8S21094C2__8S21094C1[] = {
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-124),
  0,
  0,
  0,
  0,
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21094C2D1Ev,_ZTv0_n48_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21094C2D0Ev,_ZTv0_n48_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v34Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C2__8S21094C1[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C68S21094C58S21094C3__8S21094C2__8S21094C1[] = {
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C2__8S21094C1[] = {
  0,
  ABISELECT(-448,-240),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZTvn48_n96_N8S21094C2D1Ev,_ZTvn20_n48_N8S21094C2D1Ev)();
extern void ABISELECT(_ZTvn48_n96_N8S21094C2D0Ev,_ZTvn20_n48_N8S21094C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C58S21094C3__8S21094C2__8S21094C1[] = {
  ABISELECT(-288,-156),
  ABISELECT(240,136),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21094C2D1Ev,_ZTvn20_n48_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n96_N8S21094C2D0Ev,_ZTvn20_n48_N8S21094C2D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZTvn56_n96_N8S21094C2D1Ev,_ZTvn24_n48_N8S21094C2D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N8S21094C2D0Ev,_ZTvn24_n48_N8S21094C2D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C58S21094C3__8S21094C2__8S21094C1[] = {
  ABISELECT(-296,-160),
  ABISELECT(232,132),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21094C2D1Ev,_ZTvn24_n48_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N8S21094C2D0Ev,_ZTvn24_n48_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C2D1Ev,_ZTv0_n40_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn512_N8S21094C2D1Ev,_ZThn280_N8S21094C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C2D0Ev,_ZTv0_n40_N8S21094C2D0Ev)();
extern void ABISELECT(_ZThn512_N8S21094C2D0Ev,_ZThn280_N8S21094C2D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C2__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-512,-280),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-512,-280),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C2D1Ev,_ZTv0_n40_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C2D0Ev,_ZTv0_n40_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C2__8S21094C1[] = {
  ABISELECT(-536,-292),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C99S21094C118S21094C58S21094C3__A1__8S21094C2__8S21094C1[] = {
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C2__8S21094C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C58S21094C3__A3__8S21094C2__8S21094C1[] = {
  ABISELECT(-392,-216),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C3__A3__8S21094C2__8S21094C1[] = {
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZThn16_N8S21094C2D1Ev,_ZThn4_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21094C2D0Ev,_ZThn4_N8S21094C2D0Ev)();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C5__A1__8S21094C2__8S21094C1[] = {
  ABISELECT(496,276),
  ABISELECT(432,236),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21094C2D1Ev,_ZThn4_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21094C2D0Ev,_ZThn4_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn64_N8S21094C2D1Ev,_ZThn24_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21094C2D0Ev,_ZThn24_N8S21094C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C5__A1__8S21094C2__8S21094C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(448,256),
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21094C2D1Ev,_ZThn24_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21094C2D0Ev,_ZThn24_N8S21094C2D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn72_N8S21094C2D1Ev,_ZThn28_N8S21094C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21094C2D0Ev,_ZThn28_N8S21094C2D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C5__A1__8S21094C2__8S21094C1[] = {
  ABISELECT(-88,-40),
  ABISELECT(440,252),
  ABISELECT(-88,-40),
  ABISELECT(-88,-40),
  ABISELECT(-72,-28),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21094C2D1Ev,_ZThn28_N8S21094C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S21094C2D0Ev,_ZThn28_N8S21094C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C5__A5__8S21094C2__8S21094C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21094C2[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C3D1Ev();
extern void _ZN8S21094C3D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
extern void _ZN8S21094C33v33Ev();
extern void _ZN8S21094C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C3__8S21094C1[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v33Ev,
  (VTBL_ENTRY)&_ZN8S21094C33v34Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C5D1Ev();
extern void _ZN8S21094C5D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
extern void _ZN8S21094C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21094C53v32Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C68S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C68S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C68S21094C58S21094C3__8S21094C1[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C68S21094C58S21094C3__8S21094C1[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void _ZN9S21094C11D1Ev();
extern void _ZN9S21094C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-288,-156),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C11D0Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-296,-160),
  ABISELECT(232,132),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S21094C12D1Ev,_ZThn132_N9S21094C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S21094C12D0Ev,_ZThn132_N9S21094C12D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C129S21094C118S21094C58S21094C3__8S21094C1[] = {
  0,
  0,
  ABISELECT(296,160),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C1[] = {
  0,
  0,
  ABISELECT(368,204),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__9S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-296,-160),
  ABISELECT(232,132),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D1Ev,_ZThn4_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21094C11D0Ev,_ZThn4_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21094C11D1Ev,_ZThn136_N9S21094C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21094C11D0Ev,_ZThn136_N9S21094C11D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__A1__9S21094C118S21094C58S21094C3__8S21094C1[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A1__9S21094C118S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21094C11[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C58S21094C3__8S21094C1[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C58S21094C3__8S21094C1[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C11__8S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-288,-156),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D1Ev,_ZThn20_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C5D0Ev,_ZThn20_N8S21094C5D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C11__8S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-296,-160),
  ABISELECT(232,132),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D1Ev,_ZThn24_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C5D0Ev,_ZThn24_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S21094C5D1Ev,_ZThn156_N8S21094C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S21094C5D0Ev,_ZThn156_N8S21094C5D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C11__A2__8S21094C58S21094C3__8S21094C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C5[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C3__A3__8S21094C1[] = {
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C3__A3__8S21094C1[] = {
  0,
  0,
  ABISELECT(416,232),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C3__8S21094C1[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C93v23Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C9__8S21094C3__8S21094C1[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C93v23Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
extern void _ZN9S21094C113v26Ev();
extern void _ZN9S21094C113v27Ev();
extern void _ZN9S21094C113v28Ev();
extern void _ZN9S21094C113v29Ev();
extern void _ZN9S21094C113v30Ev();
extern void _ZN9S21094C113v31Ev();
extern void ABISELECT(_ZThn48_N8S21094C3D1Ev,_ZThn20_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21094C3D0Ev,_ZThn20_N8S21094C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21094C118S21094C5__8S21094C3__8S21094C1[] = {
  ABISELECT(-288,-156),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21094C113v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C3D1Ev,_ZThn20_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21094C3D0Ev,_ZThn20_N8S21094C3D0Ev),
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZThn56_N8S21094C3D1Ev,_ZThn24_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S21094C3D0Ev,_ZThn24_N8S21094C3D0Ev)();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C129S21094C118S21094C5__8S21094C3__8S21094C1[] = {
  ABISELECT(-296,-160),
  ABISELECT(232,132),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C3D1Ev,_ZThn24_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21094C3D0Ev,_ZThn24_N8S21094C3D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S21094C3D1Ev,_ZThn156_N8S21094C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S21094C3D0Ev,_ZThn156_N8S21094C3D0Ev)() __attribute__((weak));
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C3__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__A2__8S21094C3__8S21094C1[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C79S21094C118S21094C5__A2__8S21094C3__8S21094C1[] = {
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C7__A3__8S21094C3__8S21094C1[] = {
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-416,-232),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21094C3[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void _ZN8S21094C6D1Ev();
extern void _ZN8S21094C6D0Ev();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__A1__8S21094C1[] = {
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21094C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C78S21094C6__A1__8S21094C1[] = {
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C1[] = {
  0,
  0,
  ABISELECT(528,292),
  (VTBL_ENTRY)&(_ZTI8S21094C7[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__8S21094C6__A1__8S21094C1[] = {
  0,
  0,
  ABISELECT(528,292),
  (VTBL_ENTRY)&(_ZTI8S21094C6[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN9S21094C12D1Ev();
extern void _ZN9S21094C12D0Ev();
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C12__A2__8S21094C1[] = {
  ABISELECT(-568,-312),
  ABISELECT(-40,-20),
  ABISELECT(-568,-312),
  ABISELECT(-568,-312),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21094C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev)();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C12__A2__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C12__A2__8S21094C1[] = {
  0,
  0,
  ABISELECT(568,312),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C12__A2__8S21094C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21094C12[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void ABISELECT(_ZTv0_n56_N9S21094C13D1Ev,_ZTv0_n28_N9S21094C13D1Ev)();
extern void _ZN9S21094C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21094C13D0Ev,_ZTv0_n28_N9S21094C13D0Ev)();
extern void _ZN9S21094C13D0Ev() __attribute__((weak));
extern void _ZN9S21094C123v24Ev();
extern void _ZN9S21094C123v25Ev();
extern void _ZN9S21094C133v40Ev();
extern void _ZN9S21094C133v41Ev();
extern void _ZN9S21094C133v42Ev();
extern void _ZN9S21094C133v43Ev();
extern void _ZN9S21094C133v44Ev();
extern void _ZN9S21094C133v45Ev();
extern void _ZN9S21094C133v46Ev();
static  VTBL_ENTRY _tg__ZTV9S21094C13__8S21094C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-568,-312),
  ABISELECT(-40,-20),
  ABISELECT(-568,-312),
  ABISELECT(-568,-312),
  0,
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21094C13D1Ev,_ZTv0_n28_N9S21094C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21094C13D0Ev,_ZTv0_n28_N9S21094C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21094C123v24Ev,
  (VTBL_ENTRY)&_ZN9S21094C123v25Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v40Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v41Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v42Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v43Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v44Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v45Ev,
  (VTBL_ENTRY)&_ZN9S21094C133v46Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C72v9Ev();
extern void _ZN8S21094C73v10Ev();
extern void _ZN8S21094C73v11Ev();
extern void _ZN8S21094C73v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S21094C13D1Ev,_ZTv0_n40_N9S21094C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21094C13D0Ev,_ZTv0_n40_N9S21094C13D0Ev)();
extern void _ZN8S21094C63v21Ev();
extern void _ZN8S21094C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C6__9S21094C13__8S21094C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(-528,-292),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C72v9Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v10Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21094C73v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C13D1Ev,_ZTv0_n40_N9S21094C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21094C13D0Ev,_ZTv0_n40_N9S21094C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21094C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21094C63v22Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C4__9S21094C13__8S21094C1[] = {
  0,
  0,
  ABISELECT(568,312),
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
};
extern void _ZN8S21094C42v7Ev();
extern void _ZN8S21094C42v8Ev();
extern void _ZN8S21094C83v13Ev();
extern void _ZN8S21094C83v14Ev();
extern void _ZN8S21094C83v15Ev();
extern void _ZN8S21094C83v16Ev();
extern void _ZN8S21094C83v17Ev();
extern void _ZN8S21094C83v18Ev();
extern void _ZN8S21094C83v19Ev();
extern void _ZN8S21094C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21094C88S21094C6__9S21094C13__8S21094C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21094C13[0]),
  (VTBL_ENTRY)&_ZN8S21094C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21094C42v8Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v13Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v14Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v15Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v16Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v17Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v18Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v19Ev,
  (VTBL_ENTRY)&_ZN8S21094C83v20Ev,
};
static  VTT_ENTRY vtt_S21094C1[] = {
  {&(_ZTV8S21094C1[11]),  11,372},
  {&(_ZTV8S21094C1[59]),  59,372},
  {&(_ZTV8S21094C1[200]),  200,372},
  {&(_ZTV8S21094C1[11]),  11,372},
  {&(_ZTV8S21094C1[215]),  215,372},
  {&(_ZTV8S21094C1[299]),  299,372},
  {&(_ZTV8S21094C1[229]),  229,372},
  {&(_ZTV8S21094C1[253]),  253,372},
  {&(_ZTV8S21094C1[320]),  320,372},
  {&(_ZTV8S21094C1[332]),  332,372},
  {&(_ZTV8S21094C1[261]),  261,372},
  {&(_ZTV8S21094C1[267]),  267,372},
  {&(_ZTV8S21094C1[275]),  275,372},
  {&(_ZTV8S21094C1[290]),  290,372},
  {&(_ZTV8S21094C1[83]),  83,372},
  {&(_ZTV8S21094C1[96]),  96,372},
  {&(_ZTV8S21094C1[110]),  110,372},
  {&(_ZTV8S21094C1[134]),  134,372},
  {&(_ZTV8S21094C1[142]),  142,372},
  {&(_ZTV8S21094C1[148]),  148,372},
  {&(_ZTV8S21094C1[156]),  156,372},
  {&(_ZTV8S21094C1[359]),  359,372},
  {&(_ZTV8S21094C1[359]),  359,372},
  {&(_tg__ZTV8S21094C2__8S21094C1[6]),  6,23},
  {&(_tg__ZTV8S21094C58S21094C2__A1__8S21094C1[7]),  7,18},
  {&(_tg__ZTV8S21094C68S21094C58S21094C2__A2__8S21094C1[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C68S21094C58S21094C2__A4__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C68S21094C58S21094C2__A4__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C68S21094C58S21094C2__A2__8S21094C1[4]),  4,6},
  {&(_tg__ZTV9S21094C118S21094C58S21094C2__A1__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C58S21094C2__A1__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C58S21094C2__A5__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C79S21094C118S21094C58S21094C2__A5__8S21094C1[4]),  4,6},
  {&(_tg__ZTV9S21094C12__9S21094C118S21094C58S21094C2__A1__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C118S21094C58S21094C2__A1__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C4__A1__9S21094C118S21094C58S21094C2__A1__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C58S21094C2__A1__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C118S21094C58S21094C2__A1__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C58S21094C2__A1__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C9__8S21094C58S21094C2__A1__8S21094C1[3]),  3,4},
  {&(_tg__ZTV9S21094C11__8S21094C58S21094C2__A1__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C11__8S21094C58S21094C2__A1__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C58S21094C2__A1__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C58S21094C2__A1__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C11__A2__8S21094C58S21094C2__A1__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C3__8S21094C2__8S21094C1[34]),  34,47},
  {&(_tg__ZTV8S21094C4__8S21094C2__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C68S21094C58S21094C3__8S21094C2__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C9__8S21094C2__8S21094C1[3]),  3,4},
  {&(_tg__ZTV9S21094C118S21094C58S21094C3__8S21094C2__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C58S21094C3__8S21094C2__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C2__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C2__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C99S21094C118S21094C58S21094C3__A1__8S21094C2__8S21094C1[2]),  2,3},
  {&(_tg__ZTV8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C2__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C88S21094C58S21094C3__A3__8S21094C2__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C78S21094C3__A3__8S21094C2__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C5__A1__8S21094C2__8S21094C1[7]),  7,18},
  {&(_tg__ZTV9S21094C118S21094C5__A1__8S21094C2__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C5__A1__8S21094C2__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C5__A5__8S21094C2__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C3__8S21094C1[7]),  7,20},
  {&(_tg__ZTV8S21094C58S21094C3__8S21094C1[7]),  7,18},
  {&(_tg__ZTV8S21094C68S21094C58S21094C3__8S21094C1[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C68S21094C58S21094C3__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C68S21094C58S21094C3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C68S21094C58S21094C3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV9S21094C118S21094C58S21094C3__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C58S21094C3__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C129S21094C118S21094C58S21094C3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C129S21094C118S21094C58S21094C3__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C79S21094C118S21094C58S21094C3__A2__8S21094C1[4]),  4,6},
  {&(_tg__ZTV9S21094C12__9S21094C118S21094C58S21094C3__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C118S21094C58S21094C3__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C4__A1__9S21094C118S21094C58S21094C3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__A1__9S21094C118S21094C58S21094C3__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C7__A1__9S21094C118S21094C58S21094C3__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C58S21094C3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C9__8S21094C58S21094C3__8S21094C1[3]),  3,4},
  {&(_tg__ZTV9S21094C11__8S21094C58S21094C3__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C11__8S21094C58S21094C3__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C58S21094C3__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C58S21094C3__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C11__A2__8S21094C58S21094C3__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C78S21094C3__A3__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C3__A3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C3__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C9__8S21094C3__8S21094C1[3]),  3,4},
  {&(_tg__ZTV9S21094C118S21094C5__8S21094C3__8S21094C1[4]),  4,22},
  {&(_tg__ZTV9S21094C129S21094C118S21094C5__8S21094C3__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__A1__8S21094C3__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C88S21094C6__A2__8S21094C3__8S21094C1[2]),  2,12},
  {&(_tg__ZTV8S21094C79S21094C118S21094C5__A2__8S21094C3__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C7__A3__8S21094C3__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C6__A1__8S21094C1[5]),  5,15},
  {&(_tg__ZTV8S21094C78S21094C6__A1__8S21094C1[5]),  5,11},
  {&(_tg__ZTV8S21094C4__8S21094C78S21094C6__A1__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C4__8S21094C6__A1__8S21094C1[4]),  4,6},
  {&(_tg__ZTV9S21094C12__A2__8S21094C1[6]),  6,12},
  {&(_tg__ZTV8S21094C6__9S21094C12__A2__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C12__A2__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C12__A2__8S21094C1[2]),  2,12},
  {&(_tg__ZTV9S21094C13__8S21094C1[10]),  10,23},
  {&(_tg__ZTV9S21094C13__8S21094C1[10]),  10,23},
  {&(_tg__ZTV8S21094C6__9S21094C13__8S21094C1[20]),  20,30},
  {&(_tg__ZTV8S21094C4__9S21094C13__8S21094C1[4]),  4,6},
  {&(_tg__ZTV8S21094C88S21094C6__9S21094C13__8S21094C1[2]),  2,12},
};
extern VTBL_ENTRY _ZTI8S21094C1[];
extern  VTBL_ENTRY _ZTV8S21094C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21094C1[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21094C13D0Ev,_ZTv0_n28_N9S21094C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21094C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21094C13D1Ev,_ZTv0_n28_N9S21094C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21094C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C3D0Ev,_ZTv0_n40_N8S21094C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C3D0Ev,_ZThn156_N8S21094C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C3D1Ev,_ZTv0_n40_N8S21094C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C3D1Ev,_ZThn156_N8S21094C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C2D0Ev,_ZTv0_n40_N8S21094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21094C2D0Ev,_ZThn280_N8S21094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C2D1Ev,_ZTv0_n40_N8S21094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S21094C2D1Ev,_ZThn280_N8S21094C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21094C2D0Ev,_ZTv0_n48_N8S21094C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21094C2D0Ev,_ZThn124_N8S21094C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21094C2D1Ev,_ZTv0_n48_N8S21094C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21094C2D1Ev,_ZThn124_N8S21094C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D0Ev,_ZTv0_n40_N8S21094C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C5D0Ev,_ZThn156_N8S21094C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21094C5D0Ev,_ZThn276_N8S21094C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C5D1Ev,_ZTv0_n40_N8S21094C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21094C5D1Ev,_ZThn156_N8S21094C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21094C5D1Ev,_ZThn276_N8S21094C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D0Ev,_ZTv0_n40_N9S21094C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21094C11D0Ev,_ZThn136_N9S21094C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21094C11D0Ev,_ZThn256_N9S21094C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C11D1Ev,_ZTv0_n40_N9S21094C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21094C11D1Ev,_ZThn136_N9S21094C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S21094C11D1Ev,_ZThn256_N9S21094C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D0Ev,_ZTv0_n40_N9S21094C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21094C12D0Ev,_ZThn132_N9S21094C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21094C12D0Ev,_ZThn252_N9S21094C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21094C12D1Ev,_ZTv0_n40_N9S21094C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S21094C12D1Ev,_ZThn132_N9S21094C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21094C12D1Ev,_ZThn252_N9S21094C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21094C1D0Ev,_ZTv0_n28_N8S21094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S21094C1D0Ev,_ZThn312_N8S21094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21094C1D1Ev,_ZTv0_n28_N8S21094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn568_N8S21094C1D1Ev,_ZThn312_N8S21094C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C1D0Ev,_ZTv0_n40_N8S21094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S21094C1D0Ev,_ZThn292_N8S21094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21094C1D1Ev,_ZTv0_n40_N8S21094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S21094C1D1Ev,_ZThn292_N8S21094C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21094C1D0Ev,_ZTv0_n48_N8S21094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21094C1D0Ev,_ZThn136_N8S21094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21094C1D1Ev,_ZTv0_n48_N8S21094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21094C1D1Ev,_ZThn136_N8S21094C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21094C1D0Ev,_ZTv0_n68_N8S21094C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21094C1D0Ev,_ZThn12_N8S21094C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21094C1D1Ev,_ZTv0_n68_N8S21094C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21094C1D1Ev,_ZThn12_N8S21094C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21094C1 = {  "S21094C1", // class name
  bases_S21094C1, 39,
  &(vtc_S21094C1[0]), // expected_vtbl_contents
  &(vtt_S21094C1[0]), // expected_vtt_contents
  ABISELECT(592,324), // object size
  NSPAIRA(_ZTI8S21094C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21094C1),372, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21094C1),112, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3234C3  {
  int s3234c3f0;
  __tsi64 s3234c3f1;
  void *s3234c3f2[4];
  int s3234c3f3[2];
  void *s3234c3f4;
  ::S1538C5_nt s3234c3f5;
  void *s3234c3f6[2];
  virtual  ~S3234C3(); // _ZN7S3234C3D1Ev
  virtual void  v4(); // _ZN7S3234C32v4Ev
  virtual void  v5(); // _ZN7S3234C32v5Ev
  virtual void  v6(); // _ZN7S3234C32v6Ev
  virtual void  v7(); // _ZN7S3234C32v7Ev
  virtual void  v8(); // _ZN7S3234C32v8Ev
  virtual void  v9(); // _ZN7S3234C32v9Ev
  virtual void  v10(); // _ZN7S3234C33v10Ev
  virtual void  v11(); // _ZN7S3234C33v11Ev
  virtual void  v12(); // _ZN7S3234C33v12Ev
  virtual void  v13(); // _ZN7S3234C33v13Ev
  virtual void  v14(); // _ZN7S3234C33v14Ev
  virtual void  v15(); // _ZN7S3234C33v15Ev
  virtual void  v16(); // _ZN7S3234C33v16Ev
  virtual void  v17(); // _ZN7S3234C33v17Ev
  virtual void  v18(); // _ZN7S3234C33v18Ev
  virtual void  v19(); // _ZN7S3234C33v19Ev
  virtual void  v20(); // _ZN7S3234C33v20Ev
  virtual void  v21(); // _ZN7S3234C33v21Ev
  virtual void  v22(); // _ZN7S3234C33v22Ev
  virtual void  v23(); // _ZN7S3234C33v23Ev
  virtual void  v24(); // _ZN7S3234C33v24Ev
  virtual void  v25(); // _ZN7S3234C33v25Ev
  virtual void  v26(); // _ZN7S3234C33v26Ev
  virtual void  v27(); // _ZN7S3234C33v27Ev
  virtual void  v28(); // _ZN7S3234C33v28Ev
  virtual void  v29(); // _ZN7S3234C33v29Ev
  virtual void  v30(); // _ZN7S3234C33v30Ev
  virtual void  v31(); // _ZN7S3234C33v31Ev
  virtual void  v32(); // _ZN7S3234C33v32Ev
  virtual void  v33(); // _ZN7S3234C33v33Ev
  virtual void  v34(); // _ZN7S3234C33v34Ev
  virtual void  v35(); // _ZN7S3234C33v35Ev
  virtual void  v36(); // _ZN7S3234C33v36Ev
  virtual void  v37(); // _ZN7S3234C33v37Ev
  virtual void  v38(); // _ZN7S3234C33v38Ev
  virtual void  v39(); // _ZN7S3234C33v39Ev
  virtual void  v40(); // _ZN7S3234C33v40Ev
  virtual void  v41(); // _ZN7S3234C33v41Ev
  virtual void  v42(); // _ZN7S3234C33v42Ev
  virtual void  v43(); // _ZN7S3234C33v43Ev
  virtual void  v44(); // _ZN7S3234C33v44Ev
  virtual void  v45(); // _ZN7S3234C33v45Ev
  virtual void  v46(); // _ZN7S3234C33v46Ev
  virtual void  v47(); // _ZN7S3234C33v47Ev
  virtual void  v48(); // _ZN7S3234C33v48Ev
  virtual void  v49(); // _ZN7S3234C33v49Ev
  virtual void  v50(); // _ZN7S3234C33v50Ev
  virtual void  v51(); // _ZN7S3234C33v51Ev
  virtual void  v52(); // _ZN7S3234C33v52Ev
  virtual void  v53(); // _ZN7S3234C33v53Ev
  virtual void  v54(); // _ZN7S3234C33v54Ev
  virtual void  v55(); // _ZN7S3234C33v55Ev
  virtual void  v56(); // _ZN7S3234C33v56Ev
  virtual void  v57(); // _ZN7S3234C33v57Ev
  virtual void  v58(); // _ZN7S3234C33v58Ev
  virtual void  v59(); // _ZN7S3234C33v59Ev
  virtual void  v60(); // _ZN7S3234C33v60Ev
  virtual void  v61(); // _ZN7S3234C33v61Ev
  virtual void  v62(); // _ZN7S3234C33v62Ev
  virtual void  v63(); // _ZN7S3234C33v63Ev
  virtual void  v64(); // _ZN7S3234C33v64Ev
  virtual void  v65(); // _ZN7S3234C33v65Ev
  virtual void  v66(); // _ZN7S3234C33v66Ev
  virtual void  v67(); // _ZN7S3234C33v67Ev
  S3234C3(); // tgen
};
//SIG(-1 S3234C3) 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]}


 S3234C3 ::~S3234C3(){ note_dtor("S3234C3", this);}
void  S3234C3 ::v4(){vfunc_called(this, "_ZN7S3234C32v4Ev");}
void  S3234C3 ::v5(){vfunc_called(this, "_ZN7S3234C32v5Ev");}
void  S3234C3 ::v6(){vfunc_called(this, "_ZN7S3234C32v6Ev");}
void  S3234C3 ::v7(){vfunc_called(this, "_ZN7S3234C32v7Ev");}
void  S3234C3 ::v8(){vfunc_called(this, "_ZN7S3234C32v8Ev");}
void  S3234C3 ::v9(){vfunc_called(this, "_ZN7S3234C32v9Ev");}
void  S3234C3 ::v10(){vfunc_called(this, "_ZN7S3234C33v10Ev");}
void  S3234C3 ::v11(){vfunc_called(this, "_ZN7S3234C33v11Ev");}
void  S3234C3 ::v12(){vfunc_called(this, "_ZN7S3234C33v12Ev");}
void  S3234C3 ::v13(){vfunc_called(this, "_ZN7S3234C33v13Ev");}
void  S3234C3 ::v14(){vfunc_called(this, "_ZN7S3234C33v14Ev");}
void  S3234C3 ::v15(){vfunc_called(this, "_ZN7S3234C33v15Ev");}
void  S3234C3 ::v16(){vfunc_called(this, "_ZN7S3234C33v16Ev");}
void  S3234C3 ::v17(){vfunc_called(this, "_ZN7S3234C33v17Ev");}
void  S3234C3 ::v18(){vfunc_called(this, "_ZN7S3234C33v18Ev");}
void  S3234C3 ::v19(){vfunc_called(this, "_ZN7S3234C33v19Ev");}
void  S3234C3 ::v20(){vfunc_called(this, "_ZN7S3234C33v20Ev");}
void  S3234C3 ::v21(){vfunc_called(this, "_ZN7S3234C33v21Ev");}
void  S3234C3 ::v22(){vfunc_called(this, "_ZN7S3234C33v22Ev");}
void  S3234C3 ::v23(){vfunc_called(this, "_ZN7S3234C33v23Ev");}
void  S3234C3 ::v24(){vfunc_called(this, "_ZN7S3234C33v24Ev");}
void  S3234C3 ::v25(){vfunc_called(this, "_ZN7S3234C33v25Ev");}
void  S3234C3 ::v26(){vfunc_called(this, "_ZN7S3234C33v26Ev");}
void  S3234C3 ::v27(){vfunc_called(this, "_ZN7S3234C33v27Ev");}
void  S3234C3 ::v28(){vfunc_called(this, "_ZN7S3234C33v28Ev");}
void  S3234C3 ::v29(){vfunc_called(this, "_ZN7S3234C33v29Ev");}
void  S3234C3 ::v30(){vfunc_called(this, "_ZN7S3234C33v30Ev");}
void  S3234C3 ::v31(){vfunc_called(this, "_ZN7S3234C33v31Ev");}
void  S3234C3 ::v32(){vfunc_called(this, "_ZN7S3234C33v32Ev");}
void  S3234C3 ::v33(){vfunc_called(this, "_ZN7S3234C33v33Ev");}
void  S3234C3 ::v34(){vfunc_called(this, "_ZN7S3234C33v34Ev");}
void  S3234C3 ::v35(){vfunc_called(this, "_ZN7S3234C33v35Ev");}
void  S3234C3 ::v36(){vfunc_called(this, "_ZN7S3234C33v36Ev");}
void  S3234C3 ::v37(){vfunc_called(this, "_ZN7S3234C33v37Ev");}
void  S3234C3 ::v38(){vfunc_called(this, "_ZN7S3234C33v38Ev");}
void  S3234C3 ::v39(){vfunc_called(this, "_ZN7S3234C33v39Ev");}
void  S3234C3 ::v40(){vfunc_called(this, "_ZN7S3234C33v40Ev");}
void  S3234C3 ::v41(){vfunc_called(this, "_ZN7S3234C33v41Ev");}
void  S3234C3 ::v42(){vfunc_called(this, "_ZN7S3234C33v42Ev");}
void  S3234C3 ::v43(){vfunc_called(this, "_ZN7S3234C33v43Ev");}
void  S3234C3 ::v44(){vfunc_called(this, "_ZN7S3234C33v44Ev");}
void  S3234C3 ::v45(){vfunc_called(this, "_ZN7S3234C33v45Ev");}
void  S3234C3 ::v46(){vfunc_called(this, "_ZN7S3234C33v46Ev");}
void  S3234C3 ::v47(){vfunc_called(this, "_ZN7S3234C33v47Ev");}
void  S3234C3 ::v48(){vfunc_called(this, "_ZN7S3234C33v48Ev");}
void  S3234C3 ::v49(){vfunc_called(this, "_ZN7S3234C33v49Ev");}
void  S3234C3 ::v50(){vfunc_called(this, "_ZN7S3234C33v50Ev");}
void  S3234C3 ::v51(){vfunc_called(this, "_ZN7S3234C33v51Ev");}
void  S3234C3 ::v52(){vfunc_called(this, "_ZN7S3234C33v52Ev");}
void  S3234C3 ::v53(){vfunc_called(this, "_ZN7S3234C33v53Ev");}
void  S3234C3 ::v54(){vfunc_called(this, "_ZN7S3234C33v54Ev");}
void  S3234C3 ::v55(){vfunc_called(this, "_ZN7S3234C33v55Ev");}
void  S3234C3 ::v56(){vfunc_called(this, "_ZN7S3234C33v56Ev");}
void  S3234C3 ::v57(){vfunc_called(this, "_ZN7S3234C33v57Ev");}
void  S3234C3 ::v58(){vfunc_called(this, "_ZN7S3234C33v58Ev");}
void  S3234C3 ::v59(){vfunc_called(this, "_ZN7S3234C33v59Ev");}
void  S3234C3 ::v60(){vfunc_called(this, "_ZN7S3234C33v60Ev");}
void  S3234C3 ::v61(){vfunc_called(this, "_ZN7S3234C33v61Ev");}
void  S3234C3 ::v62(){vfunc_called(this, "_ZN7S3234C33v62Ev");}
void  S3234C3 ::v63(){vfunc_called(this, "_ZN7S3234C33v63Ev");}
void  S3234C3 ::v64(){vfunc_called(this, "_ZN7S3234C33v64Ev");}
void  S3234C3 ::v65(){vfunc_called(this, "_ZN7S3234C33v65Ev");}
void  S3234C3 ::v66(){vfunc_called(this, "_ZN7S3234C33v66Ev");}
void  S3234C3 ::v67(){vfunc_called(this, "_ZN7S3234C33v67Ev");}
S3234C3 ::S3234C3(){ note_ctor("S3234C3", this);} // tgen

static void Test_S3234C3()
{
  extern Class_Descriptor cd_S3234C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3234C3, buf);
    S3234C3 *dp, &lv = *(dp=new (buf) S3234C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3234C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3234C3)");
    check_field_offset(lv, s3234c3f0, ABISELECT(8,4), "S3234C3.s3234c3f0");
    check_field_offset(lv, s3234c3f1, ABISELECT(16,8), "S3234C3.s3234c3f1");
    check_field_offset(lv, s3234c3f2, ABISELECT(24,16), "S3234C3.s3234c3f2");
    check_field_offset(lv, s3234c3f3, ABISELECT(56,32), "S3234C3.s3234c3f3");
    check_field_offset(lv, s3234c3f4, ABISELECT(64,40), "S3234C3.s3234c3f4");
    check_field_offset(lv, s3234c3f5, ABISELECT(72,44), "S3234C3.s3234c3f5");
    check_field_offset(lv, s3234c3f6, ABISELECT(80,52), "S3234C3.s3234c3f6");
    test_class_info(&lv, &cd_S3234C3);
    dp->~S3234C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3234C3(Test_S3234C3, "S3234C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3234C3C1Ev();
extern void _ZN7S3234C3D1Ev();
Name_Map name_map_S3234C3[] = {
  NSPAIR(_ZN7S3234C3C1Ev),
  NSPAIR(_ZN7S3234C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3234C3[];
extern void _ZN7S3234C3D1Ev();
extern void _ZN7S3234C3D0Ev();
extern void _ZN7S3234C32v4Ev();
extern void _ZN7S3234C32v5Ev();
extern void _ZN7S3234C32v6Ev();
extern void _ZN7S3234C32v7Ev();
extern void _ZN7S3234C32v8Ev();
extern void _ZN7S3234C32v9Ev();
extern void _ZN7S3234C33v10Ev();
extern void _ZN7S3234C33v11Ev();
extern void _ZN7S3234C33v12Ev();
extern void _ZN7S3234C33v13Ev();
extern void _ZN7S3234C33v14Ev();
extern void _ZN7S3234C33v15Ev();
extern void _ZN7S3234C33v16Ev();
extern void _ZN7S3234C33v17Ev();
extern void _ZN7S3234C33v18Ev();
extern void _ZN7S3234C33v19Ev();
extern void _ZN7S3234C33v20Ev();
extern void _ZN7S3234C33v21Ev();
extern void _ZN7S3234C33v22Ev();
extern void _ZN7S3234C33v23Ev();
extern void _ZN7S3234C33v24Ev();
extern void _ZN7S3234C33v25Ev();
extern void _ZN7S3234C33v26Ev();
extern void _ZN7S3234C33v27Ev();
extern void _ZN7S3234C33v28Ev();
extern void _ZN7S3234C33v29Ev();
extern void _ZN7S3234C33v30Ev();
extern void _ZN7S3234C33v31Ev();
extern void _ZN7S3234C33v32Ev();
extern void _ZN7S3234C33v33Ev();
extern void _ZN7S3234C33v34Ev();
extern void _ZN7S3234C33v35Ev();
extern void _ZN7S3234C33v36Ev();
extern void _ZN7S3234C33v37Ev();
extern void _ZN7S3234C33v38Ev();
extern void _ZN7S3234C33v39Ev();
extern void _ZN7S3234C33v40Ev();
extern void _ZN7S3234C33v41Ev();
extern void _ZN7S3234C33v42Ev();
extern void _ZN7S3234C33v43Ev();
extern void _ZN7S3234C33v44Ev();
extern void _ZN7S3234C33v45Ev();
extern void _ZN7S3234C33v46Ev();
extern void _ZN7S3234C33v47Ev();
extern void _ZN7S3234C33v48Ev();
extern void _ZN7S3234C33v49Ev();
extern void _ZN7S3234C33v50Ev();
extern void _ZN7S3234C33v51Ev();
extern void _ZN7S3234C33v52Ev();
extern void _ZN7S3234C33v53Ev();
extern void _ZN7S3234C33v54Ev();
extern void _ZN7S3234C33v55Ev();
extern void _ZN7S3234C33v56Ev();
extern void _ZN7S3234C33v57Ev();
extern void _ZN7S3234C33v58Ev();
extern void _ZN7S3234C33v59Ev();
extern void _ZN7S3234C33v60Ev();
extern void _ZN7S3234C33v61Ev();
extern void _ZN7S3234C33v62Ev();
extern void _ZN7S3234C33v63Ev();
extern void _ZN7S3234C33v64Ev();
extern void _ZN7S3234C33v65Ev();
extern void _ZN7S3234C33v66Ev();
extern void _ZN7S3234C33v67Ev();
static  VTBL_ENTRY vtc_S3234C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3234C3[0]),
  (VTBL_ENTRY)&_ZN7S3234C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3234C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3234C3[];
extern  VTBL_ENTRY _ZTV7S3234C3[];
Class_Descriptor cd_S3234C3 = {  "S3234C3", // class name
  0,0,//no base classes
  &(vtc_S3234C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3234C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3234C3),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  S3234C2  : S3234C3 {
  ::S1538C29_nt s3234c2f0;
  virtual  ~S3234C2(); // _ZN7S3234C2D1Ev
  virtual void  v68(); // _ZN7S3234C23v68Ev
  virtual void  v69(); // _ZN7S3234C23v69Ev
  virtual void  v70(); // _ZN7S3234C23v70Ev
  S3234C2(); // tgen
};
//SIG(-1 S3234C2) C1{ BC2{ 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 FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}}}


 S3234C2 ::~S3234C2(){ note_dtor("S3234C2", this);}
void  S3234C2 ::v68(){vfunc_called(this, "_ZN7S3234C23v68Ev");}
void  S3234C2 ::v69(){vfunc_called(this, "_ZN7S3234C23v69Ev");}
void  S3234C2 ::v70(){vfunc_called(this, "_ZN7S3234C23v70Ev");}
S3234C2 ::S3234C2(){ note_ctor("S3234C2", this);} // tgen

static void Test_S3234C2()
{
  extern Class_Descriptor cd_S3234C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S3234C2, buf);
    S3234C2 *dp, &lv = *(dp=new (buf) S3234C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S3234C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3234C2)");
    check_base_class_offset(lv, (S3234C3*), 0, "S3234C2");
    check_field_offset(lv, s3234c2f0, ABISELECT(96,60), "S3234C2.s3234c2f0");
    test_class_info(&lv, &cd_S3234C2);
    dp->~S3234C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3234C2(Test_S3234C2, "S3234C2", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S3234C2C1Ev();
extern void _ZN7S3234C2D1Ev();
Name_Map name_map_S3234C2[] = {
  NSPAIR(_ZN7S3234C2C1Ev),
  NSPAIR(_ZN7S3234C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3234C3;
extern VTBL_ENTRY _ZTI7S3234C3[];
extern  VTBL_ENTRY _ZTV7S3234C3[];
static Base_Class bases_S3234C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3234C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3234C2[];
extern void _ZN7S3234C2D1Ev();
extern void _ZN7S3234C2D0Ev();
extern void _ZN7S3234C32v4Ev();
extern void _ZN7S3234C32v5Ev();
extern void _ZN7S3234C32v6Ev();
extern void _ZN7S3234C32v7Ev();
extern void _ZN7S3234C32v8Ev();
extern void _ZN7S3234C32v9Ev();
extern void _ZN7S3234C33v10Ev();
extern void _ZN7S3234C33v11Ev();
extern void _ZN7S3234C33v12Ev();
extern void _ZN7S3234C33v13Ev();
extern void _ZN7S3234C33v14Ev();
extern void _ZN7S3234C33v15Ev();
extern void _ZN7S3234C33v16Ev();
extern void _ZN7S3234C33v17Ev();
extern void _ZN7S3234C33v18Ev();
extern void _ZN7S3234C33v19Ev();
extern void _ZN7S3234C33v20Ev();
extern void _ZN7S3234C33v21Ev();
extern void _ZN7S3234C33v22Ev();
extern void _ZN7S3234C33v23Ev();
extern void _ZN7S3234C33v24Ev();
extern void _ZN7S3234C33v25Ev();
extern void _ZN7S3234C33v26Ev();
extern void _ZN7S3234C33v27Ev();
extern void _ZN7S3234C33v28Ev();
extern void _ZN7S3234C33v29Ev();
extern void _ZN7S3234C33v30Ev();
extern void _ZN7S3234C33v31Ev();
extern void _ZN7S3234C33v32Ev();
extern void _ZN7S3234C33v33Ev();
extern void _ZN7S3234C33v34Ev();
extern void _ZN7S3234C33v35Ev();
extern void _ZN7S3234C33v36Ev();
extern void _ZN7S3234C33v37Ev();
extern void _ZN7S3234C33v38Ev();
extern void _ZN7S3234C33v39Ev();
extern void _ZN7S3234C33v40Ev();
extern void _ZN7S3234C33v41Ev();
extern void _ZN7S3234C33v42Ev();
extern void _ZN7S3234C33v43Ev();
extern void _ZN7S3234C33v44Ev();
extern void _ZN7S3234C33v45Ev();
extern void _ZN7S3234C33v46Ev();
extern void _ZN7S3234C33v47Ev();
extern void _ZN7S3234C33v48Ev();
extern void _ZN7S3234C33v49Ev();
extern void _ZN7S3234C33v50Ev();
extern void _ZN7S3234C33v51Ev();
extern void _ZN7S3234C33v52Ev();
extern void _ZN7S3234C33v53Ev();
extern void _ZN7S3234C33v54Ev();
extern void _ZN7S3234C33v55Ev();
extern void _ZN7S3234C33v56Ev();
extern void _ZN7S3234C33v57Ev();
extern void _ZN7S3234C33v58Ev();
extern void _ZN7S3234C33v59Ev();
extern void _ZN7S3234C33v60Ev();
extern void _ZN7S3234C33v61Ev();
extern void _ZN7S3234C33v62Ev();
extern void _ZN7S3234C33v63Ev();
extern void _ZN7S3234C33v64Ev();
extern void _ZN7S3234C33v65Ev();
extern void _ZN7S3234C33v66Ev();
extern void _ZN7S3234C33v67Ev();
extern void _ZN7S3234C23v68Ev();
extern void _ZN7S3234C23v69Ev();
extern void _ZN7S3234C23v70Ev();
static  VTBL_ENTRY vtc_S3234C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3234C2[0]),
  (VTBL_ENTRY)&_ZN7S3234C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3234C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3234C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3234C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3234C23v70Ev,
};
extern VTBL_ENTRY _ZTI7S3234C2[];
extern  VTBL_ENTRY _ZTV7S3234C2[];
Class_Descriptor cd_S3234C2 = {  "S3234C2", // class name
  bases_S3234C2, 1,
  &(vtc_S3234C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S3234C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3234C2),71, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3234C1  : S3234C2 {
  void *s3234c1f0;
  virtual  ~S3234C1(); // _ZN7S3234C1D1Ev
  virtual void  v1(); // _ZN7S3234C12v1Ev
  virtual void  v2(); // _ZN7S3234C12v2Ev
  virtual void  v3(); // _ZN7S3234C12v3Ev
  S3234C1(); // tgen
};
//SIG(1 S3234C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v68 v69 v70 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}}} vd v1 v2 v3 Fp}


 S3234C1 ::~S3234C1(){ note_dtor("S3234C1", this);}
void  S3234C1 ::v1(){vfunc_called(this, "_ZN7S3234C12v1Ev");}
void  S3234C1 ::v2(){vfunc_called(this, "_ZN7S3234C12v2Ev");}
void  S3234C1 ::v3(){vfunc_called(this, "_ZN7S3234C12v3Ev");}
S3234C1 ::S3234C1(){ note_ctor("S3234C1", this);} // tgen

static void Test_S3234C1()
{
  extern Class_Descriptor cd_S3234C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,20)];
    init_test(&cd_S3234C1, buf);
    S3234C1 *dp, &lv = *(dp=new (buf) S3234C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,76), "sizeof(S3234C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3234C1)");
    check_base_class_offset(lv, (S3234C3*)(S3234C2*), 0, "S3234C1");
    check_base_class_offset(lv, (S3234C2*), 0, "S3234C1");
    check_field_offset(lv, s3234c1f0, ABISELECT(112,72), "S3234C1.s3234c1f0");
    test_class_info(&lv, &cd_S3234C1);
    dp->~S3234C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3234C1(Test_S3234C1, "S3234C1", ABISELECT(120,76));

#else // __cplusplus

extern void _ZN7S3234C1C1Ev();
extern void _ZN7S3234C1D1Ev();
Name_Map name_map_S3234C1[] = {
  NSPAIR(_ZN7S3234C1C1Ev),
  NSPAIR(_ZN7S3234C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3234C3;
extern VTBL_ENTRY _ZTI7S3234C3[];
extern  VTBL_ENTRY _ZTV7S3234C3[];
extern Class_Descriptor cd_S3234C2;
extern VTBL_ENTRY _ZTI7S3234C2[];
extern  VTBL_ENTRY _ZTV7S3234C2[];
static Base_Class bases_S3234C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3234C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3234C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3234C1[];
extern void _ZN7S3234C1D1Ev();
extern void _ZN7S3234C1D0Ev();
extern void _ZN7S3234C32v4Ev();
extern void _ZN7S3234C32v5Ev();
extern void _ZN7S3234C32v6Ev();
extern void _ZN7S3234C32v7Ev();
extern void _ZN7S3234C32v8Ev();
extern void _ZN7S3234C32v9Ev();
extern void _ZN7S3234C33v10Ev();
extern void _ZN7S3234C33v11Ev();
extern void _ZN7S3234C33v12Ev();
extern void _ZN7S3234C33v13Ev();
extern void _ZN7S3234C33v14Ev();
extern void _ZN7S3234C33v15Ev();
extern void _ZN7S3234C33v16Ev();
extern void _ZN7S3234C33v17Ev();
extern void _ZN7S3234C33v18Ev();
extern void _ZN7S3234C33v19Ev();
extern void _ZN7S3234C33v20Ev();
extern void _ZN7S3234C33v21Ev();
extern void _ZN7S3234C33v22Ev();
extern void _ZN7S3234C33v23Ev();
extern void _ZN7S3234C33v24Ev();
extern void _ZN7S3234C33v25Ev();
extern void _ZN7S3234C33v26Ev();
extern void _ZN7S3234C33v27Ev();
extern void _ZN7S3234C33v28Ev();
extern void _ZN7S3234C33v29Ev();
extern void _ZN7S3234C33v30Ev();
extern void _ZN7S3234C33v31Ev();
extern void _ZN7S3234C33v32Ev();
extern void _ZN7S3234C33v33Ev();
extern void _ZN7S3234C33v34Ev();
extern void _ZN7S3234C33v35Ev();
extern void _ZN7S3234C33v36Ev();
extern void _ZN7S3234C33v37Ev();
extern void _ZN7S3234C33v38Ev();
extern void _ZN7S3234C33v39Ev();
extern void _ZN7S3234C33v40Ev();
extern void _ZN7S3234C33v41Ev();
extern void _ZN7S3234C33v42Ev();
extern void _ZN7S3234C33v43Ev();
extern void _ZN7S3234C33v44Ev();
extern void _ZN7S3234C33v45Ev();
extern void _ZN7S3234C33v46Ev();
extern void _ZN7S3234C33v47Ev();
extern void _ZN7S3234C33v48Ev();
extern void _ZN7S3234C33v49Ev();
extern void _ZN7S3234C33v50Ev();
extern void _ZN7S3234C33v51Ev();
extern void _ZN7S3234C33v52Ev();
extern void _ZN7S3234C33v53Ev();
extern void _ZN7S3234C33v54Ev();
extern void _ZN7S3234C33v55Ev();
extern void _ZN7S3234C33v56Ev();
extern void _ZN7S3234C33v57Ev();
extern void _ZN7S3234C33v58Ev();
extern void _ZN7S3234C33v59Ev();
extern void _ZN7S3234C33v60Ev();
extern void _ZN7S3234C33v61Ev();
extern void _ZN7S3234C33v62Ev();
extern void _ZN7S3234C33v63Ev();
extern void _ZN7S3234C33v64Ev();
extern void _ZN7S3234C33v65Ev();
extern void _ZN7S3234C33v66Ev();
extern void _ZN7S3234C33v67Ev();
extern void _ZN7S3234C23v68Ev();
extern void _ZN7S3234C23v69Ev();
extern void _ZN7S3234C23v70Ev();
extern void _ZN7S3234C12v1Ev();
extern void _ZN7S3234C12v2Ev();
extern void _ZN7S3234C12v3Ev();
static  VTBL_ENTRY vtc_S3234C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3234C1[0]),
  (VTBL_ENTRY)&_ZN7S3234C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3234C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3234C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3234C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3234C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3234C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3234C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3234C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3234C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3234C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3234C1[];
extern  VTBL_ENTRY _ZTV7S3234C1[];
Class_Descriptor cd_S3234C1 = {  "S3234C1", // class name
  bases_S3234C1, 2,
  &(vtc_S3234C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,76), // object size
  NSPAIRA(_ZTI7S3234C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3234C1),74, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1181C7  : virtual S19490C26 {
  void *s1181c7f0[2];
  ~S1181C7(); // tgen
  S1181C7(); // tgen
};
//SIG(-1 S1181C7) C1{ VBC2{ m} Fp[2]}


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

static void Test_S1181C7()
{
  extern Class_Descriptor cd_S1181C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1181C7, buf);
    S1181C7 *dp, &lv = *(dp=new (buf) S1181C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1181C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C7)");
    check_base_class_offset(lv, (S19490C26*), 0, "S1181C7");
    check_field_offset(lv, s1181c7f0, ABISELECT(8,4), "S1181C7.s1181c7f0");
    test_class_info(&lv, &cd_S1181C7);
    dp->~S1181C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C7(Test_S1181C7, "S1181C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1181C7C1Ev();
extern void _ZN7S1181C7D1Ev();
Name_Map name_map_S1181C7[] = {
  NSPAIR(_ZN7S1181C7C1Ev),
  NSPAIR(_ZN7S1181C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S1181C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1181C7[];
static  VTBL_ENTRY vtc_S1181C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
extern VTBL_ENTRY _ZTV7S1181C7[];
static  VTT_ENTRY vtt_S1181C7[] = {
  {&(_ZTV7S1181C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
Class_Descriptor cd_S1181C7 = {  "S1181C7", // class name
  bases_S1181C7, 1,
  &(vtc_S1181C7[0]), // expected_vtbl_contents
  &(vtt_S1181C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1181C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1181C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1181C7),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  S1181C9  : S19490C10_nt , virtual S19490C26 , virtual S19490C18 {
  ~S1181C9(); // tgen
  S1181C9(); // tgen
};
//SIG(-1 S1181C9) C1{ BC2{ m Fp} VBC3{ m} VBC4{ m}}


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

static void Test_S1181C9()
{
  extern Class_Descriptor cd_S1181C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1181C9, buf);
    S1181C9 *dp, &lv = *(dp=new (buf) S1181C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1181C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C9)");
    check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S1181C9");
    check_base_class_offset(lv, (S19490C26*), 0, "S1181C9");
    check_base_class_offset(lv, (S19490C18*), 0, "S1181C9");
    test_class_info(&lv, &cd_S1181C9);
    dp->~S1181C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C9(Test_S1181C9, "S1181C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1181C9C1Ev();
extern void _ZN7S1181C9D1Ev();
Name_Map name_map_S1181C9[] = {
  NSPAIR(_ZN7S1181C9C1Ev),
  NSPAIR(_ZN7S1181C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S1181C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1181C9[];
static  VTBL_ENTRY vtc_S1181C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
extern VTBL_ENTRY _ZTV7S1181C9[];
static  VTT_ENTRY vtt_S1181C9[] = {
  {&(_ZTV7S1181C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
Class_Descriptor cd_S1181C9 = {  "S1181C9", // class name
  bases_S1181C9, 3,
  &(vtc_S1181C9[0]), // expected_vtbl_contents
  &(vtt_S1181C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1181C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1181C9),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1181C9),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  S1181C6  : virtual S1181C7 , S19490C10_nt , virtual S1181C9 {
  ::S1181C9 s1181c6f0;
  ~S1181C6(); // tgen
  S1181C6(); // tgen
};
//SIG(-1 S1181C6) C1{ VBC2{ VBC3{ m} Fp[2]} BC4{ m Fp} VBC5{ BC4 VBC3 VBC6{ m}} FC5}


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

static void Test_S1181C6()
{
  extern Class_Descriptor cd_S1181C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S1181C6, buf);
    S1181C6 *dp, &lv = *(dp=new (buf) S1181C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S1181C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C6)");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), 0, "S1181C6");
    check_base_class_offset(lv, (S19490C26*)(S1181C9*), 0, "S1181C6");
    check_base_class_offset(lv, (S1181C7*), ABISELECT(32,16), "S1181C6");
    /*is_ambiguous_... S1181C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S1181C6");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*), ABISELECT(64,32), "S1181C6");
    check_base_class_offset(lv, (S19490C18*)(S1181C9*), 0, "S1181C6");
    check_base_class_offset(lv, (S1181C9*), ABISELECT(56,28), "S1181C6");
    check_field_offset(lv, s1181c6f0, ABISELECT(16,8), "S1181C6.s1181c6f0");
    test_class_info(&lv, &cd_S1181C6);
    dp->~S1181C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C6(Test_S1181C6, "S1181C6", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S1181C6C1Ev();
extern void _ZN7S1181C6D1Ev();
Name_Map name_map_S1181C6[] = {
  NSPAIR(_ZN7S1181C6C1Ev),
  NSPAIR(_ZN7S1181C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
static Base_Class bases_S1181C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C7,    ABISELECT(32,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1181C9,    ABISELECT(56,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1181C6[];
static  VTBL_ENTRY vtc_S1181C6[] = {
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
extern VTBL_ENTRY _ZTV7S1181C6[];
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C6[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
static  VTT_ENTRY vtt_S1181C6[] = {
  {&(_ZTV7S1181C6[6]),  6,13},
  {&(_ZTV7S1181C6[9]),  9,13},
  {&(_ZTV7S1181C6[13]),  13,13},
  {&(_tg__ZTV7S1181C7__7S1181C6[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1181C6[];
extern  VTBL_ENTRY _ZTV7S1181C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C6[];
Class_Descriptor cd_S1181C6 = {  "S1181C6", // class name
  bases_S1181C6, 6,
  &(vtc_S1181C6[0]), // expected_vtbl_contents
  &(vtt_S1181C6[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S1181C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1181C6),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1181C6),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1181C12  : S19490C10_nt , S19490C18 , S19490C26 {
};
//SIG(-1 S1181C12) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S1181C12()
{
  extern Class_Descriptor cd_S1181C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1181C12, buf);
    S1181C12 &lv = *(new (buf) S1181C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1181C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C12)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S1181C12");
    check_base_class_offset(lv, (S19490C18*), 0, "S1181C12");
    check_base_class_offset(lv, (S19490C26*), 0, "S1181C12");
    test_class_info(&lv, &cd_S1181C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C12(Test_S1181C12, "S1181C12", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S1181C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C12[];
Class_Descriptor cd_S1181C12 = {  "S1181C12", // class name
  bases_S1181C12, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1181C12),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1181C14  : virtual S19490C26 {
  int s1181c14f0;
  ~S1181C14(); // tgen
  S1181C14(); // tgen
};
//SIG(-1 S1181C14) C1{ VBC2{ m} Fi}


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

static void Test_S1181C14()
{
  extern Class_Descriptor cd_S1181C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1181C14, buf);
    S1181C14 *dp, &lv = *(dp=new (buf) S1181C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1181C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C14)");
    check_base_class_offset(lv, (S19490C26*), 0, "S1181C14");
    check_field_offset(lv, s1181c14f0, ABISELECT(8,4), "S1181C14.s1181c14f0");
    test_class_info(&lv, &cd_S1181C14);
    dp->~S1181C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C14(Test_S1181C14, "S1181C14", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1181C14C1Ev();
extern void _ZN8S1181C14D1Ev();
Name_Map name_map_S1181C14[] = {
  NSPAIR(_ZN8S1181C14C1Ev),
  NSPAIR(_ZN8S1181C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S1181C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S1181C14[];
static  VTBL_ENTRY vtc_S1181C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
extern VTBL_ENTRY _ZTV8S1181C14[];
static  VTT_ENTRY vtt_S1181C14[] = {
  {&(_ZTV8S1181C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
Class_Descriptor cd_S1181C14 = {  "S1181C14", // class name
  bases_S1181C14, 1,
  &(vtc_S1181C14[0]), // expected_vtbl_contents
  &(vtt_S1181C14[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1181C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1181C14),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C14),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  S1181C10  : virtual S19490C12 , S1181C12 , S19490C11 , virtual S1181C14 {
  ~S1181C10(); // tgen
  S1181C10(); // tgen
};
//SIG(-1 S1181C10) C1{ VBC2{ m} BC3{ BC4{ m Fp} BC5{ m} BC6{ m}} BC7{ m} VBC8{ VBC6 Fi}}


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

static void Test_S1181C10()
{
  extern Class_Descriptor cd_S1181C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1181C10, buf);
    S1181C10 *dp, &lv = *(dp=new (buf) S1181C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1181C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C10)");
    check_base_class_offset(lv, (S19490C12*), 0, "S1181C10");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(8,4), "S1181C10");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(8,4), "S1181C10");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(8,4), "S1181C10");
    check_base_class_offset(lv, (S1181C12*), ABISELECT(8,4), "S1181C10");
    check_base_class_offset(lv, (S19490C11*), 0, "S1181C10");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), 0, "S1181C10");
    check_base_class_offset(lv, (S1181C14*), ABISELECT(16,8), "S1181C10");
    test_class_info(&lv, &cd_S1181C10);
    dp->~S1181C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C10(Test_S1181C10, "S1181C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1181C10C1Ev();
extern void _ZN8S1181C10D1Ev();
Name_Map name_map_S1181C10[] = {
  NSPAIR(_ZN8S1181C10C1Ev),
  NSPAIR(_ZN8S1181C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
static Base_Class bases_S1181C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1181C14,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C10[];
static  VTBL_ENTRY vtc_S1181C10[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
extern VTBL_ENTRY _ZTV8S1181C10[];
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C10[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTT_ENTRY vtt_S1181C10[] = {
  {&(_ZTV8S1181C10[5]),  5,8},
  {&(_ZTV8S1181C10[8]),  8,8},
  {&(_tg__ZTV8S1181C14__8S1181C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C10[];
extern  VTBL_ENTRY _ZTV8S1181C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C10[];
Class_Descriptor cd_S1181C10 = {  "S1181C10", // class name
  bases_S1181C10, 8,
  &(vtc_S1181C10[0]), // expected_vtbl_contents
  &(vtt_S1181C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1181C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1181C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C10),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  S1181C15  : virtual S19490C18 {
  ~S1181C15(); // tgen
  S1181C15(); // tgen
};
//SIG(-1 S1181C15) C1{ VBC2{ m}}


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

static void Test_S1181C15()
{
  extern Class_Descriptor cd_S1181C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1181C15, buf);
    S1181C15 *dp, &lv = *(dp=new (buf) S1181C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1181C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C15)");
    check_base_class_offset(lv, (S19490C18*), 0, "S1181C15");
    test_class_info(&lv, &cd_S1181C15);
    dp->~S1181C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C15(Test_S1181C15, "S1181C15", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S1181C15C1Ev();
extern void _ZN8S1181C15D1Ev();
Name_Map name_map_S1181C15[] = {
  NSPAIR(_ZN8S1181C15C1Ev),
  NSPAIR(_ZN8S1181C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S1181C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S1181C15[];
static  VTBL_ENTRY vtc_S1181C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
extern VTBL_ENTRY _ZTV8S1181C15[];
static  VTT_ENTRY vtt_S1181C15[] = {
  {&(_ZTV8S1181C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
Class_Descriptor cd_S1181C15 = {  "S1181C15", // class name
  bases_S1181C15, 1,
  &(vtc_S1181C15[0]), // expected_vtbl_contents
  &(vtt_S1181C15[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1181C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1181C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C15),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  S1181C3  : S19490C26 , virtual S19490C18 , virtual S1181C6 , virtual S1181C10 , S1181C15 {
  int s1181c3f0;
  char s1181c3f1;
  ~S1181C3(); // tgen
  S1181C3(); // tgen
};
//SIG(-1 S1181C3) C1{ BC2{ m} VBC3{ m} VBC4{ VBC5{ VBC2 Fp[2]} BC6{ m Fp} VBC7{ BC6 VBC2 VBC3} FC7} VBC8{ VBC9{ m} BC10{ BC6 BC3 BC2} BC11{ m} VBC12{ VBC2 Fi}} BC13{ VBC3} Fi Fc}


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

static void Test_S1181C3()
{
  extern Class_Descriptor cd_S1181C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S1181C3, buf);
    S1181C3 *dp, &lv = *(dp=new (buf) S1181C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S1181C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C3)");
    /*is_ambiguous_... S1181C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1181C3");
    /*is_ambiguous_... S1181C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S1181C3");
    check_base_class_offset(lv, (S19490C18*)(S1181C9*), 0, "S1181C3");
    check_base_class_offset(lv, (S19490C18*)(S1181C15*), 0, "S1181C3");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), ABISELECT(72,40), "S1181C3");
    check_base_class_offset(lv, (S19490C26*)(S1181C9*), ABISELECT(72,40), "S1181C3");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), ABISELECT(72,40), "S1181C3");
    check_base_class_offset(lv, (S1181C7*)(S1181C6*), ABISELECT(48,28), "S1181C3");
    /*is_ambiguous_... S1181C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C6*), ABISELECT(24,16), "S1181C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*), ABISELECT(80,44), "S1181C3");
    check_base_class_offset(lv, (S1181C9*)(S1181C6*), ABISELECT(72,40), "S1181C3");
    check_base_class_offset(lv, (S1181C6*), ABISELECT(16,12), "S1181C3");
    check_base_class_offset(lv, (S19490C12*)(S1181C10*), 0, "S1181C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C10*), ABISELECT(96,52), "S1181C3");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C10*), ABISELECT(96,52), "S1181C3");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C10*), ABISELECT(96,52), "S1181C3");
    check_base_class_offset(lv, (S1181C12*)(S1181C10*), ABISELECT(96,52), "S1181C3");
    check_base_class_offset(lv, (S19490C11*)(S1181C10*), ABISELECT(88,48), "S1181C3");
    check_base_class_offset(lv, (S1181C14*)(S1181C10*), ABISELECT(104,56), "S1181C3");
    check_base_class_offset(lv, (S1181C10*), ABISELECT(88,48), "S1181C3");
    check_base_class_offset(lv, (S1181C15*), 0, "S1181C3");
    check_field_offset(lv, s1181c3f0, ABISELECT(8,4), "S1181C3.s1181c3f0");
    check_field_offset(lv, s1181c3f1, ABISELECT(12,8), "S1181C3.s1181c3f1");
    test_class_info(&lv, &cd_S1181C3);
    dp->~S1181C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C3(Test_S1181C3, "S1181C3", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN7S1181C3C1Ev();
extern void _ZN7S1181C3D1Ev();
Name_Map name_map_S1181C3[] = {
  NSPAIR(_ZN7S1181C3C1Ev),
  NSPAIR(_ZN7S1181C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
extern Class_Descriptor cd_S1181C6;
extern VTBL_ENTRY _ZTI7S1181C6[];
extern  VTBL_ENTRY _ZTV7S1181C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
extern Class_Descriptor cd_S1181C10;
extern VTBL_ENTRY _ZTI8S1181C10[];
extern  VTBL_ENTRY _ZTV8S1181C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C10[];
extern Class_Descriptor cd_S1181C15;
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
static Base_Class bases_S1181C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    3, //immediately_derived
  0, 1},
  {&cd_S1181C7,    ABISELECT(48,28), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S1181C9,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1181C6,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    12, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S1181C14,    ABISELECT(104,56), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S1181C10,    ABISELECT(88,48), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1181C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1181C3[];
static  VTBL_ENTRY vtc_S1181C3[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
  ABISELECT(-72,-40),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
  ABISELECT(-32,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
extern VTBL_ENTRY _ZTV7S1181C3[];
static  VTBL_ENTRY _tg__ZTV8S1181C15__7S1181C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C6__7S1181C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C6__7S1181C3[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C6__7S1181C3[] = {
  ABISELECT(-72,-40),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C3[] = {
  ABISELECT(-72,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__7S1181C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C10__7S1181C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__7S1181C3[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTT_ENTRY vtt_S1181C3[] = {
  {&(_ZTV7S1181C3[10]),  10,31},
  {&(_tg__ZTV8S1181C15__7S1181C3[3]),  3,3},
  {&(_ZTV7S1181C3[16]),  16,31},
  {&(_ZTV7S1181C3[19]),  19,31},
  {&(_ZTV7S1181C3[23]),  23,31},
  {&(_ZTV7S1181C3[28]),  28,31},
  {&(_ZTV7S1181C3[31]),  31,31},
  {&(_tg__ZTV7S1181C6__7S1181C3[6]),  6,6},
  {&(_tg__ZTV7S1181C7__7S1181C6__7S1181C3[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C6__7S1181C3[4]),  4,4},
  {&(_tg__ZTV7S1181C7__7S1181C3[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C3[4]),  4,4},
  {&(_tg__ZTV8S1181C10__7S1181C3[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C10__7S1181C3[3]),  3,3},
  {&(_tg__ZTV8S1181C14__7S1181C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1181C3[];
extern  VTBL_ENTRY _ZTV7S1181C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C3[];
Class_Descriptor cd_S1181C3 = {  "S1181C3", // class name
  bases_S1181C3, 17,
  &(vtc_S1181C3[0]), // expected_vtbl_contents
  &(vtt_S1181C3[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI7S1181C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1181C3),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1181C3),15, //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  S1181C18  : virtual S1181C12 , virtual S19490C11 , S19490C18 {
  ~S1181C18(); // tgen
  S1181C18(); // tgen
};
//SIG(-1 S1181C18) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S1181C18()
{
  extern Class_Descriptor cd_S1181C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1181C18, buf);
    S1181C18 *dp, &lv = *(dp=new (buf) S1181C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1181C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C18)");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(8,4), "S1181C18");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(8,4), "S1181C18");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(8,4), "S1181C18");
    check_base_class_offset(lv, (S1181C12*), ABISELECT(8,4), "S1181C18");
    check_base_class_offset(lv, (S19490C11*), 0, "S1181C18");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S1181C18");
    test_class_info(&lv, &cd_S1181C18);
    dp->~S1181C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C18(Test_S1181C18, "S1181C18", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1181C18C1Ev();
extern void _ZN8S1181C18D1Ev();
Name_Map name_map_S1181C18[] = {
  NSPAIR(_ZN8S1181C18C1Ev),
  NSPAIR(_ZN8S1181C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S1181C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1181C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C18[];
static  VTBL_ENTRY vtc_S1181C18[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
extern VTBL_ENTRY _ZTV8S1181C18[];
static  VTT_ENTRY vtt_S1181C18[] = {
  {&(_ZTV8S1181C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
Class_Descriptor cd_S1181C18 = {  "S1181C18", // class name
  bases_S1181C18, 6,
  &(vtc_S1181C18[0]), // expected_vtbl_contents
  &(vtt_S1181C18[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1181C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1181C18),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C18),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  S1181C17  : virtual S1181C18 , S19490C10_nt , S19490C26 {
  long double s1181c17f0;
  int s1181c17f1;
  virtual  ~S1181C17(); // _ZN8S1181C17D2Ev
  S1181C17(); // tgen
};
//SIG(-1 S1181C17) C1{ VBC2{ VBC3{ BC4{ m Fp} BC5{ m} BC6{ m}} VBC7{ m} BC5} BC4 BC6 vd FD Fi}


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

static void Test_S1181C17()
{
  extern Class_Descriptor cd_S1181C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S1181C17, buf);
    S1181C17 *dp, &lv = *(dp=new (buf) S1181C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S1181C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C17)");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(40,24), "S1181C17");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(40,24), "S1181C17");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(40,24), "S1181C17");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(40,24), "S1181C17");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C17");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), 0, "S1181C17");
    check_base_class_offset(lv, (S1181C18*), 0, "S1181C17");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S1181C17");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1181C17");
    check_field_offset(lv, s1181c17f0, ABISELECT(16,8), "S1181C17.s1181c17f0");
    check_field_offset(lv, s1181c17f1, ABISELECT(32,20), "S1181C17.s1181c17f1");
    test_class_info(&lv, &cd_S1181C17);
    dp->~S1181C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C17(Test_S1181C17, "S1181C17", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S1181C17C1Ev();
extern void _ZN8S1181C17D2Ev();
Name_Map name_map_S1181C17[] = {
  NSPAIR(_ZN8S1181C17C1Ev),
  NSPAIR(_ZN8S1181C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S1181C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1181C18,    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_S19490C10_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C17[];
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY vtc_S1181C17[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
extern VTBL_ENTRY _ZTV8S1181C17[];
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C17[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTT_ENTRY vtt_S1181C17[] = {
  {&(_ZTV8S1181C17[5]),  5,7},
  {&(_ZTV8S1181C17[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
Class_Descriptor cd_S1181C17 = {  "S1181C17", // class name
  bases_S1181C17, 9,
  &(vtc_S1181C17[0]), // expected_vtbl_contents
  &(vtt_S1181C17[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S1181C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1181C17),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C17),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  S1181C19  : S1181C7 {
  ~S1181C19(); // tgen
  S1181C19(); // tgen
};
//SIG(-1 S1181C19) C1{ BC2{ VBC3{ m} Fp[2]}}


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

static void Test_S1181C19()
{
  extern Class_Descriptor cd_S1181C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1181C19, buf);
    S1181C19 *dp, &lv = *(dp=new (buf) S1181C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1181C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C19)");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), 0, "S1181C19");
    check_base_class_offset(lv, (S1181C7*), 0, "S1181C19");
    test_class_info(&lv, &cd_S1181C19);
    dp->~S1181C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C19(Test_S1181C19, "S1181C19", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S1181C19C1Ev();
extern void _ZN8S1181C19D1Ev();
Name_Map name_map_S1181C19[] = {
  NSPAIR(_ZN8S1181C19C1Ev),
  NSPAIR(_ZN8S1181C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
static Base_Class bases_S1181C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C7,    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 _ZTI8S1181C19[];
static  VTBL_ENTRY vtc_S1181C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C19[0]),
};
extern VTBL_ENTRY _ZTV8S1181C19[];
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTT_ENTRY vtt_S1181C19[] = {
  {&(_ZTV8S1181C19[3]),  3,3},
  {&(_tg__ZTV7S1181C7__8S1181C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C19[];
extern  VTBL_ENTRY _ZTV8S1181C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C19[];
Class_Descriptor cd_S1181C19 = {  "S1181C19", // class name
  bases_S1181C19, 2,
  &(vtc_S1181C19[0]), // expected_vtbl_contents
  &(vtt_S1181C19[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S1181C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S1181C19),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C19),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  S1181C16  : S1181C9 , S1181C17 , S1181C19 , virtual S1181C15 {
  char s1181c16f0;
  void *s1181c16f1;
  virtual  ~S1181C16(); // _ZN8S1181C16D2Ev
  S1181C16(); // tgen
};
//SIG(-1 S1181C16) C1{ BC2{ BC3{ m Fp} VBC4{ m} VBC5{ m}} BC6{ VBC7{ VBC8{ BC3 BC5 BC4} VBC9{ m} BC5} BC3 BC4 vd FD Fi} BC10{ BC11{ VBC4 Fp[2]}} VBC12{ VBC5} vd Fc Fp}


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

static void Test_S1181C16()
{
  extern Class_Descriptor cd_S1181C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S1181C16, buf);
    S1181C16 *dp, &lv = *(dp=new (buf) S1181C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S1181C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C16)");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*), ABISELECT(8,4), "S1181C16");
    check_base_class_offset(lv, (S19490C26*)(S1181C9*), 0, "S1181C16");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*)(S1181C19*), 0, "S1181C16");
    check_base_class_offset(lv, (S19490C18*)(S1181C9*), 0, "S1181C16");
    check_base_class_offset(lv, (S19490C18*)(S1181C15*), 0, "S1181C16");
    check_base_class_offset(lv, (S1181C9*), 0, "S1181C16");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(96,52), "S1181C16");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(96,52), "S1181C16");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(96,52), "S1181C16");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(96,52), "S1181C16");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C16");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), ABISELECT(16,8), "S1181C16");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*), ABISELECT(16,8), "S1181C16");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*), ABISELECT(24,12), "S1181C16");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*), ABISELECT(16,8), "S1181C16");
    check_base_class_offset(lv, (S1181C17*), ABISELECT(16,8), "S1181C16");
    check_base_class_offset(lv, (S1181C7*)(S1181C19*), ABISELECT(56,32), "S1181C16");
    check_base_class_offset(lv, (S1181C19*), ABISELECT(56,32), "S1181C16");
    check_base_class_offset(lv, (S1181C15*), ABISELECT(104,56), "S1181C16");
    check_field_offset(lv, s1181c16f0, ABISELECT(80,44), "S1181C16.s1181c16f0");
    check_field_offset(lv, s1181c16f1, ABISELECT(88,48), "S1181C16.s1181c16f1");
    test_class_info(&lv, &cd_S1181C16);
    dp->~S1181C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C16(Test_S1181C16, "S1181C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S1181C16C1Ev();
extern void _ZN8S1181C16D2Ev();
Name_Map name_map_S1181C16[] = {
  NSPAIR(_ZN8S1181C16C1Ev),
  NSPAIR(_ZN8S1181C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S1181C19;
extern VTBL_ENTRY _ZTI8S1181C19[];
extern  VTBL_ENTRY _ZTV8S1181C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C19[];
extern Class_Descriptor cd_S1181C15;
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
static Base_Class bases_S1181C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C9,    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_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    7, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    10, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1181C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1181C17,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1181C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1181C19,    ABISELECT(56,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1181C15,    ABISELECT(104,56), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C16[];
extern void _ZN8S1181C16D1Ev();
extern void _ZN8S1181C16D0Ev();
extern void ABISELECT(_ZThn16_N8S1181C16D1Ev,_ZThn8_N8S1181C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1181C16D0Ev,_ZThn8_N8S1181C16D0Ev)();
static  VTBL_ENTRY vtc_S1181C16[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(96,52),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  (VTBL_ENTRY)&_ZN8S1181C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C16D0Ev,
  0,
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C16D1Ev,_ZThn8_N8S1181C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C16D0Ev,_ZThn8_N8S1181C16D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
};
extern VTBL_ENTRY _ZTV8S1181C16[];
static  VTBL_ENTRY _tg__ZTV7S1181C9__8S1181C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C17__8S1181C16[] = {
  0,
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C19__8S1181C16[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C19[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C78S1181C19__8S1181C16[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C15__8S1181C16[] = {
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
static  VTT_ENTRY vtt_S1181C16[] = {
  {&(_ZTV8S1181C16[8]),  8,23},
  {&(_tg__ZTV7S1181C9__8S1181C16[4]),  4,4},
  {&(_tg__ZTV8S1181C17__8S1181C16[5]),  5,7},
  {&(_tg__ZTV8S1181C17__8S1181C16[5]),  5,7},
  {&(_tg__ZTV8S1181C19__8S1181C16[3]),  3,3},
  {&(_tg__ZTV7S1181C78S1181C19__8S1181C16[3]),  3,3},
  {&(_ZTV8S1181C16[15]),  15,23},
  {&(_ZTV8S1181C16[15]),  15,23},
  {&(_ZTV8S1181C16[20]),  20,23},
  {&(_ZTV8S1181C16[23]),  23,23},
  {&(_tg__ZTV8S1181C18__8S1181C16[4]),  4,4},
  {&(_tg__ZTV8S1181C15__8S1181C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C16[];
extern  VTBL_ENTRY _ZTV8S1181C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C16[];
Class_Descriptor cd_S1181C16 = {  "S1181C16", // class name
  bases_S1181C16, 17,
  &(vtc_S1181C16[0]), // expected_vtbl_contents
  &(vtt_S1181C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S1181C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1181C16),23, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C16),12, //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  S1181C23  : S1181C17 , virtual S1181C7 , virtual S1181C14 {
  ~S1181C23(); // tgen
  S1181C23(); // tgen
};
//SIG(-1 S1181C23) C1{ BC2{ VBC3{ VBC4{ BC5{ m Fp} BC6{ m} BC7{ m}} VBC8{ m} BC6} BC5 BC7 vd FD Fi} VBC9{ VBC7 Fp[2]} VBC10{ VBC7 Fi}}


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

static void Test_S1181C23()
{
  extern Class_Descriptor cd_S1181C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S1181C23, buf);
    S1181C23 *dp, &lv = *(dp=new (buf) S1181C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S1181C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C23)");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(40,24), "S1181C23");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(40,24), "S1181C23");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(40,24), "S1181C23");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(40,24), "S1181C23");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C23");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), 0, "S1181C23");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*), 0, "S1181C23");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*), ABISELECT(8,4), "S1181C23");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*), 0, "S1181C23");
    check_base_class_offset(lv, (S1181C17*), 0, "S1181C23");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), ABISELECT(72,40), "S1181C23");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), ABISELECT(72,40), "S1181C23");
    check_base_class_offset(lv, (S1181C7*), ABISELECT(48,28), "S1181C23");
    check_base_class_offset(lv, (S1181C14*), ABISELECT(72,40), "S1181C23");
    test_class_info(&lv, &cd_S1181C23);
    dp->~S1181C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C23(Test_S1181C23, "S1181C23", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN8S1181C23C1Ev();
extern void _ZN8S1181C23D1Ev();
Name_Map name_map_S1181C23[] = {
  NSPAIR(_ZN8S1181C23C1Ev),
  NSPAIR(_ZN8S1181C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
static Base_Class bases_S1181C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1181C18,    0, //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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1181C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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, 1},
  {&cd_S1181C7,    ABISELECT(48,28), //bcp->offset
    10, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1181C14,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C23[];
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY vtc_S1181C23[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
extern VTBL_ENTRY _ZTV8S1181C23[];
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C17__8S1181C23[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C23[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C23[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C23[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTT_ENTRY vtt_S1181C23[] = {
  {&(_ZTV8S1181C23[8]),  8,16},
  {&(_tg__ZTV8S1181C17__8S1181C23[5]),  5,7},
  {&(_tg__ZTV8S1181C17__8S1181C23[5]),  5,7},
  {&(_ZTV8S1181C23[8]),  8,16},
  {&(_ZTV8S1181C23[13]),  13,16},
  {&(_ZTV8S1181C23[16]),  16,16},
  {&(_tg__ZTV8S1181C18__8S1181C23[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C23[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C23[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
Class_Descriptor cd_S1181C23 = {  "S1181C23", // class name
  bases_S1181C23, 13,
  &(vtc_S1181C23[0]), // expected_vtbl_contents
  &(vtt_S1181C23[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI8S1181C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1181C23),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C23),9, //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  S1181C21  : virtual S1181C7 , virtual S19490C10_nt , virtual S1181C10 , virtual S19490C7 , virtual S1181C23 {
  ~S1181C21(); // tgen
  S1181C21(); // tgen
};
//SIG(-1 S1181C21) C1{ VBC2{ VBC3{ m} Fp[2]} VBC4{ m Fp} VBC5{ VBC6{ m} BC7{ BC4 BC8{ m} BC3} BC9{ m} VBC10{ VBC3 Fi}} VBC11{ m} VBC12{ BC13{ VBC14{ VBC7 VBC9 BC8} BC4 BC3 vd FD Fi} VBC2 VBC10}}


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

static void Test_S1181C21()
{
  extern Class_Descriptor cd_S1181C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S1181C21, buf);
    S1181C21 *dp, &lv = *(dp=new (buf) S1181C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S1181C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C21)");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), 0, "S1181C21");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), 0, "S1181C21");
    check_base_class_offset(lv, (S1181C7*), ABISELECT(8,4), "S1181C21");
    check_base_class_offset(lv, (S1181C7*)(S1181C23*), ABISELECT(8,4), "S1181C21");
    /*is_ambiguous_... S1181C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(32,16), "S1181C21");
    check_base_class_offset(lv, (S19490C12*)(S1181C10*), 0, "S1181C21");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C10*), ABISELECT(48,24), "S1181C21");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C10*), ABISELECT(48,24), "S1181C21");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C10*), ABISELECT(48,24), "S1181C21");
    check_base_class_offset(lv, (S1181C12*)(S1181C10*), ABISELECT(48,24), "S1181C21");
    check_base_class_offset(lv, (S19490C11*)(S1181C10*), ABISELECT(40,20), "S1181C21");
    check_base_class_offset(lv, (S1181C14*)(S1181C10*), ABISELECT(56,28), "S1181C21");
    check_base_class_offset(lv, (S1181C14*)(S1181C23*), ABISELECT(56,28), "S1181C21");
    check_base_class_offset(lv, (S1181C10*), ABISELECT(40,20), "S1181C21");
    check_base_class_offset(lv, (S19490C7*), 0, "S1181C21");
    /*is_ambiguous_... S1181C21::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(120,60), "S1181C21");
    /*is_ambiguous_... S1181C21::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(120,60), "S1181C21");
    /*is_ambiguous_... S1181C21::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(120,60), "S1181C21");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(120,60), "S1181C21");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C21");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), 0, "S1181C21");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*), 0, "S1181C21");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*), ABISELECT(88,40), "S1181C21");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*), ABISELECT(80,36), "S1181C21");
    check_base_class_offset(lv, (S1181C17*)(S1181C23*), ABISELECT(80,36), "S1181C21");
    check_base_class_offset(lv, (S1181C23*), ABISELECT(80,36), "S1181C21");
    test_class_info(&lv, &cd_S1181C21);
    dp->~S1181C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C21(Test_S1181C21, "S1181C21", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S1181C21C1Ev();
extern void _ZN8S1181C21D1Ev();
Name_Map name_map_S1181C21[] = {
  NSPAIR(_ZN8S1181C21C1Ev),
  NSPAIR(_ZN8S1181C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
extern Class_Descriptor cd_S1181C10;
extern VTBL_ENTRY _ZTI8S1181C10[];
extern  VTBL_ENTRY _ZTV8S1181C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C10[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
static Base_Class bases_S1181C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C7,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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_S19490C10_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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_S19490C18,    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_S19490C26,    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_S1181C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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_S1181C14,    ABISELECT(56,28), //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
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1181C10,    ABISELECT(40,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    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_S19490C18,    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_S19490C26,    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_S1181C12,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1181C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(88,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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(80,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
    21, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1181C23,    ABISELECT(80,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C21[];
extern void _ZN8S1181C21D1Ev();
extern void _ZN8S1181C21D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev)();
extern void ABISELECT(_ZThn80_N8S1181C21D1Ev,_ZThn36_N8S1181C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev)();
extern void ABISELECT(_ZThn80_N8S1181C21D0Ev,_ZThn36_N8S1181C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1181C21[] = {
  0,
  ABISELECT(80,36),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&_ZN8S1181C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C21D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  ABISELECT(-80,-36),
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S1181C21[];
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C21[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C21[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C10__8S1181C21[] = {
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C21[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C21[] = {
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C23__8S1181C21[] = {
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C23__8S1181C21[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C23__8S1181C21[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C23__8S1181C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,32),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C23__8S1181C21[] = {
  ABISELECT(-56,-28),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C21[] = {
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTT_ENTRY vtt_S1181C21[] = {
  {&(_ZTV8S1181C21[13]),  13,37},
  {&(_ZTV8S1181C21[18]),  18,37},
  {&(_ZTV8S1181C21[23]),  23,37},
  {&(_ZTV8S1181C21[26]),  26,37},
  {&(_ZTV8S1181C21[35]),  35,37},
  {&(_ZTV8S1181C21[13]),  13,37},
  {&(_tg__ZTV7S1181C7__8S1181C21[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C21[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C10__8S1181C21[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C21[3]),  3,3},
  {&(_tg__ZTV8S1181C23__8S1181C21[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C23__8S1181C21[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C23__8S1181C21[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C23__8S1181C21[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C23__8S1181C21[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C23__8S1181C21[3]),  3,3},
  {&(_tg__ZTV8S1181C18__8S1181C21[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1181C21[];
extern  VTBL_ENTRY _ZTV8S1181C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C21[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C21D0Ev,_ZThn36_N8S1181C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C21D1Ev,_ZThn36_N8S1181C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1181C21 = {  "S1181C21", // class name
  bases_S1181C21, 23,
  &(vtc_S1181C21[0]), // expected_vtbl_contents
  &(vtt_S1181C21[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S1181C21),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1181C21),37, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C21),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1181C25  : S1181C23 {
  virtual  ~S1181C25(); // _ZN8S1181C25D2Ev
  S1181C25(); // tgen
};
//SIG(-1 S1181C25) C1{ BC2{ BC3{ VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} BC6 BC8 vd FD Fi} VBC10{ VBC8 Fp[2]} VBC11{ VBC8 Fi}} vd}


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

static void Test_S1181C25()
{
  extern Class_Descriptor cd_S1181C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S1181C25, buf);
    S1181C25 *dp, &lv = *(dp=new (buf) S1181C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S1181C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C25)");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(40,24), "S1181C25");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(40,24), "S1181C25");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(40,24), "S1181C25");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(40,24), "S1181C25");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C25");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), 0, "S1181C25");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*), 0, "S1181C25");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*), ABISELECT(8,4), "S1181C25");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*), 0, "S1181C25");
    check_base_class_offset(lv, (S1181C17*)(S1181C23*), 0, "S1181C25");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), ABISELECT(72,40), "S1181C25");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), ABISELECT(72,40), "S1181C25");
    check_base_class_offset(lv, (S1181C7*)(S1181C23*), ABISELECT(48,28), "S1181C25");
    check_base_class_offset(lv, (S1181C14*)(S1181C23*), ABISELECT(72,40), "S1181C25");
    check_base_class_offset(lv, (S1181C23*), 0, "S1181C25");
    test_class_info(&lv, &cd_S1181C25);
    dp->~S1181C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C25(Test_S1181C25, "S1181C25", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN8S1181C25C1Ev();
extern void _ZN8S1181C25D2Ev();
Name_Map name_map_S1181C25[] = {
  NSPAIR(_ZN8S1181C25C1Ev),
  NSPAIR(_ZN8S1181C25D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
static Base_Class bases_S1181C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1181C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1181C17,    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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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, 1},
  {&cd_S1181C7,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1181C14,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1181C23,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C25[];
extern void _ZN8S1181C25D1Ev();
extern void _ZN8S1181C25D0Ev();
static  VTBL_ENTRY vtc_S1181C25[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
  (VTBL_ENTRY)&_ZN8S1181C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C25D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
extern VTBL_ENTRY _ZTV8S1181C25[];
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C25[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C23__8S1181C25[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C23__8S1181C25[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C23__8S1181C25[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C25[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C25[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C25[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTT_ENTRY vtt_S1181C25[] = {
  {&(_ZTV8S1181C25[8]),  8,16},
  {&(_tg__ZTV8S1181C23__8S1181C25[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C23__8S1181C25[5]),  5,7},
  {&(_tg__ZTV8S1181C178S1181C23__8S1181C25[5]),  5,7},
  {&(_tg__ZTV8S1181C23__8S1181C25[8]),  8,10},
  {&(_tg__ZTV7S1181C7__8S1181C23__8S1181C25[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C23__8S1181C25[3]),  3,3},
  {&(_ZTV8S1181C25[8]),  8,16},
  {&(_ZTV8S1181C25[13]),  13,16},
  {&(_ZTV8S1181C25[16]),  16,16},
  {&(_tg__ZTV8S1181C18__8S1181C25[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C25[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C25[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C25[];
extern  VTBL_ENTRY _ZTV8S1181C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C25[];
Class_Descriptor cd_S1181C25 = {  "S1181C25", // class name
  bases_S1181C25, 14,
  &(vtc_S1181C25[0]), // expected_vtbl_contents
  &(vtt_S1181C25[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI8S1181C25),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S1181C25),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C25),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  S1181C20  : virtual S1181C14 , S1181C21 , S19490C6_nt , S1181C25 {
  int s1181c20f0[2];
  virtual  ~S1181C20(); // _ZN8S1181C20D2Ev
  S1181C20(); // tgen
};
//SIG(-1 S1181C20) C1{ VBC2{ VBC3{ m} Fi} BC4{ VBC5{ VBC3 Fp[2]} VBC6{ m Fp} VBC7{ VBC8{ m} BC9{ BC6 BC10{ m} BC3} BC11{ m} VBC2} VBC12{ m} VBC13{ BC14{ VBC15{ VBC9 VBC11 BC10} BC6 BC3 vd FD Fi} VBC5 VBC2}} BC16{ m} BC17{ BC13 vd} vd Fi[2]}


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

static void Test_S1181C20()
{
  extern Class_Descriptor cd_S1181C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S1181C20, buf);
    S1181C20 *dp, &lv = *(dp=new (buf) S1181C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S1181C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C20)");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), 0, "S1181C20");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*), 0, "S1181C20");
    check_base_class_offset(lv, (S1181C14*), ABISELECT(64,36), "S1181C20");
    check_base_class_offset(lv, (S1181C14*)(S1181C10*), ABISELECT(64,36), "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C14*)(S1181C23*), ABISELECT(64,36), "S1181C20");
    check_base_class_offset(lv, (S1181C14*)(S1181C23*)(S1181C25*), ABISELECT(64,36), "S1181C20");
    check_base_class_offset(lv, (S1181C7*)(S1181C21*), ABISELECT(80,44), "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C7*)(S1181C23*), ABISELECT(80,44), "S1181C20");
    check_base_class_offset(lv, (S1181C7*)(S1181C23*)(S1181C25*), ABISELECT(80,44), "S1181C20");
    /*is_ambiguous_... S1181C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C21*), ABISELECT(104,56), "S1181C20");
    check_base_class_offset(lv, (S19490C12*)(S1181C10*), 0, "S1181C20");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C10*), ABISELECT(120,64), "S1181C20");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C10*), ABISELECT(120,64), "S1181C20");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C10*), ABISELECT(120,64), "S1181C20");
    check_base_class_offset(lv, (S1181C12*)(S1181C10*), ABISELECT(120,64), "S1181C20");
    check_base_class_offset(lv, (S19490C11*)(S1181C10*), ABISELECT(112,60), "S1181C20");
    check_base_class_offset(lv, (S1181C10*)(S1181C21*), ABISELECT(112,60), "S1181C20");
    check_base_class_offset(lv, (S19490C7*)(S1181C21*), 0, "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(168,92), "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(168,92), "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(168,92), "S1181C20");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(168,92), "S1181C20");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C20");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), 0, "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*), 0, "S1181C20");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*)(S1181C25*), 0, "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C23 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*), ABISELECT(136,72), "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C23 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*), ABISELECT(128,68), "S1181C20");
    /*is_ambiguous_... S1181C20::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C17*)(S1181C23*), ABISELECT(128,68), "S1181C20");
    check_base_class_offset(lv, (S1181C23*)(S1181C21*), ABISELECT(128,68), "S1181C20");
    check_base_class_offset(lv, (S1181C21*), 0, "S1181C20");
    check_base_class_offset(lv, (S19490C6_nt*), 0, "S1181C20");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*)(S1181C25*), ABISELECT(24,8), "S1181C20");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*)(S1181C25*), ABISELECT(16,4), "S1181C20");
    check_base_class_offset(lv, (S1181C17*)(S1181C23*)(S1181C25*), ABISELECT(16,4), "S1181C20");
    check_base_class_offset(lv, (S1181C23*)(S1181C25*), ABISELECT(16,4), "S1181C20");
    check_base_class_offset(lv, (S1181C25*), ABISELECT(16,4), "S1181C20");
    check_field_offset(lv, s1181c20f0, ABISELECT(52,28), "S1181C20.s1181c20f0");
    test_class_info(&lv, &cd_S1181C20);
    dp->~S1181C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C20(Test_S1181C20, "S1181C20", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S1181C20C1Ev();
extern void _ZN8S1181C20D2Ev();
Name_Map name_map_S1181C20[] = {
  NSPAIR(_ZN8S1181C20C1Ev),
  NSPAIR(_ZN8S1181C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1181C10;
extern VTBL_ENTRY _ZTI8S1181C10[];
extern  VTBL_ENTRY _ZTV8S1181C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C10[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
extern Class_Descriptor cd_S1181C21;
extern VTBL_ENTRY _ZTI8S1181C21[];
extern  VTBL_ENTRY _ZTV8S1181C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C21[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
extern Class_Descriptor cd_S1181C25;
extern VTBL_ENTRY _ZTI8S1181C25[];
extern  VTBL_ENTRY _ZTV8S1181C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C25[];
static Base_Class bases_S1181C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C14,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1181C7,    ABISELECT(80,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    23, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    8, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    10, //immediately_derived
  0, 0},
  {&cd_S1181C10,    ABISELECT(112,60), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    15, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1181C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_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_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1181C23,    ABISELECT(128,68), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1181C21,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1181C23,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S1181C25,    ABISELECT(16,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C20[];
extern void _ZN8S1181C20D1Ev();
extern void _ZN8S1181C20D0Ev();
extern void ABISELECT(_ZThn16_N8S1181C20D1Ev,_ZThn4_N8S1181C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S1181C20D0Ev,_ZThn4_N8S1181C20D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev)();
extern void ABISELECT(_ZThn128_N8S1181C20D1Ev,_ZThn68_N8S1181C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev)();
extern void ABISELECT(_ZThn128_N8S1181C20D0Ev,_ZThn68_N8S1181C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1181C20[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&_ZN8S1181C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C20D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C20D1Ev,_ZThn4_N8S1181C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C20D0Ev,_ZThn4_N8S1181C20D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S1181C20[];
extern void _ZN8S1181C21D1Ev();
extern void _ZN8S1181C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C21__8S1181C20[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&_ZN8S1181C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C21__8S1181C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C21__8S1181C20[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C21__8S1181C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev)();
extern void ABISELECT(_ZThn128_N8S1181C21D1Ev,_ZThn68_N8S1181C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev)();
extern void ABISELECT(_ZThn128_N8S1181C21D0Ev,_ZThn68_N8S1181C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C21__8S1181C20[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev),
};
extern void _ZN8S1181C25D1Ev();
extern void _ZN8S1181C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C25__8S1181C20[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
  (VTBL_ENTRY)&_ZN8S1181C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C25D0Ev,
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C238S1181C25__A1__8S1181C20[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C238S1181C25__A1__8S1181C20[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C238S1181C25__A1__8S1181C20[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C238S1181C25__A1__8S1181C20[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C238S1181C25__A1__8S1181C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C238S1181C25__A1__8S1181C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C25__8S1181C20[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C25__8S1181C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C25__8S1181C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C20[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C20[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C20[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C10__8S1181C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C23__8S1181C20[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C23__8S1181C20[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C23__8S1181C20[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C23__8S1181C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C23__8S1181C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C20[] = {
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTT_ENTRY vtt_S1181C20[] = {
  {&(_ZTV8S1181C20[13]),  13,47},
  {&(_tg__ZTV8S1181C21__8S1181C20[13]),  13,15},
  {&(_tg__ZTV7S1181C7__8S1181C21__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C21__8S1181C20[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C21__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C23__8S1181C21__8S1181C20[9]),  9,11},
  {&(_tg__ZTV8S1181C21__8S1181C20[13]),  13,15},
  {&(_tg__ZTV8S1181C25__8S1181C20[8]),  8,10},
  {&(_tg__ZTV8S1181C238S1181C25__A1__8S1181C20[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C238S1181C25__A1__8S1181C20[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C238S1181C25__A1__8S1181C20[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C238S1181C25__A1__8S1181C20[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C238S1181C25__A1__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C238S1181C25__A1__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C18__8S1181C25__8S1181C20[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C25__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C25__8S1181C20[3]),  3,3},
  {&(_ZTV8S1181C20[28]),  28,47},
  {&(_ZTV8S1181C20[31]),  31,47},
  {&(_ZTV8S1181C20[36]),  36,47},
  {&(_ZTV8S1181C20[45]),  45,47},
  {&(_ZTV8S1181C20[13]),  13,47},
  {&(_ZTV8S1181C20[23]),  23,47},
  {&(_tg__ZTV8S1181C14__8S1181C20[3]),  3,3},
  {&(_tg__ZTV7S1181C7__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C20[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C10__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C23__8S1181C20[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C23__8S1181C20[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C23__8S1181C20[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C23__8S1181C20[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C23__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C23__8S1181C20[3]),  3,3},
  {&(_tg__ZTV8S1181C18__8S1181C20[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1181C20[];
extern  VTBL_ENTRY _ZTV8S1181C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C20[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1181C21D0Ev,_ZThn68_N8S1181C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1181C21D1Ev,_ZThn68_N8S1181C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1181C20D0Ev,_ZThn68_N8S1181C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1181C20D1Ev,_ZThn68_N8S1181C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1181C20 = {  "S1181C20", // class name
  bases_S1181C20, 30,
  &(vtc_S1181C20[0]), // expected_vtbl_contents
  &(vtt_S1181C20[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S1181C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1181C20),47, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C20),34, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1181C26  : S19490C18 , virtual S19490C26 , S1181C12 {
  ~S1181C26(); // tgen
  S1181C26(); // tgen
};
//SIG(-1 S1181C26) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S1181C26()
{
  extern Class_Descriptor cd_S1181C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1181C26, buf);
    S1181C26 *dp, &lv = *(dp=new (buf) S1181C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1181C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1181C26)");
    /*is_ambiguous_... S1181C26::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S1181C26");
    /*is_ambiguous_... S1181C26::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1181C26");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(8,4), "S1181C26");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(8,4), "S1181C26");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(8,4), "S1181C26");
    check_base_class_offset(lv, (S1181C12*), ABISELECT(8,4), "S1181C26");
    test_class_info(&lv, &cd_S1181C26);
    dp->~S1181C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C26(Test_S1181C26, "S1181C26", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1181C26C1Ev();
extern void _ZN8S1181C26D1Ev();
Name_Map name_map_S1181C26[] = {
  NSPAIR(_ZN8S1181C26C1Ev),
  NSPAIR(_ZN8S1181C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
static Base_Class bases_S1181C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1181C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1181C26[];
static  VTBL_ENTRY vtc_S1181C26[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C26[0]),
};
extern VTBL_ENTRY _ZTV8S1181C26[];
static  VTT_ENTRY vtt_S1181C26[] = {
  {&(_ZTV8S1181C26[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1181C26[];
extern  VTBL_ENTRY _ZTV8S1181C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C26[];
Class_Descriptor cd_S1181C26 = {  "S1181C26", // class name
  bases_S1181C26, 6,
  &(vtc_S1181C26[0]), // expected_vtbl_contents
  &(vtt_S1181C26[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1181C26),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1181C26),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1181C26),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  S1181C2  : S1181C3 , S1181C16 , virtual S1181C20 , S1181C26 , virtual S1538C28_nt {
  __tsi64 s1181c2f0;
  virtual  ~S1181C2(); // _ZN7S1181C2D2Ev
  S1181C2(); // tgen
};
//SIG(-1 S1181C2) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ VBC6{ VBC3 Fp[2]} BC7{ m Fp} VBC8{ BC7 VBC3 VBC4} FC8} VBC9{ VBC10{ m} BC11{ BC7 BC4 BC3} BC12{ m} VBC13{ VBC3 Fi}} BC14{ VBC4} Fi Fc} BC15{ BC8 BC16{ VBC17{ VBC11 VBC12 BC4} BC7 BC3 vd FD Fi} BC18{ BC6} VBC14 vd Fc Fp} VBC19{ VBC13 BC20{ VBC6 VBC7 VBC9 VBC21{ m} VBC22{ BC16 VBC6 VBC13}} BC23{ m} BC24{ BC22 vd} vd Fi[2]} BC25{ BC4 VBC3 BC11} VBC26{ m} vd FL}


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

static void Test_S1181C2()
{
  extern Class_Descriptor cd_S1181C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,52)];
    init_test(&cd_S1181C2, buf);
    S1181C2 *dp, &lv = *(dp=new (buf) S1181C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,204), "sizeof(S1181C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C2)");
    /*is_ambiguous_... S1181C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C3*), 0, "S1181C2");
    /*is_ambiguous_... S1181C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C3*), 0, "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C9 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C9*), 0, "S1181C2");
    check_base_class_offset(lv, (S19490C18*)(S1181C15*)(S1181C3*), 0, "S1181C2");
    check_base_class_offset(lv, (S19490C18*)(S1181C9*)(S1181C16*), 0, "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C15 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C15*), 0, "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C7*), ABISELECT(192,108), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C9 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C9*), ABISELECT(192,108), "S1181C2");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), ABISELECT(192,108), "S1181C2");
    check_base_class_offset(lv, (S19490C26*)(S1181C9*)(S1181C16*), ABISELECT(192,108), "S1181C2");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*)(S1181C19*)(S1181C16*), ABISELECT(192,108), "S1181C2");
    /*is_ambiguous_... S1181C26::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C26*), ABISELECT(192,108), "S1181C2");
    check_base_class_offset(lv, (S1181C7*)(S1181C6*), ABISELECT(168,96), "S1181C2");
    check_base_class_offset(lv, (S1181C7*)(S1181C21*)(S1181C20*), ABISELECT(168,96), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C7*)(S1181C23*), ABISELECT(168,96), "S1181C2");
    check_base_class_offset(lv, (S1181C7*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(168,96), "S1181C2");
    /*is_ambiguous_... S1181C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C6*), ABISELECT(144,84), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*), ABISELECT(200,112), "S1181C2");
    check_base_class_offset(lv, (S1181C9*)(S1181C6*), ABISELECT(192,108), "S1181C2");
    check_base_class_offset(lv, (S1181C6*)(S1181C3*), ABISELECT(136,80), "S1181C2");
    check_base_class_offset(lv, (S19490C12*)(S1181C10*), 0, "S1181C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C10*), ABISELECT(216,120), "S1181C2");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C10*), ABISELECT(216,120), "S1181C2");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C10*), ABISELECT(216,120), "S1181C2");
    check_base_class_offset(lv, (S1181C12*)(S1181C10*), ABISELECT(216,120), "S1181C2");
    check_base_class_offset(lv, (S19490C11*)(S1181C10*), ABISELECT(208,116), "S1181C2");
    check_base_class_offset(lv, (S1181C14*)(S1181C10*), ABISELECT(224,124), "S1181C2");
    check_base_class_offset(lv, (S1181C14*)(S1181C20*), ABISELECT(224,124), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C14*)(S1181C23*), ABISELECT(224,124), "S1181C2");
    check_base_class_offset(lv, (S1181C14*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(224,124), "S1181C2");
    check_base_class_offset(lv, (S1181C10*)(S1181C3*), ABISELECT(208,116), "S1181C2");
    check_base_class_offset(lv, (S1181C10*)(S1181C21*)(S1181C20*), ABISELECT(208,116), "S1181C2");
    check_base_class_offset(lv, (S1181C15*)(S1181C3*), 0, "S1181C2");
    check_base_class_offset(lv, (S1181C3*), 0, "S1181C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*)(S1181C16*), ABISELECT(24,16), "S1181C2");
    check_base_class_offset(lv, (S1181C9*)(S1181C16*), ABISELECT(16,12), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(240,132), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(240,132), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(240,132), "S1181C2");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(240,132), "S1181C2");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C2");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), ABISELECT(32,20), "S1181C2");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C16*), ABISELECT(32,20), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*), ABISELECT(32,20), "S1181C2");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(32,20), "S1181C2");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C16*), ABISELECT(40,24), "S1181C2");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C16*), ABISELECT(32,20), "S1181C2");
    check_base_class_offset(lv, (S1181C17*)(S1181C16*), ABISELECT(32,20), "S1181C2");
    check_base_class_offset(lv, (S1181C7*)(S1181C19*)(S1181C16*), ABISELECT(72,44), "S1181C2");
    check_base_class_offset(lv, (S1181C19*)(S1181C16*), ABISELECT(72,44), "S1181C2");
    check_base_class_offset(lv, (S1181C15*)(S1181C16*), ABISELECT(248,136), "S1181C2");
    check_base_class_offset(lv, (S1181C16*), ABISELECT(16,12), "S1181C2");
    /*is_ambiguous_... S1181C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C21*)(S1181C20*), ABISELECT(320,176), "S1181C2");
    check_base_class_offset(lv, (S19490C7*)(S1181C21*)(S1181C20*), 0, "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C23 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*), ABISELECT(344,184), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C23 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*), ABISELECT(336,180), "S1181C2");
    /*is_ambiguous_... S1181C2::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C17*)(S1181C23*), ABISELECT(336,180), "S1181C2");
    check_base_class_offset(lv, (S1181C23*)(S1181C21*)(S1181C20*), ABISELECT(336,180), "S1181C2");
    check_base_class_offset(lv, (S1181C21*)(S1181C20*), ABISELECT(256,140), "S1181C2");
    check_base_class_offset(lv, (S19490C6_nt*)(S1181C20*), ABISELECT(256,140), "S1181C2");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(280,148), "S1181C2");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(272,144), "S1181C2");
    check_base_class_offset(lv, (S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(272,144), "S1181C2");
    check_base_class_offset(lv, (S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(272,144), "S1181C2");
    check_base_class_offset(lv, (S1181C25*)(S1181C20*), ABISELECT(272,144), "S1181C2");
    check_base_class_offset(lv, (S1181C20*), ABISELECT(256,140), "S1181C2");
    /*is_ambiguous_... S1181C26::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C26*), ABISELECT(112,64), "S1181C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C26*), ABISELECT(120,68), "S1181C2");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C26*), ABISELECT(120,68), "S1181C2");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C26*), ABISELECT(120,68), "S1181C2");
    check_base_class_offset(lv, (S1181C12*)(S1181C26*), ABISELECT(120,68), "S1181C2");
    check_base_class_offset(lv, (S1181C26*), ABISELECT(112,64), "S1181C2");
    check_base_class_offset(lv, (S1538C28_nt*), 0, "S1181C2");
    check_field_offset(lv, s1181c2f0, ABISELECT(128,72), "S1181C2.s1181c2f0");
    test_class_info(&lv, &cd_S1181C2);
    dp->~S1181C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C2(Test_S1181C2, "S1181C2", ABISELECT(384,204));

#else // __cplusplus

extern void _ZN7S1181C2C1Ev();
extern void _ZN7S1181C2D2Ev();
Name_Map name_map_S1181C2[] = {
  NSPAIR(_ZN7S1181C2C1Ev),
  NSPAIR(_ZN7S1181C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
extern Class_Descriptor cd_S1181C6;
extern VTBL_ENTRY _ZTI7S1181C6[];
extern  VTBL_ENTRY _ZTV7S1181C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
extern Class_Descriptor cd_S1181C10;
extern VTBL_ENTRY _ZTI8S1181C10[];
extern  VTBL_ENTRY _ZTV8S1181C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C10[];
extern Class_Descriptor cd_S1181C15;
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
extern Class_Descriptor cd_S1181C3;
extern VTBL_ENTRY _ZTI7S1181C3[];
extern  VTBL_ENTRY _ZTV7S1181C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S1181C19;
extern VTBL_ENTRY _ZTI8S1181C19[];
extern  VTBL_ENTRY _ZTV8S1181C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C19[];
extern Class_Descriptor cd_S1181C15;
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
extern Class_Descriptor cd_S1181C16;
extern VTBL_ENTRY _ZTI8S1181C16[];
extern  VTBL_ENTRY _ZTV8S1181C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
extern Class_Descriptor cd_S1181C21;
extern VTBL_ENTRY _ZTI8S1181C21[];
extern  VTBL_ENTRY _ZTV8S1181C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C21[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
extern Class_Descriptor cd_S1181C25;
extern VTBL_ENTRY _ZTI8S1181C25[];
extern  VTBL_ENTRY _ZTV8S1181C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C25[];
extern Class_Descriptor cd_S1181C20;
extern VTBL_ENTRY _ZTI8S1181C20[];
extern  VTBL_ENTRY _ZTV8S1181C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C20[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S1181C26;
extern VTBL_ENTRY _ZTI8S1181C26[];
extern  VTBL_ENTRY _ZTV8S1181C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C26[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
static Base_Class bases_S1181C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    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
    3, //immediately_derived
  0, 1},
  {&cd_S1181C7,    ABISELECT(168,96), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S1181C9,    ABISELECT(192,108), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1181C6,    ABISELECT(136,80), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    12, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S1181C14,    ABISELECT(224,124), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S1181C10,    ABISELECT(208,116), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S1181C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1181C3,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_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
    19, //immediately_derived
  0, 0},
  {&cd_S1181C9,    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
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(240,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
    23, //immediately_derived
  0, 0},
  {&cd_S1181C12,    ABISELECT(240,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
    26, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19490C18,    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
    26, //immediately_derived
  0, 0},
  {&cd_S1181C18,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    29, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    29, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1181C7,    ABISELECT(72,44), //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1181C19,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1181C15,    ABISELECT(248,136), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1181C16,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(320,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    38, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    38, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S1181C23,    ABISELECT(336,180), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S1181C21,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19490C6_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
    47, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    44, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    44, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1181C23,    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
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1181C25,    ABISELECT(272,144), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S1181C20,    ABISELECT(256,140), //bcp->offset
    68, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    52, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    53, //immediately_derived
  0, 0},
  {&cd_S1181C26,    ABISELECT(112,64), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1181C2[];
extern void _ZN7S1181C2D1Ev();
extern void _ZN7S1181C2D0Ev();
extern void ABISELECT(_ZThn16_N7S1181C2D1Ev,_ZThn12_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S1181C2D0Ev,_ZThn12_N7S1181C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S1181C2D1Ev,_ZThn20_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S1181C2D0Ev,_ZThn20_N7S1181C2D0Ev)();
extern void ABISELECT(_ZTv0_n112_N7S1181C2D1Ev,_ZTv0_n56_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S1181C2D1Ev,_ZThn140_N7S1181C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S1181C2D0Ev,_ZTv0_n56_N7S1181C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S1181C2D0Ev,_ZThn140_N7S1181C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N7S1181C2D1Ev,_ZTvn4_n56_N7S1181C2D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N7S1181C2D0Ev,_ZTvn4_n56_N7S1181C2D0Ev)();
extern void ABISELECT(_ZTv0_n72_N7S1181C2D1Ev,_ZTv0_n36_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S1181C2D1Ev,_ZThn180_N7S1181C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1181C2D0Ev,_ZTv0_n36_N7S1181C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S1181C2D0Ev,_ZThn180_N7S1181C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1181C2[] = {
  0,
  ABISELECT(336,180),
  0,
  ABISELECT(320,176),
  ABISELECT(256,140),
  ABISELECT(248,136),
  0,
  ABISELECT(240,132),
  ABISELECT(32,20),
  ABISELECT(224,124),
  0,
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(168,96),
  ABISELECT(136,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&_ZN7S1181C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1181C2D0Ev,
  ABISELECT(232,124),
  ABISELECT(-16,-12),
  ABISELECT(224,120),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1181C2D1Ev,_ZThn12_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1181C2D0Ev,_ZThn12_N7S1181C2D0Ev),
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1181C2D1Ev,_ZThn20_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1181C2D0Ev,_ZThn20_N7S1181C2D0Ev),
  ABISELECT(120,64),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(80,44),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(24,12),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(-192,-108),
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  ABISELECT(-256,-140),
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S1181C2D1Ev,_ZTv0_n56_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S1181C2D0Ev,_ZTv0_n56_N7S1181C2D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N7S1181C2D1Ev,_ZTvn4_n56_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N7S1181C2D0Ev,_ZTvn4_n56_N7S1181C2D0Ev),
  ABISELECT(-336,-180),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1181C2D1Ev,_ZTv0_n36_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1181C2D0Ev,_ZTv0_n36_N7S1181C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S1181C2[];
static  VTBL_ENTRY _tg__ZTV7S1181C3__7S1181C2[] = {
  ABISELECT(224,124),
  0,
  ABISELECT(208,116),
  ABISELECT(192,108),
  ABISELECT(192,108),
  ABISELECT(168,96),
  ABISELECT(136,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C157S1181C3__7S1181C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C6__7S1181C3__7S1181C2[] = {
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C3__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C3__7S1181C2[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__7S1181C3__7S1181C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__7S1181C3__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
extern void _ZN8S1181C16D1Ev();
extern void _ZN8S1181C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C16__7S1181C2[] = {
  ABISELECT(232,124),
  ABISELECT(-16,-12),
  ABISELECT(224,120),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  (VTBL_ENTRY)&_ZN8S1181C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C98S1181C16__A1__7S1181C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C16__7S1181C2[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C198S1181C16__7S1181C2[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C19[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C78S1181C198S1181C16__A1__7S1181C2[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
extern void ABISELECT(_ZThn16_N8S1181C16D1Ev,_ZThn8_N8S1181C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1181C16D0Ev,_ZThn8_N8S1181C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C17__8S1181C16__7S1181C2[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C16D1Ev,_ZThn8_N8S1181C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C16D0Ev,_ZThn8_N8S1181C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C19__8S1181C16__7S1181C2[] = {
  ABISELECT(120,64),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C15__8S1181C16__7S1181C2[] = {
  ABISELECT(-248,-136),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C26__7S1181C2[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C26[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C6__7S1181C2[] = {
  ABISELECT(-136,-80),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C6__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C6__7S1181C2[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C2[] = {
  ABISELECT(-192,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__7S1181C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C10__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__7S1181C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C15__A1__7S1181C2[] = {
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
extern void _ZN8S1181C20D1Ev();
extern void _ZN8S1181C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C20__7S1181C2[] = {
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&_ZN8S1181C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C20D0Ev,
};
extern void _ZN8S1181C21D1Ev();
extern void _ZN8S1181C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C218S1181C20__7S1181C2[] = {
  ABISELECT(-224,-120),
  ABISELECT(80,40),
  ABISELECT(-256,-140),
  ABISELECT(-32,-16),
  ABISELECT(-256,-140),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  ABISELECT(-64,-32),
  ABISELECT(-88,-44),
  ABISELECT(-256,-140),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&_ZN8S1181C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C218S1181C20__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C218S1181C20__7S1181C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C218S1181C20__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev)();
extern void ABISELECT(_ZThn80_N8S1181C21D1Ev,_ZThn40_N8S1181C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev)();
extern void ABISELECT(_ZThn80_N8S1181C21D0Ev,_ZThn40_N8S1181C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C218S1181C20__7S1181C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C218S1181C20__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
extern void _ZN8S1181C25D1Ev();
extern void _ZN8S1181C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C258S1181C20__7S1181C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
  (VTBL_ENTRY)&_ZN8S1181C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C25D0Ev,
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C238S1181C258S1181C20__A1__7S1181C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C2[] = {
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C238S1181C258S1181C20__A1__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C238S1181C258S1181C20__A1__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C238S1181C258S1181C20__A1__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C258S1181C20__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C258S1181C20__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C258S1181C20__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C20__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C20__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C20__7S1181C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-208,-116),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S1181C20D1Ev,_ZThn40_N8S1181C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S1181C20D0Ev,_ZThn40_N8S1181C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C20__7S1181C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C20__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
extern void ABISELECT(_ZThn16_N8S1181C20D1Ev,_ZThn4_N8S1181C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S1181C20D0Ev,_ZThn4_N8S1181C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C25__8S1181C20__7S1181C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(-80,-36),
  ABISELECT(-104,-48),
  ABISELECT(-240,-124),
  ABISELECT(-272,-144),
  ABISELECT(-32,-12),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C20D1Ev,_ZThn4_N8S1181C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C20D0Ev,_ZThn4_N8S1181C20D0Ev),
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C23__7S1181C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-168,-84),
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C23__A1__7S1181C2[] = {
  ABISELECT(-304,-160),
  ABISELECT(-336,-180),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C23__A1__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C23__7S1181C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(208,112),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C23__7S1181C2[] = {
  ABISELECT(24,12),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C23__7S1181C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTT_ENTRY vtt_S1181C2[] = {
  {&(_ZTV7S1181C2[19]),  19,105},
  {&(_tg__ZTV7S1181C3__7S1181C2[10]),  10,10},
  {&(_tg__ZTV8S1181C157S1181C3__7S1181C2[3]),  3,3},
  {&(_tg__ZTV7S1181C6__7S1181C3__7S1181C2[6]),  6,6},
  {&(_tg__ZTV7S1181C7__7S1181C3__7S1181C2[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C3__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C10__7S1181C3__7S1181C2[5]),  5,5},
  {&(_tg__ZTV8S1181C14__7S1181C3__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C16__7S1181C2[8]),  8,10},
  {&(_tg__ZTV7S1181C98S1181C16__A1__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C178S1181C16__7S1181C2[5]),  5,7},
  {&(_tg__ZTV8S1181C178S1181C16__7S1181C2[5]),  5,7},
  {&(_tg__ZTV8S1181C198S1181C16__7S1181C2[3]),  3,3},
  {&(_tg__ZTV7S1181C78S1181C198S1181C16__A1__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C17__8S1181C16__7S1181C2[5]),  5,7},
  {&(_tg__ZTV8S1181C17__8S1181C16__7S1181C2[5]),  5,7},
  {&(_tg__ZTV8S1181C19__8S1181C16__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C15__8S1181C16__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C26__7S1181C2[3]),  3,3},
  {&(_ZTV7S1181C2[50]),  50,105},
  {&(_ZTV7S1181C2[53]),  53,105},
  {&(_ZTV7S1181C2[57]),  57,105},
  {&(_ZTV7S1181C2[62]),  62,105},
  {&(_ZTV7S1181C2[65]),  65,105},
  {&(_ZTV7S1181C2[29]),  29,105},
  {&(_ZTV7S1181C2[36]),  36,105},
  {&(_ZTV7S1181C2[36]),  36,105},
  {&(_ZTV7S1181C2[41]),  41,105},
  {&(_ZTV7S1181C2[68]),  68,105},
  {&(_ZTV7S1181C2[82]),  82,105},
  {&(_ZTV7S1181C2[103]),  103,105},
  {&(_ZTV7S1181C2[92]),  92,105},
  {&(_ZTV7S1181C2[44]),  44,105},
  {&(_tg__ZTV7S1181C6__7S1181C2[6]),  6,6},
  {&(_tg__ZTV7S1181C7__7S1181C6__7S1181C2[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C6__7S1181C2[4]),  4,4},
  {&(_tg__ZTV7S1181C7__7S1181C2[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C10__7S1181C2[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C10__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C14__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C18__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C15__A1__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C20__7S1181C2[13]),  13,15},
  {&(_tg__ZTV8S1181C218S1181C20__7S1181C2[13]),  13,15},
  {&(_tg__ZTV7S1181C7__8S1181C218S1181C20__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C218S1181C20__7S1181C2[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C218S1181C20__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C23__8S1181C218S1181C20__7S1181C2[9]),  9,11},
  {&(_tg__ZTV8S1181C18__8S1181C218S1181C20__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C258S1181C20__7S1181C2[8]),  8,10},
  {&(_tg__ZTV8S1181C238S1181C258S1181C20__A1__7S1181C2[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C2[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C238S1181C258S1181C20__A1__7S1181C2[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C238S1181C258S1181C20__A1__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C238S1181C258S1181C20__A1__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C18__8S1181C258S1181C20__7S1181C2[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C258S1181C20__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C258S1181C20__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C20__7S1181C2[3]),  3,3},
  {&(_tg__ZTV7S1181C7__8S1181C20__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C20__7S1181C2[5]),  5,5},
  {&(_tg__ZTV8S1181C23__8S1181C20__7S1181C2[9]),  9,11},
  {&(_tg__ZTV8S1181C18__8S1181C20__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C25__8S1181C20__7S1181C2[8]),  8,10},
  {&(_tg__ZTV8S1181C23__7S1181C2[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C23__A1__7S1181C2[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C23__A1__7S1181C2[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C23__7S1181C2[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C23__7S1181C2[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C23__7S1181C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1181C2[];
extern  VTBL_ENTRY _ZTV7S1181C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C2[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C20D0Ev,_ZThn40_N8S1181C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C20D1Ev,_ZThn40_N8S1181C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C21D0Ev,_ZThn40_N8S1181C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C21D1Ev,_ZThn40_N8S1181C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1181C2D0Ev,_ZTv0_n36_N7S1181C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S1181C2D0Ev,_ZThn180_N7S1181C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1181C2D1Ev,_ZTv0_n36_N7S1181C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S1181C2D1Ev,_ZThn180_N7S1181C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S1181C2D0Ev,_ZTv0_n56_N7S1181C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S1181C2D0Ev,_ZThn140_N7S1181C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S1181C2D1Ev,_ZTv0_n56_N7S1181C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S1181C2D1Ev,_ZThn140_N7S1181C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1181C2 = {  "S1181C2", // class name
  bases_S1181C2, 55,
  &(vtc_S1181C2[0]), // expected_vtbl_contents
  &(vtt_S1181C2[0]), // expected_vtt_contents
  ABISELECT(384,204), // object size
  NSPAIRA(_ZTI7S1181C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1181C2),105, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1181C2),72, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1181C1  : S1181C2 {
  void *s1181c1f0;
  ~S1181C1(); // tgen
  S1181C1(); // tgen
};
//SIG(1 S1181C1) C1{ BC2{ BC3{ BC4{ m} VBC5{ m} VBC6{ VBC7{ VBC4 Fp[2]} BC8{ m Fp} VBC9{ BC8 VBC4 VBC5} FC9} VBC10{ VBC11{ m} BC12{ BC8 BC5 BC4} BC13{ m} VBC14{ VBC4 Fi}} BC15{ VBC5} Fi Fc} BC16{ BC9 BC17{ VBC18{ VBC12 VBC13 BC5} BC8 BC4 vd FD Fi} BC19{ BC7} VBC15 vd Fc Fp} VBC20{ VBC14 BC21{ VBC7 VBC8 VBC10 VBC22{ m} VBC23{ BC17 VBC7 VBC14}} BC24{ m} BC25{ BC23 vd} vd Fi[2]} BC26{ BC5 VBC4 BC12} VBC27{ m} vd FL} Fp}


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

static void Test_S1181C1()
{
  extern Class_Descriptor cd_S1181C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(26,53)];
    init_test(&cd_S1181C1, buf);
    S1181C1 *dp, &lv = *(dp=new (buf) S1181C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,208), "sizeof(S1181C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1181C1)");
    /*is_ambiguous_... S1181C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C3*)(S1181C2*), 0, "S1181C1");
    /*is_ambiguous_... S1181C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C3*)(S1181C2*), 0, "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C9 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C9*), 0, "S1181C1");
    check_base_class_offset(lv, (S19490C18*)(S1181C15*)(S1181C3*)(S1181C2*), 0, "S1181C1");
    check_base_class_offset(lv, (S19490C18*)(S1181C9*)(S1181C16*)(S1181C2*), 0, "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C15 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C15*), 0, "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C7*), ABISELECT(200,112), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C9 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C9*), ABISELECT(200,112), "S1181C1");
    check_base_class_offset(lv, (S19490C26*)(S1181C14*), ABISELECT(200,112), "S1181C1");
    check_base_class_offset(lv, (S19490C26*)(S1181C9*)(S1181C16*)(S1181C2*), ABISELECT(200,112), "S1181C1");
    check_base_class_offset(lv, (S19490C26*)(S1181C7*)(S1181C19*)(S1181C16*)(S1181C2*), ABISELECT(200,112), "S1181C1");
    /*is_ambiguous_... S1181C26::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C26*)(S1181C2*), ABISELECT(200,112), "S1181C1");
    check_base_class_offset(lv, (S1181C7*)(S1181C6*), ABISELECT(176,100), "S1181C1");
    check_base_class_offset(lv, (S1181C7*)(S1181C21*)(S1181C20*), ABISELECT(176,100), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C7*)(S1181C23*), ABISELECT(176,100), "S1181C1");
    check_base_class_offset(lv, (S1181C7*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(176,100), "S1181C1");
    /*is_ambiguous_... S1181C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C6*), ABISELECT(152,88), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*), ABISELECT(208,116), "S1181C1");
    check_base_class_offset(lv, (S1181C9*)(S1181C6*), ABISELECT(200,112), "S1181C1");
    check_base_class_offset(lv, (S1181C6*)(S1181C3*)(S1181C2*), ABISELECT(144,84), "S1181C1");
    check_base_class_offset(lv, (S19490C12*)(S1181C10*), 0, "S1181C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C10*), ABISELECT(224,124), "S1181C1");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C10*), ABISELECT(224,124), "S1181C1");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C10*), ABISELECT(224,124), "S1181C1");
    check_base_class_offset(lv, (S1181C12*)(S1181C10*), ABISELECT(224,124), "S1181C1");
    check_base_class_offset(lv, (S19490C11*)(S1181C10*), ABISELECT(216,120), "S1181C1");
    check_base_class_offset(lv, (S1181C14*)(S1181C10*), ABISELECT(232,128), "S1181C1");
    check_base_class_offset(lv, (S1181C14*)(S1181C20*), ABISELECT(232,128), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C14*)(S1181C23*), ABISELECT(232,128), "S1181C1");
    check_base_class_offset(lv, (S1181C14*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(232,128), "S1181C1");
    check_base_class_offset(lv, (S1181C10*)(S1181C3*)(S1181C2*), ABISELECT(216,120), "S1181C1");
    check_base_class_offset(lv, (S1181C10*)(S1181C21*)(S1181C20*), ABISELECT(216,120), "S1181C1");
    check_base_class_offset(lv, (S1181C15*)(S1181C3*)(S1181C2*), 0, "S1181C1");
    check_base_class_offset(lv, (S1181C3*)(S1181C2*), 0, "S1181C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C9*)(S1181C16*)(S1181C2*), ABISELECT(24,16), "S1181C1");
    check_base_class_offset(lv, (S1181C9*)(S1181C16*)(S1181C2*), ABISELECT(16,12), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*), ABISELECT(248,136), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C12*), ABISELECT(248,136), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C12 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C12*), ABISELECT(248,136), "S1181C1");
    check_base_class_offset(lv, (S1181C12*)(S1181C18*), ABISELECT(248,136), "S1181C1");
    check_base_class_offset(lv, (S19490C11*)(S1181C18*), 0, "S1181C1");
    /*is_ambiguous_... S1181C18::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C18*), ABISELECT(32,20), "S1181C1");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C16*)(S1181C2*), ABISELECT(32,20), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*), ABISELECT(32,20), "S1181C1");
    check_base_class_offset(lv, (S1181C18*)(S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(32,20), "S1181C1");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C16*)(S1181C2*), ABISELECT(40,24), "S1181C1");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C16*)(S1181C2*), ABISELECT(32,20), "S1181C1");
    check_base_class_offset(lv, (S1181C17*)(S1181C16*)(S1181C2*), ABISELECT(32,20), "S1181C1");
    check_base_class_offset(lv, (S1181C7*)(S1181C19*)(S1181C16*)(S1181C2*), ABISELECT(72,44), "S1181C1");
    check_base_class_offset(lv, (S1181C19*)(S1181C16*)(S1181C2*), ABISELECT(72,44), "S1181C1");
    check_base_class_offset(lv, (S1181C15*)(S1181C16*)(S1181C2*), ABISELECT(256,140), "S1181C1");
    check_base_class_offset(lv, (S1181C16*)(S1181C2*), ABISELECT(16,12), "S1181C1");
    /*is_ambiguous_... S1181C21::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C21*)(S1181C20*), ABISELECT(336,180), "S1181C1");
    check_base_class_offset(lv, (S19490C7*)(S1181C21*)(S1181C20*), 0, "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C23 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*), ABISELECT(360,188), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C23 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*), ABISELECT(352,184), "S1181C1");
    /*is_ambiguous_... S1181C1::S1181C23 */ AMB_check_base_class_offset(lv, (S1181C17*)(S1181C23*), ABISELECT(352,184), "S1181C1");
    check_base_class_offset(lv, (S1181C23*)(S1181C21*)(S1181C20*), ABISELECT(352,184), "S1181C1");
    check_base_class_offset(lv, (S1181C21*)(S1181C20*), ABISELECT(272,144), "S1181C1");
    check_base_class_offset(lv, (S19490C6_nt*)(S1181C20*), ABISELECT(272,144), "S1181C1");
    /*is_ambiguous_... S1181C17::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(296,152), "S1181C1");
    /*is_ambiguous_... S1181C17::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(288,148), "S1181C1");
    check_base_class_offset(lv, (S1181C17*)(S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(288,148), "S1181C1");
    check_base_class_offset(lv, (S1181C23*)(S1181C25*)(S1181C20*), ABISELECT(288,148), "S1181C1");
    check_base_class_offset(lv, (S1181C25*)(S1181C20*), ABISELECT(288,148), "S1181C1");
    check_base_class_offset(lv, (S1181C20*)(S1181C2*), ABISELECT(272,144), "S1181C1");
    /*is_ambiguous_... S1181C26::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1181C26*)(S1181C2*), ABISELECT(112,64), "S1181C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S1181C12*)(S1181C26*)(S1181C2*), ABISELECT(120,68), "S1181C1");
    check_base_class_offset(lv, (S19490C18*)(S1181C12*)(S1181C26*)(S1181C2*), ABISELECT(120,68), "S1181C1");
    check_base_class_offset(lv, (S19490C26*)(S1181C12*)(S1181C26*)(S1181C2*), ABISELECT(120,68), "S1181C1");
    check_base_class_offset(lv, (S1181C12*)(S1181C26*)(S1181C2*), ABISELECT(120,68), "S1181C1");
    check_base_class_offset(lv, (S1181C26*)(S1181C2*), ABISELECT(112,64), "S1181C1");
    check_base_class_offset(lv, (S1538C28_nt*)(S1181C2*), 0, "S1181C1");
    check_base_class_offset(lv, (S1181C2*), 0, "S1181C1");
    check_field_offset(lv, s1181c1f0, ABISELECT(136,80), "S1181C1.s1181c1f0");
    test_class_info(&lv, &cd_S1181C1);
    dp->~S1181C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1181C1(Test_S1181C1, "S1181C1", ABISELECT(400,208));

#else // __cplusplus

extern void _ZN7S1181C1C1Ev();
extern void _ZN7S1181C1D1Ev();
Name_Map name_map_S1181C1[] = {
  NSPAIR(_ZN7S1181C1C1Ev),
  NSPAIR(_ZN7S1181C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
extern Class_Descriptor cd_S1181C6;
extern VTBL_ENTRY _ZTI7S1181C6[];
extern  VTBL_ENTRY _ZTV7S1181C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S1181C14;
extern VTBL_ENTRY _ZTI8S1181C14[];
extern  VTBL_ENTRY _ZTV8S1181C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C14[];
extern Class_Descriptor cd_S1181C10;
extern VTBL_ENTRY _ZTI8S1181C10[];
extern  VTBL_ENTRY _ZTV8S1181C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C10[];
extern Class_Descriptor cd_S1181C15;
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
extern Class_Descriptor cd_S1181C3;
extern VTBL_ENTRY _ZTI7S1181C3[];
extern  VTBL_ENTRY _ZTV7S1181C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S1181C9;
extern VTBL_ENTRY _ZTI7S1181C9[];
extern  VTBL_ENTRY _ZTV7S1181C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C9[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1181C18;
extern VTBL_ENTRY _ZTI8S1181C18[];
extern  VTBL_ENTRY _ZTV8S1181C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C7;
extern VTBL_ENTRY _ZTI7S1181C7[];
extern  VTBL_ENTRY _ZTV7S1181C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C7[];
extern Class_Descriptor cd_S1181C19;
extern VTBL_ENTRY _ZTI8S1181C19[];
extern  VTBL_ENTRY _ZTV8S1181C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C19[];
extern Class_Descriptor cd_S1181C15;
extern VTBL_ENTRY _ZTI8S1181C15[];
extern  VTBL_ENTRY _ZTV8S1181C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C15[];
extern Class_Descriptor cd_S1181C16;
extern VTBL_ENTRY _ZTI8S1181C16[];
extern  VTBL_ENTRY _ZTV8S1181C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
extern Class_Descriptor cd_S1181C21;
extern VTBL_ENTRY _ZTI8S1181C21[];
extern  VTBL_ENTRY _ZTV8S1181C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C21[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C17;
extern VTBL_ENTRY _ZTI8S1181C17[];
extern  VTBL_ENTRY _ZTV8S1181C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C17[];
extern Class_Descriptor cd_S1181C23;
extern VTBL_ENTRY _ZTI8S1181C23[];
extern  VTBL_ENTRY _ZTV8S1181C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C23[];
extern Class_Descriptor cd_S1181C25;
extern VTBL_ENTRY _ZTI8S1181C25[];
extern  VTBL_ENTRY _ZTV8S1181C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C25[];
extern Class_Descriptor cd_S1181C20;
extern VTBL_ENTRY _ZTI8S1181C20[];
extern  VTBL_ENTRY _ZTV8S1181C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C20[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1181C12;
extern VTBL_ENTRY _ZTI8S1181C12[];
extern Class_Descriptor cd_S1181C26;
extern VTBL_ENTRY _ZTI8S1181C26[];
extern  VTBL_ENTRY _ZTV8S1181C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1181C26[];
extern Class_Descriptor cd_S1538C28_nt;
extern VTBL_ENTRY _ZTI11S1538C28_nt[];
extern Class_Descriptor cd_S1181C2;
extern VTBL_ENTRY _ZTI7S1181C2[];
extern  VTBL_ENTRY _ZTV7S1181C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C2[];
static Base_Class bases_S1181C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    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
    3, //immediately_derived
  0, 1},
  {&cd_S1181C7,    ABISELECT(176,100), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S1181C9,    ABISELECT(200,112), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1181C6,    ABISELECT(144,84), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    12, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    15, //immediately_derived
  0, 0},
  {&cd_S1181C14,    ABISELECT(232,128), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S1181C10,    ABISELECT(216,120), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S1181C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1181C3,    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
    16, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    19, //immediately_derived
  0, 0},
  {&cd_S1181C9,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    23, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    23, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    26, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19490C18,    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
    26, //immediately_derived
  0, 0},
  {&cd_S1181C18,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    29, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    29, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1181C7,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1181C19,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1181C15,    ABISELECT(256,140), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1181C16,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    40, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_nt,    ABISELECT(360,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
    38, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(352,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
    38, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(352,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S1181C23,    ABISELECT(352,184), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S1181C21,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19490C6_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
    47, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(296,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(288,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
    44, //immediately_derived
  0, 0},
  {&cd_S1181C17,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1181C23,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1181C25,    ABISELECT(288,148), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S1181C20,    ABISELECT(272,144), //bcp->offset
    68, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S19490C18,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    52, //immediately_derived
  0, 0},
  {&cd_S1181C12,    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
    53, //immediately_derived
  0, 0},
  {&cd_S1181C26,    ABISELECT(112,64), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1538C28_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S1181C2,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1181C1[];
extern void _ZN7S1181C1D1Ev();
extern void _ZN7S1181C1D0Ev();
extern void ABISELECT(_ZThn16_N7S1181C1D1Ev,_ZThn12_N7S1181C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S1181C1D0Ev,_ZThn12_N7S1181C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S1181C1D1Ev,_ZThn20_N7S1181C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S1181C1D0Ev,_ZThn20_N7S1181C1D0Ev)();
extern void ABISELECT(_ZTv0_n112_N7S1181C1D1Ev,_ZTv0_n56_N7S1181C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S1181C1D1Ev,_ZThn144_N7S1181C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S1181C1D0Ev,_ZTv0_n56_N7S1181C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S1181C1D0Ev,_ZThn144_N7S1181C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N7S1181C1D1Ev,_ZTvn4_n56_N7S1181C1D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N7S1181C1D0Ev,_ZTvn4_n56_N7S1181C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N7S1181C1D1Ev,_ZTv0_n36_N7S1181C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S1181C1D1Ev,_ZThn184_N7S1181C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1181C1D0Ev,_ZTv0_n36_N7S1181C1D0Ev)();
extern void ABISELECT(_ZThn352_N7S1181C1D0Ev,_ZThn184_N7S1181C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1181C1[] = {
  0,
  ABISELECT(352,184),
  0,
  ABISELECT(336,180),
  ABISELECT(272,144),
  ABISELECT(256,140),
  0,
  ABISELECT(248,136),
  ABISELECT(32,20),
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(200,112),
  ABISELECT(200,112),
  ABISELECT(176,100),
  ABISELECT(144,84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  (VTBL_ENTRY)&_ZN7S1181C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1181C1D0Ev,
  ABISELECT(240,128),
  ABISELECT(-16,-12),
  ABISELECT(232,124),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(184,100),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1181C1D1Ev,_ZThn12_N7S1181C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1181C1D0Ev,_ZThn12_N7S1181C1D0Ev),
  0,
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1181C1D1Ev,_ZThn20_N7S1181C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1181C1D0Ev,_ZThn20_N7S1181C1D0Ev),
  ABISELECT(128,68),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(88,48),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(-144,-84),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(24,12),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(-200,-112),
  0,
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(-32,-16),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  ABISELECT(-272,-144),
  ABISELECT(-240,-124),
  ABISELECT(80,40),
  ABISELECT(-272,-144),
  ABISELECT(-40,-16),
  ABISELECT(-272,-144),
  ABISELECT(-56,-24),
  ABISELECT(64,36),
  ABISELECT(-72,-32),
  ABISELECT(-96,-44),
  ABISELECT(-272,-144),
  ABISELECT(-24,-8),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S1181C1D1Ev,_ZTv0_n56_N7S1181C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S1181C1D0Ev,_ZTv0_n56_N7S1181C1D0Ev),
  ABISELECT(-56,-20),
  ABISELECT(-88,-36),
  ABISELECT(-112,-48),
  ABISELECT(-256,-128),
  ABISELECT(-288,-148),
  ABISELECT(-40,-12),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N7S1181C1D1Ev,_ZTvn4_n56_N7S1181C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N7S1181C1D0Ev,_ZTvn4_n56_N7S1181C1D0Ev),
  ABISELECT(-352,-184),
  ABISELECT(-120,-56),
  ABISELECT(-152,-72),
  ABISELECT(-176,-84),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-104,-48),
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI7S1181C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1181C1D1Ev,_ZTv0_n36_N7S1181C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1181C1D0Ev,_ZTv0_n36_N7S1181C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S1181C1[];
extern void _ZN7S1181C2D1Ev();
extern void _ZN7S1181C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1181C2__7S1181C1[] = {
  0,
  ABISELECT(352,184),
  0,
  ABISELECT(336,180),
  ABISELECT(272,144),
  ABISELECT(256,140),
  0,
  ABISELECT(248,136),
  ABISELECT(32,20),
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(200,112),
  ABISELECT(200,112),
  ABISELECT(176,100),
  ABISELECT(144,84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&_ZN7S1181C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1181C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C37S1181C2__7S1181C1[] = {
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(200,112),
  ABISELECT(200,112),
  ABISELECT(176,100),
  ABISELECT(144,84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C157S1181C37S1181C2__7S1181C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C6__7S1181C37S1181C2__7S1181C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C37S1181C2__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C37S1181C2__7S1181C1[] = {
  ABISELECT(-200,-112),
  0,
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__7S1181C37S1181C2__7S1181C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__7S1181C37S1181C2__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S1181C3[0]),
};
extern void _ZN8S1181C16D1Ev();
extern void _ZN8S1181C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C167S1181C2__7S1181C1[] = {
  ABISELECT(240,128),
  ABISELECT(-16,-12),
  ABISELECT(232,124),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  (VTBL_ENTRY)&_ZN8S1181C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C98S1181C167S1181C2__A1__7S1181C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C167S1181C2__7S1181C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C198S1181C167S1181C2__7S1181C1[] = {
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C19[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C78S1181C198S1181C167S1181C2__A1__7S1181C1[] = {
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
extern void ABISELECT(_ZThn16_N8S1181C16D1Ev,_ZThn8_N8S1181C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1181C16D0Ev,_ZThn8_N8S1181C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C17__8S1181C167S1181C2__7S1181C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C16D1Ev,_ZThn8_N8S1181C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C16D0Ev,_ZThn8_N8S1181C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C19__8S1181C167S1181C2__7S1181C1[] = {
  ABISELECT(128,68),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C15__8S1181C167S1181C2__7S1181C1[] = {
  ABISELECT(-256,-140),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S1181C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C267S1181C2__7S1181C1[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C26[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C6__7S1181C2__7S1181C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C2__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C2__7S1181C1[] = {
  ABISELECT(-200,-112),
  0,
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__7S1181C2__7S1181C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__7S1181C2__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
extern void ABISELECT(_ZThn16_N7S1181C2D1Ev,_ZThn12_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S1181C2D0Ev,_ZThn12_N7S1181C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C16__7S1181C2__7S1181C1[] = {
  ABISELECT(240,128),
  ABISELECT(-16,-12),
  ABISELECT(232,124),
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(184,100),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1181C2D1Ev,_ZThn12_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1181C2D0Ev,_ZThn12_N7S1181C2D0Ev),
};
extern void ABISELECT(_ZThn32_N7S1181C2D1Ev,_ZThn20_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S1181C2D0Ev,_ZThn20_N7S1181C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C16__7S1181C2__7S1181C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1181C2D1Ev,_ZThn20_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1181C2D0Ev,_ZThn20_N7S1181C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C198S1181C16__7S1181C2__7S1181C1[] = {
  ABISELECT(128,68),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C15__A1__7S1181C2__7S1181C1[] = {
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
extern void ABISELECT(_ZTv0_n112_N7S1181C2D1Ev,_ZTv0_n56_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S1181C2D1Ev,_ZThn144_N7S1181C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S1181C2D0Ev,_ZTv0_n56_N7S1181C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S1181C2D0Ev,_ZThn144_N7S1181C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C20__7S1181C2__7S1181C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-240,-124),
  ABISELECT(80,40),
  ABISELECT(-272,-144),
  ABISELECT(-40,-16),
  ABISELECT(-272,-144),
  ABISELECT(-56,-24),
  ABISELECT(64,36),
  ABISELECT(-72,-32),
  ABISELECT(-96,-44),
  ABISELECT(-272,-144),
  ABISELECT(-24,-8),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S1181C2D1Ev,_ZTv0_n56_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S1181C2D0Ev,_ZTv0_n56_N7S1181C2D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N7S1181C2D1Ev,_ZTv0_n36_N7S1181C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S1181C2D1Ev,_ZThn184_N7S1181C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1181C2D0Ev,_ZTv0_n36_N7S1181C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S1181C2D0Ev,_ZThn184_N7S1181C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C23__7S1181C2__7S1181C1[] = {
  ABISELECT(-352,-184),
  ABISELECT(-120,-56),
  ABISELECT(-152,-72),
  ABISELECT(-176,-84),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-104,-48),
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1181C2D1Ev,_ZTv0_n36_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1181C2D0Ev,_ZTv0_n36_N7S1181C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n112_N7S1181C2D1Ev,_ZTvn4_n56_N7S1181C2D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N7S1181C2D0Ev,_ZTvn4_n56_N7S1181C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C258S1181C20__7S1181C2__7S1181C1[] = {
  ABISELECT(-56,-20),
  ABISELECT(-88,-36),
  ABISELECT(-112,-48),
  ABISELECT(-256,-128),
  ABISELECT(-288,-148),
  ABISELECT(-40,-12),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N7S1181C2D1Ev,_ZTvn4_n56_N7S1181C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N7S1181C2D0Ev,_ZTvn4_n56_N7S1181C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C26__7S1181C2__7S1181C1[] = {
  ABISELECT(88,48),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S1181C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C6__7S1181C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C6__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C6__7S1181C1[] = {
  ABISELECT(-200,-112),
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1181C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__7S1181C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C9__7S1181C1[] = {
  ABISELECT(-200,-112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1181C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__7S1181C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C10__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1181C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__7S1181C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C15__A1__7S1181C1[] = {
  ABISELECT(-256,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C15[0]),
};
extern void _ZN8S1181C20D1Ev();
extern void _ZN8S1181C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C20__7S1181C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(80,40),
  ABISELECT(-272,-144),
  ABISELECT(-40,-16),
  ABISELECT(-272,-144),
  ABISELECT(-56,-24),
  ABISELECT(64,36),
  ABISELECT(-72,-32),
  ABISELECT(-96,-44),
  ABISELECT(-272,-144),
  ABISELECT(-24,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&_ZN8S1181C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C20D0Ev,
};
extern void _ZN8S1181C21D1Ev();
extern void _ZN8S1181C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C218S1181C20__7S1181C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(80,40),
  ABISELECT(-272,-144),
  ABISELECT(-40,-16),
  ABISELECT(-272,-144),
  ABISELECT(-56,-24),
  ABISELECT(64,36),
  ABISELECT(-72,-32),
  ABISELECT(-96,-44),
  ABISELECT(-272,-144),
  ABISELECT(-24,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&_ZN8S1181C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C218S1181C20__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C218S1181C20__7S1181C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-216,-120),
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C218S1181C20__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(40,16),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev)();
extern void ABISELECT(_ZThn80_N8S1181C21D1Ev,_ZThn40_N8S1181C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev)();
extern void ABISELECT(_ZThn80_N8S1181C21D0Ev,_ZThn40_N8S1181C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C218S1181C20__7S1181C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-56),
  ABISELECT(-152,-72),
  ABISELECT(-176,-84),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-104,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C218S1181C20__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S1181C21[0]),
};
extern void _ZN8S1181C25D1Ev();
extern void _ZN8S1181C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C258S1181C20__7S1181C1[] = {
  ABISELECT(-56,-20),
  ABISELECT(-88,-36),
  ABISELECT(-112,-48),
  ABISELECT(-256,-128),
  ABISELECT(-288,-148),
  ABISELECT(-40,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
  (VTBL_ENTRY)&_ZN8S1181C25D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C25D0Ev,
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C238S1181C258S1181C20__A1__7S1181C1[] = {
  ABISELECT(-56,-20),
  ABISELECT(-88,-36),
  ABISELECT(-112,-48),
  ABISELECT(-256,-128),
  ABISELECT(-288,-148),
  ABISELECT(-40,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-288,-148),
  ABISELECT(-40,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C238S1181C258S1181C20__A1__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C238S1181C258S1181C20__A1__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C238S1181C258S1181C20__A1__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(56,20),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C258S1181C20__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(256,128),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C258S1181C20__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C258S1181C20__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(56,20),
  (VTBL_ENTRY)&(_ZTI8S1181C25[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C20__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(40,16),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C20__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C10__8S1181C20__7S1181C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-216,-120),
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S1181C20D1Ev,_ZThn40_N8S1181C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S1181C20D0Ev,_ZThn40_N8S1181C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1181C23__8S1181C20__7S1181C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-120,-56),
  ABISELECT(-152,-72),
  ABISELECT(-176,-84),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-104,-48),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C20__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
};
extern void ABISELECT(_ZThn16_N8S1181C20D1Ev,_ZThn4_N8S1181C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S1181C20D0Ev,_ZThn4_N8S1181C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1181C25__8S1181C20__7S1181C1[] = {
  ABISELECT(-56,-20),
  ABISELECT(-88,-36),
  ABISELECT(-112,-48),
  ABISELECT(-256,-128),
  ABISELECT(-288,-148),
  ABISELECT(-40,-12),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S1181C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C20D1Ev,_ZThn4_N8S1181C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S1181C20D0Ev,_ZThn4_N8S1181C20D0Ev),
};
extern void _ZN8S1181C23D1Ev();
extern void _ZN8S1181C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C23__7S1181C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(-152,-72),
  ABISELECT(-176,-84),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-104,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
  (VTBL_ENTRY)&_ZN8S1181C23D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C23D0Ev,
};
extern void _ZN8S1181C17D1Ev();
extern void _ZN8S1181C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1181C178S1181C23__A1__7S1181C1[] = {
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-104,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
  (VTBL_ENTRY)&_ZN8S1181C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1181C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C178S1181C23__A1__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S1181C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C18__8S1181C23__7S1181C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(216,116),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1181C7__8S1181C23__7S1181C1[] = {
  ABISELECT(24,12),
  ABISELECT(176,84),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1181C14__8S1181C23__7S1181C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(120,56),
  (VTBL_ENTRY)&(_ZTI8S1181C23[0]),
};
static  VTT_ENTRY vtt_S1181C1[] = {
  {&(_ZTV7S1181C1[19]),  19,105},
  {&(_tg__ZTV7S1181C2__7S1181C1[19]),  19,21},
  {&(_tg__ZTV7S1181C37S1181C2__7S1181C1[10]),  10,10},
  {&(_tg__ZTV8S1181C157S1181C37S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C6__7S1181C37S1181C2__7S1181C1[6]),  6,6},
  {&(_tg__ZTV7S1181C7__7S1181C37S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C37S1181C2__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C10__7S1181C37S1181C2__7S1181C1[5]),  5,5},
  {&(_tg__ZTV8S1181C14__7S1181C37S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C167S1181C2__7S1181C1[8]),  8,10},
  {&(_tg__ZTV7S1181C98S1181C167S1181C2__A1__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C178S1181C167S1181C2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C178S1181C167S1181C2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C198S1181C167S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C78S1181C198S1181C167S1181C2__A1__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C17__8S1181C167S1181C2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C17__8S1181C167S1181C2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C19__8S1181C167S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C15__8S1181C167S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C267S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C6__7S1181C2__7S1181C1[6]),  6,6},
  {&(_tg__ZTV7S1181C7__7S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C2__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C10__7S1181C2__7S1181C1[5]),  5,5},
  {&(_tg__ZTV8S1181C14__7S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C16__7S1181C2__7S1181C1[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C16__7S1181C2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C178S1181C16__7S1181C2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C198S1181C16__7S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C15__A1__7S1181C2__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C20__7S1181C2__7S1181C1[14]),  14,16},
  {&(_tg__ZTV8S1181C23__7S1181C2__7S1181C1[9]),  9,11},
  {&(_tg__ZTV8S1181C258S1181C20__7S1181C2__7S1181C1[8]),  8,10},
  {&(_tg__ZTV8S1181C26__7S1181C2__7S1181C1[3]),  3,3},
  {&(_ZTV7S1181C1[50]),  50,105},
  {&(_ZTV7S1181C1[53]),  53,105},
  {&(_ZTV7S1181C1[57]),  57,105},
  {&(_ZTV7S1181C1[62]),  62,105},
  {&(_ZTV7S1181C1[65]),  65,105},
  {&(_ZTV7S1181C1[29]),  29,105},
  {&(_ZTV7S1181C1[36]),  36,105},
  {&(_ZTV7S1181C1[36]),  36,105},
  {&(_ZTV7S1181C1[41]),  41,105},
  {&(_ZTV7S1181C1[68]),  68,105},
  {&(_ZTV7S1181C1[82]),  82,105},
  {&(_ZTV7S1181C1[103]),  103,105},
  {&(_ZTV7S1181C1[92]),  92,105},
  {&(_ZTV7S1181C1[44]),  44,105},
  {&(_tg__ZTV7S1181C6__7S1181C1[6]),  6,6},
  {&(_tg__ZTV7S1181C7__7S1181C6__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C6__7S1181C1[4]),  4,4},
  {&(_tg__ZTV7S1181C7__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C9__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C10__7S1181C1[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C10__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C14__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C18__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C15__A1__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C20__7S1181C1[13]),  13,15},
  {&(_tg__ZTV8S1181C218S1181C20__7S1181C1[13]),  13,15},
  {&(_tg__ZTV7S1181C7__8S1181C218S1181C20__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C218S1181C20__7S1181C1[5]),  5,5},
  {&(_tg__ZTV8S1181C14__8S1181C218S1181C20__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C23__8S1181C218S1181C20__7S1181C1[9]),  9,11},
  {&(_tg__ZTV8S1181C18__8S1181C218S1181C20__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C258S1181C20__7S1181C1[8]),  8,10},
  {&(_tg__ZTV8S1181C238S1181C258S1181C20__A1__7S1181C1[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C238S1181C258S1181C20__A2__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C238S1181C258S1181C20__A1__7S1181C1[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C238S1181C258S1181C20__A1__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C238S1181C258S1181C20__A1__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C18__8S1181C258S1181C20__7S1181C1[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C258S1181C20__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C258S1181C20__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C20__7S1181C1[3]),  3,3},
  {&(_tg__ZTV7S1181C7__8S1181C20__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C10__8S1181C20__7S1181C1[5]),  5,5},
  {&(_tg__ZTV8S1181C23__8S1181C20__7S1181C1[9]),  9,11},
  {&(_tg__ZTV8S1181C18__8S1181C20__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C25__8S1181C20__7S1181C1[8]),  8,10},
  {&(_tg__ZTV8S1181C23__7S1181C1[8]),  8,10},
  {&(_tg__ZTV8S1181C178S1181C23__A1__7S1181C1[5]),  5,7},
  {&(_tg__ZTV8S1181C18__8S1181C178S1181C23__A1__7S1181C1[4]),  4,4},
  {&(_tg__ZTV8S1181C18__8S1181C23__7S1181C1[4]),  4,4},
  {&(_tg__ZTV7S1181C7__8S1181C23__7S1181C1[3]),  3,3},
  {&(_tg__ZTV8S1181C14__8S1181C23__7S1181C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1181C1[];
extern  VTBL_ENTRY _ZTV7S1181C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1181C1[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C20D0Ev,_ZTv0_n36_N8S1181C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C20D0Ev,_ZThn40_N8S1181C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C20D1Ev,_ZTv0_n36_N8S1181C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C20D1Ev,_ZThn40_N8S1181C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D0Ev,_ZTv0_n36_N8S1181C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C21D0Ev,_ZThn40_N8S1181C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1181C21D1Ev,_ZTv0_n36_N8S1181C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1181C21D1Ev,_ZThn40_N8S1181C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1181C2D0Ev,_ZTv0_n36_N7S1181C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S1181C2D0Ev,_ZThn184_N7S1181C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1181C2D1Ev,_ZTv0_n36_N7S1181C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S1181C2D1Ev,_ZThn184_N7S1181C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S1181C2D0Ev,_ZTv0_n56_N7S1181C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1181C2D0Ev,_ZThn144_N7S1181C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S1181C2D1Ev,_ZTv0_n56_N7S1181C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1181C2D1Ev,_ZThn144_N7S1181C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1181C1D0Ev,_ZTv0_n36_N7S1181C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S1181C1D0Ev,_ZThn184_N7S1181C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1181C1D1Ev,_ZTv0_n36_N7S1181C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S1181C1D1Ev,_ZThn184_N7S1181C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S1181C1D0Ev,_ZTv0_n56_N7S1181C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1181C1D0Ev,_ZThn144_N7S1181C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S1181C1D1Ev,_ZTv0_n56_N7S1181C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1181C1D1Ev,_ZThn144_N7S1181C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1181C1 = {  "S1181C1", // class name
  bases_S1181C1, 56,
  &(vtc_S1181C1[0]), // expected_vtbl_contents
  &(vtt_S1181C1[0]), // expected_vtt_contents
  ABISELECT(400,208), // object size
  NSPAIRA(_ZTI7S1181C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1181C1),105, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1181C1),87, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C4  {
  virtual void  v6(); // _ZN8S21090C42v6Ev
  virtual void  v7(); // _ZN8S21090C42v7Ev
  ~S21090C4(); // tgen
  S21090C4(); // tgen
};
//SIG(-1 S21090C4) C1{ v1 v2}


void  S21090C4 ::v6(){vfunc_called(this, "_ZN8S21090C42v6Ev");}
void  S21090C4 ::v7(){vfunc_called(this, "_ZN8S21090C42v7Ev");}
S21090C4 ::~S21090C4(){ note_dtor("S21090C4", this);} // tgen
S21090C4 ::S21090C4(){ note_ctor("S21090C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21090C4C1Ev();
extern void _ZN8S21090C4D1Ev();
Name_Map name_map_S21090C4[] = {
  NSPAIR(_ZN8S21090C4C1Ev),
  NSPAIR(_ZN8S21090C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21090C4[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY vtc_S21090C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C4[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
Class_Descriptor cd_S21090C4 = {  "S21090C4", // class name
  0,0,//no base classes
  &(vtc_S21090C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21090C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21090C4),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  S21090C5  : virtual S21090C4 {
  void *s21090c5f0;
  char s21090c5f1;
  virtual void  v8(); // _ZN8S21090C52v8Ev
  virtual void  v9(); // _ZN8S21090C52v9Ev
  virtual void  v10(); // _ZN8S21090C53v10Ev
  virtual void  v11(); // _ZN8S21090C53v11Ev
  ~S21090C5(); // tgen
  S21090C5(); // tgen
};
//SIG(-1 S21090C5) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S21090C5 ::v8(){vfunc_called(this, "_ZN8S21090C52v8Ev");}
void  S21090C5 ::v9(){vfunc_called(this, "_ZN8S21090C52v9Ev");}
void  S21090C5 ::v10(){vfunc_called(this, "_ZN8S21090C53v10Ev");}
void  S21090C5 ::v11(){vfunc_called(this, "_ZN8S21090C53v11Ev");}
S21090C5 ::~S21090C5(){ note_dtor("S21090C5", this);} // tgen
S21090C5 ::S21090C5(){ note_ctor("S21090C5", this);} // tgen

static void Test_S21090C5()
{
  extern Class_Descriptor cd_S21090C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21090C5, buf);
    S21090C5 *dp, &lv = *(dp=new (buf) S21090C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21090C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21090C5)");
    check_base_class_offset(lv, (S21090C4*), 0, "S21090C5");
    check_field_offset(lv, s21090c5f0, ABISELECT(8,4), "S21090C5.s21090c5f0");
    check_field_offset(lv, s21090c5f1, ABISELECT(16,8), "S21090C5.s21090c5f1");
    test_class_info(&lv, &cd_S21090C5);
    dp->~S21090C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C5(Test_S21090C5, "S21090C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21090C5C1Ev();
extern void _ZN8S21090C5D1Ev();
Name_Map name_map_S21090C5[] = {
  NSPAIR(_ZN8S21090C5C1Ev),
  NSPAIR(_ZN8S21090C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
static Base_Class bases_S21090C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    0, //bcp->offset
    -1, //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 _ZTI8S21090C5[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY vtc_S21090C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S21090C5[];
static  VTT_ENTRY vtt_S21090C5[] = {
  {&(_ZTV8S21090C5[5]),  5,11},
  {&(_ZTV8S21090C5[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
Class_Descriptor cd_S21090C5 = {  "S21090C5", // class name
  bases_S21090C5, 1,
  &(vtc_S21090C5[0]), // expected_vtbl_contents
  &(vtt_S21090C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21090C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21090C5),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21090C5),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  S21090C6  : S21090C4 {
  virtual void  v12(); // _ZN8S21090C63v12Ev
  virtual void  v13(); // _ZN8S21090C63v13Ev
  virtual void  v14(); // _ZN8S21090C63v14Ev
  virtual void  v15(); // _ZN8S21090C63v15Ev
  virtual void  v16(); // _ZN8S21090C63v16Ev
  virtual void  v17(); // _ZN8S21090C63v17Ev
  virtual void  v18(); // _ZN8S21090C63v18Ev
  virtual void  v19(); // _ZN8S21090C63v19Ev
  ~S21090C6(); // tgen
  S21090C6(); // tgen
};
//SIG(-1 S21090C6) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S21090C6 ::v12(){vfunc_called(this, "_ZN8S21090C63v12Ev");}
void  S21090C6 ::v13(){vfunc_called(this, "_ZN8S21090C63v13Ev");}
void  S21090C6 ::v14(){vfunc_called(this, "_ZN8S21090C63v14Ev");}
void  S21090C6 ::v15(){vfunc_called(this, "_ZN8S21090C63v15Ev");}
void  S21090C6 ::v16(){vfunc_called(this, "_ZN8S21090C63v16Ev");}
void  S21090C6 ::v17(){vfunc_called(this, "_ZN8S21090C63v17Ev");}
void  S21090C6 ::v18(){vfunc_called(this, "_ZN8S21090C63v18Ev");}
void  S21090C6 ::v19(){vfunc_called(this, "_ZN8S21090C63v19Ev");}
S21090C6 ::~S21090C6(){ note_dtor("S21090C6", this);} // tgen
S21090C6 ::S21090C6(){ note_ctor("S21090C6", this);} // tgen

static void Test_S21090C6()
{
  extern Class_Descriptor cd_S21090C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21090C6, buf);
    S21090C6 *dp, &lv = *(dp=new (buf) S21090C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21090C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21090C6)");
    check_base_class_offset(lv, (S21090C4*), 0, "S21090C6");
    test_class_info(&lv, &cd_S21090C6);
    dp->~S21090C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C6(Test_S21090C6, "S21090C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21090C6C1Ev();
extern void _ZN8S21090C6D1Ev();
Name_Map name_map_S21090C6[] = {
  NSPAIR(_ZN8S21090C6C1Ev),
  NSPAIR(_ZN8S21090C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
static Base_Class bases_S21090C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21090C6[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY vtc_S21090C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C6[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
Class_Descriptor cd_S21090C6 = {  "S21090C6", // class name
  bases_S21090C6, 1,
  &(vtc_S21090C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21090C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21090C6),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  S21090C3  : virtual S21090C4 , S21090C5 , S21090C6 {
  ::S21090C4 s21090c3f0;
  virtual  ~S21090C3(); // _ZN8S21090C3D2Ev
  virtual void  v20(); // _ZN8S21090C33v20Ev
  virtual void  v21(); // _ZN8S21090C33v21Ev
  S21090C3(); // tgen
};
//SIG(-1 S21090C3) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S21090C3 ::~S21090C3(){ note_dtor("S21090C3", this);}
void  S21090C3 ::v20(){vfunc_called(this, "_ZN8S21090C33v20Ev");}
void  S21090C3 ::v21(){vfunc_called(this, "_ZN8S21090C33v21Ev");}
S21090C3 ::S21090C3(){ note_ctor("S21090C3", this);} // tgen

static void Test_S21090C3()
{
  extern Class_Descriptor cd_S21090C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S21090C3, buf);
    S21090C3 *dp, &lv = *(dp=new (buf) S21090C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S21090C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21090C3)");
    /*is_ambiguous_... S21090C3::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*), 0, "S21090C3");
    check_base_class_offset(lv, (S21090C4*)(S21090C5*), 0, "S21090C3");
    check_base_class_offset(lv, (S21090C5*), 0, "S21090C3");
    check_base_class_offset(lv, (S21090C4*)(S21090C6*), ABISELECT(24,12), "S21090C3");
    check_base_class_offset(lv, (S21090C6*), ABISELECT(24,12), "S21090C3");
    check_field_offset(lv, s21090c3f0, ABISELECT(32,16), "S21090C3.s21090c3f0");
    test_class_info(&lv, &cd_S21090C3);
    dp->~S21090C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C3(Test_S21090C3, "S21090C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S21090C3C1Ev();
extern void _ZN8S21090C3D2Ev();
Name_Map name_map_S21090C3[] = {
  NSPAIR(_ZN8S21090C3C1Ev),
  NSPAIR(_ZN8S21090C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
static Base_Class bases_S21090C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21090C3[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY vtc_S21090C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern VTBL_ENTRY _ZTV8S21090C3[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__8S21090C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
static  VTT_ENTRY vtt_S21090C3[] = {
  {&(_ZTV8S21090C3[5]),  5,27},
  {&(_tg__ZTV8S21090C5__8S21090C3[5]),  5,11},
  {&(_tg__ZTV8S21090C5__8S21090C3[5]),  5,11},
  {&(_ZTV8S21090C3[5]),  5,27},
};
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
Class_Descriptor cd_S21090C3 = {  "S21090C3", // class name
  bases_S21090C3, 4,
  &(vtc_S21090C3[0]), // expected_vtbl_contents
  &(vtt_S21090C3[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S21090C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21090C3),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21090C3),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  S21090C2  : virtual S21090C3 {
  virtual  ~S21090C2(); // _ZN8S21090C2D2Ev
  virtual void  v23(); // _ZN8S21090C23v23Ev
  virtual void  v24(); // _ZN8S21090C23v24Ev
  S21090C2(); // tgen
};
//SIG(-1 S21090C2) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S21090C2 ::~S21090C2(){ note_dtor("S21090C2", this);}
void  S21090C2 ::v23(){vfunc_called(this, "_ZN8S21090C23v23Ev");}
void  S21090C2 ::v24(){vfunc_called(this, "_ZN8S21090C23v24Ev");}
S21090C2 ::S21090C2(){ note_ctor("S21090C2", this);} // tgen

static void Test_S21090C2()
{
  extern Class_Descriptor cd_S21090C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S21090C2, buf);
    S21090C2 *dp, &lv = *(dp=new (buf) S21090C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S21090C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21090C2)");
    /*is_ambiguous_... S21090C3::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), 0, "S21090C2");
    check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), 0, "S21090C2");
    check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(8,4), "S21090C2");
    check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(32,16), "S21090C2");
    check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(32,16), "S21090C2");
    check_base_class_offset(lv, (S21090C3*), ABISELECT(8,4), "S21090C2");
    test_class_info(&lv, &cd_S21090C2);
    dp->~S21090C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C2(Test_S21090C2, "S21090C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S21090C2C1Ev();
extern void _ZN8S21090C2D2Ev();
Name_Map name_map_S21090C2[] = {
  NSPAIR(_ZN8S21090C2C1Ev),
  NSPAIR(_ZN8S21090C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
static Base_Class bases_S21090C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21090C5,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI8S21090C2[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21090C2D1Ev,_ZThn4_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21090C2D0Ev,_ZThn4_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY vtc_S21090C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern VTBL_ENTRY _ZTV8S21090C2[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__8S21090C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C3__8S21090C2[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C3__8S21090C2[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
static  VTT_ENTRY vtt_S21090C2[] = {
  {&(_ZTV8S21090C2[6]),  6,54},
  {&(_ZTV8S21090C2[32]),  32,54},
  {&(_ZTV8S21090C2[6]),  6,54},
  {&(_ZTV8S21090C2[44]),  44,54},
  {&(_tg__ZTV8S21090C3__8S21090C2[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__8S21090C2[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C3__8S21090C2[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C3__8S21090C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21090C2D0Ev,_ZThn4_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21090C2D1Ev,_ZThn4_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C2 = {  "S21090C2", // class name
  bases_S21090C2, 5,
  &(vtc_S21090C2[0]), // expected_vtbl_contents
  &(vtt_S21090C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S21090C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21090C2),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21090C2),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C9  {
  ::S7642C12 s21090c9f0;
  virtual void  v22(); // _ZN8S21090C93v22Ev
  ~S21090C9(); // tgen
  S21090C9(); // tgen
};
//SIG(-1 S21090C9) C1{ v1 FU2{ m FD[3]}}


void  S21090C9 ::v22(){vfunc_called(this, "_ZN8S21090C93v22Ev");}
S21090C9 ::~S21090C9(){ note_dtor("S21090C9", this);} // tgen
S21090C9 ::S21090C9(){ note_ctor("S21090C9", this);} // tgen

static void Test_S21090C9()
{
  extern Class_Descriptor cd_S21090C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S21090C9, buf);
    S21090C9 *dp, &lv = *(dp=new (buf) S21090C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21090C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C9)");
    check_field_offset(lv, s21090c9f0, ABISELECT(16,4), "S21090C9.s21090c9f0");
    test_class_info(&lv, &cd_S21090C9);
    dp->~S21090C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C9(Test_S21090C9, "S21090C9", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21090C9C1Ev();
extern void _ZN8S21090C9D1Ev();
Name_Map name_map_S21090C9[] = {
  NSPAIR(_ZN8S21090C9C1Ev),
  NSPAIR(_ZN8S21090C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21090C9[];
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY vtc_S21090C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C9[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
Class_Descriptor cd_S21090C9 = {  "S21090C9", // class name
  0,0,//no base classes
  &(vtc_S21090C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21090C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21090C9),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  S21090C11  : S21090C6 , S21090C2 , S21090C9 , S21090C5 {
  void *s21090c11f0;
  __tsi64 s21090c11f1;
  virtual void  v25(); // _ZN9S21090C113v25Ev
  virtual void  v26(); // _ZN9S21090C113v26Ev
  virtual void  v27(); // _ZN9S21090C113v27Ev
  virtual void  v28(); // _ZN9S21090C113v28Ev
  virtual void  v29(); // _ZN9S21090C113v29Ev
  virtual void  v30(); // _ZN9S21090C113v30Ev
  ~S21090C11(); // tgen
  S21090C11(); // tgen
};
//SIG(-1 S21090C11) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp FL}


void  S21090C11 ::v25(){vfunc_called(this, "_ZN9S21090C113v25Ev");}
void  S21090C11 ::v26(){vfunc_called(this, "_ZN9S21090C113v26Ev");}
void  S21090C11 ::v27(){vfunc_called(this, "_ZN9S21090C113v27Ev");}
void  S21090C11 ::v28(){vfunc_called(this, "_ZN9S21090C113v28Ev");}
void  S21090C11 ::v29(){vfunc_called(this, "_ZN9S21090C113v29Ev");}
void  S21090C11 ::v30(){vfunc_called(this, "_ZN9S21090C113v30Ev");}
S21090C11 ::~S21090C11(){ note_dtor("S21090C11", this);} // tgen
S21090C11 ::S21090C11(){ note_ctor("S21090C11", this);} // tgen

static void Test_S21090C11()
{
  extern Class_Descriptor cd_S21090C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S21090C11, buf);
    S21090C11 *dp, &lv = *(dp=new (buf) S21090C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S21090C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C11)");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*), 0, "S21090C11");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*), 0, "S21090C11");
    /*is_ambiguous_... S21090C3::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), ABISELECT(8,4), "S21090C11");
    check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), ABISELECT(8,4), "S21090C11");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*), ABISELECT(8,4), "S21090C11");
    check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(120,72), "S21090C11");
    check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(144,84), "S21090C11");
    check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(144,84), "S21090C11");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*), ABISELECT(120,72), "S21090C11");
    check_base_class_offset(lv, (S21090C2*), ABISELECT(8,4), "S21090C11");
    check_base_class_offset(lv, (S21090C9*), ABISELECT(16,8), "S21090C11");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*), ABISELECT(80,48), "S21090C11");
    check_field_offset(lv, s21090c11f0, ABISELECT(104,60), "S21090C11.s21090c11f0");
    check_field_offset(lv, s21090c11f1, ABISELECT(112,64), "S21090C11.s21090c11f1");
    test_class_info(&lv, &cd_S21090C11);
    dp->~S21090C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C11(Test_S21090C11, "S21090C11", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN9S21090C11C1Ev();
extern void _ZN9S21090C11D1Ev();
Name_Map name_map_S21090C11[] = {
  NSPAIR(_ZN9S21090C11C1Ev),
  NSPAIR(_ZN9S21090C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
static Base_Class bases_S21090C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S21090C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21090C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21090C5,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    5, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(144,84), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(120,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21090C2,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C9,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C5,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21090C11[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S21090C11D1Ev,_ZThn72_N9S21090C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S21090C11D0Ev,_ZThn72_N9S21090C11D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY vtc_S21090C11[] = {
  ABISELECT(8,4),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
  0,
  ABISELECT(112,68),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-72),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern VTBL_ENTRY _ZTV9S21090C11[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C11[] = {
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21090C2D1Ev,_ZThn68_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21090C2D0Ev,_ZThn68_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C2__9S21090C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C2__9S21090C11[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C5__A1__9S21090C11[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C11[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__9S21090C11[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C3__9S21090C11[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C3__9S21090C11[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
static  VTT_ENTRY vtt_S21090C11[] = {
  {&(_ZTV9S21090C11[4]),  4,90},
  {&(_tg__ZTV8S21090C2__9S21090C11[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C2__9S21090C11[20]),  20,30},
  {&(_tg__ZTV8S21090C2__9S21090C11[6]),  6,12},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C2__9S21090C11[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C11[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C5__A1__9S21090C11[4]),  4,6},
  {&(_ZTV9S21090C11[28]),  28,90},
  {&(_ZTV9S21090C11[68]),  68,90},
  {&(_ZTV9S21090C11[28]),  28,90},
  {&(_ZTV9S21090C11[80]),  80,90},
  {&(_ZTV9S21090C11[42]),  42,90},
  {&(_tg__ZTV8S21090C3__9S21090C11[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__9S21090C11[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C3__9S21090C11[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C3__9S21090C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21090C2D0Ev,_ZThn68_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21090C2D1Ev,_ZThn68_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21090C11D0Ev,_ZThn72_N9S21090C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21090C11D1Ev,_ZThn72_N9S21090C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C11 = {  "S21090C11", // class name
  bases_S21090C11, 10,
  &(vtc_S21090C11[0]), // expected_vtbl_contents
  &(vtt_S21090C11[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI9S21090C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21090C11),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21090C11),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C8  : virtual S21090C4 , S21090C3 , virtual S21090C9 , S21090C11 , S21090C6 {
  virtual  ~S21090C8(); // _ZN8S21090C8D2Ev
  virtual void  v31(); // _ZN8S21090C83v31Ev
  S21090C8(); // tgen
};
//SIG(-1 S21090C8) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp FL} BC5 vd v1}


 S21090C8 ::~S21090C8(){ note_dtor("S21090C8", this);}
void  S21090C8 ::v31(){vfunc_called(this, "_ZN8S21090C83v31Ev");}
S21090C8 ::S21090C8(){ note_ctor("S21090C8", this);} // tgen

static void Test_S21090C8()
{
  extern Class_Descriptor cd_S21090C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,40)];
    init_test(&cd_S21090C8, buf);
    S21090C8 *dp, &lv = *(dp=new (buf) S21090C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S21090C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C8)");
    /*is_ambiguous_... S21090C8::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), 0, "S21090C8");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(24,12), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(24,12), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*), 0, "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*), ABISELECT(176,96), "S21090C8");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*), ABISELECT(48,20), "S21090C8");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*), ABISELECT(48,20), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(240,136), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(264,148), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(264,148), "S21090C8");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*), ABISELECT(240,136), "S21090C8");
    check_base_class_offset(lv, (S21090C2*)(S21090C11*), ABISELECT(56,24), "S21090C8");
    check_base_class_offset(lv, (S21090C9*)(S21090C11*), ABISELECT(64,28), "S21090C8");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*), ABISELECT(128,68), "S21090C8");
    check_base_class_offset(lv, (S21090C11*), ABISELECT(48,20), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*), ABISELECT(168,92), "S21090C8");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*), ABISELECT(168,92), "S21090C8");
    test_class_info(&lv, &cd_S21090C8);
    dp->~S21090C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C8(Test_S21090C8, "S21090C8", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN8S21090C8C1Ev();
extern void _ZN8S21090C8D2Ev();
Name_Map name_map_S21090C8[] = {
  NSPAIR(_ZN8S21090C8C1Ev),
  NSPAIR(_ZN8S21090C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
static Base_Class bases_S21090C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C3,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C9,    ABISELECT(176,96), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(264,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(264,148), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(240,136), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21090C2,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(168,92), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S21090C8[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn240_N8S21090C8D1Ev,_ZThn136_N8S21090C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void ABISELECT(_ZThn240_N8S21090C8D0Ev,_ZThn136_N8S21090C8D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY vtc_S21090C8[] = {
  ABISELECT(240,136),
  ABISELECT(176,96),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern VTBL_ENTRY _ZTV8S21090C8[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A__8S21090C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__8S21090C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C8[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C8[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S21090C2D1Ev,_ZThn112_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S21090C2D0Ev,_ZThn112_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C11__8S21090C8[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C29S21090C11__8S21090C8[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C11__8S21090C8[] = {
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C8[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C11__A2__8S21090C8[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C11__8S21090C8[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21090C11D1Ev,_ZThn116_N9S21090C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21090C11D0Ev,_ZThn116_N9S21090C11D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C11__8S21090C8[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__A1__9S21090C11__8S21090C8[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C11__8S21090C8[] = {
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C11__8S21090C8[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C8[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__A1__8S21090C8[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C3__A1__8S21090C8[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C3__A1__8S21090C8[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
static  VTT_ENTRY vtt_S21090C8[] = {
  {&(_ZTV8S21090C8[7]),  7,136},
  {&(_tg__ZTV8S21090C3__A__8S21090C8[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__8S21090C8[5]),  5,11},
  {&(_tg__ZTV8S21090C58S21090C3__8S21090C8[5]),  5,11},
  {&(_tg__ZTV8S21090C3__A__8S21090C8[5]),  5,15},
  {&(_tg__ZTV9S21090C11__8S21090C8[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C8[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C11__8S21090C8[20]),  20,30},
  {&(_tg__ZTV8S21090C4__8S21090C29S21090C11__8S21090C8[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C11__8S21090C8[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C8[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C11__A2__8S21090C8[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C11__8S21090C8[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C11__8S21090C8[20]),  20,30},
  {&(_tg__ZTV8S21090C4__A1__9S21090C11__8S21090C8[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C11__8S21090C8[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C11__8S21090C8[5]),  5,11},
  {&(_ZTV8S21090C8[7]),  7,136},
  {&(_ZTV8S21090C8[93]),  93,136},
  {&(_ZTV8S21090C8[34]),  34,136},
  {&(_ZTV8S21090C8[58]),  58,136},
  {&(_ZTV8S21090C8[114]),  114,136},
  {&(_ZTV8S21090C8[126]),  126,136},
  {&(_ZTV8S21090C8[72]),  72,136},
  {&(_tg__ZTV8S21090C3__A1__8S21090C8[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__A1__8S21090C8[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C3__A1__8S21090C8[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C3__A1__8S21090C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21090C11D0Ev,_ZThn116_N9S21090C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21090C11D1Ev,_ZThn116_N9S21090C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21090C2D0Ev,_ZThn112_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21090C2D1Ev,_ZThn112_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21090C8D0Ev,_ZThn136_N8S21090C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21090C8D1Ev,_ZThn136_N8S21090C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C8 = {  "S21090C8", // class name
  bases_S21090C8, 18,
  &(vtc_S21090C8[0]), // expected_vtbl_contents
  &(vtt_S21090C8[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI8S21090C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21090C8),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21090C8),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C7  : virtual S21090C3 , S21090C8 , virtual S21090C2 , virtual S21090C5 , S21090C4 {
  virtual  ~S21090C7(); // _ZN8S21090C7D2Ev
  virtual void  v32(); // _ZN8S21090C73v32Ev
  virtual void  v33(); // _ZN8S21090C73v33Ev
  virtual void  v34(); // _ZN8S21090C73v34Ev
  S21090C7(); // tgen
};
//SIG(-1 S21090C7) C1{ VBC2{ VBC3{ v4 v5} BC4{ VBC3 v6 v7 v8 v9 Fp Fc} BC5{ BC3 v10 v11 v12 v13 v14 v15 v16 v17} vd v18 v19 FC3} BC6{ VBC3 BC2 VBC7{ v20 FU8{ m FD[3]}} BC9{ BC5 BC10{ VBC2 vd v21 v22} BC7 BC4 v23 v24 v25 v26 v27 v28 Fp FL} BC5 vd v29} VBC10 VBC4 BC3 vd v1 v2 v3}


 S21090C7 ::~S21090C7(){ note_dtor("S21090C7", this);}
void  S21090C7 ::v32(){vfunc_called(this, "_ZN8S21090C73v32Ev");}
void  S21090C7 ::v33(){vfunc_called(this, "_ZN8S21090C73v33Ev");}
void  S21090C7 ::v34(){vfunc_called(this, "_ZN8S21090C73v34Ev");}
S21090C7 ::S21090C7(){ note_ctor("S21090C7", this);} // tgen

static void Test_S21090C7()
{
  extern Class_Descriptor cd_S21090C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,45)];
    init_test(&cd_S21090C7, buf);
    S21090C7 *dp, &lv = *(dp=new (buf) S21090C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,176), "sizeof(S21090C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C7)");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C8*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C8*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C8*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*)(S21090C8*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(208,112), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(208,112), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*), ABISELECT(184,100), "S21090C7");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*)(S21090C8*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C2*), ABISELECT(184,100), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C8*), 0, "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C8*), ABISELECT(24,12), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C8*), ABISELECT(24,12), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C8*), 0, "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C8*), ABISELECT(224,120), "S21090C7");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*)(S21090C8*), ABISELECT(48,20), "S21090C7");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*)(S21090C8*), ABISELECT(48,20), "S21090C7");
    check_base_class_offset(lv, (S21090C2*)(S21090C11*)(S21090C8*), ABISELECT(56,24), "S21090C7");
    check_base_class_offset(lv, (S21090C9*)(S21090C11*)(S21090C8*), ABISELECT(64,28), "S21090C7");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*)(S21090C8*), ABISELECT(128,68), "S21090C7");
    check_base_class_offset(lv, (S21090C11*)(S21090C8*), ABISELECT(48,20), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C8*), ABISELECT(168,92), "S21090C7");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C8*), ABISELECT(168,92), "S21090C7");
    check_base_class_offset(lv, (S21090C8*), 0, "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C2*), ABISELECT(288,160), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*), ABISELECT(296,164), "S21090C7");
    /*is_ambiguous_... S21090C7::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*), ABISELECT(176,96), "S21090C7");
    test_class_info(&lv, &cd_S21090C7);
    dp->~S21090C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C7(Test_S21090C7, "S21090C7", ABISELECT(320,176));

#else // __cplusplus

extern void _ZN8S21090C7C1Ev();
extern void _ZN8S21090C7D2Ev();
Name_Map name_map_S21090C7[] = {
  NSPAIR(_ZN8S21090C7C1Ev),
  NSPAIR(_ZN8S21090C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C8;
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
static Base_Class bases_S21090C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    ABISELECT(184,100), //bcp->offset
    -1, //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
    1, //immediately_derived
  0, 1},
  {&cd_S21090C5,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(208,112), //bcp->offset
    129, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(184,100), //bcp->offset
    99, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    10, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(24,12), //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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21090C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(224,120), //bcp->offset
    141, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21090C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C2,    ABISELECT(56,24), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(64,28), //bcp->offset
    69, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(128,68), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(48,20), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(168,92), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C8,    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_S21090C2,    ABISELECT(288,160), //bcp->offset
    145, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    ABISELECT(296,164), //bcp->offset
    160, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C4,    ABISELECT(176,96), //bcp->offset
    95, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21090C7[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C7D1Ev();
extern void _ZN8S21090C7D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S21090C7D1Ev,_ZThn100_N8S21090C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S21090C7D0Ev,_ZThn100_N8S21090C7D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S21090C7D1Ev,_ZThn160_N8S21090C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S21090C7D0Ev,_ZThn160_N8S21090C7D0Ev)() __attribute__((weak));
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY vtc_S21090C7[] = {
  ABISELECT(296,164),
  ABISELECT(288,160),
  ABISELECT(184,100),
  ABISELECT(224,120),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-296,-164),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S21090C7[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C8__8S21090C7[] = {
  ABISELECT(184,100),
  ABISELECT(224,120),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C38S21090C8__A1__8S21090C7[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C38S21090C8__A1__8S21090C7[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C38S21090C8__A1__8S21090C7[] = {
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C38S21090C8__A1__8S21090C7[] = {
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21090C2D1Ev,_ZThn76_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21090C2D0Ev,_ZThn76_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-128,-76),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C7[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C118S21090C8__A2__8S21090C7[] = {
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S21090C11D1Ev,_ZThn80_N9S21090C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S21090C11D0Ev,_ZThn80_N9S21090C11D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-136,-80),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C118S21090C8__8S21090C7[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S21090C8D1Ev,_ZThn100_N8S21090C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S21090C8D0Ev,_ZThn100_N8S21090C8D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C8__8S21090C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C8__8S21090C7[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C8__8S21090C7[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C8__8S21090C7[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__8S21090C8__8S21090C7[] = {
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C8__8S21090C7[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__8S21090C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__A1__8S21090C7[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C2__A1__8S21090C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C2__A1__8S21090C7[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__8S21090C7[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C5__A3__8S21090C7[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
static  VTT_ENTRY vtt_S21090C7[] = {
  {&(_ZTV8S21090C7[9]),  9,175},
  {&(_tg__ZTV8S21090C8__8S21090C7[7]),  7,18},
  {&(_tg__ZTV8S21090C38S21090C8__A1__8S21090C7[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C38S21090C8__A1__8S21090C7[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C38S21090C8__A1__8S21090C7[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C38S21090C8__A1__8S21090C7[4]),  4,6},
  {&(_tg__ZTV9S21090C118S21090C8__8S21090C7[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C8__8S21090C7[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C8__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C8__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C8__8S21090C7[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C7[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C118S21090C8__A2__8S21090C7[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C118S21090C8__8S21090C7[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C8__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C8__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C8__8S21090C7[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C118S21090C8__8S21090C7[5]),  5,11},
  {&(_tg__ZTV8S21090C3__A1__8S21090C8__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C9__8S21090C8__8S21090C7[3]),  3,4},
  {&(_tg__ZTV9S21090C11__8S21090C8__8S21090C7[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C8__8S21090C7[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__8S21090C8__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__8S21090C8__8S21090C7[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C8__8S21090C7[5]),  5,11},
  {&(_ZTV8S21090C7[119]),  119,175},
  {&(_ZTV8S21090C7[119]),  119,175},
  {&(_ZTV8S21090C7[131]),  131,175},
  {&(_ZTV8S21090C7[144]),  144,175},
  {&(_ZTV8S21090C7[39]),  39,175},
  {&(_ZTV8S21090C7[63]),  63,175},
  {&(_ZTV8S21090C7[77]),  77,175},
  {&(_ZTV8S21090C7[154]),  154,175},
  {&(_ZTV8S21090C7[169]),  169,175},
  {&(_tg__ZTV8S21090C3__8S21090C7[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__8S21090C7[5]),  5,11},
  {&(_tg__ZTV8S21090C58S21090C3__8S21090C7[5]),  5,11},
  {&(_tg__ZTV8S21090C3__8S21090C7[5]),  5,15},
  {&(_tg__ZTV8S21090C2__A1__8S21090C7[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C2__A1__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C3__8S21090C2__A1__8S21090C7[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C2__A1__8S21090C7[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A3__8S21090C7[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C5__A3__8S21090C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21090C7[];
extern  VTBL_ENTRY _ZTV8S21090C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C7[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21090C8D0Ev,_ZThn100_N8S21090C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21090C8D1Ev,_ZThn100_N8S21090C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21090C11D0Ev,_ZThn80_N9S21090C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21090C11D1Ev,_ZThn80_N9S21090C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21090C2D0Ev,_ZThn76_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21090C2D1Ev,_ZThn76_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21090C7D0Ev,_ZThn160_N8S21090C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21090C7D1Ev,_ZThn160_N8S21090C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21090C7D0Ev,_ZThn100_N8S21090C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21090C7D1Ev,_ZThn100_N8S21090C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C7 = {  "S21090C7", // class name
  bases_S21090C7, 22,
  &(vtc_S21090C7[0]), // expected_vtbl_contents
  &(vtt_S21090C7[0]), // expected_vtt_contents
  ABISELECT(320,176), // object size
  NSPAIRA(_ZTI8S21090C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21090C7),175, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21090C7),44, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C12  : virtual S21090C4 , S21090C8 , S21090C5 {
  void *s21090c12f0;
  int s21090c12f1;
  virtual void  v35(); // _ZN9S21090C123v35Ev
  virtual void  v36(); // _ZN9S21090C123v36Ev
  ~S21090C12(); // tgen
  S21090C12(); // tgen
};
//SIG(-1 S21090C12) C1{ VBC2{ v3 v4} BC3{ VBC2 BC4{ VBC2 BC5{ VBC2 v5 v6 v7 v8 Fp Fc} BC6{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC2} VBC7{ v19 FU8{ m FD[3]}} BC9{ BC6 BC10{ VBC4 vd v20 v21} BC7 BC5 v22 v23 v24 v25 v26 v27 Fp FL} BC6 vd v28} BC5 v1 v2 Fp Fi}


void  S21090C12 ::v35(){vfunc_called(this, "_ZN9S21090C123v35Ev");}
void  S21090C12 ::v36(){vfunc_called(this, "_ZN9S21090C123v36Ev");}
S21090C12 ::~S21090C12(){ note_dtor("S21090C12", this);} // tgen
S21090C12 ::S21090C12(){ note_ctor("S21090C12", this);} // tgen

static void Test_S21090C12()
{
  extern Class_Descriptor cd_S21090C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,45)];
    init_test(&cd_S21090C12, buf);
    S21090C12 *dp, &lv = *(dp=new (buf) S21090C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,176), "sizeof(S21090C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C12)");
    /*is_ambiguous_... S21090C12::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*), 0, "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), 0, "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), 0, "S21090C12");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*)(S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*), 0, "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C8*), ABISELECT(24,12), "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C8*), ABISELECT(24,12), "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C8*), ABISELECT(224,116), "S21090C12");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*)(S21090C8*), ABISELECT(48,20), "S21090C12");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*)(S21090C8*), ABISELECT(48,20), "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(288,156), "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(312,168), "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(312,168), "S21090C12");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*)(S21090C8*), ABISELECT(288,156), "S21090C12");
    check_base_class_offset(lv, (S21090C2*)(S21090C11*)(S21090C8*), ABISELECT(56,24), "S21090C12");
    check_base_class_offset(lv, (S21090C9*)(S21090C11*)(S21090C8*), ABISELECT(64,28), "S21090C12");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*)(S21090C8*), ABISELECT(128,68), "S21090C12");
    check_base_class_offset(lv, (S21090C11*)(S21090C8*), ABISELECT(48,20), "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C8*), ABISELECT(168,92), "S21090C12");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C8*), ABISELECT(168,92), "S21090C12");
    check_base_class_offset(lv, (S21090C8*), 0, "S21090C12");
    /*is_ambiguous_... S21090C12::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*), ABISELECT(176,96), "S21090C12");
    check_field_offset(lv, s21090c12f0, ABISELECT(200,108), "S21090C12.s21090c12f0");
    check_field_offset(lv, s21090c12f1, ABISELECT(208,112), "S21090C12.s21090c12f1");
    test_class_info(&lv, &cd_S21090C12);
    dp->~S21090C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C12(Test_S21090C12, "S21090C12", ABISELECT(336,176));

#else // __cplusplus

extern void _ZN9S21090C12C1Ev();
extern void _ZN9S21090C12D1Ev();
Name_Map name_map_S21090C12[] = {
  NSPAIR(_ZN9S21090C12C1Ev),
  NSPAIR(_ZN9S21090C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C8;
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
static Base_Class bases_S21090C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(24,12), //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(224,116), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21090C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(288,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(312,168), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(288,156), //bcp->offset
    107, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21090C2,    ABISELECT(56,24), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(64,28), //bcp->offset
    66, //bcp->virtual_function_table_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_S21090C5,    ABISELECT(128,68), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(168,92), //bcp->offset
    80, //bcp->virtual_function_table_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_S21090C8,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C5,    ABISELECT(176,96), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21090C12[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN9S21090C12D1Ev();
extern void _ZN9S21090C12D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN9S21090C123v35Ev();
extern void _ZN9S21090C123v36Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N9S21090C12D1Ev,_ZThn20_N9S21090C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21090C12D0Ev,_ZThn20_N9S21090C12D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N9S21090C12D1Ev,_ZThn24_N9S21090C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21090C12D0Ev,_ZThn24_N9S21090C12D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C12D1Ev,_ZTv0_n40_N9S21090C12D1Ev)();
extern void ABISELECT(_ZThn288_N9S21090C12D1Ev,_ZThn156_N9S21090C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C12D0Ev,_ZTv0_n40_N9S21090C12D0Ev)();
extern void ABISELECT(_ZThn288_N9S21090C12D0Ev,_ZThn156_N9S21090C12D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY vtc_S21090C12[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21090C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN9S21090C123v35Ev,
  (VTBL_ENTRY)&_ZN9S21090C123v36Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21090C12D1Ev,_ZThn20_N9S21090C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21090C12D0Ev,_ZThn20_N9S21090C12D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21090C12D1Ev,_ZThn24_N9S21090C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21090C12D0Ev,_ZThn24_N9S21090C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C12D1Ev,_ZTv0_n40_N9S21090C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C12D0Ev,_ZTv0_n40_N9S21090C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern VTBL_ENTRY _ZTV9S21090C12[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C8__9S21090C12[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C38S21090C8__9S21090C12[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C38S21090C8__9S21090C12[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S21090C2D1Ev,_ZThn132_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S21090C2D0Ev,_ZThn132_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C29S21090C118S21090C8__9S21090C12[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C8__A2__9S21090C12[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C118S21090C8__A2__9S21090C12[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21090C11D1Ev,_ZThn136_N9S21090C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21090C11D0Ev,_ZThn136_N9S21090C11D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__A1__9S21090C118S21090C8__9S21090C12[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C118S21090C8__9S21090C12[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C8__9S21090C12[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C8__9S21090C12[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C8__9S21090C12[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn288_N8S21090C8D1Ev,_ZThn156_N8S21090C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void ABISELECT(_ZThn288_N8S21090C8D0Ev,_ZThn156_N8S21090C8D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C8__9S21090C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__8S21090C8__9S21090C12[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C8__9S21090C12[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__9S21090C12[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C5__A3__9S21090C12[] = {
  0,
  0,
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__9S21090C12[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__A1__9S21090C12[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C3__A1__9S21090C12[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C3__A1__9S21090C12[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
static  VTT_ENTRY vtt_S21090C12[] = {
  {&(_ZTV9S21090C12[7]),  7,149},
  {&(_tg__ZTV8S21090C8__9S21090C12[7]),  7,18},
  {&(_tg__ZTV8S21090C38S21090C8__9S21090C12[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C38S21090C8__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C58S21090C38S21090C8__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C38S21090C8__9S21090C12[5]),  5,15},
  {&(_tg__ZTV9S21090C118S21090C8__9S21090C12[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C8__9S21090C12[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C8__9S21090C12[20]),  20,30},
  {&(_tg__ZTV8S21090C4__8S21090C29S21090C118S21090C8__9S21090C12[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C8__9S21090C12[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C8__A2__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C118S21090C8__A2__9S21090C12[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C118S21090C8__9S21090C12[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C8__9S21090C12[20]),  20,30},
  {&(_tg__ZTV8S21090C4__A1__9S21090C118S21090C8__9S21090C12[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C8__9S21090C12[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C118S21090C8__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C8__9S21090C12[7]),  7,18},
  {&(_tg__ZTV8S21090C9__8S21090C8__9S21090C12[3]),  3,4},
  {&(_tg__ZTV9S21090C11__8S21090C8__9S21090C12[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C8__9S21090C12[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__8S21090C8__9S21090C12[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__8S21090C8__9S21090C12[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C8__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C5__A3__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C5__A3__9S21090C12[4]),  4,6},
  {&(_ZTV9S21090C12[7]),  7,149},
  {&(_ZTV9S21090C12[106]),  106,149},
  {&(_ZTV9S21090C12[36]),  36,149},
  {&(_ZTV9S21090C12[60]),  60,149},
  {&(_ZTV9S21090C12[127]),  127,149},
  {&(_ZTV9S21090C12[139]),  139,149},
  {&(_ZTV9S21090C12[74]),  74,149},
  {&(_ZTV9S21090C12[97]),  97,149},
  {&(_tg__ZTV8S21090C3__A1__9S21090C12[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__A1__9S21090C12[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C3__A1__9S21090C12[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C3__A1__9S21090C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21090C12[];
extern  VTBL_ENTRY _ZTV9S21090C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C12[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21090C8D0Ev,_ZThn156_N8S21090C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21090C8D1Ev,_ZThn156_N8S21090C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21090C11D0Ev,_ZThn136_N9S21090C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21090C11D1Ev,_ZThn136_N9S21090C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21090C2D0Ev,_ZThn132_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21090C2D1Ev,_ZThn132_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C12D0Ev,_ZTv0_n40_N9S21090C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21090C12D0Ev,_ZThn156_N9S21090C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C12D1Ev,_ZTv0_n40_N9S21090C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21090C12D1Ev,_ZThn156_N9S21090C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C12 = {  "S21090C12", // class name
  bases_S21090C12, 20,
  &(vtc_S21090C12[0]), // expected_vtbl_contents
  &(vtt_S21090C12[0]), // expected_vtt_contents
  ABISELECT(336,176), // object size
  NSPAIRA(_ZTI9S21090C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21090C12),149, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21090C12),39, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C14  : S21090C3 , S21090C9 {
  virtual void  v37(); // _ZN9S21090C143v37Ev
  virtual void  v38(); // _ZN9S21090C143v38Ev
  ~S21090C14(); // tgen
  S21090C14(); // tgen
};
//SIG(-1 S21090C14) C1{ BC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} BC6{ v19 FU7{ m FD[3]}} v1 v2}


void  S21090C14 ::v37(){vfunc_called(this, "_ZN9S21090C143v37Ev");}
void  S21090C14 ::v38(){vfunc_called(this, "_ZN9S21090C143v38Ev");}
S21090C14 ::~S21090C14(){ note_dtor("S21090C14", this);} // tgen
S21090C14 ::S21090C14(){ note_ctor("S21090C14", this);} // tgen

static void Test_S21090C14()
{
  extern Class_Descriptor cd_S21090C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S21090C14, buf);
    S21090C14 *dp, &lv = *(dp=new (buf) S21090C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S21090C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C14)");
    /*is_ambiguous_... S21090C3::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), 0, "S21090C14");
    check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), 0, "S21090C14");
    check_base_class_offset(lv, (S21090C5*)(S21090C3*), 0, "S21090C14");
    check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(24,12), "S21090C14");
    check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(24,12), "S21090C14");
    check_base_class_offset(lv, (S21090C3*), 0, "S21090C14");
    check_base_class_offset(lv, (S21090C9*), ABISELECT(48,20), "S21090C14");
    test_class_info(&lv, &cd_S21090C14);
    dp->~S21090C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C14(Test_S21090C14, "S21090C14", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S21090C14C1Ev();
extern void _ZN9S21090C14D1Ev();
Name_Map name_map_S21090C14[] = {
  NSPAIR(_ZN9S21090C14C1Ev),
  NSPAIR(_ZN9S21090C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
static Base_Class bases_S21090C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21090C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(24,12), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C3,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C9,    ABISELECT(48,20), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21090C14[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN9S21090C14D1Ev();
extern void _ZN9S21090C14D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN9S21090C143v37Ev();
extern void _ZN9S21090C143v38Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY vtc_S21090C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21090C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v38Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern VTBL_ENTRY _ZTV9S21090C14[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__9S21090C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
static  VTT_ENTRY vtt_S21090C14[] = {
  {&(_ZTV9S21090C14[5]),  5,32},
  {&(_tg__ZTV8S21090C3__9S21090C14[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__9S21090C14[5]),  5,11},
  {&(_tg__ZTV8S21090C58S21090C3__9S21090C14[5]),  5,11},
  {&(_tg__ZTV8S21090C3__9S21090C14[5]),  5,15},
  {&(_ZTV9S21090C14[5]),  5,32},
};
extern VTBL_ENTRY _ZTI9S21090C14[];
extern  VTBL_ENTRY _ZTV9S21090C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C14[];
Class_Descriptor cd_S21090C14 = {  "S21090C14", // class name
  bases_S21090C14, 6,
  &(vtc_S21090C14[0]), // expected_vtbl_contents
  &(vtt_S21090C14[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S21090C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21090C14),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21090C14),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C13  : S21090C9 , virtual S21090C4 , S21090C7 , S21090C14 {
  __tsi64 s21090c13f0;
  virtual  ~S21090C13(); // _ZN9S21090C13D2Ev
  S21090C13(); // tgen
};
//SIG(-1 S21090C13) C1{ BC2{ v1 FU3{ m FD[3]}} VBC4{ v2 v3} BC5{ VBC6{ VBC4 BC7{ VBC4 v4 v5 v6 v7 Fp Fc} BC8{ BC4 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC4} BC9{ VBC4 BC6 VBC2 BC10{ BC8 BC11{ VBC6 vd v18 v19} BC2 BC7 v20 v21 v22 v23 v24 v25 Fp FL} BC8 vd v26} VBC11 VBC7 BC4 vd v27 v28 v29} BC12{ BC6 BC2 v30 v31} vd FL}


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

static void Test_S21090C13()
{
  extern Class_Descriptor cd_S21090C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,72)];
    init_test(&cd_S21090C13, buf);
    S21090C13 *dp, &lv = *(dp=new (buf) S21090C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,284), "sizeof(S21090C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C13)");
    /*is_ambiguous_... S21090C13::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*), 0, "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C8*)(S21090C7*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C3::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C14*), ABISELECT(376,208), "S21090C13");
    check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C14*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(400,220), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(400,220), "S21090C13");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C7*), ABISELECT(376,208), "S21090C13");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C13::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C2*), ABISELECT(376,208), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(64,40), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(88,52), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(88,52), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(64,40), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C8*)(S21090C7*), ABISELECT(416,228), "S21090C13");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(112,60), "S21090C13");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(112,60), "S21090C13");
    check_base_class_offset(lv, (S21090C2*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(120,64), "S21090C13");
    check_base_class_offset(lv, (S21090C9*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(128,68), "S21090C13");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(192,108), "S21090C13");
    check_base_class_offset(lv, (S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(112,60), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C8*)(S21090C7*), ABISELECT(232,132), "S21090C13");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C8*)(S21090C7*), ABISELECT(232,132), "S21090C13");
    check_base_class_offset(lv, (S21090C8*)(S21090C7*), ABISELECT(64,40), "S21090C13");
    /*is_ambiguous_... S21090C7::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C2*)(S21090C7*), ABISELECT(480,268), "S21090C13");
    /*is_ambiguous_... S21090C7::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C7*), ABISELECT(488,272), "S21090C13");
    /*is_ambiguous_... S21090C7::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C7*), ABISELECT(240,136), "S21090C13");
    check_base_class_offset(lv, (S21090C7*), ABISELECT(64,40), "S21090C13");
    check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C14*), ABISELECT(256,140), "S21090C13");
    check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C14*), ABISELECT(280,152), "S21090C13");
    check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C14*), ABISELECT(280,152), "S21090C13");
    check_base_class_offset(lv, (S21090C3*)(S21090C14*), ABISELECT(256,140), "S21090C13");
    check_base_class_offset(lv, (S21090C9*)(S21090C14*), ABISELECT(304,160), "S21090C13");
    check_base_class_offset(lv, (S21090C14*), ABISELECT(256,140), "S21090C13");
    check_field_offset(lv, s21090c13f0, ABISELECT(368,200), "S21090C13.s21090c13f0");
    test_class_info(&lv, &cd_S21090C13);
    dp->~S21090C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C13(Test_S21090C13, "S21090C13", ABISELECT(512,284));

#else // __cplusplus

extern void _ZN9S21090C13C1Ev();
extern void _ZN9S21090C13D2Ev();
Name_Map name_map_S21090C13[] = {
  NSPAIR(_ZN9S21090C13C1Ev),
  NSPAIR(_ZN9S21090C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C8;
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C7;
extern VTBL_ENTRY _ZTI8S21090C7[];
extern  VTBL_ENTRY _ZTV8S21090C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C7[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C14;
extern VTBL_ENTRY _ZTI9S21090C14[];
extern  VTBL_ENTRY _ZTV9S21090C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C14[];
static Base_Class bases_S21090C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21090C4,    ABISELECT(376,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    ABISELECT(376,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(400,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(400,220), //bcp->offset
    171, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(376,208), //bcp->offset
    141, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21090C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(88,52), //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
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(416,228), //bcp->offset
    183, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21090C4,    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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21090C6,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C2,    ABISELECT(120,64), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(128,68), //bcp->offset
    79, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(192,108), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(112,60), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(232,132), //bcp->offset
    93, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S21090C8,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21090C2,    ABISELECT(480,268), //bcp->offset
    187, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21090C5,    ABISELECT(488,272), //bcp->offset
    202, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21090C4,    ABISELECT(240,136), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21090C7,    ABISELECT(64,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C5,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(280,152), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(304,160), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21090C14,    ABISELECT(256,140), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21090C13[];
extern void _ZN8S21090C93v22Ev();
extern void _ZN9S21090C13D1Ev();
extern void _ZN9S21090C13D0Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZThn64_N9S21090C13D1Ev,_ZThn40_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21090C13D0Ev,_ZThn40_N9S21090C13D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn112_N9S21090C13D1Ev,_ZThn60_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S21090C13D0Ev,_ZThn60_N9S21090C13D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn120_N9S21090C13D1Ev,_ZThn64_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21090C13D0Ev,_ZThn64_N9S21090C13D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZThn256_N9S21090C13D1Ev,_ZThn140_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S21090C13D0Ev,_ZThn140_N9S21090C13D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN9S21090C143v37Ev();
extern void _ZN9S21090C143v38Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C13D1Ev,_ZTv0_n40_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn376_N9S21090C13D1Ev,_ZThn208_N9S21090C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C13D0Ev,_ZTv0_n40_N9S21090C13D0Ev)();
extern void ABISELECT(_ZThn376_N9S21090C13D0Ev,_ZThn208_N9S21090C13D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S21090C13D1Ev,_ZTv0_n28_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn480_N9S21090C13D1Ev,_ZThn268_N9S21090C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21090C13D0Ev,_ZTv0_n28_N9S21090C13D0Ev)();
extern void ABISELECT(_ZThn480_N9S21090C13D0Ev,_ZThn268_N9S21090C13D0Ev)() __attribute__((weak));
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY vtc_S21090C13[] = {
  ABISELECT(488,272),
  ABISELECT(480,268),
  ABISELECT(416,228),
  ABISELECT(376,208),
  ABISELECT(376,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  (VTBL_ENTRY)&_ZN9S21090C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C13D0Ev,
  ABISELECT(424,232),
  ABISELECT(416,228),
  ABISELECT(312,168),
  ABISELECT(352,188),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21090C13D1Ev,_ZThn40_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21090C13D0Ev,_ZThn40_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21090C13D1Ev,_ZThn60_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21090C13D0Ev,_ZThn60_N9S21090C13D0Ev),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21090C13D1Ev,_ZThn64_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21090C13D0Ev,_ZThn64_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21090C13D1Ev,_ZThn140_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21090C13D0Ev,_ZThn140_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v38Ev,
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-376,-208),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C13D1Ev,_ZTv0_n40_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C13D0Ev,_ZTv0_n40_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-400,-220),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  0,
  ABISELECT(-416,-228),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  0,
  0,
  ABISELECT(-480,-268),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21090C13D1Ev,_ZTv0_n28_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21090C13D0Ev,_ZTv0_n28_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-488,-272),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern VTBL_ENTRY _ZTV9S21090C13[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C7D1Ev();
extern void _ZN8S21090C7D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C7__9S21090C13[] = {
  ABISELECT(424,232),
  ABISELECT(416,228),
  ABISELECT(312,168),
  ABISELECT(352,188),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(312,168),
  ABISELECT(352,188),
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C38S21090C88S21090C7__A1__9S21090C13[] = {
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C38S21090C88S21090C7__A1__9S21090C13[] = {
  ABISELECT(312,168),
  ABISELECT(312,168),
  ABISELECT(312,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C38S21090C88S21090C7__A1__9S21090C13[] = {
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C38S21090C88S21090C7__A1__9S21090C13[] = {
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn256_N8S21090C2D1Ev,_ZThn144_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn256_N8S21090C2D0Ev,_ZThn144_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-256,-144),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C88S21090C7__A2__9S21090C13[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C118S21090C88S21090C7__A2__9S21090C13[] = {
  0,
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21090C11D1Ev,_ZThn148_N9S21090C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void ABISELECT(_ZThn264_N9S21090C11D0Ev,_ZThn148_N9S21090C11D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-264,-148),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C118S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn312_N8S21090C8D1Ev,_ZThn168_N8S21090C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void ABISELECT(_ZThn312_N8S21090C8D0Ev,_ZThn168_N8S21090C8D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-168),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C88S21090C7__9S21090C13[] = {
  0,
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__8S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C88S21090C7__9S21090C13[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S21090C7D1Ev,_ZThn168_N8S21090C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S21090C7D0Ev,_ZThn168_N8S21090C7D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C7__9S21090C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-168),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C7__9S21090C13[] = {
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C7__9S21090C13[] = {
  0,
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C8__8S21090C7__9S21090C13[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C8__8S21090C7__9S21090C13[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(256,144),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C7__9S21090C13[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn416_N8S21090C7D1Ev,_ZThn228_N8S21090C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev)();
extern void ABISELECT(_ZThn416_N8S21090C7D0Ev,_ZThn228_N8S21090C7D0Ev)() __attribute__((weak));
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__A1__8S21090C7__9S21090C13[] = {
  0,
  0,
  ABISELECT(-416,-228),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-416,-228),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__8S21090C7__9S21090C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-424,-232),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN9S21090C14D1Ev();
extern void _ZN9S21090C14D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN9S21090C143v37Ev();
extern void _ZN9S21090C143v38Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C14__9S21090C13[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21090C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v38Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C39S21090C14__A2__9S21090C13[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C39S21090C14__A4__9S21090C13[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C39S21090C14__A4__9S21090C13[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C39S21090C14__A2__9S21090C13[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__9S21090C14__9S21090C13[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__9S21090C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__A1__9S21090C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C2__A1__9S21090C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C2__A1__9S21090C13[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__9S21090C13[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C5__A3__9S21090C13[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
static  VTT_ENTRY vtt_S21090C13[] = {
  {&(_ZTV9S21090C13[7]),  7,217},
  {&(_tg__ZTV8S21090C7__9S21090C13[9]),  9,23},
  {&(_tg__ZTV8S21090C88S21090C7__9S21090C13[7]),  7,18},
  {&(_tg__ZTV8S21090C38S21090C88S21090C7__A1__9S21090C13[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C38S21090C88S21090C7__A1__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C38S21090C88S21090C7__A1__9S21090C13[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C38S21090C88S21090C7__A1__9S21090C13[4]),  4,6},
  {&(_tg__ZTV9S21090C118S21090C88S21090C7__9S21090C13[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C88S21090C7__9S21090C13[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C88S21090C7__9S21090C13[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C88S21090C7__A2__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C118S21090C88S21090C7__A2__9S21090C13[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C118S21090C88S21090C7__9S21090C13[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C88S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C88S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C88S21090C7__9S21090C13[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C118S21090C88S21090C7__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C3__A1__8S21090C88S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C9__8S21090C88S21090C7__9S21090C13[3]),  3,4},
  {&(_tg__ZTV9S21090C11__8S21090C88S21090C7__9S21090C13[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C88S21090C7__9S21090C13[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__8S21090C88S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__8S21090C88S21090C7__9S21090C13[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C88S21090C7__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C3__8S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C3__8S21090C7__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C7__9S21090C13[2]),  2,12},
  {&(_tg__ZTV8S21090C9__8S21090C7__9S21090C13[3]),  3,4},
  {&(_tg__ZTV9S21090C118S21090C8__8S21090C7__9S21090C13[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C8__8S21090C7__9S21090C13[6]),  6,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C7__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C2__A1__8S21090C7__9S21090C13[9]),  9,15},
  {&(_tg__ZTV8S21090C5__A3__8S21090C7__9S21090C13[9]),  9,15},
  {&(_tg__ZTV9S21090C14__9S21090C13[5]),  5,17},
  {&(_tg__ZTV8S21090C39S21090C14__A2__9S21090C13[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C39S21090C14__A4__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C39S21090C14__A4__9S21090C13[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C39S21090C14__A2__9S21090C13[4]),  4,6},
  {&(_tg__ZTV8S21090C4__9S21090C14__9S21090C13[4]),  4,6},
  {&(_ZTV9S21090C13[161]),  161,217},
  {&(_ZTV9S21090C13[19]),  19,217},
  {&(_ZTV9S21090C13[161]),  161,217},
  {&(_ZTV9S21090C13[173]),  173,217},
  {&(_ZTV9S21090C13[186]),  186,217},
  {&(_ZTV9S21090C13[49]),  49,217},
  {&(_ZTV9S21090C13[73]),  73,217},
  {&(_ZTV9S21090C13[87]),  87,217},
  {&(_ZTV9S21090C13[196]),  196,217},
  {&(_ZTV9S21090C13[211]),  211,217},
  {&(_ZTV9S21090C13[114]),  114,217},
  {&(_tg__ZTV8S21090C3__9S21090C13[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C58S21090C3__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C3__9S21090C13[5]),  5,15},
  {&(_tg__ZTV8S21090C2__A1__9S21090C13[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C2__A1__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C3__8S21090C2__A1__9S21090C13[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C2__A1__9S21090C13[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A3__9S21090C13[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C5__A3__9S21090C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21090C13[];
extern  VTBL_ENTRY _ZTV9S21090C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C13[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21090C7D0Ev,_ZThn228_N8S21090C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21090C7D1Ev,_ZThn228_N8S21090C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21090C7D0Ev,_ZThn168_N8S21090C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21090C7D1Ev,_ZThn168_N8S21090C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21090C8D0Ev,_ZThn168_N8S21090C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21090C8D1Ev,_ZThn168_N8S21090C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21090C11D0Ev,_ZThn148_N9S21090C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21090C11D1Ev,_ZThn148_N9S21090C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21090C2D0Ev,_ZThn144_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21090C2D1Ev,_ZThn144_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21090C13D0Ev,_ZTv0_n28_N9S21090C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21090C13D0Ev,_ZThn268_N9S21090C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21090C13D1Ev,_ZTv0_n28_N9S21090C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21090C13D1Ev,_ZThn268_N9S21090C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C13D0Ev,_ZTv0_n40_N9S21090C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21090C13D0Ev,_ZThn208_N9S21090C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C13D1Ev,_ZTv0_n40_N9S21090C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21090C13D1Ev,_ZThn208_N9S21090C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C13 = {  "S21090C13", // class name
  bases_S21090C13, 30,
  &(vtc_S21090C13[0]), // expected_vtbl_contents
  &(vtt_S21090C13[0]), // expected_vtt_contents
  ABISELECT(512,284), // object size
  NSPAIRA(_ZTI9S21090C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21090C13),217, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21090C13),62, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21090C1  : virtual S21090C2 , virtual S21090C7 , S21090C12 , virtual S21090C13 {
  virtual  ~S21090C1(); // _ZN8S21090C1D2Ev
  virtual void  v1(); // _ZN8S21090C12v1Ev
  virtual void  v2(); // _ZN8S21090C12v2Ev
  virtual void  v3(); // _ZN8S21090C12v3Ev
  virtual void  v4(); // _ZN8S21090C12v4Ev
  virtual void  v5(); // _ZN8S21090C12v5Ev
  S21090C1(); // tgen
};
//SIG(1 S21090C1) C1{ VBC2{ VBC3{ VBC4{ v6 v7} BC5{ VBC4 v8 v9 v10 v11 Fp Fc} BC6{ BC4 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC4} vd v22 v23} VBC7{ VBC3 BC8{ VBC4 BC3 VBC9{ v24 FU10{ m FD[3]}} BC11{ BC6 BC2 BC9 BC5 v25 v26 v27 v28 v29 v30 Fp FL} BC6 vd v31} VBC2 VBC5 BC4 vd v32 v33 v34} BC12{ VBC4 BC8 BC5 v35 v36 Fp Fi} VBC13{ BC9 VBC4 BC7 BC14{ BC3 BC9 v37 v38} vd FL} vd v1 v2 v3 v4 v5}


 S21090C1 ::~S21090C1(){ note_dtor("S21090C1", this);}
void  S21090C1 ::v1(){vfunc_called(this, "_ZN8S21090C12v1Ev");}
void  S21090C1 ::v2(){vfunc_called(this, "_ZN8S21090C12v2Ev");}
void  S21090C1 ::v3(){vfunc_called(this, "_ZN8S21090C12v3Ev");}
void  S21090C1 ::v4(){vfunc_called(this, "_ZN8S21090C12v4Ev");}
void  S21090C1 ::v5(){vfunc_called(this, "_ZN8S21090C12v5Ev");}
S21090C1 ::S21090C1(){ note_ctor("S21090C1", this);} // tgen

static void Test_S21090C1()
{
  extern Class_Descriptor cd_S21090C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(60,126)];
    init_test(&cd_S21090C1, buf);
    S21090C1 *dp, &lv = *(dp=new (buf) S21090C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(944,500), "sizeof(S21090C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21090C1)");
    /*is_ambiguous_... S21090C1::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C8*)(S21090C7*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C12::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C12*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C8*)(S21090C12*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C8*)(S21090C12*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C8*)(S21090C12*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C12::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C12*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C13::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C3::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C3*)(S21090C14*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    check_base_class_offset(lv, (S21090C4*)(S21090C5*)(S21090C3*)(S21090C14*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*), ABISELECT(224,120), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*), ABISELECT(248,132), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*), ABISELECT(248,132), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C2*), ABISELECT(224,120), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C7*), ABISELECT(224,120), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(224,120), "S21090C1");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(224,120), "S21090C1");
    /*is_ambiguous_... S21090C7::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C7*)(S21090C13*), ABISELECT(224,120), "S21090C1");
    check_base_class_offset(lv, (S21090C3*)(S21090C2*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(224,120), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C2*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C2*)(S21090C7*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C7::S21090C2 */ AMB_check_base_class_offset(lv, (S21090C2*)(S21090C7*)(S21090C13*), ABISELECT(216,116), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(272,140), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(296,152), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(296,152), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C8*)(S21090C7*), ABISELECT(272,140), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C8*)(S21090C7*), ABISELECT(464,240), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C8*)(S21090C12*), ABISELECT(464,240), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(464,240), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(320,160), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(320,160), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C2*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(328,164), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(336,168), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(400,208), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C11*)(S21090C8*)(S21090C7*), ABISELECT(320,160), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C8*)(S21090C7*), ABISELECT(440,232), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C8*)(S21090C7*), ABISELECT(440,232), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C8*)(S21090C7*), ABISELECT(272,140), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C7*), ABISELECT(528,280), "S21090C1");
    /*is_ambiguous_... S21090C7::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C7*)(S21090C13*), ABISELECT(528,280), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C7*), ABISELECT(448,236), "S21090C1");
    /*is_ambiguous_... S21090C1::S21090C7 */ AMB_check_base_class_offset(lv, (S21090C7*), ABISELECT(272,140), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C8*)(S21090C12*), 0, "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C8*)(S21090C12*), ABISELECT(24,12), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C8*)(S21090C12*), ABISELECT(24,12), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C8*)(S21090C12*), 0, "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(48,20), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(48,20), "S21090C1");
    check_base_class_offset(lv, (S21090C2*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(56,24), "S21090C1");
    check_base_class_offset(lv, (S21090C9*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(64,28), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(128,68), "S21090C1");
    check_base_class_offset(lv, (S21090C11*)(S21090C8*)(S21090C12*), ABISELECT(48,20), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C8*)(S21090C12*), ABISELECT(168,92), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C8*)(S21090C12*), ABISELECT(168,92), "S21090C1");
    check_base_class_offset(lv, (S21090C8*)(S21090C12*), 0, "S21090C1");
    /*is_ambiguous_... S21090C12::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C12*), ABISELECT(176,96), "S21090C1");
    check_base_class_offset(lv, (S21090C12*), 0, "S21090C1");
    /*is_ambiguous_... S21090C13::S21090C9 */ AMB_check_base_class_offset(lv, (S21090C9*)(S21090C13*), ABISELECT(560,292), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(624,332), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(648,344), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(648,344), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C3 */ AMB_check_base_class_offset(lv, (S21090C3*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(624,332), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(672,352), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(672,352), "S21090C1");
    check_base_class_offset(lv, (S21090C2*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(680,356), "S21090C1");
    check_base_class_offset(lv, (S21090C9*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(688,360), "S21090C1");
    /*is_ambiguous_... S21090C11::S21090C5 */ AMB_check_base_class_offset(lv, (S21090C5*)(S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(752,400), "S21090C1");
    check_base_class_offset(lv, (S21090C11*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(672,352), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(792,424), "S21090C1");
    /*is_ambiguous_... S21090C8::S21090C6 */ AMB_check_base_class_offset(lv, (S21090C6*)(S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(792,424), "S21090C1");
    check_base_class_offset(lv, (S21090C8*)(S21090C7*)(S21090C13*), ABISELECT(624,332), "S21090C1");
    /*is_ambiguous_... S21090C7::S21090C4 */ AMB_check_base_class_offset(lv, (S21090C4*)(S21090C7*)(S21090C13*), ABISELECT(800,428), "S21090C1");
    check_base_class_offset(lv, (S21090C7*)(S21090C13*), ABISELECT(624,332), "S21090C1");
    check_base_class_offset(lv, (S21090C5*)(S21090C3*)(S21090C14*)(S21090C13*), ABISELECT(816,432), "S21090C1");
    check_base_class_offset(lv, (S21090C4*)(S21090C6*)(S21090C3*)(S21090C14*)(S21090C13*), ABISELECT(840,444), "S21090C1");
    check_base_class_offset(lv, (S21090C6*)(S21090C3*)(S21090C14*)(S21090C13*), ABISELECT(840,444), "S21090C1");
    check_base_class_offset(lv, (S21090C3*)(S21090C14*)(S21090C13*), ABISELECT(816,432), "S21090C1");
    check_base_class_offset(lv, (S21090C9*)(S21090C14*)(S21090C13*), ABISELECT(864,452), "S21090C1");
    check_base_class_offset(lv, (S21090C14*)(S21090C13*), ABISELECT(816,432), "S21090C1");
    check_base_class_offset(lv, (S21090C13*), ABISELECT(560,292), "S21090C1");
    test_class_info(&lv, &cd_S21090C1);
    dp->~S21090C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21090C1(Test_S21090C1, "S21090C1", ABISELECT(944,500));

#else // __cplusplus

extern void _ZN8S21090C1C1Ev();
extern void _ZN8S21090C1D2Ev();
Name_Map name_map_S21090C1[] = {
  NSPAIR(_ZN8S21090C1C1Ev),
  NSPAIR(_ZN8S21090C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C8;
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C7;
extern VTBL_ENTRY _ZTI8S21090C7[];
extern  VTBL_ENTRY _ZTV8S21090C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C7[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C8;
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C12;
extern VTBL_ENTRY _ZTI9S21090C12[];
extern  VTBL_ENTRY _ZTV9S21090C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C12[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C2;
extern VTBL_ENTRY _ZTI8S21090C2[];
extern  VTBL_ENTRY _ZTV8S21090C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C2[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C11;
extern VTBL_ENTRY _ZTI9S21090C11[];
extern  VTBL_ENTRY _ZTV9S21090C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C11[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C8;
extern VTBL_ENTRY _ZTI8S21090C8[];
extern  VTBL_ENTRY _ZTV8S21090C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C8[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C7;
extern VTBL_ENTRY _ZTI8S21090C7[];
extern  VTBL_ENTRY _ZTV8S21090C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C7[];
extern Class_Descriptor cd_S21090C5;
extern VTBL_ENTRY _ZTI8S21090C5[];
extern  VTBL_ENTRY _ZTV8S21090C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C5[];
extern Class_Descriptor cd_S21090C4;
extern VTBL_ENTRY _ZTI8S21090C4[];
extern  VTBL_ENTRY _ZTV8S21090C4[];
extern Class_Descriptor cd_S21090C6;
extern VTBL_ENTRY _ZTI8S21090C6[];
extern  VTBL_ENTRY _ZTV8S21090C6[];
extern Class_Descriptor cd_S21090C3;
extern VTBL_ENTRY _ZTI8S21090C3[];
extern  VTBL_ENTRY _ZTV8S21090C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C3[];
extern Class_Descriptor cd_S21090C9;
extern VTBL_ENTRY _ZTI8S21090C9[];
extern  VTBL_ENTRY _ZTV8S21090C9[];
extern Class_Descriptor cd_S21090C14;
extern VTBL_ENTRY _ZTI9S21090C14[];
extern  VTBL_ENTRY _ZTV9S21090C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C14[];
extern Class_Descriptor cd_S21090C13;
extern VTBL_ENTRY _ZTI9S21090C13[];
extern  VTBL_ENTRY _ZTV9S21090C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21090C13[];
static Base_Class bases_S21090C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21090C4,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21090C5,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(248,132), //bcp->offset
    157, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(224,120), //bcp->offset
    127, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21090C2,    ABISELECT(216,116), //bcp->offset
    112, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(296,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
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(296,152), //bcp->offset
    220, //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
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(464,240), //bcp->offset
    296, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21090C4,    ABISELECT(320,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
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(320,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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C2,    ABISELECT(328,164), //bcp->offset
    254, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(336,168), //bcp->offset
    266, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(400,208), //bcp->offset
    269, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(320,160), //bcp->offset
    232, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(440,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
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(440,232), //bcp->offset
    280, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21090C8,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(528,280), //bcp->offset
    300, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21090C4,    ABISELECT(448,236), //bcp->offset
    292, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21090C7,    ABISELECT(272,140), //bcp->offset
    169, //bcp->virtual_function_table_offset
    37, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21090C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    48, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(24,12), //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
    49, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21090C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21090C2,    ABISELECT(56,24), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(64,28), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(128,68), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(48,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    57, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(168,92), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21090C8,    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
    59, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(176,96), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21090C12,    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
    61, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21090C9,    ABISELECT(560,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
    24, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(624,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21090C4,    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
    26, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(648,344), //bcp->offset
    380, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(624,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(672,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
    29, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(672,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
    30, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21090C2,    ABISELECT(680,356), //bcp->offset
    414, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(688,360), //bcp->offset
    426, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(752,400), //bcp->offset
    429, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21090C11,    ABISELECT(672,352), //bcp->offset
    392, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(792,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(792,424), //bcp->offset
    440, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S21090C8,    ABISELECT(624,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(800,428), //bcp->offset
    452, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21090C7,    ABISELECT(624,332), //bcp->offset
    357, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21090C5,    ABISELECT(816,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21090C4,    ABISELECT(840,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
    41, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S21090C6,    ABISELECT(840,444), //bcp->offset
    473, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21090C3,    ABISELECT(816,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S21090C9,    ABISELECT(864,452), //bcp->offset
    485, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S21090C14,    ABISELECT(816,432), //bcp->offset
    456, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21090C13,    ABISELECT(560,292), //bcp->offset
    315, //bcp->virtual_function_table_offset
    39, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21090C1[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C1D1Ev();
extern void _ZN8S21090C1D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN9S21090C123v35Ev();
extern void _ZN9S21090C123v36Ev();
extern void _ZN8S21090C12v1Ev();
extern void _ZN8S21090C12v2Ev();
extern void _ZN8S21090C12v3Ev();
extern void _ZN8S21090C12v4Ev();
extern void _ZN8S21090C12v5Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C1D1Ev,_ZThn20_N8S21090C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C1D0Ev,_ZThn20_N8S21090C1D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C1D1Ev,_ZThn24_N8S21090C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C1D0Ev,_ZThn24_N8S21090C1D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21090C1D1Ev,_ZTv0_n28_N8S21090C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S21090C1D1Ev,_ZThn116_N8S21090C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21090C1D0Ev,_ZTv0_n28_N8S21090C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S21090C1D0Ev,_ZThn116_N8S21090C1D0Ev)() __attribute__((weak));
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C1D1Ev,_ZTv0_n40_N8S21090C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21090C1D1Ev,_ZThn120_N8S21090C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C1D0Ev,_ZTv0_n40_N8S21090C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21090C1D0Ev,_ZThn120_N8S21090C1D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n112_N8S21090C1D1Ev,_ZTv0_n56_N8S21090C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21090C1D1Ev,_ZThn140_N8S21090C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S21090C1D0Ev,_ZTv0_n56_N8S21090C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21090C1D0Ev,_ZThn140_N8S21090C1D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZTvn48_n112_N8S21090C1D1Ev,_ZTvn20_n56_N8S21090C1D1Ev)();
extern void ABISELECT(_ZTvn48_n112_N8S21090C1D0Ev,_ZTvn20_n56_N8S21090C1D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTvn56_n112_N8S21090C1D1Ev,_ZTvn24_n56_N8S21090C1D1Ev)();
extern void ABISELECT(_ZTvn56_n112_N8S21090C1D0Ev,_ZTvn24_n56_N8S21090C1D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C93v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S21090C1D1Ev,_ZTv0_n36_N8S21090C1D1Ev)();
extern void ABISELECT(_ZThn560_N8S21090C1D1Ev,_ZThn292_N8S21090C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21090C1D0Ev,_ZTv0_n36_N8S21090C1D0Ev)();
extern void ABISELECT(_ZThn560_N8S21090C1D0Ev,_ZThn292_N8S21090C1D0Ev)() __attribute__((weak));
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTvn64_n72_N8S21090C1D1Ev,_ZTvn40_n36_N8S21090C1D1Ev)();
extern void ABISELECT(_ZTvn64_n72_N8S21090C1D0Ev,_ZTvn40_n36_N8S21090C1D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZTvn112_n72_N8S21090C1D1Ev,_ZTvn60_n36_N8S21090C1D1Ev)();
extern void ABISELECT(_ZTvn112_n72_N8S21090C1D0Ev,_ZTvn60_n36_N8S21090C1D0Ev)();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTvn120_n72_N8S21090C1D1Ev,_ZTvn64_n36_N8S21090C1D1Ev)();
extern void ABISELECT(_ZTvn120_n72_N8S21090C1D0Ev,_ZTvn64_n36_N8S21090C1D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
extern void _ZN8S21090C93v22Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTvn256_n72_N8S21090C1D1Ev,_ZTvn140_n36_N8S21090C1D1Ev)();
extern void ABISELECT(_ZTvn256_n72_N8S21090C1D0Ev,_ZTvn140_n36_N8S21090C1D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN9S21090C143v37Ev();
extern void _ZN9S21090C143v38Ev();
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY vtc_S21090C1[] = {
  ABISELECT(560,292),
  ABISELECT(528,280),
  ABISELECT(272,140),
  ABISELECT(216,116),
  ABISELECT(224,120),
  ABISELECT(464,240),
  ABISELECT(216,116),
  ABISELECT(216,116),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN9S21090C123v35Ev,
  (VTBL_ENTRY)&_ZN9S21090C123v36Ev,
  (VTBL_ENTRY)&_ZN8S21090C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21090C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21090C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21090C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21090C12v5Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(168,96),
  ABISELECT(176,100),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C1D1Ev,_ZThn20_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C1D0Ev,_ZThn20_N8S21090C1D0Ev),
  ABISELECT(160,92),
  ABISELECT(168,96),
  ABISELECT(160,92),
  ABISELECT(160,92),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C1D1Ev,_ZThn24_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C1D0Ev,_ZThn24_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  0,
  0,
  ABISELECT(-216,-116),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C1D1Ev,_ZTv0_n28_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C1D0Ev,_ZTv0_n28_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-120),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C1D1Ev,_ZTv0_n40_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C1D0Ev,_ZTv0_n40_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  0,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-272,-140),
  0,
  0,
  0,
  0,
  ABISELECT(256,140),
  ABISELECT(-56,-24),
  ABISELECT(-48,-20),
  ABISELECT(192,100),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21090C1D1Ev,_ZTv0_n56_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21090C1D0Ev,_ZTv0_n56_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
  ABISELECT(-296,-152),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n112_N8S21090C1D1Ev,_ZTvn20_n56_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n112_N8S21090C1D0Ev,_ZTvn20_n56_N8S21090C1D0Ev),
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n112_N8S21090C1D1Ev,_ZTvn24_n56_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n112_N8S21090C1D0Ev,_ZTvn24_n56_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-400,-208),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  0,
  ABISELECT(-464,-240),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(120,64),
  ABISELECT(120,64),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(64,40),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-560,-292),
  0,
  ABISELECT(-32,-12),
  ABISELECT(-344,-176),
  ABISELECT(-96,-52),
  ABISELECT(-336,-172),
  ABISELECT(-344,-176),
  ABISELECT(-560,-292),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21090C1D1Ev,_ZTv0_n36_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21090C1D0Ev,_ZTv0_n36_N8S21090C1D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-408,-216),
  ABISELECT(-400,-212),
  ABISELECT(-160,-92),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n72_N8S21090C1D1Ev,_ZTvn40_n36_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n72_N8S21090C1D0Ev,_ZTvn40_n36_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
  ABISELECT(-648,-344),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-456,-236),
  ABISELECT(-448,-232),
  ABISELECT(-672,-352),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n72_N8S21090C1D1Ev,_ZTvn60_n36_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n72_N8S21090C1D0Ev,_ZTvn60_n36_N8S21090C1D0Ev),
  ABISELECT(-464,-240),
  ABISELECT(-456,-236),
  ABISELECT(-464,-240),
  ABISELECT(-464,-240),
  ABISELECT(-680,-356),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n72_N8S21090C1D1Ev,_ZTvn64_n36_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n72_N8S21090C1D0Ev,_ZTvn64_n36_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
  ABISELECT(-688,-360),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-752,-400),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  ABISELECT(-792,-424),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-816,-432),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n72_N8S21090C1D1Ev,_ZTvn140_n36_N8S21090C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n72_N8S21090C1D0Ev,_ZTvn140_n36_N8S21090C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v38Ev,
  ABISELECT(-840,-444),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  ABISELECT(-864,-452),
  (VTBL_ENTRY)&(_ZTI8S21090C1[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S21090C1[];
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN9S21090C12D1Ev();
extern void _ZN9S21090C12D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN9S21090C123v35Ev();
extern void _ZN9S21090C123v36Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C12__8S21090C1[] = {
  ABISELECT(224,120),
  ABISELECT(464,240),
  ABISELECT(216,116),
  ABISELECT(216,116),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21090C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN9S21090C123v35Ev,
  (VTBL_ENTRY)&_ZN9S21090C123v36Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(224,120),
  ABISELECT(464,240),
  ABISELECT(216,116),
  ABISELECT(216,116),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C38S21090C89S21090C12__A2__8S21090C1[] = {
  ABISELECT(216,116),
  ABISELECT(216,116),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C38S21090C89S21090C12__A4__8S21090C1[] = {
  ABISELECT(216,116),
  ABISELECT(216,116),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C38S21090C89S21090C12__A4__8S21090C1[] = {
  0,
  0,
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C38S21090C89S21090C12__A2__8S21090C1[] = {
  0,
  0,
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(168,96),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[] = {
  ABISELECT(160,92),
  ABISELECT(168,96),
  ABISELECT(160,92),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21090C2D1Ev,_ZThn96_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21090C2D0Ev,_ZThn96_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-168,-96),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[] = {
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[] = {
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C89S21090C12__A5__8S21090C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C118S21090C89S21090C12__A5__8S21090C1[] = {
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C118S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(160,92),
  ABISELECT(168,96),
  ABISELECT(160,92),
  ABISELECT(160,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S21090C11D1Ev,_ZThn100_N9S21090C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S21090C11D0Ev,_ZThn100_N9S21090C11D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C118S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-176,-100),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__A1__9S21090C118S21090C89S21090C12__A1__8S21090C1[] = {
  0,
  0,
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C118S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C89S21090C12__A1__8S21090C1[] = {
  0,
  0,
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C89S21090C12__A1__8S21090C1[] = {
  0,
  ABISELECT(-464,-240),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(168,96),
  ABISELECT(176,100),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(160,92),
  ABISELECT(168,96),
  ABISELECT(160,92),
  ABISELECT(160,92),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21090C8D1Ev,_ZThn120_N8S21090C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21090C8D0Ev,_ZThn120_N8S21090C8D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-120),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__8S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C89S21090C12__A1__8S21090C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C12__A6__8S21090C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C12__A6__8S21090C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__9S21090C12__8S21090C1[] = {
  0,
  0,
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__9S21090C12__8S21090C1[] = {
  0,
  ABISELECT(-464,-240),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N9S21090C12D1Ev,_ZThn20_N9S21090C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21090C12D0Ev,_ZThn20_N9S21090C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C8__9S21090C12__8S21090C1[] = {
  ABISELECT(168,96),
  ABISELECT(176,100),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21090C12D1Ev,_ZThn20_N9S21090C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21090C12D0Ev,_ZThn20_N9S21090C12D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N9S21090C12D1Ev,_ZThn24_N9S21090C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21090C12D0Ev,_ZThn24_N9S21090C12D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C8__9S21090C12__8S21090C1[] = {
  ABISELECT(160,92),
  ABISELECT(168,96),
  ABISELECT(160,92),
  ABISELECT(160,92),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21090C12D1Ev,_ZThn24_N9S21090C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21090C12D0Ev,_ZThn24_N9S21090C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C12D1Ev,_ZTv0_n40_N9S21090C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S21090C12D1Ev,_ZThn120_N9S21090C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21090C12D0Ev,_ZTv0_n40_N9S21090C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S21090C12D0Ev,_ZThn120_N9S21090C12D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__9S21090C12__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-120),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C12D1Ev,_ZTv0_n40_N9S21090C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C12D0Ev,_ZTv0_n40_N9S21090C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__9S21090C12__8S21090C1[] = {
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C8__A2__9S21090C12__8S21090C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__9S21090C12__8S21090C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S21090C12[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__8S21090C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21090C2D1Ev,_ZThn4_N8S21090C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21090C2D0Ev,_ZThn4_N8S21090C2D0Ev)() __attribute__((weak));
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C2__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C2__8S21090C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C3__8S21090C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C3__8S21090C1[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C3__8S21090C1[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C7D1Ev();
extern void _ZN8S21090C7D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C7__8S21090C1[] = {
  ABISELECT(256,140),
  ABISELECT(-56,-24),
  ABISELECT(-48,-20),
  ABISELECT(192,100),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,100),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C38S21090C88S21090C7__A1__8S21090C1[] = {
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C38S21090C88S21090C7__A1__8S21090C1[] = {
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C38S21090C88S21090C7__A1__8S21090C1[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C38S21090C88S21090C7__A1__8S21090C1[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,44),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(104,44),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[] = {
  0,
  0,
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[] = {
  ABISELECT(80,32),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C88S21090C7__A2__8S21090C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C118S21090C88S21090C7__A2__8S21090C1[] = {
  0,
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C118S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C118S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(96,40),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(96,40),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__A1__9S21090C118S21090C88S21090C7__8S21090C1[] = {
  0,
  0,
  ABISELECT(104,44),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(72,28),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C118S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C88S21090C7__8S21090C1[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C88S21090C7__8S21090C1[] = {
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__8S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C88S21090C7__8S21090C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C7__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__A1__8S21090C7__8S21090C1[] = {
  0,
  0,
  ABISELECT(56,24),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C7__8S21090C1[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C7__8S21090C1[] = {
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C8__8S21090C7__8S21090C1[] = {
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C8__8S21090C7__8S21090C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C7__8S21090C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__8S21090C7__8S21090C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__8S21090C1[] = {
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C5__A3__8S21090C1[] = {
  0,
  0,
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C93v22Ev();
extern void _ZN9S21090C13D1Ev();
extern void _ZN9S21090C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C13__8S21090C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-344,-176),
  ABISELECT(-96,-52),
  ABISELECT(-336,-172),
  ABISELECT(-344,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
  (VTBL_ENTRY)&_ZN9S21090C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C13D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C7D1Ev();
extern void _ZN8S21090C7D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C79S21090C13__A1__8S21090C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-408,-216),
  ABISELECT(-400,-212),
  ABISELECT(-160,-92),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C8D1Ev();
extern void _ZN8S21090C8D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-160,-92),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C38S21090C88S21090C79S21090C13__A3__8S21090C1[] = {
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C38S21090C88S21090C79S21090C13__A7__8S21090C1[] = {
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C38S21090C88S21090C79S21090C13__A7__8S21090C1[] = {
  0,
  0,
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C38S21090C88S21090C79S21090C13__A3__8S21090C1[] = {
  0,
  0,
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void _ZN9S21090C11D1Ev();
extern void _ZN9S21090C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-456,-236),
  ABISELECT(-448,-232),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C11D0Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C2D1Ev();
extern void _ZN8S21090C2D0Ev();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[] = {
  ABISELECT(-464,-240),
  ABISELECT(-456,-236),
  ABISELECT(-464,-240),
  ABISELECT(-464,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(456,236),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(456,236),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[] = {
  0,
  0,
  ABISELECT(464,240),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[] = {
  ABISELECT(432,224),
  (VTBL_ENTRY)&(_ZTI8S21090C2[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C88S21090C79S21090C13__A8__8S21090C1[] = {
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C59S21090C118S21090C88S21090C79S21090C13__A8__8S21090C1[] = {
  0,
  0,
  ABISELECT(536,284),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-464,-240),
  ABISELECT(-456,-236),
  ABISELECT(-464,-240),
  ABISELECT(-464,-240),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D1Ev,_ZThn4_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21090C11D0Ev,_ZThn4_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(448,232),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(448,232),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__A1__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  0,
  0,
  ABISELECT(456,236),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(424,220),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A1__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21090C11[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  0,
  0,
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C11__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-456,-236),
  ABISELECT(-448,-232),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D1Ev,_ZThn20_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C8D0Ev,_ZThn20_N8S21090C8D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C11__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-464,-240),
  ABISELECT(-456,-236),
  ABISELECT(-464,-240),
  ABISELECT(-464,-240),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D1Ev,_ZThn24_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C8D0Ev,_ZThn24_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__A1__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(400,212),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__A2__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(376,200),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C11__A2__8S21090C88S21090C79S21090C13__A2__8S21090C1[] = {
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C8[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__8S21090C79S21090C13__A1__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(400,212),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D1Ev,_ZTv0_n40_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21090C7D0Ev,_ZTv0_n40_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__A1__8S21090C79S21090C13__A1__8S21090C1[] = {
  0,
  0,
  ABISELECT(408,216),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D1Ev,_ZTv0_n28_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21090C7D0Ev,_ZTv0_n28_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__8S21090C79S21090C13__A1__8S21090C1[] = {
  ABISELECT(376,200),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__8S21090C79S21090C13__A1__8S21090C1[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C8__8S21090C79S21090C13__A1__8S21090C1[] = {
  ABISELECT(-456,-236),
  ABISELECT(-448,-232),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D1Ev,_ZThn20_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21090C7D0Ev,_ZThn20_N8S21090C7D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C8__8S21090C79S21090C13__A1__8S21090C1[] = {
  ABISELECT(-464,-240),
  ABISELECT(-456,-236),
  ABISELECT(-464,-240),
  ABISELECT(-464,-240),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D1Ev,_ZThn24_N8S21090C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21090C7D0Ev,_ZThn24_N8S21090C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C79S21090C13__A1__8S21090C1[] = {
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__8S21090C79S21090C13__A1__8S21090C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S21090C7[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN9S21090C14D1Ev();
extern void _ZN9S21090C14D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN9S21090C143v37Ev();
extern void _ZN9S21090C143v38Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C149S21090C13__8S21090C1[] = {
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  0,
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21090C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21090C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v38Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void _ZN8S21090C3D1Ev();
extern void _ZN8S21090C3D0Ev();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C39S21090C149S21090C13__A4__8S21090C1[] = {
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21090C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C58S21090C39S21090C149S21090C13__A9__8S21090C1[] = {
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  0,
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C58S21090C39S21090C149S21090C13__A9__8S21090C1[] = {
  0,
  0,
  ABISELECT(600,316),
  (VTBL_ENTRY)&(_ZTI8S21090C5[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__8S21090C39S21090C149S21090C13__A4__8S21090C1[] = {
  0,
  0,
  ABISELECT(600,316),
  (VTBL_ENTRY)&(_ZTI8S21090C3[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C4__9S21090C149S21090C13__8S21090C1[] = {
  0,
  0,
  ABISELECT(600,316),
  (VTBL_ENTRY)&(_ZTI9S21090C14[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S21090C13D1Ev,_ZTv0_n28_N9S21090C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21090C13D0Ev,_ZTv0_n28_N9S21090C13D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C2__A1__9S21090C13__8S21090C1[] = {
  0,
  0,
  ABISELECT(344,176),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(344,176),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21090C13D1Ev,_ZTv0_n28_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21090C13D0Ev,_ZTv0_n28_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZThn64_N9S21090C13D1Ev,_ZThn40_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21090C13D0Ev,_ZThn40_N9S21090C13D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN8S21090C83v31Ev();
extern void _ZN8S21090C73v32Ev();
extern void _ZN8S21090C73v33Ev();
extern void _ZN8S21090C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C7__9S21090C13__8S21090C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-408,-216),
  ABISELECT(-400,-212),
  ABISELECT(-160,-92),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-408,-216),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21090C13D1Ev,_ZThn40_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21090C13D0Ev,_ZThn40_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21090C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21090C73v34Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21090C13D1Ev,_ZTv0_n40_N9S21090C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21090C13D0Ev,_ZTv0_n40_N9S21090C13D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C3__9S21090C13__8S21090C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(336,172),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C13D1Ev,_ZTv0_n40_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21090C13D0Ev,_ZTv0_n40_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C68S21090C3__9S21090C13__8S21090C1[] = {
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
};
extern void _ZN8S21090C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C9__A1__9S21090C13__8S21090C1[] = {
  0,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C93v22Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C63v12Ev();
extern void _ZN8S21090C63v13Ev();
extern void _ZN8S21090C63v14Ev();
extern void _ZN8S21090C63v15Ev();
extern void _ZN8S21090C63v16Ev();
extern void _ZN8S21090C63v17Ev();
extern void _ZN8S21090C63v18Ev();
extern void _ZN8S21090C63v19Ev();
extern void _ZN9S21090C113v25Ev();
extern void _ZN9S21090C113v26Ev();
extern void _ZN9S21090C113v27Ev();
extern void _ZN9S21090C113v28Ev();
extern void _ZN9S21090C113v29Ev();
extern void _ZN9S21090C113v30Ev();
extern void ABISELECT(_ZThn112_N9S21090C13D1Ev,_ZThn60_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S21090C13D0Ev,_ZThn60_N9S21090C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21090C118S21090C88S21090C7__9S21090C13__8S21090C1[] = {
  ABISELECT(-456,-236),
  ABISELECT(-448,-232),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21090C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21090C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21090C13D1Ev,_ZThn60_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21090C13D0Ev,_ZThn60_N9S21090C13D0Ev),
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void ABISELECT(_ZThn120_N9S21090C13D1Ev,_ZThn64_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21090C13D0Ev,_ZThn64_N9S21090C13D0Ev)();
extern void _ZN8S21090C23v23Ev();
extern void _ZN8S21090C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C29S21090C118S21090C88S21090C7__9S21090C13__8S21090C1[] = {
  ABISELECT(-464,-240),
  ABISELECT(-456,-236),
  ABISELECT(-464,-240),
  ABISELECT(-464,-240),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21090C13D1Ev,_ZThn64_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21090C13D0Ev,_ZThn64_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21090C23v24Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C59S21090C118S21090C88S21090C7__A2__9S21090C13__8S21090C1[] = {
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21090C5__A3__9S21090C13__8S21090C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
};
extern void _ZN8S21090C42v6Ev();
extern void _ZN8S21090C42v7Ev();
extern void _ZN8S21090C52v8Ev();
extern void _ZN8S21090C52v9Ev();
extern void _ZN8S21090C53v10Ev();
extern void _ZN8S21090C53v11Ev();
extern void ABISELECT(_ZThn256_N9S21090C13D1Ev,_ZThn140_N9S21090C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S21090C13D0Ev,_ZThn140_N9S21090C13D0Ev)();
extern void _ZN8S21090C33v20Ev();
extern void _ZN8S21090C33v21Ev();
extern void _ZN9S21090C143v37Ev();
extern void _ZN9S21090C143v38Ev();
static  VTBL_ENTRY _tg__ZTV9S21090C14__9S21090C13__8S21090C1[] = {
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-600,-316),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S21090C13[0]),
  (VTBL_ENTRY)&_ZN8S21090C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21090C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21090C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21090C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21090C13D1Ev,_ZThn140_N9S21090C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21090C13D0Ev,_ZThn140_N9S21090C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21090C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21090C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21090C143v38Ev,
};
static  VTT_ENTRY vtt_S21090C1[] = {
  {&(_ZTV8S21090C1[11]),  11,488},
  {&(_tg__ZTV9S21090C12__8S21090C1[7]),  7,20},
  {&(_tg__ZTV8S21090C89S21090C12__A1__8S21090C1[7]),  7,18},
  {&(_tg__ZTV8S21090C38S21090C89S21090C12__A2__8S21090C1[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C38S21090C89S21090C12__A4__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C38S21090C89S21090C12__A4__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C38S21090C89S21090C12__A2__8S21090C1[4]),  4,6},
  {&(_tg__ZTV9S21090C118S21090C89S21090C12__A1__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C4__8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C89S21090C12__A2__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C89S21090C12__A5__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C118S21090C89S21090C12__A5__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C118S21090C89S21090C12__A1__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C89S21090C12__A1__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C4__A1__9S21090C118S21090C89S21090C12__A1__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C89S21090C12__A1__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C118S21090C89S21090C12__A1__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C89S21090C12__A1__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C9__8S21090C89S21090C12__A1__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C11__8S21090C89S21090C12__A1__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C89S21090C12__A1__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__8S21090C89S21090C12__A1__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__8S21090C89S21090C12__A1__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C89S21090C12__A1__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C59S21090C12__A6__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C12__A6__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__9S21090C12__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C9__9S21090C12__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C118S21090C8__9S21090C12__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C8__9S21090C12__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__9S21090C12__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__9S21090C12__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C8__A2__9S21090C12__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C5__A3__9S21090C12__8S21090C1[5]),  5,11},
  {&(_ZTV8S21090C1[121]),  121,488},
  {&(_ZTV8S21090C1[147]),  147,488},
  {&(_ZTV8S21090C1[121]),  121,488},
  {&(_ZTV8S21090C1[159]),  159,488},
  {&(_ZTV8S21090C1[206]),  206,488},
  {&(_ZTV8S21090C1[222]),  222,488},
  {&(_ZTV8S21090C1[299]),  299,488},
  {&(_ZTV8S21090C1[236]),  236,488},
  {&(_ZTV8S21090C1[260]),  260,488},
  {&(_ZTV8S21090C1[268]),  268,488},
  {&(_ZTV8S21090C1[274]),  274,488},
  {&(_ZTV8S21090C1[282]),  282,488},
  {&(_ZTV8S21090C1[309]),  309,488},
  {&(_ZTV8S21090C1[294]),  294,488},
  {&(_ZTV8S21090C1[45]),  45,488},
  {&(_ZTV8S21090C1[69]),  69,488},
  {&(_ZTV8S21090C1[83]),  83,488},
  {&(_ZTV8S21090C1[106]),  106,488},
  {&(_ZTV8S21090C1[354]),  354,488},
  {&(_ZTV8S21090C1[366]),  366,488},
  {&(_ZTV8S21090C1[382]),  382,488},
  {&(_ZTV8S21090C1[396]),  396,488},
  {&(_ZTV8S21090C1[420]),  420,488},
  {&(_ZTV8S21090C1[428]),  428,488},
  {&(_ZTV8S21090C1[434]),  434,488},
  {&(_ZTV8S21090C1[442]),  442,488},
  {&(_ZTV8S21090C1[454]),  454,488},
  {&(_ZTV8S21090C1[461]),  461,488},
  {&(_ZTV8S21090C1[475]),  475,488},
  {&(_ZTV8S21090C1[487]),  487,488},
  {&(_tg__ZTV8S21090C2__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C2__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C2__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C2__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C3__8S21090C1[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C3__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C3__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C3__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C7__8S21090C1[9]),  9,23},
  {&(_tg__ZTV8S21090C88S21090C7__8S21090C1[7]),  7,18},
  {&(_tg__ZTV8S21090C38S21090C88S21090C7__A1__8S21090C1[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C38S21090C88S21090C7__A1__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C38S21090C88S21090C7__A1__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C38S21090C88S21090C7__A1__8S21090C1[4]),  4,6},
  {&(_tg__ZTV9S21090C118S21090C88S21090C7__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C4__8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C88S21090C7__A1__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C88S21090C7__A2__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C118S21090C88S21090C7__A2__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C118S21090C88S21090C7__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C88S21090C7__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C4__A1__9S21090C118S21090C88S21090C7__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C88S21090C7__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C118S21090C88S21090C7__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C88S21090C7__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C9__8S21090C88S21090C7__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C11__8S21090C88S21090C7__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C88S21090C7__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__8S21090C88S21090C7__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__8S21090C88S21090C7__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C88S21090C7__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C3__8S21090C7__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C2__A1__8S21090C7__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C7__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C9__8S21090C7__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C118S21090C8__8S21090C7__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C8__8S21090C7__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C7__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C2__A1__8S21090C7__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C5__A3__8S21090C7__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C5__A3__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C5__A3__8S21090C1[4]),  4,6},
  {&(_tg__ZTV9S21090C13__8S21090C1[7]),  7,10},
  {&(_tg__ZTV8S21090C79S21090C13__A1__8S21090C1[9]),  9,23},
  {&(_tg__ZTV8S21090C88S21090C79S21090C13__A2__8S21090C1[7]),  7,18},
  {&(_tg__ZTV8S21090C38S21090C88S21090C79S21090C13__A3__8S21090C1[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C38S21090C88S21090C79S21090C13__A7__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C38S21090C88S21090C79S21090C13__A7__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C38S21090C88S21090C79S21090C13__A3__8S21090C1[4]),  4,6},
  {&(_tg__ZTV9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C4__8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C29S21090C118S21090C88S21090C79S21090C13__A3__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C88S21090C79S21090C13__A8__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C59S21090C118S21090C88S21090C79S21090C13__A8__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C2__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C4__A1__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C68S21090C3__A1__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C5__A1__9S21090C118S21090C88S21090C79S21090C13__A2__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C88S21090C79S21090C13__A2__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C9__8S21090C88S21090C79S21090C13__A2__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C11__8S21090C88S21090C79S21090C13__A2__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C11__8S21090C88S21090C79S21090C13__A2__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C3__A1__8S21090C88S21090C79S21090C13__A2__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__A2__8S21090C88S21090C79S21090C13__A2__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C59S21090C11__A2__8S21090C88S21090C79S21090C13__A2__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C3__8S21090C79S21090C13__A1__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C2__A1__8S21090C79S21090C13__A1__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C68S21090C3__8S21090C79S21090C13__A1__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C9__8S21090C79S21090C13__A1__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C118S21090C8__8S21090C79S21090C13__A1__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C8__8S21090C79S21090C13__A1__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C8__A2__8S21090C79S21090C13__A1__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C2__A1__8S21090C79S21090C13__A1__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C5__A3__8S21090C79S21090C13__A1__8S21090C1[9]),  9,15},
  {&(_tg__ZTV9S21090C149S21090C13__8S21090C1[5]),  5,17},
  {&(_tg__ZTV8S21090C39S21090C149S21090C13__A4__8S21090C1[5]),  5,15},
  {&(_tg__ZTV8S21090C58S21090C39S21090C149S21090C13__A9__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C4__8S21090C58S21090C39S21090C149S21090C13__A9__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__8S21090C39S21090C149S21090C13__A4__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C4__9S21090C149S21090C13__8S21090C1[4]),  4,6},
  {&(_tg__ZTV8S21090C2__A1__9S21090C13__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C7__9S21090C13__8S21090C1[9]),  9,23},
  {&(_tg__ZTV8S21090C3__9S21090C13__8S21090C1[20]),  20,30},
  {&(_tg__ZTV8S21090C68S21090C3__9S21090C13__8S21090C1[2]),  2,12},
  {&(_tg__ZTV8S21090C9__A1__9S21090C13__8S21090C1[3]),  3,4},
  {&(_tg__ZTV9S21090C118S21090C88S21090C7__9S21090C13__8S21090C1[4]),  4,22},
  {&(_tg__ZTV8S21090C29S21090C118S21090C88S21090C7__9S21090C13__8S21090C1[6]),  6,12},
  {&(_tg__ZTV8S21090C59S21090C118S21090C88S21090C7__A2__9S21090C13__8S21090C1[5]),  5,11},
  {&(_tg__ZTV8S21090C2__A1__9S21090C13__8S21090C1[9]),  9,15},
  {&(_tg__ZTV8S21090C5__A3__9S21090C13__8S21090C1[9]),  9,15},
  {&(_tg__ZTV9S21090C14__9S21090C13__8S21090C1[5]),  5,17},
};
extern VTBL_ENTRY _ZTI8S21090C1[];
extern  VTBL_ENTRY _ZTV8S21090C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21090C1[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C12D0Ev,_ZTv0_n40_N9S21090C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21090C12D0Ev,_ZThn120_N9S21090C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C12D1Ev,_ZTv0_n40_N9S21090C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21090C12D1Ev,_ZThn120_N9S21090C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D0Ev,_ZTv0_n40_N8S21090C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21090C8D0Ev,_ZThn120_N8S21090C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C8D1Ev,_ZTv0_n40_N8S21090C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21090C8D1Ev,_ZThn120_N8S21090C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D0Ev,_ZTv0_n40_N9S21090C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21090C11D0Ev,_ZThn100_N9S21090C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21090C11D1Ev,_ZTv0_n40_N9S21090C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21090C11D1Ev,_ZThn100_N9S21090C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D0Ev,_ZTv0_n40_N8S21090C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21090C2D0Ev,_ZThn4_N8S21090C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21090C2D0Ev,_ZThn96_N8S21090C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C2D1Ev,_ZTv0_n40_N8S21090C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21090C2D1Ev,_ZThn4_N8S21090C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21090C2D1Ev,_ZThn96_N8S21090C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21090C1D0Ev,_ZTv0_n36_N8S21090C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21090C1D0Ev,_ZThn292_N8S21090C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21090C1D1Ev,_ZTv0_n36_N8S21090C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21090C1D1Ev,_ZThn292_N8S21090C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21090C1D0Ev,_ZTv0_n56_N8S21090C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21090C1D0Ev,_ZThn140_N8S21090C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21090C1D1Ev,_ZTv0_n56_N8S21090C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21090C1D1Ev,_ZThn140_N8S21090C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C1D0Ev,_ZTv0_n40_N8S21090C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21090C1D0Ev,_ZThn120_N8S21090C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21090C1D1Ev,_ZTv0_n40_N8S21090C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21090C1D1Ev,_ZThn120_N8S21090C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21090C1D0Ev,_ZTv0_n28_N8S21090C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21090C1D0Ev,_ZThn116_N8S21090C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21090C1D1Ev,_ZTv0_n28_N8S21090C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21090C1D1Ev,_ZThn116_N8S21090C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21090C1 = {  "S21090C1", // class name
  bases_S21090C1, 61,
  &(vtc_S21090C1[0]), // expected_vtbl_contents
  &(vtt_S21090C1[0]), // expected_vtt_contents
  ABISELECT(944,500), // object size
  NSPAIRA(_ZTI8S21090C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21090C1),488, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21090C1),162, //virtual table table var
  61, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C4  {
  virtual void  v6(); // _ZN8S21089C42v6Ev
  virtual void  v7(); // _ZN8S21089C42v7Ev
  ~S21089C4(); // tgen
  S21089C4(); // tgen
};
//SIG(-1 S21089C4) C1{ v1 v2}


void  S21089C4 ::v6(){vfunc_called(this, "_ZN8S21089C42v6Ev");}
void  S21089C4 ::v7(){vfunc_called(this, "_ZN8S21089C42v7Ev");}
S21089C4 ::~S21089C4(){ note_dtor("S21089C4", this);} // tgen
S21089C4 ::S21089C4(){ note_ctor("S21089C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21089C4C1Ev();
extern void _ZN8S21089C4D1Ev();
Name_Map name_map_S21089C4[] = {
  NSPAIR(_ZN8S21089C4C1Ev),
  NSPAIR(_ZN8S21089C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21089C4[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY vtc_S21089C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C4[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
Class_Descriptor cd_S21089C4 = {  "S21089C4", // class name
  0,0,//no base classes
  &(vtc_S21089C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21089C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21089C4),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  S21089C5  : virtual S21089C4 {
  void *s21089c5f0;
  char s21089c5f1;
  virtual void  v8(); // _ZN8S21089C52v8Ev
  virtual void  v9(); // _ZN8S21089C52v9Ev
  virtual void  v10(); // _ZN8S21089C53v10Ev
  virtual void  v11(); // _ZN8S21089C53v11Ev
  ~S21089C5(); // tgen
  S21089C5(); // tgen
};
//SIG(-1 S21089C5) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S21089C5 ::v8(){vfunc_called(this, "_ZN8S21089C52v8Ev");}
void  S21089C5 ::v9(){vfunc_called(this, "_ZN8S21089C52v9Ev");}
void  S21089C5 ::v10(){vfunc_called(this, "_ZN8S21089C53v10Ev");}
void  S21089C5 ::v11(){vfunc_called(this, "_ZN8S21089C53v11Ev");}
S21089C5 ::~S21089C5(){ note_dtor("S21089C5", this);} // tgen
S21089C5 ::S21089C5(){ note_ctor("S21089C5", this);} // tgen

static void Test_S21089C5()
{
  extern Class_Descriptor cd_S21089C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21089C5, buf);
    S21089C5 *dp, &lv = *(dp=new (buf) S21089C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21089C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21089C5)");
    check_base_class_offset(lv, (S21089C4*), 0, "S21089C5");
    check_field_offset(lv, s21089c5f0, ABISELECT(8,4), "S21089C5.s21089c5f0");
    check_field_offset(lv, s21089c5f1, ABISELECT(16,8), "S21089C5.s21089c5f1");
    test_class_info(&lv, &cd_S21089C5);
    dp->~S21089C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C5(Test_S21089C5, "S21089C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21089C5C1Ev();
extern void _ZN8S21089C5D1Ev();
Name_Map name_map_S21089C5[] = {
  NSPAIR(_ZN8S21089C5C1Ev),
  NSPAIR(_ZN8S21089C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
static Base_Class bases_S21089C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    0, //bcp->offset
    -1, //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 _ZTI8S21089C5[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY vtc_S21089C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S21089C5[];
static  VTT_ENTRY vtt_S21089C5[] = {
  {&(_ZTV8S21089C5[5]),  5,11},
  {&(_ZTV8S21089C5[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
Class_Descriptor cd_S21089C5 = {  "S21089C5", // class name
  bases_S21089C5, 1,
  &(vtc_S21089C5[0]), // expected_vtbl_contents
  &(vtt_S21089C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21089C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21089C5),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21089C5),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  S21089C6  : S21089C4 {
  virtual void  v12(); // _ZN8S21089C63v12Ev
  virtual void  v13(); // _ZN8S21089C63v13Ev
  virtual void  v14(); // _ZN8S21089C63v14Ev
  virtual void  v15(); // _ZN8S21089C63v15Ev
  virtual void  v16(); // _ZN8S21089C63v16Ev
  virtual void  v17(); // _ZN8S21089C63v17Ev
  virtual void  v18(); // _ZN8S21089C63v18Ev
  virtual void  v19(); // _ZN8S21089C63v19Ev
  ~S21089C6(); // tgen
  S21089C6(); // tgen
};
//SIG(-1 S21089C6) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S21089C6 ::v12(){vfunc_called(this, "_ZN8S21089C63v12Ev");}
void  S21089C6 ::v13(){vfunc_called(this, "_ZN8S21089C63v13Ev");}
void  S21089C6 ::v14(){vfunc_called(this, "_ZN8S21089C63v14Ev");}
void  S21089C6 ::v15(){vfunc_called(this, "_ZN8S21089C63v15Ev");}
void  S21089C6 ::v16(){vfunc_called(this, "_ZN8S21089C63v16Ev");}
void  S21089C6 ::v17(){vfunc_called(this, "_ZN8S21089C63v17Ev");}
void  S21089C6 ::v18(){vfunc_called(this, "_ZN8S21089C63v18Ev");}
void  S21089C6 ::v19(){vfunc_called(this, "_ZN8S21089C63v19Ev");}
S21089C6 ::~S21089C6(){ note_dtor("S21089C6", this);} // tgen
S21089C6 ::S21089C6(){ note_ctor("S21089C6", this);} // tgen

static void Test_S21089C6()
{
  extern Class_Descriptor cd_S21089C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21089C6, buf);
    S21089C6 *dp, &lv = *(dp=new (buf) S21089C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21089C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21089C6)");
    check_base_class_offset(lv, (S21089C4*), 0, "S21089C6");
    test_class_info(&lv, &cd_S21089C6);
    dp->~S21089C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C6(Test_S21089C6, "S21089C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21089C6C1Ev();
extern void _ZN8S21089C6D1Ev();
Name_Map name_map_S21089C6[] = {
  NSPAIR(_ZN8S21089C6C1Ev),
  NSPAIR(_ZN8S21089C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
static Base_Class bases_S21089C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21089C6[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY vtc_S21089C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C6[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
Class_Descriptor cd_S21089C6 = {  "S21089C6", // class name
  bases_S21089C6, 1,
  &(vtc_S21089C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21089C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21089C6),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  S21089C3  : virtual S21089C4 , S21089C5 , S21089C6 {
  ::S21089C4 s21089c3f0;
  virtual  ~S21089C3(); // _ZN8S21089C3D2Ev
  virtual void  v20(); // _ZN8S21089C33v20Ev
  virtual void  v21(); // _ZN8S21089C33v21Ev
  S21089C3(); // tgen
};
//SIG(-1 S21089C3) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S21089C3 ::~S21089C3(){ note_dtor("S21089C3", this);}
void  S21089C3 ::v20(){vfunc_called(this, "_ZN8S21089C33v20Ev");}
void  S21089C3 ::v21(){vfunc_called(this, "_ZN8S21089C33v21Ev");}
S21089C3 ::S21089C3(){ note_ctor("S21089C3", this);} // tgen

static void Test_S21089C3()
{
  extern Class_Descriptor cd_S21089C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S21089C3, buf);
    S21089C3 *dp, &lv = *(dp=new (buf) S21089C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S21089C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21089C3)");
    /*is_ambiguous_... S21089C3::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*), 0, "S21089C3");
    check_base_class_offset(lv, (S21089C4*)(S21089C5*), 0, "S21089C3");
    check_base_class_offset(lv, (S21089C5*), 0, "S21089C3");
    check_base_class_offset(lv, (S21089C4*)(S21089C6*), ABISELECT(24,12), "S21089C3");
    check_base_class_offset(lv, (S21089C6*), ABISELECT(24,12), "S21089C3");
    check_field_offset(lv, s21089c3f0, ABISELECT(32,16), "S21089C3.s21089c3f0");
    test_class_info(&lv, &cd_S21089C3);
    dp->~S21089C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C3(Test_S21089C3, "S21089C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S21089C3C1Ev();
extern void _ZN8S21089C3D2Ev();
Name_Map name_map_S21089C3[] = {
  NSPAIR(_ZN8S21089C3C1Ev),
  NSPAIR(_ZN8S21089C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
static Base_Class bases_S21089C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21089C3[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY vtc_S21089C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern VTBL_ENTRY _ZTV8S21089C3[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__8S21089C3[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
static  VTT_ENTRY vtt_S21089C3[] = {
  {&(_ZTV8S21089C3[5]),  5,27},
  {&(_tg__ZTV8S21089C5__8S21089C3[5]),  5,11},
  {&(_tg__ZTV8S21089C5__8S21089C3[5]),  5,11},
  {&(_ZTV8S21089C3[5]),  5,27},
};
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
Class_Descriptor cd_S21089C3 = {  "S21089C3", // class name
  bases_S21089C3, 4,
  &(vtc_S21089C3[0]), // expected_vtbl_contents
  &(vtt_S21089C3[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S21089C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21089C3),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21089C3),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  S21089C2  : virtual S21089C3 {
  virtual  ~S21089C2(); // _ZN8S21089C2D2Ev
  virtual void  v23(); // _ZN8S21089C23v23Ev
  virtual void  v24(); // _ZN8S21089C23v24Ev
  S21089C2(); // tgen
};
//SIG(-1 S21089C2) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S21089C2 ::~S21089C2(){ note_dtor("S21089C2", this);}
void  S21089C2 ::v23(){vfunc_called(this, "_ZN8S21089C23v23Ev");}
void  S21089C2 ::v24(){vfunc_called(this, "_ZN8S21089C23v24Ev");}
S21089C2 ::S21089C2(){ note_ctor("S21089C2", this);} // tgen

static void Test_S21089C2()
{
  extern Class_Descriptor cd_S21089C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S21089C2, buf);
    S21089C2 *dp, &lv = *(dp=new (buf) S21089C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S21089C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21089C2)");
    /*is_ambiguous_... S21089C3::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), 0, "S21089C2");
    check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), 0, "S21089C2");
    check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(8,4), "S21089C2");
    check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(32,16), "S21089C2");
    check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(32,16), "S21089C2");
    check_base_class_offset(lv, (S21089C3*), ABISELECT(8,4), "S21089C2");
    test_class_info(&lv, &cd_S21089C2);
    dp->~S21089C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C2(Test_S21089C2, "S21089C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S21089C2C1Ev();
extern void _ZN8S21089C2D2Ev();
Name_Map name_map_S21089C2[] = {
  NSPAIR(_ZN8S21089C2C1Ev),
  NSPAIR(_ZN8S21089C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
static Base_Class bases_S21089C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S21089C5,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI8S21089C2[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21089C2D1Ev,_ZThn4_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21089C2D0Ev,_ZThn4_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY vtc_S21089C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern VTBL_ENTRY _ZTV8S21089C2[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__8S21089C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C3__8S21089C2[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C3__8S21089C2[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
static  VTT_ENTRY vtt_S21089C2[] = {
  {&(_ZTV8S21089C2[6]),  6,54},
  {&(_ZTV8S21089C2[32]),  32,54},
  {&(_ZTV8S21089C2[6]),  6,54},
  {&(_ZTV8S21089C2[44]),  44,54},
  {&(_tg__ZTV8S21089C3__8S21089C2[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__8S21089C2[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C3__8S21089C2[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C3__8S21089C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21089C2D0Ev,_ZThn4_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21089C2D1Ev,_ZThn4_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C2 = {  "S21089C2", // class name
  bases_S21089C2, 5,
  &(vtc_S21089C2[0]), // expected_vtbl_contents
  &(vtt_S21089C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S21089C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21089C2),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21089C2),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C9  {
  ::S7642C12 s21089c9f0;
  virtual void  v22(); // _ZN8S21089C93v22Ev
  ~S21089C9(); // tgen
  S21089C9(); // tgen
};
//SIG(-1 S21089C9) C1{ v1 FU2{ m FD[3]}}


void  S21089C9 ::v22(){vfunc_called(this, "_ZN8S21089C93v22Ev");}
S21089C9 ::~S21089C9(){ note_dtor("S21089C9", this);} // tgen
S21089C9 ::S21089C9(){ note_ctor("S21089C9", this);} // tgen

static void Test_S21089C9()
{
  extern Class_Descriptor cd_S21089C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S21089C9, buf);
    S21089C9 *dp, &lv = *(dp=new (buf) S21089C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21089C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C9)");
    check_field_offset(lv, s21089c9f0, ABISELECT(16,4), "S21089C9.s21089c9f0");
    test_class_info(&lv, &cd_S21089C9);
    dp->~S21089C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C9(Test_S21089C9, "S21089C9", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21089C9C1Ev();
extern void _ZN8S21089C9D1Ev();
Name_Map name_map_S21089C9[] = {
  NSPAIR(_ZN8S21089C9C1Ev),
  NSPAIR(_ZN8S21089C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21089C9[];
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY vtc_S21089C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C9[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
Class_Descriptor cd_S21089C9 = {  "S21089C9", // class name
  0,0,//no base classes
  &(vtc_S21089C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21089C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21089C9),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  S21089C11  : S21089C6 , S21089C2 , S21089C9 , S21089C5 {
  void *s21089c11f0;
  long s21089c11f1;
  virtual void  v25(); // _ZN9S21089C113v25Ev
  virtual void  v26(); // _ZN9S21089C113v26Ev
  virtual void  v27(); // _ZN9S21089C113v27Ev
  virtual void  v28(); // _ZN9S21089C113v28Ev
  virtual void  v29(); // _ZN9S21089C113v29Ev
  virtual void  v30(); // _ZN9S21089C113v30Ev
  ~S21089C11(); // tgen
  S21089C11(); // tgen
};
//SIG(-1 S21089C11) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp Fl}


void  S21089C11 ::v25(){vfunc_called(this, "_ZN9S21089C113v25Ev");}
void  S21089C11 ::v26(){vfunc_called(this, "_ZN9S21089C113v26Ev");}
void  S21089C11 ::v27(){vfunc_called(this, "_ZN9S21089C113v27Ev");}
void  S21089C11 ::v28(){vfunc_called(this, "_ZN9S21089C113v28Ev");}
void  S21089C11 ::v29(){vfunc_called(this, "_ZN9S21089C113v29Ev");}
void  S21089C11 ::v30(){vfunc_called(this, "_ZN9S21089C113v30Ev");}
S21089C11 ::~S21089C11(){ note_dtor("S21089C11", this);} // tgen
S21089C11 ::S21089C11(){ note_ctor("S21089C11", this);} // tgen

static void Test_S21089C11()
{
  extern Class_Descriptor cd_S21089C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,23)];
    init_test(&cd_S21089C11, buf);
    S21089C11 *dp, &lv = *(dp=new (buf) S21089C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S21089C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C11)");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*), 0, "S21089C11");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*), 0, "S21089C11");
    /*is_ambiguous_... S21089C3::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), ABISELECT(8,4), "S21089C11");
    check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), ABISELECT(8,4), "S21089C11");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*), ABISELECT(8,4), "S21089C11");
    check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(120,68), "S21089C11");
    check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(144,80), "S21089C11");
    check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(144,80), "S21089C11");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*), ABISELECT(120,68), "S21089C11");
    check_base_class_offset(lv, (S21089C2*), ABISELECT(8,4), "S21089C11");
    check_base_class_offset(lv, (S21089C9*), ABISELECT(16,8), "S21089C11");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*), ABISELECT(80,48), "S21089C11");
    check_field_offset(lv, s21089c11f0, ABISELECT(104,60), "S21089C11.s21089c11f0");
    check_field_offset(lv, s21089c11f1, ABISELECT(112,64), "S21089C11.s21089c11f1");
    test_class_info(&lv, &cd_S21089C11);
    dp->~S21089C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C11(Test_S21089C11, "S21089C11", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN9S21089C11C1Ev();
extern void _ZN9S21089C11D1Ev();
Name_Map name_map_S21089C11[] = {
  NSPAIR(_ZN9S21089C11C1Ev),
  NSPAIR(_ZN9S21089C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
static Base_Class bases_S21089C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S21089C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21089C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21089C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    5, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(144,80), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(120,68), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21089C2,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C9,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C5,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21089C11[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S21089C11D1Ev,_ZThn68_N9S21089C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S21089C11D0Ev,_ZThn68_N9S21089C11D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY vtc_S21089C11[] = {
  ABISELECT(8,4),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
  0,
  ABISELECT(112,64),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern VTBL_ENTRY _ZTV9S21089C11[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C11[] = {
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21089C2D1Ev,_ZThn64_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21089C2D0Ev,_ZThn64_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C2__9S21089C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C2__9S21089C11[] = {
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C5__A1__9S21089C11[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C11[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__9S21089C11[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C3__9S21089C11[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C3__9S21089C11[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
static  VTT_ENTRY vtt_S21089C11[] = {
  {&(_ZTV9S21089C11[4]),  4,90},
  {&(_tg__ZTV8S21089C2__9S21089C11[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C2__9S21089C11[20]),  20,30},
  {&(_tg__ZTV8S21089C2__9S21089C11[6]),  6,12},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C2__9S21089C11[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C11[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C5__A1__9S21089C11[4]),  4,6},
  {&(_ZTV9S21089C11[28]),  28,90},
  {&(_ZTV9S21089C11[68]),  68,90},
  {&(_ZTV9S21089C11[28]),  28,90},
  {&(_ZTV9S21089C11[80]),  80,90},
  {&(_ZTV9S21089C11[42]),  42,90},
  {&(_tg__ZTV8S21089C3__9S21089C11[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__9S21089C11[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C3__9S21089C11[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C3__9S21089C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21089C2D0Ev,_ZThn64_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21089C2D1Ev,_ZThn64_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21089C11D0Ev,_ZThn68_N9S21089C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21089C11D1Ev,_ZThn68_N9S21089C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C11 = {  "S21089C11", // class name
  bases_S21089C11, 10,
  &(vtc_S21089C11[0]), // expected_vtbl_contents
  &(vtt_S21089C11[0]), // expected_vtt_contents
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI9S21089C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21089C11),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21089C11),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C8  : virtual S21089C4 , S21089C3 , virtual S21089C9 , S21089C11 , S21089C6 {
  virtual  ~S21089C8(); // _ZN8S21089C8D2Ev
  virtual void  v31(); // _ZN8S21089C83v31Ev
  S21089C8(); // tgen
};
//SIG(-1 S21089C8) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp Fl} BC5 vd v1}


 S21089C8 ::~S21089C8(){ note_dtor("S21089C8", this);}
void  S21089C8 ::v31(){vfunc_called(this, "_ZN8S21089C83v31Ev");}
S21089C8 ::S21089C8(){ note_ctor("S21089C8", this);} // tgen

static void Test_S21089C8()
{
  extern Class_Descriptor cd_S21089C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,39)];
    init_test(&cd_S21089C8, buf);
    S21089C8 *dp, &lv = *(dp=new (buf) S21089C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,152), "sizeof(S21089C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C8)");
    /*is_ambiguous_... S21089C8::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), 0, "S21089C8");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(24,12), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(24,12), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*), 0, "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*), ABISELECT(176,92), "S21089C8");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*), ABISELECT(48,20), "S21089C8");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*), ABISELECT(48,20), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(240,132), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(264,144), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(264,144), "S21089C8");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*), ABISELECT(240,132), "S21089C8");
    check_base_class_offset(lv, (S21089C2*)(S21089C11*), ABISELECT(56,24), "S21089C8");
    check_base_class_offset(lv, (S21089C9*)(S21089C11*), ABISELECT(64,28), "S21089C8");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*), ABISELECT(128,68), "S21089C8");
    check_base_class_offset(lv, (S21089C11*), ABISELECT(48,20), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*), ABISELECT(168,88), "S21089C8");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*), ABISELECT(168,88), "S21089C8");
    test_class_info(&lv, &cd_S21089C8);
    dp->~S21089C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C8(Test_S21089C8, "S21089C8", ABISELECT(288,152));

#else // __cplusplus

extern void _ZN8S21089C8C1Ev();
extern void _ZN8S21089C8D2Ev();
Name_Map name_map_S21089C8[] = {
  NSPAIR(_ZN8S21089C8C1Ev),
  NSPAIR(_ZN8S21089C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
static Base_Class bases_S21089C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C3,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C9,    ABISELECT(176,92), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(264,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(240,132), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21089C2,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(168,88), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S21089C8[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn240_N8S21089C8D1Ev,_ZThn132_N8S21089C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void ABISELECT(_ZThn240_N8S21089C8D0Ev,_ZThn132_N8S21089C8D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY vtc_S21089C8[] = {
  ABISELECT(240,132),
  ABISELECT(176,92),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern VTBL_ENTRY _ZTV8S21089C8[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A__8S21089C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__8S21089C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C8[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C8[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S21089C2D1Ev,_ZThn108_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S21089C2D0Ev,_ZThn108_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C11__8S21089C8[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-108),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C29S21089C11__8S21089C8[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C11__8S21089C8[] = {
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C8[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C11__A2__8S21089C8[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C11__8S21089C8[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21089C11D1Ev,_ZThn112_N9S21089C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21089C11D0Ev,_ZThn112_N9S21089C11D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C11__8S21089C8[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__A1__9S21089C11__8S21089C8[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C11__8S21089C8[] = {
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C11__8S21089C8[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C8[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__A1__8S21089C8[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C3__A1__8S21089C8[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C3__A1__8S21089C8[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
static  VTT_ENTRY vtt_S21089C8[] = {
  {&(_ZTV8S21089C8[7]),  7,136},
  {&(_tg__ZTV8S21089C3__A__8S21089C8[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__8S21089C8[5]),  5,11},
  {&(_tg__ZTV8S21089C58S21089C3__8S21089C8[5]),  5,11},
  {&(_tg__ZTV8S21089C3__A__8S21089C8[5]),  5,15},
  {&(_tg__ZTV9S21089C11__8S21089C8[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C8[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C11__8S21089C8[20]),  20,30},
  {&(_tg__ZTV8S21089C4__8S21089C29S21089C11__8S21089C8[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C11__8S21089C8[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C8[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C11__A2__8S21089C8[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C11__8S21089C8[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C11__8S21089C8[20]),  20,30},
  {&(_tg__ZTV8S21089C4__A1__9S21089C11__8S21089C8[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C11__8S21089C8[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C11__8S21089C8[5]),  5,11},
  {&(_ZTV8S21089C8[7]),  7,136},
  {&(_ZTV8S21089C8[93]),  93,136},
  {&(_ZTV8S21089C8[34]),  34,136},
  {&(_ZTV8S21089C8[58]),  58,136},
  {&(_ZTV8S21089C8[114]),  114,136},
  {&(_ZTV8S21089C8[126]),  126,136},
  {&(_ZTV8S21089C8[72]),  72,136},
  {&(_tg__ZTV8S21089C3__A1__8S21089C8[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__A1__8S21089C8[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C3__A1__8S21089C8[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C3__A1__8S21089C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21089C11D0Ev,_ZThn112_N9S21089C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21089C11D1Ev,_ZThn112_N9S21089C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21089C2D0Ev,_ZThn108_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21089C2D1Ev,_ZThn108_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21089C8D0Ev,_ZThn132_N8S21089C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21089C8D1Ev,_ZThn132_N8S21089C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C8 = {  "S21089C8", // class name
  bases_S21089C8, 18,
  &(vtc_S21089C8[0]), // expected_vtbl_contents
  &(vtt_S21089C8[0]), // expected_vtt_contents
  ABISELECT(288,152), // object size
  NSPAIRA(_ZTI8S21089C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21089C8),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21089C8),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C7  : virtual S21089C3 , S21089C8 , virtual S21089C2 , virtual S21089C5 , S21089C4 {
  virtual  ~S21089C7(); // _ZN8S21089C7D2Ev
  virtual void  v32(); // _ZN8S21089C73v32Ev
  virtual void  v33(); // _ZN8S21089C73v33Ev
  virtual void  v34(); // _ZN8S21089C73v34Ev
  S21089C7(); // tgen
};
//SIG(-1 S21089C7) C1{ VBC2{ VBC3{ v4 v5} BC4{ VBC3 v6 v7 v8 v9 Fp Fc} BC5{ BC3 v10 v11 v12 v13 v14 v15 v16 v17} vd v18 v19 FC3} BC6{ VBC3 BC2 VBC7{ v20 FU8{ m FD[3]}} BC9{ BC5 BC10{ VBC2 vd v21 v22} BC7 BC4 v23 v24 v25 v26 v27 v28 Fp Fl} BC5 vd v29} VBC10 VBC4 BC3 vd v1 v2 v3}


 S21089C7 ::~S21089C7(){ note_dtor("S21089C7", this);}
void  S21089C7 ::v32(){vfunc_called(this, "_ZN8S21089C73v32Ev");}
void  S21089C7 ::v33(){vfunc_called(this, "_ZN8S21089C73v33Ev");}
void  S21089C7 ::v34(){vfunc_called(this, "_ZN8S21089C73v34Ev");}
S21089C7 ::S21089C7(){ note_ctor("S21089C7", this);} // tgen

static void Test_S21089C7()
{
  extern Class_Descriptor cd_S21089C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,44)];
    init_test(&cd_S21089C7, buf);
    S21089C7 *dp, &lv = *(dp=new (buf) S21089C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,172), "sizeof(S21089C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C7)");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C8*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C8*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C8*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*)(S21089C8*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(208,108), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(208,108), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*), ABISELECT(184,96), "S21089C7");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*)(S21089C8*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C2*), ABISELECT(184,96), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C8*), 0, "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C8*), ABISELECT(24,12), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C8*), ABISELECT(24,12), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C8*), 0, "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C8*), ABISELECT(224,116), "S21089C7");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*)(S21089C8*), ABISELECT(48,20), "S21089C7");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*)(S21089C8*), ABISELECT(48,20), "S21089C7");
    check_base_class_offset(lv, (S21089C2*)(S21089C11*)(S21089C8*), ABISELECT(56,24), "S21089C7");
    check_base_class_offset(lv, (S21089C9*)(S21089C11*)(S21089C8*), ABISELECT(64,28), "S21089C7");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*)(S21089C8*), ABISELECT(128,68), "S21089C7");
    check_base_class_offset(lv, (S21089C11*)(S21089C8*), ABISELECT(48,20), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C8*), ABISELECT(168,88), "S21089C7");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C8*), ABISELECT(168,88), "S21089C7");
    check_base_class_offset(lv, (S21089C8*), 0, "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C2*), ABISELECT(288,156), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*), ABISELECT(296,160), "S21089C7");
    /*is_ambiguous_... S21089C7::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*), ABISELECT(176,92), "S21089C7");
    test_class_info(&lv, &cd_S21089C7);
    dp->~S21089C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C7(Test_S21089C7, "S21089C7", ABISELECT(320,172));

#else // __cplusplus

extern void _ZN8S21089C7C1Ev();
extern void _ZN8S21089C7D2Ev();
Name_Map name_map_S21089C7[] = {
  NSPAIR(_ZN8S21089C7C1Ev),
  NSPAIR(_ZN8S21089C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C8;
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
static Base_Class bases_S21089C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    ABISELECT(184,96), //bcp->offset
    -1, //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
    1, //immediately_derived
  0, 1},
  {&cd_S21089C5,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(208,108), //bcp->offset
    129, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(184,96), //bcp->offset
    99, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    10, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(24,12), //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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21089C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(224,116), //bcp->offset
    141, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21089C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C2,    ABISELECT(56,24), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(64,28), //bcp->offset
    69, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(128,68), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(48,20), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(168,88), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C8,    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_S21089C2,    ABISELECT(288,156), //bcp->offset
    145, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    ABISELECT(296,160), //bcp->offset
    160, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C4,    ABISELECT(176,92), //bcp->offset
    95, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21089C7[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C7D1Ev();
extern void _ZN8S21089C7D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S21089C7D1Ev,_ZThn96_N8S21089C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S21089C7D0Ev,_ZThn96_N8S21089C7D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S21089C7D1Ev,_ZThn156_N8S21089C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S21089C7D0Ev,_ZThn156_N8S21089C7D0Ev)() __attribute__((weak));
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY vtc_S21089C7[] = {
  ABISELECT(296,160),
  ABISELECT(288,156),
  ABISELECT(184,96),
  ABISELECT(224,116),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(136,76),
  ABISELECT(136,76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S21089C7[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C8__8S21089C7[] = {
  ABISELECT(184,96),
  ABISELECT(224,116),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C38S21089C8__A1__8S21089C7[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C38S21089C8__A1__8S21089C7[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C38S21089C8__A1__8S21089C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C38S21089C8__A1__8S21089C7[] = {
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21089C2D1Ev,_ZThn72_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21089C2D0Ev,_ZThn72_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-128,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C7[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C118S21089C8__A2__8S21089C7[] = {
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S21089C11D1Ev,_ZThn76_N9S21089C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S21089C11D0Ev,_ZThn76_N9S21089C11D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-136,-76),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C118S21089C8__8S21089C7[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S21089C8D1Ev,_ZThn96_N8S21089C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S21089C8D0Ev,_ZThn96_N8S21089C8D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C8__8S21089C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C8__8S21089C7[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C8__8S21089C7[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C8__8S21089C7[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__8S21089C8__8S21089C7[] = {
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C8__8S21089C7[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__8S21089C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__A1__8S21089C7[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C2__A1__8S21089C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C2__A1__8S21089C7[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__8S21089C7[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C5__A3__8S21089C7[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
static  VTT_ENTRY vtt_S21089C7[] = {
  {&(_ZTV8S21089C7[9]),  9,175},
  {&(_tg__ZTV8S21089C8__8S21089C7[7]),  7,18},
  {&(_tg__ZTV8S21089C38S21089C8__A1__8S21089C7[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C38S21089C8__A1__8S21089C7[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C38S21089C8__A1__8S21089C7[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C38S21089C8__A1__8S21089C7[4]),  4,6},
  {&(_tg__ZTV9S21089C118S21089C8__8S21089C7[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C8__8S21089C7[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C8__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C8__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C8__8S21089C7[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C7[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C118S21089C8__A2__8S21089C7[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C118S21089C8__8S21089C7[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C8__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C8__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C8__8S21089C7[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C118S21089C8__8S21089C7[5]),  5,11},
  {&(_tg__ZTV8S21089C3__A1__8S21089C8__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C9__8S21089C8__8S21089C7[3]),  3,4},
  {&(_tg__ZTV9S21089C11__8S21089C8__8S21089C7[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C8__8S21089C7[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__8S21089C8__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__8S21089C8__8S21089C7[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C8__8S21089C7[5]),  5,11},
  {&(_ZTV8S21089C7[119]),  119,175},
  {&(_ZTV8S21089C7[119]),  119,175},
  {&(_ZTV8S21089C7[131]),  131,175},
  {&(_ZTV8S21089C7[144]),  144,175},
  {&(_ZTV8S21089C7[39]),  39,175},
  {&(_ZTV8S21089C7[63]),  63,175},
  {&(_ZTV8S21089C7[77]),  77,175},
  {&(_ZTV8S21089C7[154]),  154,175},
  {&(_ZTV8S21089C7[169]),  169,175},
  {&(_tg__ZTV8S21089C3__8S21089C7[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__8S21089C7[5]),  5,11},
  {&(_tg__ZTV8S21089C58S21089C3__8S21089C7[5]),  5,11},
  {&(_tg__ZTV8S21089C3__8S21089C7[5]),  5,15},
  {&(_tg__ZTV8S21089C2__A1__8S21089C7[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C2__A1__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C3__8S21089C2__A1__8S21089C7[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C2__A1__8S21089C7[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A3__8S21089C7[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C5__A3__8S21089C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21089C7[];
extern  VTBL_ENTRY _ZTV8S21089C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C7[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21089C8D0Ev,_ZThn96_N8S21089C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21089C8D1Ev,_ZThn96_N8S21089C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21089C11D0Ev,_ZThn76_N9S21089C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21089C11D1Ev,_ZThn76_N9S21089C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21089C2D0Ev,_ZThn72_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21089C2D1Ev,_ZThn72_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21089C7D0Ev,_ZThn156_N8S21089C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21089C7D1Ev,_ZThn156_N8S21089C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21089C7D0Ev,_ZThn96_N8S21089C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21089C7D1Ev,_ZThn96_N8S21089C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C7 = {  "S21089C7", // class name
  bases_S21089C7, 22,
  &(vtc_S21089C7[0]), // expected_vtbl_contents
  &(vtt_S21089C7[0]), // expected_vtt_contents
  ABISELECT(320,172), // object size
  NSPAIRA(_ZTI8S21089C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21089C7),175, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21089C7),44, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C12  : virtual S21089C4 , S21089C8 , S21089C5 {
  void *s21089c12f0;
  int s21089c12f1;
  virtual void  v35(); // _ZN9S21089C123v35Ev
  virtual void  v36(); // _ZN9S21089C123v36Ev
  ~S21089C12(); // tgen
  S21089C12(); // tgen
};
//SIG(-1 S21089C12) C1{ VBC2{ v3 v4} BC3{ VBC2 BC4{ VBC2 BC5{ VBC2 v5 v6 v7 v8 Fp Fc} BC6{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC2} VBC7{ v19 FU8{ m FD[3]}} BC9{ BC6 BC10{ VBC4 vd v20 v21} BC7 BC5 v22 v23 v24 v25 v26 v27 Fp Fl} BC6 vd v28} BC5 v1 v2 Fp Fi}


void  S21089C12 ::v35(){vfunc_called(this, "_ZN9S21089C123v35Ev");}
void  S21089C12 ::v36(){vfunc_called(this, "_ZN9S21089C123v36Ev");}
S21089C12 ::~S21089C12(){ note_dtor("S21089C12", this);} // tgen
S21089C12 ::S21089C12(){ note_ctor("S21089C12", this);} // tgen

static void Test_S21089C12()
{
  extern Class_Descriptor cd_S21089C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,44)];
    init_test(&cd_S21089C12, buf);
    S21089C12 *dp, &lv = *(dp=new (buf) S21089C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,172), "sizeof(S21089C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C12)");
    /*is_ambiguous_... S21089C12::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*), 0, "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), 0, "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), 0, "S21089C12");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*)(S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*), 0, "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C8*), ABISELECT(24,12), "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C8*), ABISELECT(24,12), "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C8*), ABISELECT(224,112), "S21089C12");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*)(S21089C8*), ABISELECT(48,20), "S21089C12");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*)(S21089C8*), ABISELECT(48,20), "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(288,152), "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(312,164), "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(312,164), "S21089C12");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*)(S21089C8*), ABISELECT(288,152), "S21089C12");
    check_base_class_offset(lv, (S21089C2*)(S21089C11*)(S21089C8*), ABISELECT(56,24), "S21089C12");
    check_base_class_offset(lv, (S21089C9*)(S21089C11*)(S21089C8*), ABISELECT(64,28), "S21089C12");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*)(S21089C8*), ABISELECT(128,68), "S21089C12");
    check_base_class_offset(lv, (S21089C11*)(S21089C8*), ABISELECT(48,20), "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C8*), ABISELECT(168,88), "S21089C12");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C8*), ABISELECT(168,88), "S21089C12");
    check_base_class_offset(lv, (S21089C8*), 0, "S21089C12");
    /*is_ambiguous_... S21089C12::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*), ABISELECT(176,92), "S21089C12");
    check_field_offset(lv, s21089c12f0, ABISELECT(200,104), "S21089C12.s21089c12f0");
    check_field_offset(lv, s21089c12f1, ABISELECT(208,108), "S21089C12.s21089c12f1");
    test_class_info(&lv, &cd_S21089C12);
    dp->~S21089C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C12(Test_S21089C12, "S21089C12", ABISELECT(336,172));

#else // __cplusplus

extern void _ZN9S21089C12C1Ev();
extern void _ZN9S21089C12D1Ev();
Name_Map name_map_S21089C12[] = {
  NSPAIR(_ZN9S21089C12C1Ev),
  NSPAIR(_ZN9S21089C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C8;
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
static Base_Class bases_S21089C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(24,12), //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(224,112), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21089C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(312,164), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(288,152), //bcp->offset
    107, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21089C2,    ABISELECT(56,24), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(64,28), //bcp->offset
    66, //bcp->virtual_function_table_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_S21089C5,    ABISELECT(128,68), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(168,88), //bcp->offset
    80, //bcp->virtual_function_table_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_S21089C8,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C5,    ABISELECT(176,92), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21089C12[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN9S21089C12D1Ev();
extern void _ZN9S21089C12D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN9S21089C123v35Ev();
extern void _ZN9S21089C123v36Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N9S21089C12D1Ev,_ZThn20_N9S21089C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21089C12D0Ev,_ZThn20_N9S21089C12D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N9S21089C12D1Ev,_ZThn24_N9S21089C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21089C12D0Ev,_ZThn24_N9S21089C12D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C12D1Ev,_ZTv0_n40_N9S21089C12D1Ev)();
extern void ABISELECT(_ZThn288_N9S21089C12D1Ev,_ZThn152_N9S21089C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C12D0Ev,_ZTv0_n40_N9S21089C12D0Ev)();
extern void ABISELECT(_ZThn288_N9S21089C12D0Ev,_ZThn152_N9S21089C12D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY vtc_S21089C12[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21089C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN9S21089C123v35Ev,
  (VTBL_ENTRY)&_ZN9S21089C123v36Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21089C12D1Ev,_ZThn20_N9S21089C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21089C12D0Ev,_ZThn20_N9S21089C12D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21089C12D1Ev,_ZThn24_N9S21089C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21089C12D0Ev,_ZThn24_N9S21089C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C12D1Ev,_ZTv0_n40_N9S21089C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C12D0Ev,_ZTv0_n40_N9S21089C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern VTBL_ENTRY _ZTV9S21089C12[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C8__9S21089C12[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C38S21089C8__9S21089C12[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C38S21089C8__9S21089C12[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S21089C2D1Ev,_ZThn128_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S21089C2D0Ev,_ZThn128_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-128),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C29S21089C118S21089C8__9S21089C12[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C8__A2__9S21089C12[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C118S21089C8__A2__9S21089C12[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S21089C11D1Ev,_ZThn132_N9S21089C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S21089C11D0Ev,_ZThn132_N9S21089C11D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__A1__9S21089C118S21089C8__9S21089C12[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C118S21089C8__9S21089C12[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C8__9S21089C12[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C8__9S21089C12[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C8__9S21089C12[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn288_N8S21089C8D1Ev,_ZThn152_N8S21089C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void ABISELECT(_ZThn288_N8S21089C8D0Ev,_ZThn152_N8S21089C8D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C8__9S21089C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__8S21089C8__9S21089C12[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C8__9S21089C12[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__9S21089C12[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C5__A3__9S21089C12[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__9S21089C12[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__A1__9S21089C12[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C3__A1__9S21089C12[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C3__A1__9S21089C12[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
static  VTT_ENTRY vtt_S21089C12[] = {
  {&(_ZTV9S21089C12[7]),  7,149},
  {&(_tg__ZTV8S21089C8__9S21089C12[7]),  7,18},
  {&(_tg__ZTV8S21089C38S21089C8__9S21089C12[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C38S21089C8__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C58S21089C38S21089C8__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C38S21089C8__9S21089C12[5]),  5,15},
  {&(_tg__ZTV9S21089C118S21089C8__9S21089C12[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C8__9S21089C12[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C8__9S21089C12[20]),  20,30},
  {&(_tg__ZTV8S21089C4__8S21089C29S21089C118S21089C8__9S21089C12[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C8__9S21089C12[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C8__A2__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C118S21089C8__A2__9S21089C12[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C118S21089C8__9S21089C12[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C8__9S21089C12[20]),  20,30},
  {&(_tg__ZTV8S21089C4__A1__9S21089C118S21089C8__9S21089C12[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C8__9S21089C12[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C118S21089C8__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C8__9S21089C12[7]),  7,18},
  {&(_tg__ZTV8S21089C9__8S21089C8__9S21089C12[3]),  3,4},
  {&(_tg__ZTV9S21089C11__8S21089C8__9S21089C12[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C8__9S21089C12[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__8S21089C8__9S21089C12[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__8S21089C8__9S21089C12[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C8__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C5__A3__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C5__A3__9S21089C12[4]),  4,6},
  {&(_ZTV9S21089C12[7]),  7,149},
  {&(_ZTV9S21089C12[106]),  106,149},
  {&(_ZTV9S21089C12[36]),  36,149},
  {&(_ZTV9S21089C12[60]),  60,149},
  {&(_ZTV9S21089C12[127]),  127,149},
  {&(_ZTV9S21089C12[139]),  139,149},
  {&(_ZTV9S21089C12[74]),  74,149},
  {&(_ZTV9S21089C12[97]),  97,149},
  {&(_tg__ZTV8S21089C3__A1__9S21089C12[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__A1__9S21089C12[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C3__A1__9S21089C12[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C3__A1__9S21089C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21089C12[];
extern  VTBL_ENTRY _ZTV9S21089C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C12[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21089C8D0Ev,_ZThn152_N8S21089C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21089C8D1Ev,_ZThn152_N8S21089C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21089C11D0Ev,_ZThn132_N9S21089C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21089C11D1Ev,_ZThn132_N9S21089C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21089C2D0Ev,_ZThn128_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S21089C2D1Ev,_ZThn128_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C12D0Ev,_ZTv0_n40_N9S21089C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21089C12D0Ev,_ZThn152_N9S21089C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C12D1Ev,_ZTv0_n40_N9S21089C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21089C12D1Ev,_ZThn152_N9S21089C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C12 = {  "S21089C12", // class name
  bases_S21089C12, 20,
  &(vtc_S21089C12[0]), // expected_vtbl_contents
  &(vtt_S21089C12[0]), // expected_vtt_contents
  ABISELECT(336,172), // object size
  NSPAIRA(_ZTI9S21089C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21089C12),149, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21089C12),39, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C14  : S21089C3 , S21089C9 {
  virtual void  v37(); // _ZN9S21089C143v37Ev
  virtual void  v38(); // _ZN9S21089C143v38Ev
  ~S21089C14(); // tgen
  S21089C14(); // tgen
};
//SIG(-1 S21089C14) C1{ BC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} BC6{ v19 FU7{ m FD[3]}} v1 v2}


void  S21089C14 ::v37(){vfunc_called(this, "_ZN9S21089C143v37Ev");}
void  S21089C14 ::v38(){vfunc_called(this, "_ZN9S21089C143v38Ev");}
S21089C14 ::~S21089C14(){ note_dtor("S21089C14", this);} // tgen
S21089C14 ::S21089C14(){ note_ctor("S21089C14", this);} // tgen

static void Test_S21089C14()
{
  extern Class_Descriptor cd_S21089C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S21089C14, buf);
    S21089C14 *dp, &lv = *(dp=new (buf) S21089C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S21089C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C14)");
    /*is_ambiguous_... S21089C3::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), 0, "S21089C14");
    check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), 0, "S21089C14");
    check_base_class_offset(lv, (S21089C5*)(S21089C3*), 0, "S21089C14");
    check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(24,12), "S21089C14");
    check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(24,12), "S21089C14");
    check_base_class_offset(lv, (S21089C3*), 0, "S21089C14");
    check_base_class_offset(lv, (S21089C9*), ABISELECT(48,20), "S21089C14");
    test_class_info(&lv, &cd_S21089C14);
    dp->~S21089C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C14(Test_S21089C14, "S21089C14", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S21089C14C1Ev();
extern void _ZN9S21089C14D1Ev();
Name_Map name_map_S21089C14[] = {
  NSPAIR(_ZN9S21089C14C1Ev),
  NSPAIR(_ZN9S21089C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
static Base_Class bases_S21089C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21089C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(24,12), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C3,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C9,    ABISELECT(48,20), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21089C14[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN9S21089C14D1Ev();
extern void _ZN9S21089C14D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN9S21089C143v37Ev();
extern void _ZN9S21089C143v38Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY vtc_S21089C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21089C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v38Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern VTBL_ENTRY _ZTV9S21089C14[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__9S21089C14[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
static  VTT_ENTRY vtt_S21089C14[] = {
  {&(_ZTV9S21089C14[5]),  5,32},
  {&(_tg__ZTV8S21089C3__9S21089C14[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__9S21089C14[5]),  5,11},
  {&(_tg__ZTV8S21089C58S21089C3__9S21089C14[5]),  5,11},
  {&(_tg__ZTV8S21089C3__9S21089C14[5]),  5,15},
  {&(_ZTV9S21089C14[5]),  5,32},
};
extern VTBL_ENTRY _ZTI9S21089C14[];
extern  VTBL_ENTRY _ZTV9S21089C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C14[];
Class_Descriptor cd_S21089C14 = {  "S21089C14", // class name
  bases_S21089C14, 6,
  &(vtc_S21089C14[0]), // expected_vtbl_contents
  &(vtt_S21089C14[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S21089C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21089C14),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21089C14),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C13  : S21089C9 , virtual S21089C4 , S21089C7 , S21089C14 {
  __tsi64 s21089c13f0;
  virtual  ~S21089C13(); // _ZN9S21089C13D2Ev
  S21089C13(); // tgen
};
//SIG(-1 S21089C13) C1{ BC2{ v1 FU3{ m FD[3]}} VBC4{ v2 v3} BC5{ VBC6{ VBC4 BC7{ VBC4 v4 v5 v6 v7 Fp Fc} BC8{ BC4 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC4} BC9{ VBC4 BC6 VBC2 BC10{ BC8 BC11{ VBC6 vd v18 v19} BC2 BC7 v20 v21 v22 v23 v24 v25 Fp Fl} BC8 vd v26} VBC11 VBC7 BC4 vd v27 v28 v29} BC12{ BC6 BC2 v30 v31} vd FL}


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

static void Test_S21089C13()
{
  extern Class_Descriptor cd_S21089C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,71)];
    init_test(&cd_S21089C13, buf);
    S21089C13 *dp, &lv = *(dp=new (buf) S21089C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,280), "sizeof(S21089C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C13)");
    /*is_ambiguous_... S21089C13::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*), 0, "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C8*)(S21089C7*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C3::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C14*), ABISELECT(376,204), "S21089C13");
    check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C14*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(400,216), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(400,216), "S21089C13");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C7*), ABISELECT(376,204), "S21089C13");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C13::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C2*), ABISELECT(376,204), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(64,40), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(88,52), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(88,52), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(64,40), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C8*)(S21089C7*), ABISELECT(416,224), "S21089C13");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(112,60), "S21089C13");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(112,60), "S21089C13");
    check_base_class_offset(lv, (S21089C2*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(120,64), "S21089C13");
    check_base_class_offset(lv, (S21089C9*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(128,68), "S21089C13");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(192,108), "S21089C13");
    check_base_class_offset(lv, (S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(112,60), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C8*)(S21089C7*), ABISELECT(232,128), "S21089C13");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C8*)(S21089C7*), ABISELECT(232,128), "S21089C13");
    check_base_class_offset(lv, (S21089C8*)(S21089C7*), ABISELECT(64,40), "S21089C13");
    /*is_ambiguous_... S21089C7::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C2*)(S21089C7*), ABISELECT(480,264), "S21089C13");
    /*is_ambiguous_... S21089C7::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C7*), ABISELECT(488,268), "S21089C13");
    /*is_ambiguous_... S21089C7::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C7*), ABISELECT(240,132), "S21089C13");
    check_base_class_offset(lv, (S21089C7*), ABISELECT(64,40), "S21089C13");
    check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C14*), ABISELECT(256,136), "S21089C13");
    check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C14*), ABISELECT(280,148), "S21089C13");
    check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C14*), ABISELECT(280,148), "S21089C13");
    check_base_class_offset(lv, (S21089C3*)(S21089C14*), ABISELECT(256,136), "S21089C13");
    check_base_class_offset(lv, (S21089C9*)(S21089C14*), ABISELECT(304,156), "S21089C13");
    check_base_class_offset(lv, (S21089C14*), ABISELECT(256,136), "S21089C13");
    check_field_offset(lv, s21089c13f0, ABISELECT(368,196), "S21089C13.s21089c13f0");
    test_class_info(&lv, &cd_S21089C13);
    dp->~S21089C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C13(Test_S21089C13, "S21089C13", ABISELECT(512,280));

#else // __cplusplus

extern void _ZN9S21089C13C1Ev();
extern void _ZN9S21089C13D2Ev();
Name_Map name_map_S21089C13[] = {
  NSPAIR(_ZN9S21089C13C1Ev),
  NSPAIR(_ZN9S21089C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C8;
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C7;
extern VTBL_ENTRY _ZTI8S21089C7[];
extern  VTBL_ENTRY _ZTV8S21089C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C7[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C14;
extern VTBL_ENTRY _ZTI9S21089C14[];
extern  VTBL_ENTRY _ZTV9S21089C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C14[];
static Base_Class bases_S21089C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21089C4,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(400,216), //bcp->offset
    171, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(376,204), //bcp->offset
    141, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21089C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(88,52), //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
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(416,224), //bcp->offset
    183, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21089C4,    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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21089C6,    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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C2,    ABISELECT(120,64), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(128,68), //bcp->offset
    79, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(192,108), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(112,60), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(232,128), //bcp->offset
    93, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S21089C8,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21089C2,    ABISELECT(480,264), //bcp->offset
    187, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21089C5,    ABISELECT(488,268), //bcp->offset
    202, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21089C4,    ABISELECT(240,132), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21089C7,    ABISELECT(64,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C5,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(280,148), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(304,156), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21089C14,    ABISELECT(256,136), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21089C13[];
extern void _ZN8S21089C93v22Ev();
extern void _ZN9S21089C13D1Ev();
extern void _ZN9S21089C13D0Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZThn64_N9S21089C13D1Ev,_ZThn40_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21089C13D0Ev,_ZThn40_N9S21089C13D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn112_N9S21089C13D1Ev,_ZThn60_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S21089C13D0Ev,_ZThn60_N9S21089C13D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn120_N9S21089C13D1Ev,_ZThn64_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21089C13D0Ev,_ZThn64_N9S21089C13D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZThn256_N9S21089C13D1Ev,_ZThn136_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S21089C13D0Ev,_ZThn136_N9S21089C13D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN9S21089C143v37Ev();
extern void _ZN9S21089C143v38Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C13D1Ev,_ZTv0_n40_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn376_N9S21089C13D1Ev,_ZThn204_N9S21089C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C13D0Ev,_ZTv0_n40_N9S21089C13D0Ev)();
extern void ABISELECT(_ZThn376_N9S21089C13D0Ev,_ZThn204_N9S21089C13D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S21089C13D1Ev,_ZTv0_n28_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn480_N9S21089C13D1Ev,_ZThn264_N9S21089C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21089C13D0Ev,_ZTv0_n28_N9S21089C13D0Ev)();
extern void ABISELECT(_ZThn480_N9S21089C13D0Ev,_ZThn264_N9S21089C13D0Ev)() __attribute__((weak));
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY vtc_S21089C13[] = {
  ABISELECT(488,268),
  ABISELECT(480,264),
  ABISELECT(416,224),
  ABISELECT(376,204),
  ABISELECT(376,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  (VTBL_ENTRY)&_ZN9S21089C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C13D0Ev,
  ABISELECT(424,228),
  ABISELECT(416,224),
  ABISELECT(312,164),
  ABISELECT(352,184),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21089C13D1Ev,_ZThn40_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21089C13D0Ev,_ZThn40_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21089C13D1Ev,_ZThn60_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21089C13D0Ev,_ZThn60_N9S21089C13D0Ev),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21089C13D1Ev,_ZThn64_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21089C13D0Ev,_ZThn64_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21089C13D1Ev,_ZThn136_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21089C13D0Ev,_ZThn136_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v38Ev,
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-376,-204),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C13D1Ev,_ZTv0_n40_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C13D0Ev,_ZTv0_n40_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-400,-216),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  0,
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  0,
  0,
  ABISELECT(-480,-264),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21089C13D1Ev,_ZTv0_n28_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21089C13D0Ev,_ZTv0_n28_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-488,-268),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern VTBL_ENTRY _ZTV9S21089C13[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C7D1Ev();
extern void _ZN8S21089C7D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C7__9S21089C13[] = {
  ABISELECT(424,228),
  ABISELECT(416,224),
  ABISELECT(312,164),
  ABISELECT(352,184),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(312,164),
  ABISELECT(352,184),
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C38S21089C88S21089C7__A1__9S21089C13[] = {
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C38S21089C88S21089C7__A1__9S21089C13[] = {
  ABISELECT(312,164),
  ABISELECT(312,164),
  ABISELECT(312,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C38S21089C88S21089C7__A1__9S21089C13[] = {
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C38S21089C88S21089C7__A1__9S21089C13[] = {
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(264,144),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn256_N8S21089C2D1Ev,_ZThn140_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn256_N8S21089C2D0Ev,_ZThn140_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-256,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C88S21089C7__A2__9S21089C13[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C118S21089C88S21089C7__A2__9S21089C13[] = {
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21089C11D1Ev,_ZThn144_N9S21089C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void ABISELECT(_ZThn264_N9S21089C11D0Ev,_ZThn144_N9S21089C11D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-264,-144),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C118S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn312_N8S21089C8D1Ev,_ZThn164_N8S21089C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void ABISELECT(_ZThn312_N8S21089C8D0Ev,_ZThn164_N8S21089C8D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-164),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C88S21089C7__9S21089C13[] = {
  0,
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__8S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C88S21089C7__9S21089C13[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S21089C7D1Ev,_ZThn164_N8S21089C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S21089C7D0Ev,_ZThn164_N8S21089C7D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C7__9S21089C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-312,-164),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C7__9S21089C13[] = {
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C7__9S21089C13[] = {
  0,
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C8__8S21089C7__9S21089C13[] = {
  ABISELECT(264,144),
  ABISELECT(264,144),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C8__8S21089C7__9S21089C13[] = {
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(256,140),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C7__9S21089C13[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(184,96),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn416_N8S21089C7D1Ev,_ZThn224_N8S21089C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev)();
extern void ABISELECT(_ZThn416_N8S21089C7D0Ev,_ZThn224_N8S21089C7D0Ev)() __attribute__((weak));
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__A1__8S21089C7__9S21089C13[] = {
  0,
  0,
  ABISELECT(-416,-224),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__8S21089C7__9S21089C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-424,-228),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN9S21089C14D1Ev();
extern void _ZN9S21089C14D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN9S21089C143v37Ev();
extern void _ZN9S21089C143v38Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C14__9S21089C13[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21089C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v38Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C39S21089C14__A2__9S21089C13[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C39S21089C14__A4__9S21089C13[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C39S21089C14__A4__9S21089C13[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C39S21089C14__A2__9S21089C13[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__9S21089C14__9S21089C13[] = {
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__9S21089C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__A1__9S21089C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C2__A1__9S21089C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C2__A1__9S21089C13[] = {
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__9S21089C13[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C5__A3__9S21089C13[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
static  VTT_ENTRY vtt_S21089C13[] = {
  {&(_ZTV9S21089C13[7]),  7,217},
  {&(_tg__ZTV8S21089C7__9S21089C13[9]),  9,23},
  {&(_tg__ZTV8S21089C88S21089C7__9S21089C13[7]),  7,18},
  {&(_tg__ZTV8S21089C38S21089C88S21089C7__A1__9S21089C13[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C38S21089C88S21089C7__A1__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C38S21089C88S21089C7__A1__9S21089C13[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C38S21089C88S21089C7__A1__9S21089C13[4]),  4,6},
  {&(_tg__ZTV9S21089C118S21089C88S21089C7__9S21089C13[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C88S21089C7__9S21089C13[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C88S21089C7__9S21089C13[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C88S21089C7__A2__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C118S21089C88S21089C7__A2__9S21089C13[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C118S21089C88S21089C7__9S21089C13[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C88S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C88S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C88S21089C7__9S21089C13[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C118S21089C88S21089C7__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C3__A1__8S21089C88S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C9__8S21089C88S21089C7__9S21089C13[3]),  3,4},
  {&(_tg__ZTV9S21089C11__8S21089C88S21089C7__9S21089C13[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C88S21089C7__9S21089C13[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__8S21089C88S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__8S21089C88S21089C7__9S21089C13[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C88S21089C7__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C3__8S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C3__8S21089C7__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C7__9S21089C13[2]),  2,12},
  {&(_tg__ZTV8S21089C9__8S21089C7__9S21089C13[3]),  3,4},
  {&(_tg__ZTV9S21089C118S21089C8__8S21089C7__9S21089C13[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C8__8S21089C7__9S21089C13[6]),  6,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C7__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C2__A1__8S21089C7__9S21089C13[9]),  9,15},
  {&(_tg__ZTV8S21089C5__A3__8S21089C7__9S21089C13[9]),  9,15},
  {&(_tg__ZTV9S21089C14__9S21089C13[5]),  5,17},
  {&(_tg__ZTV8S21089C39S21089C14__A2__9S21089C13[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C39S21089C14__A4__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C39S21089C14__A4__9S21089C13[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C39S21089C14__A2__9S21089C13[4]),  4,6},
  {&(_tg__ZTV8S21089C4__9S21089C14__9S21089C13[4]),  4,6},
  {&(_ZTV9S21089C13[161]),  161,217},
  {&(_ZTV9S21089C13[19]),  19,217},
  {&(_ZTV9S21089C13[161]),  161,217},
  {&(_ZTV9S21089C13[173]),  173,217},
  {&(_ZTV9S21089C13[186]),  186,217},
  {&(_ZTV9S21089C13[49]),  49,217},
  {&(_ZTV9S21089C13[73]),  73,217},
  {&(_ZTV9S21089C13[87]),  87,217},
  {&(_ZTV9S21089C13[196]),  196,217},
  {&(_ZTV9S21089C13[211]),  211,217},
  {&(_ZTV9S21089C13[114]),  114,217},
  {&(_tg__ZTV8S21089C3__9S21089C13[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C58S21089C3__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C3__9S21089C13[5]),  5,15},
  {&(_tg__ZTV8S21089C2__A1__9S21089C13[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C2__A1__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C3__8S21089C2__A1__9S21089C13[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C2__A1__9S21089C13[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A3__9S21089C13[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C5__A3__9S21089C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21089C13[];
extern  VTBL_ENTRY _ZTV9S21089C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C13[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21089C7D0Ev,_ZThn224_N8S21089C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21089C7D1Ev,_ZThn224_N8S21089C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21089C7D0Ev,_ZThn164_N8S21089C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21089C7D1Ev,_ZThn164_N8S21089C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21089C8D0Ev,_ZThn164_N8S21089C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21089C8D1Ev,_ZThn164_N8S21089C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21089C11D0Ev,_ZThn144_N9S21089C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21089C11D1Ev,_ZThn144_N9S21089C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21089C2D0Ev,_ZThn140_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21089C2D1Ev,_ZThn140_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21089C13D0Ev,_ZTv0_n28_N9S21089C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21089C13D0Ev,_ZThn264_N9S21089C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21089C13D1Ev,_ZTv0_n28_N9S21089C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21089C13D1Ev,_ZThn264_N9S21089C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C13D0Ev,_ZTv0_n40_N9S21089C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21089C13D0Ev,_ZThn204_N9S21089C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C13D1Ev,_ZTv0_n40_N9S21089C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21089C13D1Ev,_ZThn204_N9S21089C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C13 = {  "S21089C13", // class name
  bases_S21089C13, 30,
  &(vtc_S21089C13[0]), // expected_vtbl_contents
  &(vtt_S21089C13[0]), // expected_vtt_contents
  ABISELECT(512,280), // object size
  NSPAIRA(_ZTI9S21089C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21089C13),217, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21089C13),62, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21089C1  : virtual S21089C2 , virtual S21089C7 , S21089C12 , virtual S21089C13 {
  virtual  ~S21089C1(); // _ZN8S21089C1D2Ev
  virtual void  v1(); // _ZN8S21089C12v1Ev
  virtual void  v2(); // _ZN8S21089C12v2Ev
  virtual void  v3(); // _ZN8S21089C12v3Ev
  virtual void  v4(); // _ZN8S21089C12v4Ev
  virtual void  v5(); // _ZN8S21089C12v5Ev
  S21089C1(); // tgen
};
//SIG(1 S21089C1) C1{ VBC2{ VBC3{ VBC4{ v6 v7} BC5{ VBC4 v8 v9 v10 v11 Fp Fc} BC6{ BC4 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC4} vd v22 v23} VBC7{ VBC3 BC8{ VBC4 BC3 VBC9{ v24 FU10{ m FD[3]}} BC11{ BC6 BC2 BC9 BC5 v25 v26 v27 v28 v29 v30 Fp Fl} BC6 vd v31} VBC2 VBC5 BC4 vd v32 v33 v34} BC12{ VBC4 BC8 BC5 v35 v36 Fp Fi} VBC13{ BC9 VBC4 BC7 BC14{ BC3 BC9 v37 v38} vd FL} vd v1 v2 v3 v4 v5}


 S21089C1 ::~S21089C1(){ note_dtor("S21089C1", this);}
void  S21089C1 ::v1(){vfunc_called(this, "_ZN8S21089C12v1Ev");}
void  S21089C1 ::v2(){vfunc_called(this, "_ZN8S21089C12v2Ev");}
void  S21089C1 ::v3(){vfunc_called(this, "_ZN8S21089C12v3Ev");}
void  S21089C1 ::v4(){vfunc_called(this, "_ZN8S21089C12v4Ev");}
void  S21089C1 ::v5(){vfunc_called(this, "_ZN8S21089C12v5Ev");}
S21089C1 ::S21089C1(){ note_ctor("S21089C1", this);} // tgen

static void Test_S21089C1()
{
  extern Class_Descriptor cd_S21089C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(60,123)];
    init_test(&cd_S21089C1, buf);
    S21089C1 *dp, &lv = *(dp=new (buf) S21089C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(944,488), "sizeof(S21089C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21089C1)");
    /*is_ambiguous_... S21089C1::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C8*)(S21089C7*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C12::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C12*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C8*)(S21089C12*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C8*)(S21089C12*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C8*)(S21089C12*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C12::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C12*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C13::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C3::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C3*)(S21089C14*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    check_base_class_offset(lv, (S21089C4*)(S21089C5*)(S21089C3*)(S21089C14*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*), ABISELECT(224,116), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*), ABISELECT(248,128), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*), ABISELECT(248,128), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C2*), ABISELECT(224,116), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C7*), ABISELECT(224,116), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(224,116), "S21089C1");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(224,116), "S21089C1");
    /*is_ambiguous_... S21089C7::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C7*)(S21089C13*), ABISELECT(224,116), "S21089C1");
    check_base_class_offset(lv, (S21089C3*)(S21089C2*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(224,116), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C2*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C2*)(S21089C7*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C7::S21089C2 */ AMB_check_base_class_offset(lv, (S21089C2*)(S21089C7*)(S21089C13*), ABISELECT(216,112), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(272,136), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(296,148), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(296,148), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C8*)(S21089C7*), ABISELECT(272,136), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C8*)(S21089C7*), ABISELECT(464,232), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C8*)(S21089C12*), ABISELECT(464,232), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(464,232), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(320,156), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(320,156), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C2*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(328,160), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(336,164), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(400,204), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C11*)(S21089C8*)(S21089C7*), ABISELECT(320,156), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C8*)(S21089C7*), ABISELECT(440,224), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C8*)(S21089C7*), ABISELECT(440,224), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C8*)(S21089C7*), ABISELECT(272,136), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C7*), ABISELECT(528,272), "S21089C1");
    /*is_ambiguous_... S21089C7::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C7*)(S21089C13*), ABISELECT(528,272), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C7*), ABISELECT(448,228), "S21089C1");
    /*is_ambiguous_... S21089C1::S21089C7 */ AMB_check_base_class_offset(lv, (S21089C7*), ABISELECT(272,136), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C8*)(S21089C12*), 0, "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C8*)(S21089C12*), ABISELECT(24,12), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C8*)(S21089C12*), ABISELECT(24,12), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C8*)(S21089C12*), 0, "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(48,20), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(48,20), "S21089C1");
    check_base_class_offset(lv, (S21089C2*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(56,24), "S21089C1");
    check_base_class_offset(lv, (S21089C9*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(64,28), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(128,68), "S21089C1");
    check_base_class_offset(lv, (S21089C11*)(S21089C8*)(S21089C12*), ABISELECT(48,20), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C8*)(S21089C12*), ABISELECT(168,88), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C8*)(S21089C12*), ABISELECT(168,88), "S21089C1");
    check_base_class_offset(lv, (S21089C8*)(S21089C12*), 0, "S21089C1");
    /*is_ambiguous_... S21089C12::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C12*), ABISELECT(176,92), "S21089C1");
    check_base_class_offset(lv, (S21089C12*), 0, "S21089C1");
    /*is_ambiguous_... S21089C13::S21089C9 */ AMB_check_base_class_offset(lv, (S21089C9*)(S21089C13*), ABISELECT(560,284), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(624,324), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(648,336), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(648,336), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C3 */ AMB_check_base_class_offset(lv, (S21089C3*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(624,324), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(672,344), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(672,344), "S21089C1");
    check_base_class_offset(lv, (S21089C2*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(680,348), "S21089C1");
    check_base_class_offset(lv, (S21089C9*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(688,352), "S21089C1");
    /*is_ambiguous_... S21089C11::S21089C5 */ AMB_check_base_class_offset(lv, (S21089C5*)(S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(752,392), "S21089C1");
    check_base_class_offset(lv, (S21089C11*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(672,344), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(792,412), "S21089C1");
    /*is_ambiguous_... S21089C8::S21089C6 */ AMB_check_base_class_offset(lv, (S21089C6*)(S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(792,412), "S21089C1");
    check_base_class_offset(lv, (S21089C8*)(S21089C7*)(S21089C13*), ABISELECT(624,324), "S21089C1");
    /*is_ambiguous_... S21089C7::S21089C4 */ AMB_check_base_class_offset(lv, (S21089C4*)(S21089C7*)(S21089C13*), ABISELECT(800,416), "S21089C1");
    check_base_class_offset(lv, (S21089C7*)(S21089C13*), ABISELECT(624,324), "S21089C1");
    check_base_class_offset(lv, (S21089C5*)(S21089C3*)(S21089C14*)(S21089C13*), ABISELECT(816,420), "S21089C1");
    check_base_class_offset(lv, (S21089C4*)(S21089C6*)(S21089C3*)(S21089C14*)(S21089C13*), ABISELECT(840,432), "S21089C1");
    check_base_class_offset(lv, (S21089C6*)(S21089C3*)(S21089C14*)(S21089C13*), ABISELECT(840,432), "S21089C1");
    check_base_class_offset(lv, (S21089C3*)(S21089C14*)(S21089C13*), ABISELECT(816,420), "S21089C1");
    check_base_class_offset(lv, (S21089C9*)(S21089C14*)(S21089C13*), ABISELECT(864,440), "S21089C1");
    check_base_class_offset(lv, (S21089C14*)(S21089C13*), ABISELECT(816,420), "S21089C1");
    check_base_class_offset(lv, (S21089C13*), ABISELECT(560,284), "S21089C1");
    test_class_info(&lv, &cd_S21089C1);
    dp->~S21089C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21089C1(Test_S21089C1, "S21089C1", ABISELECT(944,488));

#else // __cplusplus

extern void _ZN8S21089C1C1Ev();
extern void _ZN8S21089C1D2Ev();
Name_Map name_map_S21089C1[] = {
  NSPAIR(_ZN8S21089C1C1Ev),
  NSPAIR(_ZN8S21089C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C8;
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C7;
extern VTBL_ENTRY _ZTI8S21089C7[];
extern  VTBL_ENTRY _ZTV8S21089C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C7[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C8;
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C12;
extern VTBL_ENTRY _ZTI9S21089C12[];
extern  VTBL_ENTRY _ZTV9S21089C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C12[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C2;
extern VTBL_ENTRY _ZTI8S21089C2[];
extern  VTBL_ENTRY _ZTV8S21089C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C2[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C11;
extern VTBL_ENTRY _ZTI9S21089C11[];
extern  VTBL_ENTRY _ZTV9S21089C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C11[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C8;
extern VTBL_ENTRY _ZTI8S21089C8[];
extern  VTBL_ENTRY _ZTV8S21089C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C8[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C7;
extern VTBL_ENTRY _ZTI8S21089C7[];
extern  VTBL_ENTRY _ZTV8S21089C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C7[];
extern Class_Descriptor cd_S21089C5;
extern VTBL_ENTRY _ZTI8S21089C5[];
extern  VTBL_ENTRY _ZTV8S21089C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C5[];
extern Class_Descriptor cd_S21089C4;
extern VTBL_ENTRY _ZTI8S21089C4[];
extern  VTBL_ENTRY _ZTV8S21089C4[];
extern Class_Descriptor cd_S21089C6;
extern VTBL_ENTRY _ZTI8S21089C6[];
extern  VTBL_ENTRY _ZTV8S21089C6[];
extern Class_Descriptor cd_S21089C3;
extern VTBL_ENTRY _ZTI8S21089C3[];
extern  VTBL_ENTRY _ZTV8S21089C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C3[];
extern Class_Descriptor cd_S21089C9;
extern VTBL_ENTRY _ZTI8S21089C9[];
extern  VTBL_ENTRY _ZTV8S21089C9[];
extern Class_Descriptor cd_S21089C14;
extern VTBL_ENTRY _ZTI9S21089C14[];
extern  VTBL_ENTRY _ZTV9S21089C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C14[];
extern Class_Descriptor cd_S21089C13;
extern VTBL_ENTRY _ZTI9S21089C13[];
extern  VTBL_ENTRY _ZTV9S21089C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21089C13[];
static Base_Class bases_S21089C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21089C4,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21089C5,    ABISELECT(224,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(248,128), //bcp->offset
    157, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(224,116), //bcp->offset
    127, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21089C2,    ABISELECT(216,112), //bcp->offset
    112, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(296,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
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(296,148), //bcp->offset
    220, //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
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(464,232), //bcp->offset
    296, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21089C4,    ABISELECT(320,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
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(320,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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C2,    ABISELECT(328,160), //bcp->offset
    254, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(336,164), //bcp->offset
    266, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(400,204), //bcp->offset
    269, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(320,156), //bcp->offset
    232, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(440,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
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(440,224), //bcp->offset
    280, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21089C8,    ABISELECT(272,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(528,272), //bcp->offset
    300, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21089C4,    ABISELECT(448,228), //bcp->offset
    292, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21089C7,    ABISELECT(272,136), //bcp->offset
    169, //bcp->virtual_function_table_offset
    37, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21089C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    48, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(24,12), //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
    49, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21089C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21089C2,    ABISELECT(56,24), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(64,28), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(128,68), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(48,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21089C4,    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
    57, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(168,88), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21089C8,    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
    59, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(176,92), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21089C12,    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
    61, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21089C9,    ABISELECT(560,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
    24, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(624,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(648,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
    26, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(648,336), //bcp->offset
    380, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(624,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(672,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
    29, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(672,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
    30, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21089C2,    ABISELECT(680,348), //bcp->offset
    414, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(688,352), //bcp->offset
    426, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(752,392), //bcp->offset
    429, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21089C11,    ABISELECT(672,344), //bcp->offset
    392, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(792,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(792,412), //bcp->offset
    440, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S21089C8,    ABISELECT(624,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(800,416), //bcp->offset
    452, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21089C7,    ABISELECT(624,324), //bcp->offset
    357, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21089C5,    ABISELECT(816,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21089C4,    ABISELECT(840,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S21089C6,    ABISELECT(840,432), //bcp->offset
    473, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21089C3,    ABISELECT(816,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S21089C9,    ABISELECT(864,440), //bcp->offset
    485, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S21089C14,    ABISELECT(816,420), //bcp->offset
    456, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21089C13,    ABISELECT(560,284), //bcp->offset
    315, //bcp->virtual_function_table_offset
    39, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21089C1[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C1D1Ev();
extern void _ZN8S21089C1D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN9S21089C123v35Ev();
extern void _ZN9S21089C123v36Ev();
extern void _ZN8S21089C12v1Ev();
extern void _ZN8S21089C12v2Ev();
extern void _ZN8S21089C12v3Ev();
extern void _ZN8S21089C12v4Ev();
extern void _ZN8S21089C12v5Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C1D1Ev,_ZThn20_N8S21089C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C1D0Ev,_ZThn20_N8S21089C1D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C1D1Ev,_ZThn24_N8S21089C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C1D0Ev,_ZThn24_N8S21089C1D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21089C1D1Ev,_ZTv0_n28_N8S21089C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S21089C1D1Ev,_ZThn112_N8S21089C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21089C1D0Ev,_ZTv0_n28_N8S21089C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S21089C1D0Ev,_ZThn112_N8S21089C1D0Ev)() __attribute__((weak));
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C1D1Ev,_ZTv0_n40_N8S21089C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21089C1D1Ev,_ZThn116_N8S21089C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C1D0Ev,_ZTv0_n40_N8S21089C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21089C1D0Ev,_ZThn116_N8S21089C1D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n112_N8S21089C1D1Ev,_ZTv0_n56_N8S21089C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21089C1D1Ev,_ZThn136_N8S21089C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S21089C1D0Ev,_ZTv0_n56_N8S21089C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21089C1D0Ev,_ZThn136_N8S21089C1D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZTvn48_n112_N8S21089C1D1Ev,_ZTvn20_n56_N8S21089C1D1Ev)();
extern void ABISELECT(_ZTvn48_n112_N8S21089C1D0Ev,_ZTvn20_n56_N8S21089C1D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTvn56_n112_N8S21089C1D1Ev,_ZTvn24_n56_N8S21089C1D1Ev)();
extern void ABISELECT(_ZTvn56_n112_N8S21089C1D0Ev,_ZTvn24_n56_N8S21089C1D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C93v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S21089C1D1Ev,_ZTv0_n36_N8S21089C1D1Ev)();
extern void ABISELECT(_ZThn560_N8S21089C1D1Ev,_ZThn284_N8S21089C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21089C1D0Ev,_ZTv0_n36_N8S21089C1D0Ev)();
extern void ABISELECT(_ZThn560_N8S21089C1D0Ev,_ZThn284_N8S21089C1D0Ev)() __attribute__((weak));
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTvn64_n72_N8S21089C1D1Ev,_ZTvn40_n36_N8S21089C1D1Ev)();
extern void ABISELECT(_ZTvn64_n72_N8S21089C1D0Ev,_ZTvn40_n36_N8S21089C1D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZTvn112_n72_N8S21089C1D1Ev,_ZTvn60_n36_N8S21089C1D1Ev)();
extern void ABISELECT(_ZTvn112_n72_N8S21089C1D0Ev,_ZTvn60_n36_N8S21089C1D0Ev)();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTvn120_n72_N8S21089C1D1Ev,_ZTvn64_n36_N8S21089C1D1Ev)();
extern void ABISELECT(_ZTvn120_n72_N8S21089C1D0Ev,_ZTvn64_n36_N8S21089C1D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
extern void _ZN8S21089C93v22Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTvn256_n72_N8S21089C1D1Ev,_ZTvn136_n36_N8S21089C1D1Ev)();
extern void ABISELECT(_ZTvn256_n72_N8S21089C1D0Ev,_ZTvn136_n36_N8S21089C1D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN9S21089C143v37Ev();
extern void _ZN9S21089C143v38Ev();
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY vtc_S21089C1[] = {
  ABISELECT(560,284),
  ABISELECT(528,272),
  ABISELECT(272,136),
  ABISELECT(216,112),
  ABISELECT(224,116),
  ABISELECT(464,232),
  ABISELECT(216,112),
  ABISELECT(216,112),
  ABISELECT(216,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN9S21089C123v35Ev,
  (VTBL_ENTRY)&_ZN9S21089C123v36Ev,
  (VTBL_ENTRY)&_ZN8S21089C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21089C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21089C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21089C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21089C12v5Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(168,92),
  ABISELECT(176,96),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C1D1Ev,_ZThn20_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C1D0Ev,_ZThn20_N8S21089C1D0Ev),
  ABISELECT(160,88),
  ABISELECT(168,92),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C1D1Ev,_ZThn24_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C1D0Ev,_ZThn24_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  0,
  0,
  ABISELECT(-216,-112),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C1D1Ev,_ZTv0_n28_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C1D0Ev,_ZTv0_n28_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C1D1Ev,_ZTv0_n40_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C1D0Ev,_ZTv0_n40_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  0,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-272,-136),
  0,
  0,
  0,
  0,
  ABISELECT(256,136),
  ABISELECT(-56,-24),
  ABISELECT(-48,-20),
  ABISELECT(192,96),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21089C1D1Ev,_ZTv0_n56_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21089C1D0Ev,_ZTv0_n56_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
  ABISELECT(-296,-148),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  ABISELECT(-320,-156),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n112_N8S21089C1D1Ev,_ZTvn20_n56_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n112_N8S21089C1D0Ev,_ZTvn20_n56_N8S21089C1D0Ev),
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-328,-160),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n112_N8S21089C1D1Ev,_ZTvn24_n56_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n112_N8S21089C1D0Ev,_ZTvn24_n56_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-336,-164),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-400,-204),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-440,-224),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-448,-228),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  0,
  ABISELECT(-464,-232),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-528,-272),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(256,136),
  ABISELECT(256,136),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(120,64),
  ABISELECT(120,64),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(64,40),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-560,-284),
  0,
  ABISELECT(-32,-12),
  ABISELECT(-344,-172),
  ABISELECT(-96,-52),
  ABISELECT(-336,-168),
  ABISELECT(-344,-172),
  ABISELECT(-560,-284),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21089C1D1Ev,_ZTv0_n36_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21089C1D0Ev,_ZTv0_n36_N8S21089C1D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-408,-212),
  ABISELECT(-400,-208),
  ABISELECT(-160,-92),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-624,-324),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n72_N8S21089C1D1Ev,_ZTvn40_n36_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n72_N8S21089C1D0Ev,_ZTvn40_n36_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
  ABISELECT(-648,-336),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-456,-232),
  ABISELECT(-448,-228),
  ABISELECT(-672,-344),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n72_N8S21089C1D1Ev,_ZTvn60_n36_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n72_N8S21089C1D0Ev,_ZTvn60_n36_N8S21089C1D0Ev),
  ABISELECT(-464,-236),
  ABISELECT(-456,-232),
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  ABISELECT(-680,-348),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n72_N8S21089C1D1Ev,_ZTvn64_n36_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n72_N8S21089C1D0Ev,_ZTvn64_n36_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
  ABISELECT(-688,-352),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-752,-392),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  ABISELECT(-792,-412),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-800,-416),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-816,-420),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n72_N8S21089C1D1Ev,_ZTvn136_n36_N8S21089C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n72_N8S21089C1D0Ev,_ZTvn136_n36_N8S21089C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v38Ev,
  ABISELECT(-840,-432),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  ABISELECT(-864,-440),
  (VTBL_ENTRY)&(_ZTI8S21089C1[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S21089C1[];
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN9S21089C12D1Ev();
extern void _ZN9S21089C12D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN9S21089C123v35Ev();
extern void _ZN9S21089C123v36Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C12__8S21089C1[] = {
  ABISELECT(224,116),
  ABISELECT(464,232),
  ABISELECT(216,112),
  ABISELECT(216,112),
  ABISELECT(216,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21089C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN9S21089C123v35Ev,
  (VTBL_ENTRY)&_ZN9S21089C123v36Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(224,116),
  ABISELECT(464,232),
  ABISELECT(216,112),
  ABISELECT(216,112),
  ABISELECT(216,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C38S21089C89S21089C12__A2__8S21089C1[] = {
  ABISELECT(216,112),
  ABISELECT(216,112),
  ABISELECT(216,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C38S21089C89S21089C12__A4__8S21089C1[] = {
  ABISELECT(216,112),
  ABISELECT(216,112),
  ABISELECT(216,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C38S21089C89S21089C12__A4__8S21089C1[] = {
  0,
  0,
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C38S21089C89S21089C12__A2__8S21089C1[] = {
  0,
  0,
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(168,92),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[] = {
  ABISELECT(160,88),
  ABISELECT(168,92),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21089C2D1Ev,_ZThn92_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21089C2D0Ev,_ZThn92_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-168,-92),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[] = {
  0,
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[] = {
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C89S21089C12__A5__8S21089C1[] = {
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C118S21089C89S21089C12__A5__8S21089C1[] = {
  0,
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C118S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(160,88),
  ABISELECT(168,92),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S21089C11D1Ev,_ZThn96_N9S21089C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S21089C11D0Ev,_ZThn96_N9S21089C11D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C118S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-176,-96),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__A1__9S21089C118S21089C89S21089C12__A1__8S21089C1[] = {
  0,
  0,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C118S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C89S21089C12__A1__8S21089C1[] = {
  0,
  0,
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C89S21089C12__A1__8S21089C1[] = {
  0,
  ABISELECT(-464,-232),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(168,92),
  ABISELECT(176,96),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(160,88),
  ABISELECT(168,92),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21089C8D1Ev,_ZThn116_N8S21089C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21089C8D0Ev,_ZThn116_N8S21089C8D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__8S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C89S21089C12__A1__8S21089C1[] = {
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C12__A6__8S21089C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C12__A6__8S21089C1[] = {
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__9S21089C12__8S21089C1[] = {
  0,
  0,
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__9S21089C12__8S21089C1[] = {
  0,
  ABISELECT(-464,-232),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N9S21089C12D1Ev,_ZThn20_N9S21089C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21089C12D0Ev,_ZThn20_N9S21089C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C8__9S21089C12__8S21089C1[] = {
  ABISELECT(168,92),
  ABISELECT(176,96),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21089C12D1Ev,_ZThn20_N9S21089C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21089C12D0Ev,_ZThn20_N9S21089C12D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N9S21089C12D1Ev,_ZThn24_N9S21089C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21089C12D0Ev,_ZThn24_N9S21089C12D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C8__9S21089C12__8S21089C1[] = {
  ABISELECT(160,88),
  ABISELECT(168,92),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21089C12D1Ev,_ZThn24_N9S21089C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21089C12D0Ev,_ZThn24_N9S21089C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C12D1Ev,_ZTv0_n40_N9S21089C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S21089C12D1Ev,_ZThn116_N9S21089C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21089C12D0Ev,_ZTv0_n40_N9S21089C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S21089C12D0Ev,_ZThn116_N9S21089C12D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__9S21089C12__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-224,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C12D1Ev,_ZTv0_n40_N9S21089C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C12D0Ev,_ZTv0_n40_N9S21089C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__9S21089C12__8S21089C1[] = {
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C8__A2__9S21089C12__8S21089C1[] = {
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__9S21089C12__8S21089C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI9S21089C12[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__8S21089C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21089C2D1Ev,_ZThn4_N8S21089C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21089C2D0Ev,_ZThn4_N8S21089C2D0Ev)() __attribute__((weak));
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C2__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C2__8S21089C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C3__8S21089C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C3__8S21089C1[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C3__8S21089C1[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C7D1Ev();
extern void _ZN8S21089C7D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C7__8S21089C1[] = {
  ABISELECT(256,136),
  ABISELECT(-56,-24),
  ABISELECT(-48,-20),
  ABISELECT(192,96),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,96),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C38S21089C88S21089C7__A1__8S21089C1[] = {
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C38S21089C88S21089C7__A1__8S21089C1[] = {
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C38S21089C88S21089C7__A1__8S21089C1[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C38S21089C88S21089C7__A1__8S21089C1[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(104,44),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(104,44),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[] = {
  0,
  0,
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[] = {
  ABISELECT(80,32),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C88S21089C7__A2__8S21089C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C118S21089C88S21089C7__A2__8S21089C1[] = {
  0,
  0,
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C118S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C118S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(96,40),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(96,40),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__A1__9S21089C118S21089C88S21089C7__8S21089C1[] = {
  0,
  0,
  ABISELECT(104,44),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(72,28),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C118S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C88S21089C7__8S21089C1[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C88S21089C7__8S21089C1[] = {
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__8S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C88S21089C7__8S21089C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C7__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__A1__8S21089C7__8S21089C1[] = {
  0,
  0,
  ABISELECT(56,24),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C7__8S21089C1[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C7__8S21089C1[] = {
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C8__8S21089C7__8S21089C1[] = {
  ABISELECT(-104,-44),
  ABISELECT(-96,-40),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C8__8S21089C7__8S21089C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-104,-44),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C7__8S21089C1[] = {
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-184,-92),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__8S21089C7__8S21089C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__8S21089C1[] = {
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C5__A3__8S21089C1[] = {
  0,
  0,
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C93v22Ev();
extern void _ZN9S21089C13D1Ev();
extern void _ZN9S21089C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C13__8S21089C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-344,-172),
  ABISELECT(-96,-52),
  ABISELECT(-336,-168),
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
  (VTBL_ENTRY)&_ZN9S21089C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C13D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C7D1Ev();
extern void _ZN8S21089C7D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C79S21089C13__A1__8S21089C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-408,-212),
  ABISELECT(-400,-208),
  ABISELECT(-160,-92),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C8D1Ev();
extern void _ZN8S21089C8D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-400,-208),
  ABISELECT(-160,-92),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C38S21089C88S21089C79S21089C13__A3__8S21089C1[] = {
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C38S21089C88S21089C79S21089C13__A7__8S21089C1[] = {
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C38S21089C88S21089C79S21089C13__A7__8S21089C1[] = {
  0,
  0,
  ABISELECT(408,212),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C38S21089C88S21089C79S21089C13__A3__8S21089C1[] = {
  0,
  0,
  ABISELECT(408,212),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void _ZN9S21089C11D1Ev();
extern void _ZN9S21089C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-456,-232),
  ABISELECT(-448,-228),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C11D0Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C2D1Ev();
extern void _ZN8S21089C2D0Ev();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[] = {
  ABISELECT(-464,-236),
  ABISELECT(-456,-232),
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(456,232),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(456,232),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[] = {
  0,
  0,
  ABISELECT(464,236),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[] = {
  ABISELECT(432,220),
  (VTBL_ENTRY)&(_ZTI8S21089C2[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C88S21089C79S21089C13__A8__8S21089C1[] = {
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C59S21089C118S21089C88S21089C79S21089C13__A8__8S21089C1[] = {
  0,
  0,
  ABISELECT(536,280),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-464,-236),
  ABISELECT(-456,-232),
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D1Ev,_ZThn4_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S21089C11D0Ev,_ZThn4_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(448,228),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(448,228),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__A1__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  0,
  0,
  ABISELECT(456,232),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(424,216),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A1__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21089C11[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  0,
  0,
  ABISELECT(408,212),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C11__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-456,-232),
  ABISELECT(-448,-228),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D1Ev,_ZThn20_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C8D0Ev,_ZThn20_N8S21089C8D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C11__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-464,-236),
  ABISELECT(-456,-232),
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D1Ev,_ZThn24_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C8D0Ev,_ZThn24_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__A1__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(400,208),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(400,208),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__A2__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C11__A2__8S21089C88S21089C79S21089C13__A2__8S21089C1[] = {
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C8[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__8S21089C79S21089C13__A1__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(400,208),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(400,208),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D1Ev,_ZTv0_n40_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21089C7D0Ev,_ZTv0_n40_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__A1__8S21089C79S21089C13__A1__8S21089C1[] = {
  0,
  0,
  ABISELECT(408,212),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(408,212),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D1Ev,_ZTv0_n28_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21089C7D0Ev,_ZTv0_n28_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__8S21089C79S21089C13__A1__8S21089C1[] = {
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__8S21089C79S21089C13__A1__8S21089C1[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C8__8S21089C79S21089C13__A1__8S21089C1[] = {
  ABISELECT(-456,-232),
  ABISELECT(-448,-228),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D1Ev,_ZThn20_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21089C7D0Ev,_ZThn20_N8S21089C7D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C8__8S21089C79S21089C13__A1__8S21089C1[] = {
  ABISELECT(-464,-236),
  ABISELECT(-456,-232),
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D1Ev,_ZThn24_N8S21089C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21089C7D0Ev,_ZThn24_N8S21089C7D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C79S21089C13__A1__8S21089C1[] = {
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__8S21089C79S21089C13__A1__8S21089C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S21089C7[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN9S21089C14D1Ev();
extern void _ZN9S21089C14D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN9S21089C143v37Ev();
extern void _ZN9S21089C143v38Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C149S21089C13__8S21089C1[] = {
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  0,
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN9S21089C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21089C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v38Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void _ZN8S21089C3D1Ev();
extern void _ZN8S21089C3D0Ev();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C39S21089C149S21089C13__A4__8S21089C1[] = {
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21089C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C58S21089C39S21089C149S21089C13__A9__8S21089C1[] = {
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C58S21089C39S21089C149S21089C13__A9__8S21089C1[] = {
  0,
  0,
  ABISELECT(600,308),
  (VTBL_ENTRY)&(_ZTI8S21089C5[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__8S21089C39S21089C149S21089C13__A4__8S21089C1[] = {
  0,
  0,
  ABISELECT(600,308),
  (VTBL_ENTRY)&(_ZTI8S21089C3[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C4__9S21089C149S21089C13__8S21089C1[] = {
  0,
  0,
  ABISELECT(600,308),
  (VTBL_ENTRY)&(_ZTI9S21089C14[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S21089C13D1Ev,_ZTv0_n28_N9S21089C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21089C13D0Ev,_ZTv0_n28_N9S21089C13D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C2__A1__9S21089C13__8S21089C1[] = {
  0,
  0,
  ABISELECT(344,172),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21089C13D1Ev,_ZTv0_n28_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21089C13D0Ev,_ZTv0_n28_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZThn64_N9S21089C13D1Ev,_ZThn40_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21089C13D0Ev,_ZThn40_N9S21089C13D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN8S21089C83v31Ev();
extern void _ZN8S21089C73v32Ev();
extern void _ZN8S21089C73v33Ev();
extern void _ZN8S21089C73v34Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C7__9S21089C13__8S21089C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-408,-212),
  ABISELECT(-400,-208),
  ABISELECT(-160,-92),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-408,-212),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21089C13D1Ev,_ZThn40_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21089C13D0Ev,_ZThn40_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN8S21089C83v31Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v32Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v33Ev,
  (VTBL_ENTRY)&_ZN8S21089C73v34Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZTv0_n80_N9S21089C13D1Ev,_ZTv0_n40_N9S21089C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S21089C13D0Ev,_ZTv0_n40_N9S21089C13D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C3__9S21089C13__8S21089C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(336,168),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(336,168),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C13D1Ev,_ZTv0_n40_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21089C13D0Ev,_ZTv0_n40_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C68S21089C3__9S21089C13__8S21089C1[] = {
  ABISELECT(312,156),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
};
extern void _ZN8S21089C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C9__A1__9S21089C13__8S21089C1[] = {
  0,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C93v22Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C63v12Ev();
extern void _ZN8S21089C63v13Ev();
extern void _ZN8S21089C63v14Ev();
extern void _ZN8S21089C63v15Ev();
extern void _ZN8S21089C63v16Ev();
extern void _ZN8S21089C63v17Ev();
extern void _ZN8S21089C63v18Ev();
extern void _ZN8S21089C63v19Ev();
extern void _ZN9S21089C113v25Ev();
extern void _ZN9S21089C113v26Ev();
extern void _ZN9S21089C113v27Ev();
extern void _ZN9S21089C113v28Ev();
extern void _ZN9S21089C113v29Ev();
extern void _ZN9S21089C113v30Ev();
extern void ABISELECT(_ZThn112_N9S21089C13D1Ev,_ZThn60_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S21089C13D0Ev,_ZThn60_N9S21089C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21089C118S21089C88S21089C7__9S21089C13__8S21089C1[] = {
  ABISELECT(-456,-232),
  ABISELECT(-448,-228),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v17Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v18Ev,
  (VTBL_ENTRY)&_ZN8S21089C63v19Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v25Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v26Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v27Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v28Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v29Ev,
  (VTBL_ENTRY)&_ZN9S21089C113v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21089C13D1Ev,_ZThn60_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S21089C13D0Ev,_ZThn60_N9S21089C13D0Ev),
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void ABISELECT(_ZThn120_N9S21089C13D1Ev,_ZThn64_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21089C13D0Ev,_ZThn64_N9S21089C13D0Ev)();
extern void _ZN8S21089C23v23Ev();
extern void _ZN8S21089C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C29S21089C118S21089C88S21089C7__9S21089C13__8S21089C1[] = {
  ABISELECT(-464,-236),
  ABISELECT(-456,-232),
  ABISELECT(-464,-236),
  ABISELECT(-464,-236),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21089C13D1Ev,_ZThn64_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N9S21089C13D0Ev,_ZThn64_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21089C23v24Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C59S21089C118S21089C88S21089C7__A2__9S21089C13__8S21089C1[] = {
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-536,-280),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S21089C5__A3__9S21089C13__8S21089C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(-312,-160),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
};
extern void _ZN8S21089C42v6Ev();
extern void _ZN8S21089C42v7Ev();
extern void _ZN8S21089C52v8Ev();
extern void _ZN8S21089C52v9Ev();
extern void _ZN8S21089C53v10Ev();
extern void _ZN8S21089C53v11Ev();
extern void ABISELECT(_ZThn256_N9S21089C13D1Ev,_ZThn136_N9S21089C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S21089C13D0Ev,_ZThn136_N9S21089C13D0Ev)();
extern void _ZN8S21089C33v20Ev();
extern void _ZN8S21089C33v21Ev();
extern void _ZN9S21089C143v37Ev();
extern void _ZN9S21089C143v38Ev();
static  VTBL_ENTRY _tg__ZTV9S21089C14__9S21089C13__8S21089C1[] = {
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-600,-308),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI9S21089C13[0]),
  (VTBL_ENTRY)&_ZN8S21089C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21089C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v8Ev,
  (VTBL_ENTRY)&_ZN8S21089C52v9Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v10Ev,
  (VTBL_ENTRY)&_ZN8S21089C53v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21089C13D1Ev,_ZThn136_N9S21089C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S21089C13D0Ev,_ZThn136_N9S21089C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21089C33v20Ev,
  (VTBL_ENTRY)&_ZN8S21089C33v21Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v37Ev,
  (VTBL_ENTRY)&_ZN9S21089C143v38Ev,
};
static  VTT_ENTRY vtt_S21089C1[] = {
  {&(_ZTV8S21089C1[11]),  11,488},
  {&(_tg__ZTV9S21089C12__8S21089C1[7]),  7,20},
  {&(_tg__ZTV8S21089C89S21089C12__A1__8S21089C1[7]),  7,18},
  {&(_tg__ZTV8S21089C38S21089C89S21089C12__A2__8S21089C1[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C38S21089C89S21089C12__A4__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C38S21089C89S21089C12__A4__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C38S21089C89S21089C12__A2__8S21089C1[4]),  4,6},
  {&(_tg__ZTV9S21089C118S21089C89S21089C12__A1__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C4__8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C89S21089C12__A2__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C89S21089C12__A5__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C118S21089C89S21089C12__A5__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C118S21089C89S21089C12__A1__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C89S21089C12__A1__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C4__A1__9S21089C118S21089C89S21089C12__A1__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C89S21089C12__A1__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C118S21089C89S21089C12__A1__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C89S21089C12__A1__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C9__8S21089C89S21089C12__A1__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C11__8S21089C89S21089C12__A1__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C89S21089C12__A1__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__8S21089C89S21089C12__A1__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__8S21089C89S21089C12__A1__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C89S21089C12__A1__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C59S21089C12__A6__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C12__A6__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__9S21089C12__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C9__9S21089C12__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C118S21089C8__9S21089C12__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C8__9S21089C12__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__9S21089C12__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__9S21089C12__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C8__A2__9S21089C12__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C5__A3__9S21089C12__8S21089C1[5]),  5,11},
  {&(_ZTV8S21089C1[121]),  121,488},
  {&(_ZTV8S21089C1[147]),  147,488},
  {&(_ZTV8S21089C1[121]),  121,488},
  {&(_ZTV8S21089C1[159]),  159,488},
  {&(_ZTV8S21089C1[206]),  206,488},
  {&(_ZTV8S21089C1[222]),  222,488},
  {&(_ZTV8S21089C1[299]),  299,488},
  {&(_ZTV8S21089C1[236]),  236,488},
  {&(_ZTV8S21089C1[260]),  260,488},
  {&(_ZTV8S21089C1[268]),  268,488},
  {&(_ZTV8S21089C1[274]),  274,488},
  {&(_ZTV8S21089C1[282]),  282,488},
  {&(_ZTV8S21089C1[309]),  309,488},
  {&(_ZTV8S21089C1[294]),  294,488},
  {&(_ZTV8S21089C1[45]),  45,488},
  {&(_ZTV8S21089C1[69]),  69,488},
  {&(_ZTV8S21089C1[83]),  83,488},
  {&(_ZTV8S21089C1[106]),  106,488},
  {&(_ZTV8S21089C1[354]),  354,488},
  {&(_ZTV8S21089C1[366]),  366,488},
  {&(_ZTV8S21089C1[382]),  382,488},
  {&(_ZTV8S21089C1[396]),  396,488},
  {&(_ZTV8S21089C1[420]),  420,488},
  {&(_ZTV8S21089C1[428]),  428,488},
  {&(_ZTV8S21089C1[434]),  434,488},
  {&(_ZTV8S21089C1[442]),  442,488},
  {&(_ZTV8S21089C1[454]),  454,488},
  {&(_ZTV8S21089C1[461]),  461,488},
  {&(_ZTV8S21089C1[475]),  475,488},
  {&(_ZTV8S21089C1[487]),  487,488},
  {&(_tg__ZTV8S21089C2__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C2__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C2__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C2__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C3__8S21089C1[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C3__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C3__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C3__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C7__8S21089C1[9]),  9,23},
  {&(_tg__ZTV8S21089C88S21089C7__8S21089C1[7]),  7,18},
  {&(_tg__ZTV8S21089C38S21089C88S21089C7__A1__8S21089C1[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C38S21089C88S21089C7__A1__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C38S21089C88S21089C7__A1__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C38S21089C88S21089C7__A1__8S21089C1[4]),  4,6},
  {&(_tg__ZTV9S21089C118S21089C88S21089C7__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C4__8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C88S21089C7__A1__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C88S21089C7__A2__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C118S21089C88S21089C7__A2__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C118S21089C88S21089C7__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C88S21089C7__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C4__A1__9S21089C118S21089C88S21089C7__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C88S21089C7__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C118S21089C88S21089C7__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C88S21089C7__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C9__8S21089C88S21089C7__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C11__8S21089C88S21089C7__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C88S21089C7__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__8S21089C88S21089C7__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__8S21089C88S21089C7__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C88S21089C7__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C3__8S21089C7__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C2__A1__8S21089C7__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C7__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C9__8S21089C7__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C118S21089C8__8S21089C7__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C8__8S21089C7__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C7__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C2__A1__8S21089C7__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C5__A3__8S21089C7__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C5__A3__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C5__A3__8S21089C1[4]),  4,6},
  {&(_tg__ZTV9S21089C13__8S21089C1[7]),  7,10},
  {&(_tg__ZTV8S21089C79S21089C13__A1__8S21089C1[9]),  9,23},
  {&(_tg__ZTV8S21089C88S21089C79S21089C13__A2__8S21089C1[7]),  7,18},
  {&(_tg__ZTV8S21089C38S21089C88S21089C79S21089C13__A3__8S21089C1[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C38S21089C88S21089C79S21089C13__A7__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C38S21089C88S21089C79S21089C13__A7__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C38S21089C88S21089C79S21089C13__A3__8S21089C1[4]),  4,6},
  {&(_tg__ZTV9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C4__8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C29S21089C118S21089C88S21089C79S21089C13__A3__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C88S21089C79S21089C13__A8__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C59S21089C118S21089C88S21089C79S21089C13__A8__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C2__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C4__A1__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C68S21089C3__A1__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C5__A1__9S21089C118S21089C88S21089C79S21089C13__A2__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C88S21089C79S21089C13__A2__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C9__8S21089C88S21089C79S21089C13__A2__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C11__8S21089C88S21089C79S21089C13__A2__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C11__8S21089C88S21089C79S21089C13__A2__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C3__A1__8S21089C88S21089C79S21089C13__A2__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__A2__8S21089C88S21089C79S21089C13__A2__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C59S21089C11__A2__8S21089C88S21089C79S21089C13__A2__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C3__8S21089C79S21089C13__A1__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C2__A1__8S21089C79S21089C13__A1__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C68S21089C3__8S21089C79S21089C13__A1__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C9__8S21089C79S21089C13__A1__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C118S21089C8__8S21089C79S21089C13__A1__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C8__8S21089C79S21089C13__A1__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C8__A2__8S21089C79S21089C13__A1__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C2__A1__8S21089C79S21089C13__A1__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C5__A3__8S21089C79S21089C13__A1__8S21089C1[9]),  9,15},
  {&(_tg__ZTV9S21089C149S21089C13__8S21089C1[5]),  5,17},
  {&(_tg__ZTV8S21089C39S21089C149S21089C13__A4__8S21089C1[5]),  5,15},
  {&(_tg__ZTV8S21089C58S21089C39S21089C149S21089C13__A9__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C4__8S21089C58S21089C39S21089C149S21089C13__A9__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__8S21089C39S21089C149S21089C13__A4__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C4__9S21089C149S21089C13__8S21089C1[4]),  4,6},
  {&(_tg__ZTV8S21089C2__A1__9S21089C13__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C7__9S21089C13__8S21089C1[9]),  9,23},
  {&(_tg__ZTV8S21089C3__9S21089C13__8S21089C1[20]),  20,30},
  {&(_tg__ZTV8S21089C68S21089C3__9S21089C13__8S21089C1[2]),  2,12},
  {&(_tg__ZTV8S21089C9__A1__9S21089C13__8S21089C1[3]),  3,4},
  {&(_tg__ZTV9S21089C118S21089C88S21089C7__9S21089C13__8S21089C1[4]),  4,22},
  {&(_tg__ZTV8S21089C29S21089C118S21089C88S21089C7__9S21089C13__8S21089C1[6]),  6,12},
  {&(_tg__ZTV8S21089C59S21089C118S21089C88S21089C7__A2__9S21089C13__8S21089C1[5]),  5,11},
  {&(_tg__ZTV8S21089C2__A1__9S21089C13__8S21089C1[9]),  9,15},
  {&(_tg__ZTV8S21089C5__A3__9S21089C13__8S21089C1[9]),  9,15},
  {&(_tg__ZTV9S21089C14__9S21089C13__8S21089C1[5]),  5,17},
};
extern VTBL_ENTRY _ZTI8S21089C1[];
extern  VTBL_ENTRY _ZTV8S21089C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21089C1[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C12D0Ev,_ZTv0_n40_N9S21089C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21089C12D0Ev,_ZThn116_N9S21089C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C12D1Ev,_ZTv0_n40_N9S21089C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21089C12D1Ev,_ZThn116_N9S21089C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D0Ev,_ZTv0_n40_N8S21089C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21089C8D0Ev,_ZThn116_N8S21089C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C8D1Ev,_ZTv0_n40_N8S21089C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21089C8D1Ev,_ZThn116_N8S21089C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D0Ev,_ZTv0_n40_N9S21089C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21089C11D0Ev,_ZThn96_N9S21089C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21089C11D1Ev,_ZTv0_n40_N9S21089C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21089C11D1Ev,_ZThn96_N9S21089C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D0Ev,_ZTv0_n40_N8S21089C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21089C2D0Ev,_ZThn4_N8S21089C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21089C2D0Ev,_ZThn92_N8S21089C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C2D1Ev,_ZTv0_n40_N8S21089C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21089C2D1Ev,_ZThn4_N8S21089C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21089C2D1Ev,_ZThn92_N8S21089C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21089C1D0Ev,_ZTv0_n36_N8S21089C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21089C1D0Ev,_ZThn284_N8S21089C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21089C1D1Ev,_ZTv0_n36_N8S21089C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21089C1D1Ev,_ZThn284_N8S21089C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21089C1D0Ev,_ZTv0_n56_N8S21089C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21089C1D0Ev,_ZThn136_N8S21089C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21089C1D1Ev,_ZTv0_n56_N8S21089C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21089C1D1Ev,_ZThn136_N8S21089C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C1D0Ev,_ZTv0_n40_N8S21089C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21089C1D0Ev,_ZThn116_N8S21089C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21089C1D1Ev,_ZTv0_n40_N8S21089C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21089C1D1Ev,_ZThn116_N8S21089C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21089C1D0Ev,_ZTv0_n28_N8S21089C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21089C1D0Ev,_ZThn112_N8S21089C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21089C1D1Ev,_ZTv0_n28_N8S21089C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21089C1D1Ev,_ZThn112_N8S21089C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21089C1 = {  "S21089C1", // class name
  bases_S21089C1, 61,
  &(vtc_S21089C1[0]), // expected_vtbl_contents
  &(vtt_S21089C1[0]), // expected_vtt_contents
  ABISELECT(944,488), // object size
  NSPAIRA(_ZTI8S21089C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21089C1),488, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21089C1),162, //virtual table table var
  61, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5846C4  {
  __tsi64 s5846c4f0[9];
  void *s5846c4f1;
  long double s5846c4f2;
  void *s5846c4f3;
  char s5846c4f4;
  short s5846c4f5[6];
  void *s5846c4f6;
  char s5846c4f7:4;
  void *s5846c4f8;
  virtual void  v1(); // _ZN7S5846C42v1Ev
  virtual void  v2(); // _ZN7S5846C42v2Ev
  ~S5846C4(); // tgen
  S5846C4(); // tgen
};
//SIG(-1 S5846C4) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S5846C4 ::v1(){vfunc_called(this, "_ZN7S5846C42v1Ev");}
void  S5846C4 ::v2(){vfunc_called(this, "_ZN7S5846C42v2Ev");}
S5846C4 ::~S5846C4(){ note_dtor("S5846C4", this);} // tgen
S5846C4 ::S5846C4(){ note_ctor("S5846C4", this);} // tgen

static void Test_S5846C4()
{
  extern Class_Descriptor cd_S5846C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S5846C4, buf);
    S5846C4 *dp, &lv = *(dp=new (buf) S5846C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S5846C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C4)");
    check_field_offset(lv, s5846c4f0, ABISELECT(8,4), "S5846C4.s5846c4f0");
    check_field_offset(lv, s5846c4f1, ABISELECT(80,76), "S5846C4.s5846c4f1");
    check_field_offset(lv, s5846c4f2, ABISELECT(96,80), "S5846C4.s5846c4f2");
    check_field_offset(lv, s5846c4f3, ABISELECT(112,92), "S5846C4.s5846c4f3");
    check_field_offset(lv, s5846c4f4, ABISELECT(120,96), "S5846C4.s5846c4f4");
    check_field_offset(lv, s5846c4f5, ABISELECT(122,98), "S5846C4.s5846c4f5");
    check_field_offset(lv, s5846c4f6, ABISELECT(136,112), "S5846C4.s5846c4f6");
    set_bf_and_test(lv, s5846c4f7, ABISELECT(144,116), 0, 4, 1, "S5846C4");
    set_bf_and_test(lv, s5846c4f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S5846C4");
    check_field_offset(lv, s5846c4f8, ABISELECT(152,120), "S5846C4.s5846c4f8");
    test_class_info(&lv, &cd_S5846C4);
    dp->~S5846C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C4(Test_S5846C4, "S5846C4", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN7S5846C4C1Ev();
extern void _ZN7S5846C4D1Ev();
Name_Map name_map_S5846C4[] = {
  NSPAIR(_ZN7S5846C4C1Ev),
  NSPAIR(_ZN7S5846C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5846C4[];
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY vtc_S5846C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C4[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
Class_Descriptor cd_S5846C4 = {  "S5846C4", // class name
  0,0,//no base classes
  &(vtc_S5846C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI7S5846C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5846C4),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  S5846C7  : virtual S1538C9_nt , S5846C4 {
  int s5846c7f0;
  short s5846c7f1[2];
  __tsi64 s5846c7f2;
  ~S5846C7(); // tgen
  S5846C7(); // tgen
};
//SIG(-1 S5846C7) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S5846C7()
{
  extern Class_Descriptor cd_S5846C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S5846C7, buf);
    S5846C7 *dp, &lv = *(dp=new (buf) S5846C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S5846C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S5846C7");
    check_base_class_offset(lv, (S5846C4*), 0, "S5846C7");
    check_field_offset(lv, s5846c7f0, ABISELECT(160,124), "S5846C7.s5846c7f0");
    check_field_offset(lv, s5846c7f1, ABISELECT(164,128), "S5846C7.s5846c7f1");
    check_field_offset(lv, s5846c7f2, ABISELECT(168,132), "S5846C7.s5846c7f2");
    test_class_info(&lv, &cd_S5846C7);
    dp->~S5846C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C7(Test_S5846C7, "S5846C7", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S5846C7C1Ev();
extern void _ZN7S5846C7D1Ev();
Name_Map name_map_S5846C7[] = {
  NSPAIR(_ZN7S5846C7C1Ev),
  NSPAIR(_ZN7S5846C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
static Base_Class bases_S5846C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S5846C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5846C7[];
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY vtc_S5846C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern VTBL_ENTRY _ZTV7S5846C7[];
static  VTT_ENTRY vtt_S5846C7[] = {
  {&(_ZTV7S5846C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
Class_Descriptor cd_S5846C7 = {  "S5846C7", // class name
  bases_S5846C7, 2,
  &(vtc_S5846C7[0]), // expected_vtbl_contents
  &(vtt_S5846C7[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S5846C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5846C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5846C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5846C8  : virtual S1538C9_nt , virtual S5846C7 , virtual S5846C4 {
  __tsi64 s5846c8f0[8];
  void *s5846c8f1[7];
  short s5846c8f2;
  virtual void  v3(); // _ZN7S5846C82v3Ev
  ~S5846C8(); // tgen
  S5846C8(); // tgen
};
//SIG(-1 S5846C8) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S5846C8()
{
  extern Class_Descriptor cd_S5846C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S5846C8, buf);
    S5846C8 *dp, &lv = *(dp=new (buf) S5846C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S5846C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C8)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S5846C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(132,100), "S5846C8");
    check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(144,104), "S5846C8");
    check_base_class_offset(lv, (S5846C7*), ABISELECT(144,104), "S5846C8");
    /*is_ambiguous_... S5846C8::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*), ABISELECT(320,244), "S5846C8");
    check_field_offset(lv, s5846c8f0, ABISELECT(8,4), "S5846C8.s5846c8f0");
    check_field_offset(lv, s5846c8f1, ABISELECT(72,68), "S5846C8.s5846c8f1");
    check_field_offset(lv, s5846c8f2, ABISELECT(128,96), "S5846C8.s5846c8f2");
    test_class_info(&lv, &cd_S5846C8);
    dp->~S5846C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C8(Test_S5846C8, "S5846C8", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN7S5846C8C1Ev();
extern void _ZN7S5846C8D1Ev();
Name_Map name_map_S5846C8[] = {
  NSPAIR(_ZN7S5846C8C1Ev),
  NSPAIR(_ZN7S5846C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
static Base_Class bases_S5846C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S5846C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5846C4,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S5846C8[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY vtc_S5846C8[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern VTBL_ENTRY _ZTV7S5846C8[];
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
static  VTT_ENTRY vtt_S5846C8[] = {
  {&(_ZTV7S5846C8[5]),  5,19},
  {&(_ZTV7S5846C8[11]),  11,19},
  {&(_ZTV7S5846C8[17]),  17,19},
  {&(_tg__ZTV7S5846C7__7S5846C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
Class_Descriptor cd_S5846C8 = {  "S5846C8", // class name
  bases_S5846C8, 4,
  &(vtc_S5846C8[0]), // expected_vtbl_contents
  &(vtt_S5846C8[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI7S5846C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5846C8),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5846C8),4, //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  S5846C6  : S1538C9_nt , virtual S5846C4 , virtual S5846C7 , S5846C8 {
  ::S7223C13 s5846c6f0;
  __tsi64 s5846c6f1:10;
  int s5846c6f2[9];
  int s5846c6f3;
  virtual void  v4(); // _ZN7S5846C62v4Ev
  virtual void  v5(); // _ZN7S5846C62v5Ev
  ~S5846C6(); // tgen
  S5846C6(); // tgen
};
//SIG(-1 S5846C6) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi}


void  S5846C6 ::v4(){vfunc_called(this, "_ZN7S5846C62v4Ev");}
void  S5846C6 ::v5(){vfunc_called(this, "_ZN7S5846C62v5Ev");}
S5846C6 ::~S5846C6(){ note_dtor("S5846C6", this);} // tgen
S5846C6 ::S5846C6(){ note_ctor("S5846C6", this);} // tgen

static void Test_S5846C6()
{
  extern Class_Descriptor cd_S5846C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S5846C6, buf);
    S5846C6 *dp, &lv = *(dp=new (buf) S5846C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S5846C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C6)");
    /*is_ambiguous_... S5846C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S5846C6");
    /*is_ambiguous_... S5846C6::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*), ABISELECT(256,184), "S5846C6");
    /*is_ambiguous_... S5846C8::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*), ABISELECT(256,184), "S5846C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(592,448), "S5846C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*), ABISELECT(592,448), "S5846C6");
    check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(416,308), "S5846C6");
    check_base_class_offset(lv, (S5846C7*), ABISELECT(416,308), "S5846C6");
    check_base_class_offset(lv, (S5846C7*)(S5846C8*), ABISELECT(416,308), "S5846C6");
    check_base_class_offset(lv, (S5846C8*), 0, "S5846C6");
    check_field_offset(lv, s5846c6f0, ABISELECT(136,104), "S5846C6.s5846c6f0");
    set_bf_and_test(lv, s5846c6f1, ABISELECT(208,140), 0, 10, 1, "S5846C6");
    set_bf_and_test(lv, s5846c6f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S5846C6");
    check_field_offset(lv, s5846c6f2, ABISELECT(212,144), "S5846C6.s5846c6f2");
    check_field_offset(lv, s5846c6f3, ABISELECT(248,180), "S5846C6.s5846c6f3");
    test_class_info(&lv, &cd_S5846C6);
    dp->~S5846C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C6(Test_S5846C6, "S5846C6", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN7S5846C6C1Ev();
extern void _ZN7S5846C6D1Ev();
Name_Map name_map_S5846C6[] = {
  NSPAIR(_ZN7S5846C6C1Ev),
  NSPAIR(_ZN7S5846C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
static Base_Class bases_S5846C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S5846C4,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S5846C4,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5846C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5846C6[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY vtc_S5846C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern VTBL_ENTRY _ZTV7S5846C6[];
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C8__7S5846C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C8__7S5846C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C8__7S5846C6[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
static  VTT_ENTRY vtt_S5846C6[] = {
  {&(_ZTV7S5846C6[5]),  5,21},
  {&(_tg__ZTV7S5846C8__7S5846C6[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C8__7S5846C6[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C8__7S5846C6[4]),  4,6},
  {&(_ZTV7S5846C6[12]),  12,21},
  {&(_ZTV7S5846C6[19]),  19,21},
  {&(_tg__ZTV7S5846C7__7S5846C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
Class_Descriptor cd_S5846C6 = {  "S5846C6", // class name
  bases_S5846C6, 6,
  &(vtc_S5846C6[0]), // expected_vtbl_contents
  &(vtt_S5846C6[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI7S5846C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5846C6),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5846C6),7, //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  S5846C10  : virtual S5846C7 , virtual S5846C6 , S5846C8 {
  void *s5846c10f0;
  short s5846c10f1[2];
  long double s5846c10f2[2];
  char s5846c10f3;
  ::S5846C7 s5846c10f4;
  long double s5846c10f5;
  ::S5846C8 s5846c10f6;
  virtual void  v6(); // _ZN8S5846C102v6Ev
  ~S5846C10(); // tgen
  S5846C10(); // tgen
};
//SIG(-1 S5846C10) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S5846C10()
{
  extern Class_Descriptor cd_S5846C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S5846C10, buf);
    S5846C10 *dp, &lv = *(dp=new (buf) S5846C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S5846C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C10)");
    check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(1072,800), "S5846C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*), ABISELECT(1072,800), "S5846C10");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*), ABISELECT(1072,800), "S5846C10");
    check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(896,660), "S5846C10");
    check_base_class_offset(lv, (S5846C7*), ABISELECT(896,660), "S5846C10");
    check_base_class_offset(lv, (S5846C7*)(S5846C6*), ABISELECT(896,660), "S5846C10");
    check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*), ABISELECT(896,660), "S5846C10");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*), ABISELECT(896,660), "S5846C10");
    /*is_ambiguous_... S5846C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*), ABISELECT(1212,904), "S5846C10");
    /*is_ambiguous_... S5846C6::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*), ABISELECT(1344,988), "S5846C10");
    /*is_ambiguous_... S5846C8::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*), ABISELECT(1344,988), "S5846C10");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*), ABISELECT(1344,988), "S5846C10");
    check_base_class_offset(lv, (S5846C8*)(S5846C6*), ABISELECT(1080,804), "S5846C10");
    check_base_class_offset(lv, (S5846C6*), ABISELECT(1080,804), "S5846C10");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C8*), 0, "S5846C10");
    check_field_offset(lv, s5846c10f0, ABISELECT(136,100), "S5846C10.s5846c10f0");
    check_field_offset(lv, s5846c10f1, ABISELECT(144,104), "S5846C10.s5846c10f1");
    check_field_offset(lv, s5846c10f2, ABISELECT(160,108), "S5846C10.s5846c10f2");
    check_field_offset(lv, s5846c10f3, ABISELECT(192,132), "S5846C10.s5846c10f3");
    check_field_offset(lv, s5846c10f4, ABISELECT(208,136), "S5846C10.s5846c10f4");
    check_field_offset(lv, s5846c10f5, ABISELECT(400,280), "S5846C10.s5846c10f5");
    check_field_offset(lv, s5846c10f6, ABISELECT(416,292), "S5846C10.s5846c10f6");
    test_class_info(&lv, &cd_S5846C10);
    dp->~S5846C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C10(Test_S5846C10, "S5846C10", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN8S5846C10C1Ev();
extern void _ZN8S5846C10D1Ev();
Name_Map name_map_S5846C10[] = {
  NSPAIR(_ZN8S5846C10C1Ev),
  NSPAIR(_ZN8S5846C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
static Base_Class bases_S5846C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S5846C4,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5846C4,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5846C8,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5846C6,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5846C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S5846C10[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY vtc_S5846C10[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern VTBL_ENTRY _ZTV8S5846C10[];
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C8__A1__8S5846C10[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C8__A1__8S5846C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C8__A1__8S5846C10[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__8S5846C10[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__8S5846C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C6__8S5846C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C6__8S5846C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C6__8S5846C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C6__8S5846C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6__8S5846C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
static  VTT_ENTRY vtt_S5846C10[] = {
  {&(_ZTV8S5846C10[6]),  6,32},
  {&(_tg__ZTV7S5846C8__A1__8S5846C10[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C8__A1__8S5846C10[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C8__A1__8S5846C10[4]),  4,6},
  {&(_ZTV8S5846C10[13]),  13,32},
  {&(_ZTV8S5846C10[23]),  23,32},
  {&(_ZTV8S5846C10[30]),  30,32},
  {&(_tg__ZTV7S5846C7__8S5846C10[3]),  3,5},
  {&(_tg__ZTV7S5846C6__8S5846C10[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C6__8S5846C10[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C6__8S5846C10[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C6__8S5846C10[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C6__8S5846C10[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C6__8S5846C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S5846C10[];
extern  VTBL_ENTRY _ZTV8S5846C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5846C10[];
Class_Descriptor cd_S5846C10 = {  "S5846C10", // class name
  bases_S5846C10, 8,
  &(vtc_S5846C10[0]), // expected_vtbl_contents
  &(vtt_S5846C10[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI8S5846C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S5846C10),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5846C10),14, //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  S5846C5  : virtual S5846C4 , S5846C6 , virtual S5846C10 {
  int s5846c5f0;
  char s5846c5f1;
  unsigned char s5846c5f2:1;
  virtual void  v7(); // _ZN7S5846C52v7Ev
  ~S5846C5(); // tgen
  S5846C5(); // tgen
};
//SIG(-1 S5846C5) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S5846C5()
{
  extern Class_Descriptor cd_S5846C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S5846C5, buf);
    S5846C5 *dp, &lv = *(dp=new (buf) S5846C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S5846C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C5)");
    /*is_ambiguous_... S5846C5::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*), ABISELECT(272,192), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*), ABISELECT(272,192), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*), ABISELECT(272,192), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*), ABISELECT(272,192), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*), ABISELECT(272,192), "S5846C5");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C10*), ABISELECT(272,192), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*), ABISELECT(132,100), "S5846C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(608,456), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*), ABISELECT(608,456), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*), ABISELECT(608,456), "S5846C5");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C10*), ABISELECT(608,456), "S5846C5");
    check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(432,316), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*), ABISELECT(432,316), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*), ABISELECT(432,316), "S5846C5");
    check_base_class_offset(lv, (S5846C7*)(S5846C10*), ABISELECT(432,316), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*), ABISELECT(432,316), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*), ABISELECT(432,316), "S5846C5");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C10*), ABISELECT(432,316), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*), 0, "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C6*), 0, "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*), ABISELECT(1652,1220), "S5846C5");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*), ABISELECT(1520,1120), "S5846C5");
    check_base_class_offset(lv, (S5846C6*)(S5846C10*), ABISELECT(1520,1120), "S5846C5");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C10*), ABISELECT(624,460), "S5846C5");
    check_base_class_offset(lv, (S5846C10*), ABISELECT(624,460), "S5846C5");
    check_field_offset(lv, s5846c5f0, ABISELECT(252,184), "S5846C5.s5846c5f0");
    check_field_offset(lv, s5846c5f1, ABISELECT(256,188), "S5846C5.s5846c5f1");
    set_bf_and_test(lv, s5846c5f2, ABISELECT(257,189), 0, 1, 1, "S5846C5");
    test_class_info(&lv, &cd_S5846C5);
    dp->~S5846C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C5(Test_S5846C5, "S5846C5", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN7S5846C5C1Ev();
extern void _ZN7S5846C5D1Ev();
Name_Map name_map_S5846C5[] = {
  NSPAIR(_ZN7S5846C5C1Ev),
  NSPAIR(_ZN7S5846C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C10;
extern VTBL_ENTRY _ZTI8S5846C10[];
extern  VTBL_ENTRY _ZTV8S5846C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5846C10[];
static Base_Class bases_S5846C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5846C4,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S5846C4,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5846C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5846C6,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5846C8,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5846C6,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5846C8,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5846C10,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S5846C5[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C52v7Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY vtc_S5846C5[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5846C52v7Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S5846C5[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A__7S5846C5[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C6__7S5846C5[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C6__7S5846C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C6__7S5846C5[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C6__A__7S5846C5[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6__A__7S5846C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C5[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5846C10__7S5846C5[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C88S5846C10__A2__7S5846C5[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C88S5846C10__A2__7S5846C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C88S5846C10__A2__7S5846C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__8S5846C10__7S5846C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__8S5846C10__7S5846C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__8S5846C10__7S5846C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A1__7S5846C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C6__A1__7S5846C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C6__A1__7S5846C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A1__7S5846C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C6__A1__7S5846C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6__A1__7S5846C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
static  VTT_ENTRY vtt_S5846C5[] = {
  {&(_ZTV7S5846C5[7]),  7,45},
  {&(_tg__ZTV7S5846C6__A__7S5846C5[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C6__7S5846C5[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C6__7S5846C5[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C6__7S5846C5[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C6__A__7S5846C5[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C6__A__7S5846C5[5]),  5,7},
  {&(_ZTV7S5846C5[15]),  15,45},
  {&(_ZTV7S5846C5[22]),  22,45},
  {&(_ZTV7S5846C5[32]),  32,45},
  {&(_ZTV7S5846C5[42]),  42,45},
  {&(_tg__ZTV7S5846C7__7S5846C5[3]),  3,5},
  {&(_tg__ZTV8S5846C10__7S5846C5[6]),  6,8},
  {&(_tg__ZTV7S5846C88S5846C10__A2__7S5846C5[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C88S5846C10__A2__7S5846C5[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C88S5846C10__A2__7S5846C5[4]),  4,6},
  {&(_tg__ZTV7S5846C7__8S5846C10__7S5846C5[5]),  5,7},
  {&(_tg__ZTV7S5846C6__8S5846C10__7S5846C5[8]),  8,11},
  {&(_tg__ZTV7S5846C4__A1__8S5846C10__7S5846C5[4]),  4,6},
  {&(_tg__ZTV7S5846C6__A1__7S5846C5[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C6__A1__7S5846C5[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C6__A1__7S5846C5[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A1__7S5846C5[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C6__A1__7S5846C5[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C6__A1__7S5846C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S5846C5[];
extern  VTBL_ENTRY _ZTV7S5846C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C5[];
Class_Descriptor cd_S5846C5 = {  "S5846C5", // class name
  bases_S5846C5, 12,
  &(vtc_S5846C5[0]), // expected_vtbl_contents
  &(vtt_S5846C5[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI7S5846C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5846C5),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5846C5),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5846C3  : virtual S5846C4 , S5846C5 , S5846C8 , S5846C7 , S5846C6 {
  int s5846c3f0;
  int s5846c3f1[6];
  void *s5846c3f2;
  void *s5846c3f3;
  int s5846c3f4[9];
  char s5846c3f5;
  void *s5846c3f6;
  char s5846c3f7;
  void *s5846c3f8;
  short s5846c3f9;
  virtual void  v8(); // _ZN7S5846C32v8Ev
  virtual void  v9(); // _ZN7S5846C32v9Ev
  ~S5846C3(); // tgen
  S5846C3(); // tgen
};
//SIG(-1 S5846C3) C1{ VBC2{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ VBC2 BC4{ BC5{ m Fi} VBC2 VBC6{ VBC5 BC2 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC2 v5 FL[8] Fp[7] Fs} v6 v7 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v8 Fp Fs[2] FD[2] Fc FC6 FD FC7} v9 Fi Fc Fc:1} BC7 BC6 BC4 v1 v2 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs}


void  S5846C3 ::v8(){vfunc_called(this, "_ZN7S5846C32v8Ev");}
void  S5846C3 ::v9(){vfunc_called(this, "_ZN7S5846C32v9Ev");}
S5846C3 ::~S5846C3(){ note_dtor("S5846C3", this);} // tgen
S5846C3 ::S5846C3(){ note_ctor("S5846C3", this);} // tgen

static void Test_S5846C3()
{
  extern Class_Descriptor cd_S5846C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(154,456)];
    init_test(&cd_S5846C3, buf);
    S5846C3 *dp, &lv = *(dp=new (buf) S5846C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2448,1820), "sizeof(S5846C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C3)");
    /*is_ambiguous_... S5846C3::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C5*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*)(S5846C5*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*)(S5846C5*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C10*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*), ABISELECT(944,708), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*)(S5846C5*), ABISELECT(132,100), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*)(S5846C5*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C10*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*), ABISELECT(1280,972), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*)(S5846C5*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*)(S5846C5*), ABISELECT(1104,832), "S5846C3");
    check_base_class_offset(lv, (S5846C7*)(S5846C10*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C10*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*), ABISELECT(1104,832), "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*)(S5846C5*), 0, "S5846C3");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C6*)(S5846C5*), 0, "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*), ABISELECT(2324,1736), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*), ABISELECT(2192,1636), "S5846C3");
    check_base_class_offset(lv, (S5846C6*)(S5846C10*), ABISELECT(2192,1636), "S5846C3");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C10*), ABISELECT(1296,976), "S5846C3");
    check_base_class_offset(lv, (S5846C10*)(S5846C5*), ABISELECT(1296,976), "S5846C3");
    check_base_class_offset(lv, (S5846C5*), 0, "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C8*), ABISELECT(264,192), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(400,292), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S5846C7*), ABISELECT(400,292), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*), ABISELECT(708,532), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*), ABISELECT(576,432), "S5846C3");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C6*), ABISELECT(576,432), "S5846C3");
    check_field_offset(lv, s5846c3f0, ABISELECT(828,616), "S5846C3.s5846c3f0");
    check_field_offset(lv, s5846c3f1, ABISELECT(832,620), "S5846C3.s5846c3f1");
    check_field_offset(lv, s5846c3f2, ABISELECT(856,644), "S5846C3.s5846c3f2");
    check_field_offset(lv, s5846c3f3, ABISELECT(864,648), "S5846C3.s5846c3f3");
    check_field_offset(lv, s5846c3f4, ABISELECT(872,652), "S5846C3.s5846c3f4");
    check_field_offset(lv, s5846c3f5, ABISELECT(908,688), "S5846C3.s5846c3f5");
    check_field_offset(lv, s5846c3f6, ABISELECT(912,692), "S5846C3.s5846c3f6");
    check_field_offset(lv, s5846c3f7, ABISELECT(920,696), "S5846C3.s5846c3f7");
    check_field_offset(lv, s5846c3f8, ABISELECT(928,700), "S5846C3.s5846c3f8");
    check_field_offset(lv, s5846c3f9, ABISELECT(936,704), "S5846C3.s5846c3f9");
    test_class_info(&lv, &cd_S5846C3);
    dp->~S5846C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C3(Test_S5846C3, "S5846C3", ABISELECT(2448,1820));

#else // __cplusplus

extern void _ZN7S5846C3C1Ev();
extern void _ZN7S5846C3D1Ev();
Name_Map name_map_S5846C3[] = {
  NSPAIR(_ZN7S5846C3C1Ev),
  NSPAIR(_ZN7S5846C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C10;
extern VTBL_ENTRY _ZTI8S5846C10[];
extern  VTBL_ENTRY _ZTV8S5846C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5846C10[];
extern Class_Descriptor cd_S5846C5;
extern VTBL_ENTRY _ZTI7S5846C5[];
extern  VTBL_ENTRY _ZTV7S5846C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C5[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
static Base_Class bases_S5846C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5846C4,    ABISELECT(944,708), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(1280,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5846C4,    ABISELECT(1104,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(1104,832), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5846C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5846C6,    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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2324,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5846C8,    ABISELECT(2192,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5846C6,    ABISELECT(2192,1636), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5846C8,    ABISELECT(1296,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5846C10,    ABISELECT(1296,976), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S5846C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5846C8,    ABISELECT(264,192), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5846C4,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(400,292), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5846C8,    ABISELECT(576,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S5846C6,    ABISELECT(576,432), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5846C3[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C52v7Ev();
extern void _ZN7S5846C32v8Ev();
extern void _ZN7S5846C32v9Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY vtc_S5846C3[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5846C52v7Ev,
  (VTBL_ENTRY)&_ZN7S5846C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5846C32v9Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S5846C3[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C52v7Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C5__7S5846C3[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5846C52v7Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C67S5846C5__7S5846C3[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C67S5846C5__7S5846C3[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C67S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C67S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C67S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C67S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5846C10__7S5846C5__7S5846C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A1__7S5846C5__7S5846C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C8__A3__7S5846C3[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C8__A3__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C8__A3__7S5846C3[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__A__7S5846C3[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A__7S5846C3[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C6__A4__7S5846C3[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C6__A4__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A4__7S5846C3[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C6__A__7S5846C3[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6__A__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C3[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5846C10__7S5846C3[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C88S5846C10__A2__7S5846C3[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C88S5846C10__A2__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C88S5846C10__A2__7S5846C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__8S5846C10__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__8S5846C10__7S5846C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__8S5846C10__7S5846C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A1__7S5846C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C6__A1__7S5846C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C6__A1__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A1__7S5846C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C6__A1__7S5846C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6__A1__7S5846C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
static  VTT_ENTRY vtt_S5846C3[] = {
  {&(_ZTV7S5846C3[7]),  7,66},
  {&(_tg__ZTV7S5846C5__7S5846C3[7]),  7,11},
  {&(_tg__ZTV7S5846C67S5846C5__7S5846C3[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C67S5846C5__7S5846C3[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C67S5846C5__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C67S5846C5__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C67S5846C5__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C67S5846C5__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C4__7S5846C5__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C5__7S5846C3[5]),  5,7},
  {&(_tg__ZTV8S5846C10__7S5846C5__7S5846C3[8]),  8,10},
  {&(_tg__ZTV7S5846C6__A1__7S5846C5__7S5846C3[8]),  8,11},
  {&(_tg__ZTV7S5846C8__A3__7S5846C3[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C8__A3__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C8__A3__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C7__A__7S5846C3[3]),  3,5},
  {&(_tg__ZTV7S5846C6__A__7S5846C3[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C6__A4__7S5846C3[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C6__A4__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A4__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C6__A__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C6__A__7S5846C3[5]),  5,7},
  {&(_ZTV7S5846C3[36]),  36,66},
  {&(_ZTV7S5846C3[43]),  43,66},
  {&(_ZTV7S5846C3[53]),  53,66},
  {&(_ZTV7S5846C3[63]),  63,66},
  {&(_ZTV7S5846C3[18]),  18,66},
  {&(_ZTV7S5846C3[22]),  22,66},
  {&(_ZTV7S5846C3[29]),  29,66},
  {&(_tg__ZTV7S5846C7__7S5846C3[3]),  3,5},
  {&(_tg__ZTV8S5846C10__7S5846C3[6]),  6,8},
  {&(_tg__ZTV7S5846C88S5846C10__A2__7S5846C3[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C88S5846C10__A2__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C88S5846C10__A2__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C7__8S5846C10__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C6__8S5846C10__7S5846C3[8]),  8,11},
  {&(_tg__ZTV7S5846C4__A1__8S5846C10__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C6__A1__7S5846C3[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C6__A1__7S5846C3[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C6__A1__7S5846C3[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A1__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C6__A1__7S5846C3[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C6__A1__7S5846C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S5846C3[];
extern  VTBL_ENTRY _ZTV7S5846C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C3[];
Class_Descriptor cd_S5846C3 = {  "S5846C3", // class name
  bases_S5846C3, 19,
  &(vtc_S5846C3[0]), // expected_vtbl_contents
  &(vtt_S5846C3[0]), // expected_vtt_contents
  ABISELECT(2448,1820), // object size
  NSPAIRA(_ZTI7S5846C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S5846C3),66, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5846C3),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5846C1  : S1538C9_nt , S5846C3 {
  void *s5846c1f0;
  void *s5846c1f1[2];
  short s5846c1f2;
  int s5846c1f3;
  void *s5846c1f4;
  virtual  ~S5846C1(); // _ZN7S5846C1D2Ev
  S5846C1(); // tgen
};
//SIG(1 S5846C1) C1{ BC2{ m Fi} BC3{ VBC4{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC5{ VBC4 BC6{ BC2 VBC4 VBC7{ VBC2 BC4 Fi Fs[2] FL} BC8{ VBC2 VBC7 VBC4 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC10{ VBC7 VBC6 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} BC8 BC7 BC6 v8 v9 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} vd Fp Fp[2] Fs Fi Fp}


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

static void Test_S5846C1()
{
  extern Class_Descriptor cd_S5846C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(157,463)];
    init_test(&cd_S5846C1, buf);
    S5846C1 *dp, &lv = *(dp=new (buf) S5846C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2496,1848), "sizeof(S5846C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5846C1)");
    /*is_ambiguous_... S5846C1::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(940,708), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C4 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C5*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*)(S5846C5*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*)(S5846C5*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C10*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C6*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C8*)(S5846C6*)(S5846C3*), ABISELECT(992,736), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*)(S5846C5*)(S5846C3*), ABISELECT(132,100), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*)(S5846C5*)(S5846C3*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C10*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C3*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C7*)(S5846C3*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C8*)(S5846C6*)(S5846C3*), ABISELECT(1328,1000), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C7 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C7*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*)(S5846C5*)(S5846C3*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*)(S5846C5*)(S5846C3*), ABISELECT(1152,860), "S5846C1");
    check_base_class_offset(lv, (S5846C7*)(S5846C10*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C10*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C3*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C6*)(S5846C3*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C8*)(S5846C6*)(S5846C3*), ABISELECT(1152,860), "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*)(S5846C5*)(S5846C3*), 0, "S5846C1");
    /*is_ambiguous_... S5846C5::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C6*)(S5846C5*)(S5846C3*), 0, "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*), ABISELECT(2372,1764), "S5846C1");
    /*is_ambiguous_... S5846C1::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*), ABISELECT(2240,1664), "S5846C1");
    check_base_class_offset(lv, (S5846C6*)(S5846C10*), ABISELECT(2240,1664), "S5846C1");
    /*is_ambiguous_... S5846C10::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C10*), ABISELECT(1344,1004), "S5846C1");
    check_base_class_offset(lv, (S5846C10*)(S5846C5*)(S5846C3*), ABISELECT(1344,1004), "S5846C1");
    check_base_class_offset(lv, (S5846C5*)(S5846C3*), 0, "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C8 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C3*), ABISELECT(264,192), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S5846C4*)(S5846C7*)(S5846C3*), ABISELECT(400,292), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C7 */ AMB_check_base_class_offset(lv, (S5846C7*)(S5846C3*), ABISELECT(400,292), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5846C6*)(S5846C3*), ABISELECT(708,532), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C8*)(S5846C6*)(S5846C3*), ABISELECT(576,432), "S5846C1");
    /*is_ambiguous_... S5846C3::S5846C6 */ AMB_check_base_class_offset(lv, (S5846C6*)(S5846C3*), ABISELECT(576,432), "S5846C1");
    check_base_class_offset(lv, (S5846C3*), 0, "S5846C1");
    check_field_offset(lv, s5846c1f0, ABISELECT(944,712), "S5846C1.s5846c1f0");
    check_field_offset(lv, s5846c1f1, ABISELECT(952,716), "S5846C1.s5846c1f1");
    check_field_offset(lv, s5846c1f2, ABISELECT(968,724), "S5846C1.s5846c1f2");
    check_field_offset(lv, s5846c1f3, ABISELECT(972,728), "S5846C1.s5846c1f3");
    check_field_offset(lv, s5846c1f4, ABISELECT(976,732), "S5846C1.s5846c1f4");
    test_class_info(&lv, &cd_S5846C1);
    dp->~S5846C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5846C1(Test_S5846C1, "S5846C1", ABISELECT(2496,1848));

#else // __cplusplus

extern void _ZN7S5846C1C1Ev();
extern void _ZN7S5846C1D2Ev();
Name_Map name_map_S5846C1[] = {
  NSPAIR(_ZN7S5846C1C1Ev),
  NSPAIR(_ZN7S5846C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C10;
extern VTBL_ENTRY _ZTI8S5846C10[];
extern  VTBL_ENTRY _ZTV8S5846C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5846C10[];
extern Class_Descriptor cd_S5846C5;
extern VTBL_ENTRY _ZTI7S5846C5[];
extern  VTBL_ENTRY _ZTV7S5846C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C5[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C4;
extern VTBL_ENTRY _ZTI7S5846C4[];
extern  VTBL_ENTRY _ZTV7S5846C4[];
extern Class_Descriptor cd_S5846C7;
extern VTBL_ENTRY _ZTI7S5846C7[];
extern  VTBL_ENTRY _ZTV7S5846C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5846C8;
extern VTBL_ENTRY _ZTI7S5846C8[];
extern  VTBL_ENTRY _ZTV7S5846C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C8[];
extern Class_Descriptor cd_S5846C6;
extern VTBL_ENTRY _ZTI7S5846C6[];
extern  VTBL_ENTRY _ZTV7S5846C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C6[];
extern Class_Descriptor cd_S5846C3;
extern VTBL_ENTRY _ZTI7S5846C3[];
extern  VTBL_ENTRY _ZTV7S5846C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C3[];
static Base_Class bases_S5846C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(940,708), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5846C4,    ABISELECT(992,736), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(1328,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5846C4,    ABISELECT(1152,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5846C7,    ABISELECT(1152,860), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S5846C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5846C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2372,1764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5846C8,    ABISELECT(2240,1664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5846C6,    ABISELECT(2240,1664), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S5846C8,    ABISELECT(1344,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5846C10,    ABISELECT(1344,1004), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S5846C5,    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
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5846C8,    ABISELECT(264,192), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5846C4,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5846C7,    ABISELECT(400,292), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5846C8,    ABISELECT(576,432), //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
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5846C6,    ABISELECT(576,432), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5846C3,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5846C1[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C52v7Ev();
extern void _ZN7S5846C32v8Ev();
extern void _ZN7S5846C32v9Ev();
extern void _ZN7S5846C1D1Ev();
extern void _ZN7S5846C1D0Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY vtc_S5846C1[] = {
  ABISELECT(2240,1664),
  ABISELECT(1344,1004),
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5846C52v7Ev,
  (VTBL_ENTRY)&_ZN7S5846C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5846C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5846C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5846C1D0Ev,
  ABISELECT(728,544),
  ABISELECT(888,668),
  ABISELECT(1064,808),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  ABISELECT(928,708),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1344,-1004),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2240,-1664),
  (VTBL_ENTRY)&(_ZTI7S5846C1[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S5846C1[];
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C52v7Ev();
extern void _ZN7S5846C32v8Ev();
extern void _ZN7S5846C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C3__7S5846C1[] = {
  ABISELECT(2240,1664),
  ABISELECT(1344,1004),
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5846C52v7Ev,
  (VTBL_ENTRY)&_ZN7S5846C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5846C32v9Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
extern void _ZN7S5846C52v7Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C57S5846C3__7S5846C1[] = {
  ABISELECT(2240,1664),
  ABISELECT(1344,1004),
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5846C52v7Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C67S5846C57S5846C3__7S5846C1[] = {
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C67S5846C57S5846C3__7S5846C1[] = {
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C67S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C67S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C67S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C67S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5846C10__7S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1344,-1004),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A1__7S5846C57S5846C3__7S5846C1[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2240,-1664),
  (VTBL_ENTRY)&(_ZTI7S5846C5[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C3__A3__7S5846C1[] = {
  ABISELECT(728,544),
  ABISELECT(888,668),
  ABISELECT(1064,808),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C3__A3__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-888,-668),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C3__A3__7S5846C1[] = {
  0,
  0,
  ABISELECT(-728,-544),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C77S5846C3__A1__7S5846C1[] = {
  ABISELECT(928,708),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C67S5846C3__A2__7S5846C1[] = {
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C67S5846C3__A4__7S5846C1[] = {
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C67S5846C3__A4__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-576,-428),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C67S5846C3__A4__7S5846C1[] = {
  0,
  0,
  ABISELECT(-416,-304),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C67S5846C3__A2__7S5846C1[] = {
  0,
  0,
  ABISELECT(-416,-304),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C67S5846C3__A2__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-576,-428),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5846C10__7S5846C3__7S5846C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1344,-1004),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A1__7S5846C3__7S5846C1[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2240,-1664),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C8__A3__7S5846C3__7S5846C1[] = {
  ABISELECT(728,544),
  ABISELECT(888,668),
  ABISELECT(1064,808),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__A__7S5846C3__7S5846C1[] = {
  ABISELECT(928,708),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A__7S5846C3__7S5846C1[] = {
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI7S5846C3[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C1[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C7[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN8S5846C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5846C10__7S5846C1[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5846C102v6Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C88S5846C10__A2__7S5846C1[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C88S5846C10__A2__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C88S5846C10__A2__7S5846C1[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__8S5846C10__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__8S5846C10__7S5846C1[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__8S5846C10__7S5846C1[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S5846C10[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C82v3Ev();
extern void _ZN7S5846C62v4Ev();
extern void _ZN7S5846C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C6__A1__7S5846C1[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5846C62v5Ev,
};
extern void _ZN7S5846C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C87S5846C6__A1__7S5846C1[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C82v3Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C87S5846C6__A1__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A1__7S5846C1[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5846C8[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C4__7S5846C6__A1__7S5846C1[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
extern void _ZN7S5846C42v1Ev();
extern void _ZN7S5846C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5846C7__7S5846C6__A1__7S5846C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5846C6[0]),
  (VTBL_ENTRY)&_ZN7S5846C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5846C42v2Ev,
};
static  VTT_ENTRY vtt_S5846C1[] = {
  {&(_ZTV7S5846C1[7]),  7,68},
  {&(_tg__ZTV7S5846C3__7S5846C1[7]),  7,13},
  {&(_tg__ZTV7S5846C57S5846C3__7S5846C1[7]),  7,11},
  {&(_tg__ZTV7S5846C67S5846C57S5846C3__7S5846C1[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C67S5846C57S5846C3__7S5846C1[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C67S5846C57S5846C3__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C67S5846C57S5846C3__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C67S5846C57S5846C3__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C67S5846C57S5846C3__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__7S5846C57S5846C3__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C57S5846C3__7S5846C1[5]),  5,7},
  {&(_tg__ZTV8S5846C10__7S5846C57S5846C3__7S5846C1[8]),  8,10},
  {&(_tg__ZTV7S5846C6__A1__7S5846C57S5846C3__7S5846C1[8]),  8,11},
  {&(_tg__ZTV7S5846C87S5846C3__A3__7S5846C1[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C3__A3__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C3__A3__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C77S5846C3__A1__7S5846C1[3]),  3,5},
  {&(_tg__ZTV7S5846C67S5846C3__A2__7S5846C1[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C67S5846C3__A4__7S5846C1[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C67S5846C3__A4__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C67S5846C3__A4__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C67S5846C3__A2__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C67S5846C3__A2__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__7S5846C3__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C3__7S5846C1[5]),  5,7},
  {&(_tg__ZTV8S5846C10__7S5846C3__7S5846C1[8]),  8,10},
  {&(_tg__ZTV7S5846C6__A1__7S5846C3__7S5846C1[8]),  8,11},
  {&(_tg__ZTV7S5846C8__A3__7S5846C3__7S5846C1[5]),  5,6},
  {&(_tg__ZTV7S5846C7__A__7S5846C3__7S5846C1[3]),  3,5},
  {&(_tg__ZTV7S5846C6__A__7S5846C3__7S5846C1[5]),  5,8},
  {&(_ZTV7S5846C1[38]),  38,68},
  {&(_ZTV7S5846C1[45]),  45,68},
  {&(_ZTV7S5846C1[55]),  55,68},
  {&(_ZTV7S5846C1[65]),  65,68},
  {&(_ZTV7S5846C1[20]),  20,68},
  {&(_ZTV7S5846C1[24]),  24,68},
  {&(_ZTV7S5846C1[31]),  31,68},
  {&(_tg__ZTV7S5846C7__7S5846C1[3]),  3,5},
  {&(_tg__ZTV8S5846C10__7S5846C1[6]),  6,8},
  {&(_tg__ZTV7S5846C88S5846C10__A2__7S5846C1[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C88S5846C10__A2__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C88S5846C10__A2__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C7__8S5846C10__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C6__8S5846C10__7S5846C1[8]),  8,11},
  {&(_tg__ZTV7S5846C4__A1__8S5846C10__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C6__A1__7S5846C1[5]),  5,8},
  {&(_tg__ZTV7S5846C87S5846C6__A1__7S5846C1[5]),  5,6},
  {&(_tg__ZTV7S5846C7__7S5846C87S5846C6__A1__7S5846C1[5]),  5,7},
  {&(_tg__ZTV7S5846C4__A1__7S5846C87S5846C6__A1__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C4__7S5846C6__A1__7S5846C1[4]),  4,6},
  {&(_tg__ZTV7S5846C7__7S5846C6__A1__7S5846C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S5846C1[];
extern  VTBL_ENTRY _ZTV7S5846C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5846C1[];
Class_Descriptor cd_S5846C1 = {  "S5846C1", // class name
  bases_S5846C1, 21,
  &(vtc_S5846C1[0]), // expected_vtbl_contents
  &(vtt_S5846C1[0]), // expected_vtt_contents
  ABISELECT(2496,1848), // object size
  NSPAIRA(_ZTI7S5846C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5846C1),68, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5846C1),51, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5845C4  {
  __tsi64 s5845c4f0[9];
  void *s5845c4f1;
  long double s5845c4f2;
  void *s5845c4f3;
  char s5845c4f4;
  short s5845c4f5[6];
  void *s5845c4f6;
  char s5845c4f7:4;
  void *s5845c4f8;
  virtual void  v1(); // _ZN7S5845C42v1Ev
  virtual void  v2(); // _ZN7S5845C42v2Ev
  ~S5845C4(); // tgen
  S5845C4(); // tgen
};
//SIG(-1 S5845C4) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S5845C4 ::v1(){vfunc_called(this, "_ZN7S5845C42v1Ev");}
void  S5845C4 ::v2(){vfunc_called(this, "_ZN7S5845C42v2Ev");}
S5845C4 ::~S5845C4(){ note_dtor("S5845C4", this);} // tgen
S5845C4 ::S5845C4(){ note_ctor("S5845C4", this);} // tgen

static void Test_S5845C4()
{
  extern Class_Descriptor cd_S5845C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S5845C4, buf);
    S5845C4 *dp, &lv = *(dp=new (buf) S5845C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S5845C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C4)");
    check_field_offset(lv, s5845c4f0, ABISELECT(8,4), "S5845C4.s5845c4f0");
    check_field_offset(lv, s5845c4f1, ABISELECT(80,76), "S5845C4.s5845c4f1");
    check_field_offset(lv, s5845c4f2, ABISELECT(96,80), "S5845C4.s5845c4f2");
    check_field_offset(lv, s5845c4f3, ABISELECT(112,92), "S5845C4.s5845c4f3");
    check_field_offset(lv, s5845c4f4, ABISELECT(120,96), "S5845C4.s5845c4f4");
    check_field_offset(lv, s5845c4f5, ABISELECT(122,98), "S5845C4.s5845c4f5");
    check_field_offset(lv, s5845c4f6, ABISELECT(136,112), "S5845C4.s5845c4f6");
    set_bf_and_test(lv, s5845c4f7, ABISELECT(144,116), 0, 4, 1, "S5845C4");
    set_bf_and_test(lv, s5845c4f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S5845C4");
    check_field_offset(lv, s5845c4f8, ABISELECT(152,120), "S5845C4.s5845c4f8");
    test_class_info(&lv, &cd_S5845C4);
    dp->~S5845C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C4(Test_S5845C4, "S5845C4", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN7S5845C4C1Ev();
extern void _ZN7S5845C4D1Ev();
Name_Map name_map_S5845C4[] = {
  NSPAIR(_ZN7S5845C4C1Ev),
  NSPAIR(_ZN7S5845C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5845C4[];
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY vtc_S5845C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C4[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
Class_Descriptor cd_S5845C4 = {  "S5845C4", // class name
  0,0,//no base classes
  &(vtc_S5845C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI7S5845C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5845C4),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  S5845C7  : virtual S1538C9_nt , S5845C4 {
  int s5845c7f0;
  short s5845c7f1[2];
  __tsi64 s5845c7f2;
  ~S5845C7(); // tgen
  S5845C7(); // tgen
};
//SIG(-1 S5845C7) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S5845C7()
{
  extern Class_Descriptor cd_S5845C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S5845C7, buf);
    S5845C7 *dp, &lv = *(dp=new (buf) S5845C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S5845C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S5845C7");
    check_base_class_offset(lv, (S5845C4*), 0, "S5845C7");
    check_field_offset(lv, s5845c7f0, ABISELECT(160,124), "S5845C7.s5845c7f0");
    check_field_offset(lv, s5845c7f1, ABISELECT(164,128), "S5845C7.s5845c7f1");
    check_field_offset(lv, s5845c7f2, ABISELECT(168,132), "S5845C7.s5845c7f2");
    test_class_info(&lv, &cd_S5845C7);
    dp->~S5845C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C7(Test_S5845C7, "S5845C7", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S5845C7C1Ev();
extern void _ZN7S5845C7D1Ev();
Name_Map name_map_S5845C7[] = {
  NSPAIR(_ZN7S5845C7C1Ev),
  NSPAIR(_ZN7S5845C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
static Base_Class bases_S5845C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S5845C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5845C7[];
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY vtc_S5845C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern VTBL_ENTRY _ZTV7S5845C7[];
static  VTT_ENTRY vtt_S5845C7[] = {
  {&(_ZTV7S5845C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
Class_Descriptor cd_S5845C7 = {  "S5845C7", // class name
  bases_S5845C7, 2,
  &(vtc_S5845C7[0]), // expected_vtbl_contents
  &(vtt_S5845C7[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S5845C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5845C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5845C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5845C8  : virtual S1538C9_nt , virtual S5845C7 , virtual S5845C4 {
  __tsi64 s5845c8f0[8];
  void *s5845c8f1[7];
  short s5845c8f2;
  virtual void  v3(); // _ZN7S5845C82v3Ev
  ~S5845C8(); // tgen
  S5845C8(); // tgen
};
//SIG(-1 S5845C8) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S5845C8()
{
  extern Class_Descriptor cd_S5845C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S5845C8, buf);
    S5845C8 *dp, &lv = *(dp=new (buf) S5845C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S5845C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C8)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S5845C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(132,100), "S5845C8");
    check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(144,104), "S5845C8");
    check_base_class_offset(lv, (S5845C7*), ABISELECT(144,104), "S5845C8");
    /*is_ambiguous_... S5845C8::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*), ABISELECT(320,244), "S5845C8");
    check_field_offset(lv, s5845c8f0, ABISELECT(8,4), "S5845C8.s5845c8f0");
    check_field_offset(lv, s5845c8f1, ABISELECT(72,68), "S5845C8.s5845c8f1");
    check_field_offset(lv, s5845c8f2, ABISELECT(128,96), "S5845C8.s5845c8f2");
    test_class_info(&lv, &cd_S5845C8);
    dp->~S5845C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C8(Test_S5845C8, "S5845C8", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN7S5845C8C1Ev();
extern void _ZN7S5845C8D1Ev();
Name_Map name_map_S5845C8[] = {
  NSPAIR(_ZN7S5845C8C1Ev),
  NSPAIR(_ZN7S5845C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
static Base_Class bases_S5845C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S5845C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5845C4,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S5845C8[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY vtc_S5845C8[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern VTBL_ENTRY _ZTV7S5845C8[];
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
static  VTT_ENTRY vtt_S5845C8[] = {
  {&(_ZTV7S5845C8[5]),  5,19},
  {&(_ZTV7S5845C8[11]),  11,19},
  {&(_ZTV7S5845C8[17]),  17,19},
  {&(_tg__ZTV7S5845C7__7S5845C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
Class_Descriptor cd_S5845C8 = {  "S5845C8", // class name
  bases_S5845C8, 4,
  &(vtc_S5845C8[0]), // expected_vtbl_contents
  &(vtt_S5845C8[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI7S5845C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5845C8),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5845C8),4, //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  S5845C6  : S1538C9_nt , virtual S5845C4 , virtual S5845C7 , S5845C8 {
  ::S7223C13 s5845c6f0;
  int s5845c6f1:10;
  int s5845c6f2[9];
  int s5845c6f3;
  virtual void  v4(); // _ZN7S5845C62v4Ev
  virtual void  v5(); // _ZN7S5845C62v5Ev
  ~S5845C6(); // tgen
  S5845C6(); // tgen
};
//SIG(-1 S5845C6) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi}


void  S5845C6 ::v4(){vfunc_called(this, "_ZN7S5845C62v4Ev");}
void  S5845C6 ::v5(){vfunc_called(this, "_ZN7S5845C62v5Ev");}
S5845C6 ::~S5845C6(){ note_dtor("S5845C6", this);} // tgen
S5845C6 ::S5845C6(){ note_ctor("S5845C6", this);} // tgen

static void Test_S5845C6()
{
  extern Class_Descriptor cd_S5845C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S5845C6, buf);
    S5845C6 *dp, &lv = *(dp=new (buf) S5845C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S5845C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C6)");
    /*is_ambiguous_... S5845C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S5845C6");
    /*is_ambiguous_... S5845C6::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*), ABISELECT(256,184), "S5845C6");
    /*is_ambiguous_... S5845C8::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*), ABISELECT(256,184), "S5845C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(592,448), "S5845C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*), ABISELECT(592,448), "S5845C6");
    check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(416,308), "S5845C6");
    check_base_class_offset(lv, (S5845C7*), ABISELECT(416,308), "S5845C6");
    check_base_class_offset(lv, (S5845C7*)(S5845C8*), ABISELECT(416,308), "S5845C6");
    check_base_class_offset(lv, (S5845C8*), 0, "S5845C6");
    check_field_offset(lv, s5845c6f0, ABISELECT(136,104), "S5845C6.s5845c6f0");
    set_bf_and_test(lv, s5845c6f1, ABISELECT(208,140), 0, 10, 1, "S5845C6");
    set_bf_and_test(lv, s5845c6f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S5845C6");
    check_field_offset(lv, s5845c6f2, ABISELECT(212,144), "S5845C6.s5845c6f2");
    check_field_offset(lv, s5845c6f3, ABISELECT(248,180), "S5845C6.s5845c6f3");
    test_class_info(&lv, &cd_S5845C6);
    dp->~S5845C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C6(Test_S5845C6, "S5845C6", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN7S5845C6C1Ev();
extern void _ZN7S5845C6D1Ev();
Name_Map name_map_S5845C6[] = {
  NSPAIR(_ZN7S5845C6C1Ev),
  NSPAIR(_ZN7S5845C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
static Base_Class bases_S5845C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S5845C4,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S5845C4,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5845C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5845C6[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY vtc_S5845C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern VTBL_ENTRY _ZTV7S5845C6[];
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C8__7S5845C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C8__7S5845C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C8__7S5845C6[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
static  VTT_ENTRY vtt_S5845C6[] = {
  {&(_ZTV7S5845C6[5]),  5,21},
  {&(_tg__ZTV7S5845C8__7S5845C6[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C8__7S5845C6[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C8__7S5845C6[4]),  4,6},
  {&(_ZTV7S5845C6[12]),  12,21},
  {&(_ZTV7S5845C6[19]),  19,21},
  {&(_tg__ZTV7S5845C7__7S5845C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
Class_Descriptor cd_S5845C6 = {  "S5845C6", // class name
  bases_S5845C6, 6,
  &(vtc_S5845C6[0]), // expected_vtbl_contents
  &(vtt_S5845C6[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI7S5845C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5845C6),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5845C6),7, //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  S5845C10  : virtual S5845C7 , virtual S5845C6 , S5845C8 {
  void *s5845c10f0;
  short s5845c10f1[2];
  long double s5845c10f2[2];
  char s5845c10f3;
  ::S5845C7 s5845c10f4;
  long double s5845c10f5;
  ::S5845C8 s5845c10f6;
  virtual void  v6(); // _ZN8S5845C102v6Ev
  ~S5845C10(); // tgen
  S5845C10(); // tgen
};
//SIG(-1 S5845C10) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S5845C10()
{
  extern Class_Descriptor cd_S5845C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S5845C10, buf);
    S5845C10 *dp, &lv = *(dp=new (buf) S5845C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S5845C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C10)");
    check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(1072,800), "S5845C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*), ABISELECT(1072,800), "S5845C10");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*), ABISELECT(1072,800), "S5845C10");
    check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(896,660), "S5845C10");
    check_base_class_offset(lv, (S5845C7*), ABISELECT(896,660), "S5845C10");
    check_base_class_offset(lv, (S5845C7*)(S5845C6*), ABISELECT(896,660), "S5845C10");
    check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*), ABISELECT(896,660), "S5845C10");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*), ABISELECT(896,660), "S5845C10");
    /*is_ambiguous_... S5845C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*), ABISELECT(1212,904), "S5845C10");
    /*is_ambiguous_... S5845C6::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*), ABISELECT(1344,988), "S5845C10");
    /*is_ambiguous_... S5845C8::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*), ABISELECT(1344,988), "S5845C10");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*), ABISELECT(1344,988), "S5845C10");
    check_base_class_offset(lv, (S5845C8*)(S5845C6*), ABISELECT(1080,804), "S5845C10");
    check_base_class_offset(lv, (S5845C6*), ABISELECT(1080,804), "S5845C10");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C8*), 0, "S5845C10");
    check_field_offset(lv, s5845c10f0, ABISELECT(136,100), "S5845C10.s5845c10f0");
    check_field_offset(lv, s5845c10f1, ABISELECT(144,104), "S5845C10.s5845c10f1");
    check_field_offset(lv, s5845c10f2, ABISELECT(160,108), "S5845C10.s5845c10f2");
    check_field_offset(lv, s5845c10f3, ABISELECT(192,132), "S5845C10.s5845c10f3");
    check_field_offset(lv, s5845c10f4, ABISELECT(208,136), "S5845C10.s5845c10f4");
    check_field_offset(lv, s5845c10f5, ABISELECT(400,280), "S5845C10.s5845c10f5");
    check_field_offset(lv, s5845c10f6, ABISELECT(416,292), "S5845C10.s5845c10f6");
    test_class_info(&lv, &cd_S5845C10);
    dp->~S5845C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C10(Test_S5845C10, "S5845C10", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN8S5845C10C1Ev();
extern void _ZN8S5845C10D1Ev();
Name_Map name_map_S5845C10[] = {
  NSPAIR(_ZN8S5845C10C1Ev),
  NSPAIR(_ZN8S5845C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
static Base_Class bases_S5845C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S5845C4,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5845C4,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5845C8,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5845C6,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5845C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S5845C10[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY vtc_S5845C10[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern VTBL_ENTRY _ZTV8S5845C10[];
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C8__A1__8S5845C10[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C8__A1__8S5845C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C8__A1__8S5845C10[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__8S5845C10[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__8S5845C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C6__8S5845C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C6__8S5845C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C6__8S5845C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C6__8S5845C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6__8S5845C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
static  VTT_ENTRY vtt_S5845C10[] = {
  {&(_ZTV8S5845C10[6]),  6,32},
  {&(_tg__ZTV7S5845C8__A1__8S5845C10[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C8__A1__8S5845C10[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C8__A1__8S5845C10[4]),  4,6},
  {&(_ZTV8S5845C10[13]),  13,32},
  {&(_ZTV8S5845C10[23]),  23,32},
  {&(_ZTV8S5845C10[30]),  30,32},
  {&(_tg__ZTV7S5845C7__8S5845C10[3]),  3,5},
  {&(_tg__ZTV7S5845C6__8S5845C10[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C6__8S5845C10[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C6__8S5845C10[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C6__8S5845C10[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C6__8S5845C10[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C6__8S5845C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S5845C10[];
extern  VTBL_ENTRY _ZTV8S5845C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5845C10[];
Class_Descriptor cd_S5845C10 = {  "S5845C10", // class name
  bases_S5845C10, 8,
  &(vtc_S5845C10[0]), // expected_vtbl_contents
  &(vtt_S5845C10[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI8S5845C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S5845C10),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5845C10),14, //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  S5845C5  : virtual S5845C4 , S5845C6 , virtual S5845C10 {
  int s5845c5f0;
  char s5845c5f1;
  unsigned char s5845c5f2:1;
  virtual void  v7(); // _ZN7S5845C52v7Ev
  ~S5845C5(); // tgen
  S5845C5(); // tgen
};
//SIG(-1 S5845C5) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S5845C5()
{
  extern Class_Descriptor cd_S5845C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S5845C5, buf);
    S5845C5 *dp, &lv = *(dp=new (buf) S5845C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S5845C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C5)");
    /*is_ambiguous_... S5845C5::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*), ABISELECT(272,192), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*), ABISELECT(272,192), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*), ABISELECT(272,192), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*), ABISELECT(272,192), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*), ABISELECT(272,192), "S5845C5");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C10*), ABISELECT(272,192), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*), ABISELECT(132,100), "S5845C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(608,456), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*), ABISELECT(608,456), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*), ABISELECT(608,456), "S5845C5");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C10*), ABISELECT(608,456), "S5845C5");
    check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(432,316), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*), ABISELECT(432,316), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*), ABISELECT(432,316), "S5845C5");
    check_base_class_offset(lv, (S5845C7*)(S5845C10*), ABISELECT(432,316), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*), ABISELECT(432,316), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*), ABISELECT(432,316), "S5845C5");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C10*), ABISELECT(432,316), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*), 0, "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C6*), 0, "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*), ABISELECT(1652,1220), "S5845C5");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*), ABISELECT(1520,1120), "S5845C5");
    check_base_class_offset(lv, (S5845C6*)(S5845C10*), ABISELECT(1520,1120), "S5845C5");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C10*), ABISELECT(624,460), "S5845C5");
    check_base_class_offset(lv, (S5845C10*), ABISELECT(624,460), "S5845C5");
    check_field_offset(lv, s5845c5f0, ABISELECT(252,184), "S5845C5.s5845c5f0");
    check_field_offset(lv, s5845c5f1, ABISELECT(256,188), "S5845C5.s5845c5f1");
    set_bf_and_test(lv, s5845c5f2, ABISELECT(257,189), 0, 1, 1, "S5845C5");
    test_class_info(&lv, &cd_S5845C5);
    dp->~S5845C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C5(Test_S5845C5, "S5845C5", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN7S5845C5C1Ev();
extern void _ZN7S5845C5D1Ev();
Name_Map name_map_S5845C5[] = {
  NSPAIR(_ZN7S5845C5C1Ev),
  NSPAIR(_ZN7S5845C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C10;
extern VTBL_ENTRY _ZTI8S5845C10[];
extern  VTBL_ENTRY _ZTV8S5845C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5845C10[];
static Base_Class bases_S5845C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5845C4,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S5845C4,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5845C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5845C6,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5845C8,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5845C6,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5845C8,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5845C10,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S5845C5[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C52v7Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY vtc_S5845C5[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5845C52v7Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S5845C5[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A__7S5845C5[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C6__7S5845C5[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C6__7S5845C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C6__7S5845C5[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C6__A__7S5845C5[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6__A__7S5845C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C5[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5845C10__7S5845C5[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C88S5845C10__A2__7S5845C5[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C88S5845C10__A2__7S5845C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C88S5845C10__A2__7S5845C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__8S5845C10__7S5845C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__8S5845C10__7S5845C5[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__8S5845C10__7S5845C5[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A1__7S5845C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C6__A1__7S5845C5[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C6__A1__7S5845C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A1__7S5845C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C6__A1__7S5845C5[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6__A1__7S5845C5[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
static  VTT_ENTRY vtt_S5845C5[] = {
  {&(_ZTV7S5845C5[7]),  7,45},
  {&(_tg__ZTV7S5845C6__A__7S5845C5[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C6__7S5845C5[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C6__7S5845C5[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C6__7S5845C5[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C6__A__7S5845C5[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C6__A__7S5845C5[5]),  5,7},
  {&(_ZTV7S5845C5[15]),  15,45},
  {&(_ZTV7S5845C5[22]),  22,45},
  {&(_ZTV7S5845C5[32]),  32,45},
  {&(_ZTV7S5845C5[42]),  42,45},
  {&(_tg__ZTV7S5845C7__7S5845C5[3]),  3,5},
  {&(_tg__ZTV8S5845C10__7S5845C5[6]),  6,8},
  {&(_tg__ZTV7S5845C88S5845C10__A2__7S5845C5[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C88S5845C10__A2__7S5845C5[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C88S5845C10__A2__7S5845C5[4]),  4,6},
  {&(_tg__ZTV7S5845C7__8S5845C10__7S5845C5[5]),  5,7},
  {&(_tg__ZTV7S5845C6__8S5845C10__7S5845C5[8]),  8,11},
  {&(_tg__ZTV7S5845C4__A1__8S5845C10__7S5845C5[4]),  4,6},
  {&(_tg__ZTV7S5845C6__A1__7S5845C5[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C6__A1__7S5845C5[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C6__A1__7S5845C5[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A1__7S5845C5[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C6__A1__7S5845C5[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C6__A1__7S5845C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S5845C5[];
extern  VTBL_ENTRY _ZTV7S5845C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C5[];
Class_Descriptor cd_S5845C5 = {  "S5845C5", // class name
  bases_S5845C5, 12,
  &(vtc_S5845C5[0]), // expected_vtbl_contents
  &(vtt_S5845C5[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI7S5845C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5845C5),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5845C5),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5845C3  : virtual S5845C4 , S5845C5 , S5845C8 , S5845C7 , S5845C6 {
  int s5845c3f0;
  int s5845c3f1[6];
  void *s5845c3f2;
  void *s5845c3f3;
  int s5845c3f4[9];
  char s5845c3f5;
  void *s5845c3f6;
  char s5845c3f7;
  void *s5845c3f8;
  short s5845c3f9;
  virtual void  v8(); // _ZN7S5845C32v8Ev
  virtual void  v9(); // _ZN7S5845C32v9Ev
  ~S5845C3(); // tgen
  S5845C3(); // tgen
};
//SIG(-1 S5845C3) C1{ VBC2{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ VBC2 BC4{ BC5{ m Fi} VBC2 VBC6{ VBC5 BC2 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC2 v5 FL[8] Fp[7] Fs} v6 v7 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v8 Fp Fs[2] FD[2] Fc FC6 FD FC7} v9 Fi Fc Fc:1} BC7 BC6 BC4 v1 v2 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs}


void  S5845C3 ::v8(){vfunc_called(this, "_ZN7S5845C32v8Ev");}
void  S5845C3 ::v9(){vfunc_called(this, "_ZN7S5845C32v9Ev");}
S5845C3 ::~S5845C3(){ note_dtor("S5845C3", this);} // tgen
S5845C3 ::S5845C3(){ note_ctor("S5845C3", this);} // tgen

static void Test_S5845C3()
{
  extern Class_Descriptor cd_S5845C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(154,456)];
    init_test(&cd_S5845C3, buf);
    S5845C3 *dp, &lv = *(dp=new (buf) S5845C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2448,1820), "sizeof(S5845C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C3)");
    /*is_ambiguous_... S5845C3::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C5*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*)(S5845C5*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*)(S5845C5*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C10*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*), ABISELECT(944,708), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*)(S5845C5*), ABISELECT(132,100), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*)(S5845C5*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C10*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*), ABISELECT(1280,972), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*)(S5845C5*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*)(S5845C5*), ABISELECT(1104,832), "S5845C3");
    check_base_class_offset(lv, (S5845C7*)(S5845C10*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C10*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*), ABISELECT(1104,832), "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*)(S5845C5*), 0, "S5845C3");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C6*)(S5845C5*), 0, "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*), ABISELECT(2324,1736), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*), ABISELECT(2192,1636), "S5845C3");
    check_base_class_offset(lv, (S5845C6*)(S5845C10*), ABISELECT(2192,1636), "S5845C3");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C10*), ABISELECT(1296,976), "S5845C3");
    check_base_class_offset(lv, (S5845C10*)(S5845C5*), ABISELECT(1296,976), "S5845C3");
    check_base_class_offset(lv, (S5845C5*), 0, "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C8*), ABISELECT(264,192), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(400,292), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S5845C7*), ABISELECT(400,292), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*), ABISELECT(708,532), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*), ABISELECT(576,432), "S5845C3");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C6*), ABISELECT(576,432), "S5845C3");
    check_field_offset(lv, s5845c3f0, ABISELECT(828,616), "S5845C3.s5845c3f0");
    check_field_offset(lv, s5845c3f1, ABISELECT(832,620), "S5845C3.s5845c3f1");
    check_field_offset(lv, s5845c3f2, ABISELECT(856,644), "S5845C3.s5845c3f2");
    check_field_offset(lv, s5845c3f3, ABISELECT(864,648), "S5845C3.s5845c3f3");
    check_field_offset(lv, s5845c3f4, ABISELECT(872,652), "S5845C3.s5845c3f4");
    check_field_offset(lv, s5845c3f5, ABISELECT(908,688), "S5845C3.s5845c3f5");
    check_field_offset(lv, s5845c3f6, ABISELECT(912,692), "S5845C3.s5845c3f6");
    check_field_offset(lv, s5845c3f7, ABISELECT(920,696), "S5845C3.s5845c3f7");
    check_field_offset(lv, s5845c3f8, ABISELECT(928,700), "S5845C3.s5845c3f8");
    check_field_offset(lv, s5845c3f9, ABISELECT(936,704), "S5845C3.s5845c3f9");
    test_class_info(&lv, &cd_S5845C3);
    dp->~S5845C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C3(Test_S5845C3, "S5845C3", ABISELECT(2448,1820));

#else // __cplusplus

extern void _ZN7S5845C3C1Ev();
extern void _ZN7S5845C3D1Ev();
Name_Map name_map_S5845C3[] = {
  NSPAIR(_ZN7S5845C3C1Ev),
  NSPAIR(_ZN7S5845C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C10;
extern VTBL_ENTRY _ZTI8S5845C10[];
extern  VTBL_ENTRY _ZTV8S5845C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5845C10[];
extern Class_Descriptor cd_S5845C5;
extern VTBL_ENTRY _ZTI7S5845C5[];
extern  VTBL_ENTRY _ZTV7S5845C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C5[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
static Base_Class bases_S5845C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5845C4,    ABISELECT(944,708), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(1280,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5845C4,    ABISELECT(1104,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(1104,832), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5845C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5845C6,    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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2324,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5845C8,    ABISELECT(2192,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5845C6,    ABISELECT(2192,1636), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5845C8,    ABISELECT(1296,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5845C10,    ABISELECT(1296,976), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S5845C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5845C8,    ABISELECT(264,192), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5845C4,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(400,292), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5845C8,    ABISELECT(576,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S5845C6,    ABISELECT(576,432), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5845C3[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C52v7Ev();
extern void _ZN7S5845C32v8Ev();
extern void _ZN7S5845C32v9Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY vtc_S5845C3[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5845C52v7Ev,
  (VTBL_ENTRY)&_ZN7S5845C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5845C32v9Ev,
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  ABISELECT(880,680),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S5845C3[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C52v7Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C5__7S5845C3[] = {
  ABISELECT(2192,1636),
  ABISELECT(1296,976),
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5845C52v7Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C67S5845C5__7S5845C3[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C67S5845C5__7S5845C3[] = {
  ABISELECT(944,708),
  ABISELECT(1104,832),
  ABISELECT(1280,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C67S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C67S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C67S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C67S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(-944,-708),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1104,-832),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5845C10__7S5845C5__7S5845C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1296,-976),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A1__7S5845C5__7S5845C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2192,-1636),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C8__A3__7S5845C3[] = {
  ABISELECT(680,516),
  ABISELECT(840,640),
  ABISELECT(1016,780),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C8__A3__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-840,-640),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C8__A3__7S5845C3[] = {
  0,
  0,
  ABISELECT(-680,-516),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__A__7S5845C3[] = {
  ABISELECT(880,680),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A__7S5845C3[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C6__A4__7S5845C3[] = {
  ABISELECT(368,276),
  ABISELECT(528,400),
  ABISELECT(704,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C6__A4__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A4__7S5845C3[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C6__A__7S5845C3[] = {
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6__A__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-528,-400),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C3[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5845C10__7S5845C3[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C88S5845C10__A2__7S5845C3[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C88S5845C10__A2__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C88S5845C10__A2__7S5845C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__8S5845C10__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__8S5845C10__7S5845C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__8S5845C10__7S5845C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A1__7S5845C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C6__A1__7S5845C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C6__A1__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A1__7S5845C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C6__A1__7S5845C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6__A1__7S5845C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
static  VTT_ENTRY vtt_S5845C3[] = {
  {&(_ZTV7S5845C3[7]),  7,66},
  {&(_tg__ZTV7S5845C5__7S5845C3[7]),  7,11},
  {&(_tg__ZTV7S5845C67S5845C5__7S5845C3[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C67S5845C5__7S5845C3[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C67S5845C5__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C67S5845C5__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C67S5845C5__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C67S5845C5__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C4__7S5845C5__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C5__7S5845C3[5]),  5,7},
  {&(_tg__ZTV8S5845C10__7S5845C5__7S5845C3[8]),  8,10},
  {&(_tg__ZTV7S5845C6__A1__7S5845C5__7S5845C3[8]),  8,11},
  {&(_tg__ZTV7S5845C8__A3__7S5845C3[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C8__A3__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C8__A3__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C7__A__7S5845C3[3]),  3,5},
  {&(_tg__ZTV7S5845C6__A__7S5845C3[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C6__A4__7S5845C3[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C6__A4__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A4__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C6__A__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C6__A__7S5845C3[5]),  5,7},
  {&(_ZTV7S5845C3[36]),  36,66},
  {&(_ZTV7S5845C3[43]),  43,66},
  {&(_ZTV7S5845C3[53]),  53,66},
  {&(_ZTV7S5845C3[63]),  63,66},
  {&(_ZTV7S5845C3[18]),  18,66},
  {&(_ZTV7S5845C3[22]),  22,66},
  {&(_ZTV7S5845C3[29]),  29,66},
  {&(_tg__ZTV7S5845C7__7S5845C3[3]),  3,5},
  {&(_tg__ZTV8S5845C10__7S5845C3[6]),  6,8},
  {&(_tg__ZTV7S5845C88S5845C10__A2__7S5845C3[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C88S5845C10__A2__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C88S5845C10__A2__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C7__8S5845C10__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C6__8S5845C10__7S5845C3[8]),  8,11},
  {&(_tg__ZTV7S5845C4__A1__8S5845C10__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C6__A1__7S5845C3[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C6__A1__7S5845C3[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C6__A1__7S5845C3[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A1__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C6__A1__7S5845C3[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C6__A1__7S5845C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S5845C3[];
extern  VTBL_ENTRY _ZTV7S5845C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C3[];
Class_Descriptor cd_S5845C3 = {  "S5845C3", // class name
  bases_S5845C3, 19,
  &(vtc_S5845C3[0]), // expected_vtbl_contents
  &(vtt_S5845C3[0]), // expected_vtt_contents
  ABISELECT(2448,1820), // object size
  NSPAIRA(_ZTI7S5845C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S5845C3),66, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5845C3),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5845C1  : S1538C9_nt , S5845C3 {
  void *s5845c1f0;
  void *s5845c1f1[2];
  short s5845c1f2;
  int s5845c1f3;
  void *s5845c1f4;
  virtual  ~S5845C1(); // _ZN7S5845C1D2Ev
  S5845C1(); // tgen
};
//SIG(1 S5845C1) C1{ BC2{ m Fi} BC3{ VBC4{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC5{ VBC4 BC6{ BC2 VBC4 VBC7{ VBC2 BC4 Fi Fs[2] FL} BC8{ VBC2 VBC7 VBC4 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC10{ VBC7 VBC6 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} BC8 BC7 BC6 v8 v9 Fi Fi[6] Fp Fp Fi[9] Fc Fp Fc Fp Fs} vd Fp Fp[2] Fs Fi Fp}


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

static void Test_S5845C1()
{
  extern Class_Descriptor cd_S5845C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(157,463)];
    init_test(&cd_S5845C1, buf);
    S5845C1 *dp, &lv = *(dp=new (buf) S5845C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2496,1848), "sizeof(S5845C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5845C1)");
    /*is_ambiguous_... S5845C1::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(940,708), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C4 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C5*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*)(S5845C5*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*)(S5845C5*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C10*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C6*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C8*)(S5845C6*)(S5845C3*), ABISELECT(992,736), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*)(S5845C5*)(S5845C3*), ABISELECT(132,100), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*)(S5845C5*)(S5845C3*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C10*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C3*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C7*)(S5845C3*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C8*)(S5845C6*)(S5845C3*), ABISELECT(1328,1000), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C7 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C7*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*)(S5845C5*)(S5845C3*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*)(S5845C5*)(S5845C3*), ABISELECT(1152,860), "S5845C1");
    check_base_class_offset(lv, (S5845C7*)(S5845C10*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C10*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C3*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C6*)(S5845C3*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C8*)(S5845C6*)(S5845C3*), ABISELECT(1152,860), "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*)(S5845C5*)(S5845C3*), 0, "S5845C1");
    /*is_ambiguous_... S5845C5::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C6*)(S5845C5*)(S5845C3*), 0, "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*), ABISELECT(2372,1764), "S5845C1");
    /*is_ambiguous_... S5845C1::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*), ABISELECT(2240,1664), "S5845C1");
    check_base_class_offset(lv, (S5845C6*)(S5845C10*), ABISELECT(2240,1664), "S5845C1");
    /*is_ambiguous_... S5845C10::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C10*), ABISELECT(1344,1004), "S5845C1");
    check_base_class_offset(lv, (S5845C10*)(S5845C5*)(S5845C3*), ABISELECT(1344,1004), "S5845C1");
    check_base_class_offset(lv, (S5845C5*)(S5845C3*), 0, "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C8 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C3*), ABISELECT(264,192), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S5845C4*)(S5845C7*)(S5845C3*), ABISELECT(400,292), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C7 */ AMB_check_base_class_offset(lv, (S5845C7*)(S5845C3*), ABISELECT(400,292), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S5845C6*)(S5845C3*), ABISELECT(708,532), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C8*)(S5845C6*)(S5845C3*), ABISELECT(576,432), "S5845C1");
    /*is_ambiguous_... S5845C3::S5845C6 */ AMB_check_base_class_offset(lv, (S5845C6*)(S5845C3*), ABISELECT(576,432), "S5845C1");
    check_base_class_offset(lv, (S5845C3*), 0, "S5845C1");
    check_field_offset(lv, s5845c1f0, ABISELECT(944,712), "S5845C1.s5845c1f0");
    check_field_offset(lv, s5845c1f1, ABISELECT(952,716), "S5845C1.s5845c1f1");
    check_field_offset(lv, s5845c1f2, ABISELECT(968,724), "S5845C1.s5845c1f2");
    check_field_offset(lv, s5845c1f3, ABISELECT(972,728), "S5845C1.s5845c1f3");
    check_field_offset(lv, s5845c1f4, ABISELECT(976,732), "S5845C1.s5845c1f4");
    test_class_info(&lv, &cd_S5845C1);
    dp->~S5845C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5845C1(Test_S5845C1, "S5845C1", ABISELECT(2496,1848));

#else // __cplusplus

extern void _ZN7S5845C1C1Ev();
extern void _ZN7S5845C1D2Ev();
Name_Map name_map_S5845C1[] = {
  NSPAIR(_ZN7S5845C1C1Ev),
  NSPAIR(_ZN7S5845C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C10;
extern VTBL_ENTRY _ZTI8S5845C10[];
extern  VTBL_ENTRY _ZTV8S5845C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5845C10[];
extern Class_Descriptor cd_S5845C5;
extern VTBL_ENTRY _ZTI7S5845C5[];
extern  VTBL_ENTRY _ZTV7S5845C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C5[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C4;
extern VTBL_ENTRY _ZTI7S5845C4[];
extern  VTBL_ENTRY _ZTV7S5845C4[];
extern Class_Descriptor cd_S5845C7;
extern VTBL_ENTRY _ZTI7S5845C7[];
extern  VTBL_ENTRY _ZTV7S5845C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S5845C8;
extern VTBL_ENTRY _ZTI7S5845C8[];
extern  VTBL_ENTRY _ZTV7S5845C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C8[];
extern Class_Descriptor cd_S5845C6;
extern VTBL_ENTRY _ZTI7S5845C6[];
extern  VTBL_ENTRY _ZTV7S5845C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C6[];
extern Class_Descriptor cd_S5845C3;
extern VTBL_ENTRY _ZTI7S5845C3[];
extern  VTBL_ENTRY _ZTV7S5845C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C3[];
static Base_Class bases_S5845C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(940,708), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5845C4,    ABISELECT(992,736), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(1328,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S5845C4,    ABISELECT(1152,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5845C7,    ABISELECT(1152,860), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S5845C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5845C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2372,1764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5845C8,    ABISELECT(2240,1664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5845C6,    ABISELECT(2240,1664), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S5845C8,    ABISELECT(1344,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5845C10,    ABISELECT(1344,1004), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S5845C5,    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
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5845C8,    ABISELECT(264,192), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5845C4,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5845C7,    ABISELECT(400,292), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(708,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5845C8,    ABISELECT(576,432), //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
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5845C6,    ABISELECT(576,432), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5845C3,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5845C1[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C52v7Ev();
extern void _ZN7S5845C32v8Ev();
extern void _ZN7S5845C32v9Ev();
extern void _ZN7S5845C1D1Ev();
extern void _ZN7S5845C1D0Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY vtc_S5845C1[] = {
  ABISELECT(2240,1664),
  ABISELECT(1344,1004),
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5845C52v7Ev,
  (VTBL_ENTRY)&_ZN7S5845C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5845C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5845C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5845C1D0Ev,
  ABISELECT(728,544),
  ABISELECT(888,668),
  ABISELECT(1064,808),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  ABISELECT(928,708),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1344,-1004),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2240,-1664),
  (VTBL_ENTRY)&(_ZTI7S5845C1[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S5845C1[];
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C52v7Ev();
extern void _ZN7S5845C32v8Ev();
extern void _ZN7S5845C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C3__7S5845C1[] = {
  ABISELECT(2240,1664),
  ABISELECT(1344,1004),
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5845C52v7Ev,
  (VTBL_ENTRY)&_ZN7S5845C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5845C32v9Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
extern void _ZN7S5845C52v7Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C57S5845C3__7S5845C1[] = {
  ABISELECT(2240,1664),
  ABISELECT(1344,1004),
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
  (VTBL_ENTRY)&_ZN7S5845C52v7Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C67S5845C57S5845C3__7S5845C1[] = {
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C67S5845C57S5845C3__7S5845C1[] = {
  ABISELECT(992,736),
  ABISELECT(1152,860),
  ABISELECT(1328,1000),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C67S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C67S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C67S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C67S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5845C10__7S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1344,-1004),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A1__7S5845C57S5845C3__7S5845C1[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2240,-1664),
  (VTBL_ENTRY)&(_ZTI7S5845C5[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C3__A3__7S5845C1[] = {
  ABISELECT(728,544),
  ABISELECT(888,668),
  ABISELECT(1064,808),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C3__A3__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-888,-668),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C3__A3__7S5845C1[] = {
  0,
  0,
  ABISELECT(-728,-544),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C77S5845C3__A1__7S5845C1[] = {
  ABISELECT(928,708),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C67S5845C3__A2__7S5845C1[] = {
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C67S5845C3__A4__7S5845C1[] = {
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C67S5845C3__A4__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-576,-428),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C67S5845C3__A4__7S5845C1[] = {
  0,
  0,
  ABISELECT(-416,-304),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C67S5845C3__A2__7S5845C1[] = {
  0,
  0,
  ABISELECT(-416,-304),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C67S5845C3__A2__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-576,-428),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(-992,-736),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-1152,-860),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5845C10__7S5845C3__7S5845C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-1344,-1004),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A1__7S5845C3__7S5845C1[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-2240,-1664),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C8__A3__7S5845C3__7S5845C1[] = {
  ABISELECT(728,544),
  ABISELECT(888,668),
  ABISELECT(1064,808),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__A__7S5845C3__7S5845C1[] = {
  ABISELECT(928,708),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A__7S5845C3__7S5845C1[] = {
  ABISELECT(416,304),
  ABISELECT(576,428),
  ABISELECT(752,568),
  ABISELECT(-576,-432),
  (VTBL_ENTRY)&(_ZTI7S5845C3[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C1[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C7[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN8S5845C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S5845C10__7S5845C1[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN8S5845C102v6Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C88S5845C10__A2__7S5845C1[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C88S5845C10__A2__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C88S5845C10__A2__7S5845C1[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__8S5845C10__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__8S5845C10__7S5845C1[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__8S5845C10__7S5845C1[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S5845C10[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C82v3Ev();
extern void _ZN7S5845C62v4Ev();
extern void _ZN7S5845C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C6__A1__7S5845C1[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v4Ev,
  (VTBL_ENTRY)&_ZN7S5845C62v5Ev,
};
extern void _ZN7S5845C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C87S5845C6__A1__7S5845C1[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C82v3Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C87S5845C6__A1__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A1__7S5845C1[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5845C8[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C4__7S5845C6__A1__7S5845C1[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
extern void _ZN7S5845C42v1Ev();
extern void _ZN7S5845C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5845C7__7S5845C6__A1__7S5845C1[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI7S5845C6[0]),
  (VTBL_ENTRY)&_ZN7S5845C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5845C42v2Ev,
};
static  VTT_ENTRY vtt_S5845C1[] = {
  {&(_ZTV7S5845C1[7]),  7,68},
  {&(_tg__ZTV7S5845C3__7S5845C1[7]),  7,13},
  {&(_tg__ZTV7S5845C57S5845C3__7S5845C1[7]),  7,11},
  {&(_tg__ZTV7S5845C67S5845C57S5845C3__7S5845C1[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C67S5845C57S5845C3__7S5845C1[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C67S5845C57S5845C3__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C67S5845C57S5845C3__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C67S5845C57S5845C3__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C67S5845C57S5845C3__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__7S5845C57S5845C3__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C57S5845C3__7S5845C1[5]),  5,7},
  {&(_tg__ZTV8S5845C10__7S5845C57S5845C3__7S5845C1[8]),  8,10},
  {&(_tg__ZTV7S5845C6__A1__7S5845C57S5845C3__7S5845C1[8]),  8,11},
  {&(_tg__ZTV7S5845C87S5845C3__A3__7S5845C1[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C3__A3__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C3__A3__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C77S5845C3__A1__7S5845C1[3]),  3,5},
  {&(_tg__ZTV7S5845C67S5845C3__A2__7S5845C1[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C67S5845C3__A4__7S5845C1[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C67S5845C3__A4__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C67S5845C3__A4__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C67S5845C3__A2__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C67S5845C3__A2__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__7S5845C3__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C3__7S5845C1[5]),  5,7},
  {&(_tg__ZTV8S5845C10__7S5845C3__7S5845C1[8]),  8,10},
  {&(_tg__ZTV7S5845C6__A1__7S5845C3__7S5845C1[8]),  8,11},
  {&(_tg__ZTV7S5845C8__A3__7S5845C3__7S5845C1[5]),  5,6},
  {&(_tg__ZTV7S5845C7__A__7S5845C3__7S5845C1[3]),  3,5},
  {&(_tg__ZTV7S5845C6__A__7S5845C3__7S5845C1[5]),  5,8},
  {&(_ZTV7S5845C1[38]),  38,68},
  {&(_ZTV7S5845C1[45]),  45,68},
  {&(_ZTV7S5845C1[55]),  55,68},
  {&(_ZTV7S5845C1[65]),  65,68},
  {&(_ZTV7S5845C1[20]),  20,68},
  {&(_ZTV7S5845C1[24]),  24,68},
  {&(_ZTV7S5845C1[31]),  31,68},
  {&(_tg__ZTV7S5845C7__7S5845C1[3]),  3,5},
  {&(_tg__ZTV8S5845C10__7S5845C1[6]),  6,8},
  {&(_tg__ZTV7S5845C88S5845C10__A2__7S5845C1[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C88S5845C10__A2__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C88S5845C10__A2__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C7__8S5845C10__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C6__8S5845C10__7S5845C1[8]),  8,11},
  {&(_tg__ZTV7S5845C4__A1__8S5845C10__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C6__A1__7S5845C1[5]),  5,8},
  {&(_tg__ZTV7S5845C87S5845C6__A1__7S5845C1[5]),  5,6},
  {&(_tg__ZTV7S5845C7__7S5845C87S5845C6__A1__7S5845C1[5]),  5,7},
  {&(_tg__ZTV7S5845C4__A1__7S5845C87S5845C6__A1__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C4__7S5845C6__A1__7S5845C1[4]),  4,6},
  {&(_tg__ZTV7S5845C7__7S5845C6__A1__7S5845C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S5845C1[];
extern  VTBL_ENTRY _ZTV7S5845C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5845C1[];
Class_Descriptor cd_S5845C1 = {  "S5845C1", // class name
  bases_S5845C1, 21,
  &(vtc_S5845C1[0]), // expected_vtbl_contents
  &(vtt_S5845C1[0]), // expected_vtt_contents
  ABISELECT(2496,1848), // object size
  NSPAIRA(_ZTI7S5845C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5845C1),68, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5845C1),51, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19025C5  : virtual S19490C26 {
  virtual void  v1(); // _ZN8S19025C52v1Ev
  ~S19025C5(); // tgen
  S19025C5(); // tgen
};
//SIG(-1 S19025C5) C1{ VBC2{ m} v1}


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

static void Test_S19025C5()
{
  extern Class_Descriptor cd_S19025C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19025C5, buf);
    S19025C5 *dp, &lv = *(dp=new (buf) S19025C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19025C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19025C5)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19025C5");
    test_class_info(&lv, &cd_S19025C5);
    dp->~S19025C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C5(Test_S19025C5, "S19025C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19025C5C1Ev();
extern void _ZN8S19025C5D1Ev();
Name_Map name_map_S19025C5[] = {
  NSPAIR(_ZN8S19025C5C1Ev),
  NSPAIR(_ZN8S19025C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19025C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19025C5[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY vtc_S19025C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19025C5[];
static  VTT_ENTRY vtt_S19025C5[] = {
  {&(_ZTV8S19025C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
Class_Descriptor cd_S19025C5 = {  "S19025C5", // class name
  bases_S19025C5, 1,
  &(vtc_S19025C5[0]), // expected_vtbl_contents
  &(vtt_S19025C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19025C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19025C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C5),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  S19025C3  : S19490C26 , S19025C5 {
  int s19025c3f0[2];
  virtual void  v2(); // _ZN8S19025C32v2Ev
  ~S19025C3(); // tgen
  S19025C3(); // tgen
};
//SIG(-1 S19025C3) C1{ BC2{ m} BC3{ VBC2 v2} v1 Fi[2]}


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

static void Test_S19025C3()
{
  extern Class_Descriptor cd_S19025C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19025C3, buf);
    S19025C3 *dp, &lv = *(dp=new (buf) S19025C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19025C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19025C3)");
    /*is_ambiguous_... S19025C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19025C3");
    check_base_class_offset(lv, (S19490C26*)(S19025C5*), ABISELECT(16,12), "S19025C3");
    check_base_class_offset(lv, (S19025C5*), 0, "S19025C3");
    check_field_offset(lv, s19025c3f0, ABISELECT(8,4), "S19025C3.s19025c3f0");
    test_class_info(&lv, &cd_S19025C3);
    dp->~S19025C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C3(Test_S19025C3, "S19025C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19025C3C1Ev();
extern void _ZN8S19025C3D1Ev();
Name_Map name_map_S19025C3[] = {
  NSPAIR(_ZN8S19025C3C1Ev),
  NSPAIR(_ZN8S19025C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
static Base_Class bases_S19025C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19025C5,    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 _ZTI8S19025C3[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY vtc_S19025C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19025C3[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__8S19025C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C3[] = {
  {&(_ZTV8S19025C3[3]),  3,5},
  {&(_tg__ZTV8S19025C5__8S19025C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
Class_Descriptor cd_S19025C3 = {  "S19025C3", // class name
  bases_S19025C3, 3,
  &(vtc_S19025C3[0]), // expected_vtbl_contents
  &(vtt_S19025C3[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19025C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19025C3),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C3),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  S19025C6  : virtual S19490C26 , virtual S19025C3 , S19025C5 {
  int s19025c6f0[2];
  void *s19025c6f1[3];
  ~S19025C6(); // tgen
  S19025C6(); // tgen
};
//SIG(-1 S19025C6) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC4 Fi[2] Fp[3]}


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

static void Test_S19025C6()
{
  extern Class_Descriptor cd_S19025C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S19025C6, buf);
    S19025C6 *dp, &lv = *(dp=new (buf) S19025C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S19025C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19025C6)");
    /*is_ambiguous_... S19025C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19025C6");
    check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), 0, "S19025C6");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*), 0, "S19025C6");
    /*is_ambiguous_... S19025C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(40,24), "S19025C6");
    check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(40,24), "S19025C6");
    check_base_class_offset(lv, (S19025C3*), ABISELECT(40,24), "S19025C6");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*), 0, "S19025C6");
    check_field_offset(lv, s19025c6f0, ABISELECT(8,4), "S19025C6.s19025c6f0");
    check_field_offset(lv, s19025c6f1, ABISELECT(16,12), "S19025C6.s19025c6f1");
    test_class_info(&lv, &cd_S19025C6);
    dp->~S19025C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C6(Test_S19025C6, "S19025C6", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S19025C6C1Ev();
extern void _ZN8S19025C6D1Ev();
Name_Map name_map_S19025C6[] = {
  NSPAIR(_ZN8S19025C6C1Ev),
  NSPAIR(_ZN8S19025C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
static Base_Class bases_S19025C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(40,24), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(40,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19025C5,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19025C6[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY vtc_S19025C6[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19025C6[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A1__8S19025C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__8S19025C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C6[] = {
  {&(_ZTV8S19025C6[4]),  4,12},
  {&(_tg__ZTV8S19025C5__A1__8S19025C6[3]),  3,4},
  {&(_ZTV8S19025C6[10]),  10,12},
  {&(_tg__ZTV8S19025C3__8S19025C6[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__8S19025C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
Class_Descriptor cd_S19025C6 = {  "S19025C6", // class name
  bases_S19025C6, 5,
  &(vtc_S19025C6[0]), // expected_vtbl_contents
  &(vtt_S19025C6[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S19025C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19025C6),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C6),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19025C7  : S19490C26 , S19025C3 , S19025C6 , S19025C5 {
  int s19025c7f0[2];
  ~S19025C7(); // tgen
  S19025C7(); // tgen
};
//SIG(-1 S19025C7) C1{ BC2{ m} BC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC5{ VBC2 VBC3 BC4 Fi[2] Fp[3]} BC4 Fi[2]}


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

static void Test_S19025C7()
{
  extern Class_Descriptor cd_S19025C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S19025C7, buf);
    S19025C7 *dp, &lv = *(dp=new (buf) S19025C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S19025C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19025C7)");
    /*is_ambiguous_... S19025C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(16,12), "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), 0, "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), ABISELECT(72,48), "S19025C7");
    /*is_ambiguous_... S19025C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*), ABISELECT(72,48), "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), ABISELECT(72,48), "S19025C7");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*), ABISELECT(72,48), "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*), ABISELECT(72,48), "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), 0, "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*), 0, "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(80,52), "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(80,52), "S19025C7");
    check_base_class_offset(lv, (S19025C3*)(S19025C6*), ABISELECT(80,52), "S19025C7");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*), ABISELECT(16,12), "S19025C7");
    check_base_class_offset(lv, (S19025C6*), ABISELECT(16,12), "S19025C7");
    /*is_ambiguous_... S19025C7::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*), ABISELECT(56,36), "S19025C7");
    check_field_offset(lv, s19025c7f0, ABISELECT(64,40), "S19025C7.s19025c7f0");
    test_class_info(&lv, &cd_S19025C7);
    dp->~S19025C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C7(Test_S19025C7, "S19025C7", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S19025C7C1Ev();
extern void _ZN8S19025C7D1Ev();
Name_Map name_map_S19025C7[] = {
  NSPAIR(_ZN8S19025C7C1Ev),
  NSPAIR(_ZN8S19025C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
static Base_Class bases_S19025C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    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, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19025C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19025C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(80,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(16,12), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19025C5,    ABISELECT(56,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19025C7[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY vtc_S19025C7[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(16,12),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19025C7[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__8S19025C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C6__A2__8S19025C7[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6__8S19025C7[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A1__8S19025C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C7[] = {
  {&(_ZTV8S19025C7[4]),  4,22},
  {&(_tg__ZTV8S19025C3__A__8S19025C7[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__8S19025C7[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C6__A2__8S19025C7[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C6__8S19025C7[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7[3]),  3,4},
  {&(_ZTV8S19025C7[10]),  10,22},
  {&(_ZTV8S19025C7[20]),  20,22},
  {&(_ZTV8S19025C7[14]),  14,22},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A1__8S19025C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
Class_Descriptor cd_S19025C7 = {  "S19025C7", // class name
  bases_S19025C7, 11,
  &(vtc_S19025C7[0]), // expected_vtbl_contents
  &(vtt_S19025C7[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S19025C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19025C7),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C7),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19025C8  : S19490C26 , S19025C5 , virtual S19025C7 , S19025C6 , S19025C3 {
  ::S19025C3 s19025c8f0;
  short s19025c8f1;
  int s19025c8f2[2];
  void *s19025c8f3[3];
  ::S19025C7 s19025c8f4;
  virtual void  v3(); // _ZN8S19025C82v3Ev
  ~S19025C8(); // tgen
  S19025C8(); // tgen
};
//SIG(-1 S19025C8) C1{ BC2{ m} BC3{ VBC2 v2} VBC4{ BC2 BC5{ BC2 BC3 v3 Fi[2]} BC6{ VBC2 VBC5 BC3 Fi[2] Fp[3]} BC3 Fi[2]} BC6 BC5 v1 FC5 Fs Fi[2] Fp[3] FC4}


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

static void Test_S19025C8()
{
  extern Class_Descriptor cd_S19025C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S19025C8, buf);
    S19025C8 *dp, &lv = *(dp=new (buf) S19025C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S19025C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19025C8)");
    /*is_ambiguous_... S19025C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C7::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), ABISELECT(224,144), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*), 0, "S19025C8");
    /*is_ambiguous_... S19025C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(248,160), "S19025C8");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(232,148), "S19025C8");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(232,148), "S19025C8");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(232,148), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(304,196), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(304,196), "S19025C8");
    check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(304,196), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*), ABISELECT(304,196), "S19025C8");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(248,160), "S19025C8");
    check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(248,160), "S19025C8");
    /*is_ambiguous_... S19025C7::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(288,184), "S19025C8");
    check_base_class_offset(lv, (S19025C7*), ABISELECT(232,148), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*), ABISELECT(8,4), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*), ABISELECT(8,4), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(48,28), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(48,28), "S19025C8");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*), ABISELECT(48,28), "S19025C8");
    check_field_offset(lv, s19025c8f0, ABISELECT(64,40), "S19025C8.s19025c8f0");
    check_field_offset(lv, s19025c8f1, ABISELECT(88,56), "S19025C8.s19025c8f1");
    check_field_offset(lv, s19025c8f2, ABISELECT(92,60), "S19025C8.s19025c8f2");
    check_field_offset(lv, s19025c8f3, ABISELECT(104,68), "S19025C8.s19025c8f3");
    check_field_offset(lv, s19025c8f4, ABISELECT(128,80), "S19025C8.s19025c8f4");
    test_class_info(&lv, &cd_S19025C8);
    dp->~S19025C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C8(Test_S19025C8, "S19025C8", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN8S19025C8C1Ev();
extern void _ZN8S19025C8D1Ev();
Name_Map name_map_S19025C8[] = {
  NSPAIR(_ZN8S19025C8C1Ev),
  NSPAIR(_ZN8S19025C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
static Base_Class bases_S19025C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19025C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(248,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(304,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(248,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(288,184), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(232,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19025C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19025C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19025C8[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY vtc_S19025C8[] = {
  ABISELECT(304,196),
  ABISELECT(232,148),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
  ABISELECT(296,192),
  ABISELECT(216,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(176,116),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19025C8[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__8S19025C8[] = {
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A1__8S19025C8[] = {
  ABISELECT(296,192),
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C6__A5__8S19025C8[] = {
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6__A1__8S19025C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C8[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A6__8S19025C8[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C8[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__8S19025C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A1__8S19025C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C8[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A3__8S19025C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__8S19025C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C8[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__8S19025C8[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__8S19025C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__8S19025C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C8[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A2__8S19025C8[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C8[] = {
  {&(_ZTV8S19025C8[5]),  5,41},
  {&(_tg__ZTV8S19025C5__8S19025C8[3]),  3,4},
  {&(_tg__ZTV8S19025C6__A1__8S19025C8[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C6__A5__8S19025C8[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C6__A1__8S19025C8[5]),  5,7},
  {&(_tg__ZTV8S19025C3__A__8S19025C8[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A6__8S19025C8[3]),  3,4},
  {&(_ZTV8S19025C8[23]),  23,41},
  {&(_ZTV8S19025C8[29]),  29,41},
  {&(_ZTV8S19025C8[39]),  39,41},
  {&(_ZTV8S19025C8[33]),  33,41},
  {&(_ZTV8S19025C8[11]),  11,41},
  {&(_ZTV8S19025C8[15]),  15,41},
  {&(_tg__ZTV8S19025C7__8S19025C8[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__8S19025C8[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A1__8S19025C8[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C8[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A3__8S19025C8[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__8S19025C8[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C8[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__8S19025C8[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__8S19025C8[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__8S19025C8[3]),  3,4},
  {&(_tg__ZTV8S19025C3__A1__8S19025C8[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A2__8S19025C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C8[];
extern  VTBL_ENTRY _ZTV8S19025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C8[];
Class_Descriptor cd_S19025C8 = {  "S19025C8", // class name
  bases_S19025C8, 19,
  &(vtc_S19025C8[0]), // expected_vtbl_contents
  &(vtt_S19025C8[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI8S19025C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19025C8),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C8),25, //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  S19025C2  : S19025C3 , virtual S19025C6 , S19025C7 , virtual S19025C8 {
  char s19025c2f0;
  short s19025c2f1[7];
  ~S19025C2(); // tgen
  S19025C2(); // tgen
};
//SIG(-1 S19025C2) C1{ BC2{ BC3{ m} BC4{ VBC3 v1} v2 Fi[2]} VBC5{ VBC3 VBC2 BC4 Fi[2] Fp[3]} BC6{ BC3 BC2 BC5 BC4 Fi[2]} VBC7{ BC3 BC4 VBC6 BC5 BC2 v3 FC2 Fs Fi[2] Fp[3] FC6} Fc Fs[7]}


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

static void Test_S19025C2()
{
  extern Class_Descriptor cd_S19025C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(58,77)];
    init_test(&cd_S19025C2, buf);
    S19025C2 *dp, &lv = *(dp=new (buf) S19025C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(456,304), "sizeof(S19025C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19025C2)");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), 0, "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C8*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C8*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C8*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C8*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), 0, "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*), 0, "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(144,100), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(144,100), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*), ABISELECT(144,100), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(144,100), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(144,100), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C8*), ABISELECT(144,100), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*), ABISELECT(104,76), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(32,24), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(16,12), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(16,12), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(16,12), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(32,24), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(32,24), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(72,48), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C7*), ABISELECT(16,12), "S19025C2");
    /*is_ambiguous_... S19025C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C8*), ABISELECT(160,112), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C8*), ABISELECT(160,112), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(400,268), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(384,256), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(384,256), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(384,256), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(400,268), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(400,268), "S19025C2");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(440,292), "S19025C2");
    check_base_class_offset(lv, (S19025C7*)(S19025C8*), ABISELECT(384,256), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C8*), ABISELECT(168,116), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C8*), ABISELECT(168,116), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C8*), ABISELECT(208,140), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C8*), ABISELECT(208,140), "S19025C2");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C8*), ABISELECT(208,140), "S19025C2");
    check_base_class_offset(lv, (S19025C8*), ABISELECT(160,112), "S19025C2");
    check_field_offset(lv, s19025c2f0, ABISELECT(88,60), "S19025C2.s19025c2f0");
    check_field_offset(lv, s19025c2f1, ABISELECT(90,62), "S19025C2.s19025c2f1");
    test_class_info(&lv, &cd_S19025C2);
    dp->~S19025C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C2(Test_S19025C2, "S19025C2", ABISELECT(456,304));

#else // __cplusplus

extern void _ZN8S19025C2C1Ev();
extern void _ZN8S19025C2D1Ev();
Name_Map name_map_S19025C2[] = {
  NSPAIR(_ZN8S19025C2C1Ev),
  NSPAIR(_ZN8S19025C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C8;
extern VTBL_ENTRY _ZTI8S19025C8[];
extern  VTBL_ENTRY _ZTV8S19025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C8[];
static Base_Class bases_S19025C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19025C5,    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
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19025C3,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(144,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, 0},
  {&cd_S19025C5,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(144,100), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(104,76), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S19025C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(16,12), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(32,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(72,48), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(400,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
    26, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    22, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(384,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(384,256), //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(400,268), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(400,268), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(440,292), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(384,256), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(168,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(168,116), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(208,140), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19025C8,    ABISELECT(160,112), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19025C2[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY vtc_S19025C2[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(128,88),
  ABISELECT(88,64),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(32,28),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-104,-64),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-336,-216),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19025C2[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C2[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__8S19025C2[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A__8S19025C2[] = {
  ABISELECT(128,88),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__A2__8S19025C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A3__8S19025C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A1__8S19025C2[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A4__8S19025C2[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__A1__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A5__8S19025C2[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__A__8S19025C2[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__A__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__A__8S19025C2[] = {
  ABISELECT(32,28),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C2[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C6__A2__8S19025C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A1__8S19025C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__8S19025C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C8__A6__8S19025C2[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A3__8S19025C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C8__A10__8S19025C2[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C8__A3__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A4__8S19025C2[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C8__A11__8S19025C2[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C8__8S19025C2[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C8__8S19025C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C8__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C8__8S19025C2[] = {
  ABISELECT(-336,-216),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A1__8S19025C8__8S19025C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C8__8S19025C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A1__8S19025C2[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__A3__8S19025C2[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A7__8S19025C2[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A2__8S19025C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A8__8S19025C2[] = {
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__A2__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A9__8S19025C2[] = {
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__A1__8S19025C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__A1__8S19025C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__A1__8S19025C2[] = {
  ABISELECT(-336,-216),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C2[] = {
  {&(_ZTV8S19025C2[7]),  7,74},
  {&(_tg__ZTV8S19025C3__A__8S19025C2[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C7__A__8S19025C2[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__A2__8S19025C2[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A3__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__A1__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A4__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__A1__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A5__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__A__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__A__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__A__8S19025C2[3]),  3,4},
  {&(_ZTV8S19025C2[29]),  29,74},
  {&(_ZTV8S19025C2[35]),  35,74},
  {&(_ZTV8S19025C2[13]),  13,74},
  {&(_ZTV8S19025C2[19]),  19,74},
  {&(_ZTV8S19025C2[23]),  23,74},
  {&(_ZTV8S19025C2[45]),  45,74},
  {&(_ZTV8S19025C2[63]),  63,74},
  {&(_ZTV8S19025C2[69]),  69,74},
  {&(_ZTV8S19025C2[73]),  73,74},
  {&(_ZTV8S19025C2[51]),  51,74},
  {&(_ZTV8S19025C2[55]),  55,74},
  {&(_tg__ZTV8S19025C6__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C6__A2__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C6__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C3__A1__8S19025C2[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A1__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C8__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C8__A6__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A3__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C8__A10__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C8__A3__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C38S19025C8__A4__8S19025C2[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C8__A11__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C7__8S19025C8__8S19025C2[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C8__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C8__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C8__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C6__A1__8S19025C8__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A__8S19025C8__8S19025C2[3]),  3,5},
  {&(_tg__ZTV8S19025C7__A1__8S19025C2[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__A3__8S19025C2[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A7__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__A2__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A8__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__A2__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A9__8S19025C2[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__A1__8S19025C2[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__A1__8S19025C2[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__A1__8S19025C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C2[];
extern  VTBL_ENTRY _ZTV8S19025C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C2[];
Class_Descriptor cd_S19025C2 = {  "S19025C2", // class name
  bases_S19025C2, 33,
  &(vtc_S19025C2[0]), // expected_vtbl_contents
  &(vtt_S19025C2[0]), // expected_vtt_contents
  ABISELECT(456,304), // object size
  NSPAIRA(_ZTI8S19025C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19025C2),74, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C2),52, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19025C10  : virtual S19490C26 , virtual S19025C8 , S19025C6 {
  long double s19025c10f0;
  void *s19025c10f1[10];
  ~S19025C10(); // tgen
  S19025C10(); // tgen
};
//SIG(-1 S19025C10) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} VBC5{ BC2 BC6{ BC2 BC4 v2 Fi[2]} BC7{ VBC2 VBC6 BC4 Fi[2] Fp[3]} BC4 Fi[2]} BC7 BC6 v3 FC6 Fs Fi[2] Fp[3] FC5} BC7 FD Fp[10]}


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

static void Test_S19025C10()
{
  extern Class_Descriptor cd_S19025C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,71)];
    init_test(&cd_S19025C10, buf);
    S19025C10 *dp, &lv = *(dp=new (buf) S19025C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,280), "sizeof(S19025C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19025C10)");
    /*is_ambiguous_... S19025C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C8*), 0, "S19025C10");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), 0, "S19025C10");
    /*is_ambiguous_... S19025C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), 0, "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), 0, "S19025C10");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), 0, "S19025C10");
    /*is_ambiguous_... S19025C7::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), 0, "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C8*), 0, "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C8*), 0, "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C8*), 0, "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*), 0, "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*), 0, "S19025C10");
    /*is_ambiguous_... S19025C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C8*), ABISELECT(144,76), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C8*), ABISELECT(144,76), "S19025C10");
    /*is_ambiguous_... S19025C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(384,232), "S19025C10");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(368,220), "S19025C10");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(368,220), "S19025C10");
    /*is_ambiguous_... S19025C7::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(368,220), "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(440,268), "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(440,268), "S19025C10");
    check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(440,268), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C8*), ABISELECT(440,268), "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*), ABISELECT(440,268), "S19025C10");
    /*is_ambiguous_... S19025C6::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(384,232), "S19025C10");
    check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(384,232), "S19025C10");
    /*is_ambiguous_... S19025C7::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(424,256), "S19025C10");
    check_base_class_offset(lv, (S19025C7*)(S19025C8*), ABISELECT(368,220), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C8*), ABISELECT(152,80), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C8*), ABISELECT(152,80), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C8*), ABISELECT(192,104), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C8*), ABISELECT(192,104), "S19025C10");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C8*), ABISELECT(192,104), "S19025C10");
    check_base_class_offset(lv, (S19025C8*), ABISELECT(144,76), "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*), 0, "S19025C10");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*), 0, "S19025C10");
    check_field_offset(lv, s19025c10f0, ABISELECT(48,24), "S19025C10.s19025c10f0");
    check_field_offset(lv, s19025c10f1, ABISELECT(64,36), "S19025C10.s19025c10f1");
    test_class_info(&lv, &cd_S19025C10);
    dp->~S19025C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C10(Test_S19025C10, "S19025C10", ABISELECT(464,280));

#else // __cplusplus

extern void _ZN9S19025C10C1Ev();
extern void _ZN9S19025C10D1Ev();
Name_Map name_map_S19025C10[] = {
  NSPAIR(_ZN9S19025C10C1Ev),
  NSPAIR(_ZN9S19025C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C8;
extern VTBL_ENTRY _ZTI8S19025C8[];
extern  VTBL_ENTRY _ZTV8S19025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C8[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
static Base_Class bases_S19025C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(368,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
    6, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(368,220), //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(368,220), //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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(440,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
    9, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(440,268), //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
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(440,268), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(384,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(384,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(424,256), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(368,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(152,80), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    18, //immediately_derived
  0, 0},
  {&cd_S19025C5,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(192,104), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19025C8,    ABISELECT(144,76), //bcp->offset
    7, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19025C5,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19025C6,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19025C10[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY vtc_S19025C10[] = {
  ABISELECT(368,220),
  ABISELECT(144,76),
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-424,-256),
  ABISELECT(-424,-256),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S19025C10[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A2__9S19025C10[] = {
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C6__A7__9S19025C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6__A2__9S19025C10[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__9S19025C10[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C8__9S19025C10[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A1__9S19025C10[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C8__A5__9S19025C10[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C8__A1__9S19025C10[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A2__9S19025C10[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C8__A6__9S19025C10[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C8__9S19025C10[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C8__9S19025C10[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C8__9S19025C10[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C8__9S19025C10[] = {
  ABISELECT(-424,-256),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A1__8S19025C8__9S19025C10[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C8__9S19025C10[] = {
  ABISELECT(-192,-104),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__9S19025C10[] = {
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__9S19025C10[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A1__9S19025C10[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__9S19025C10[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A3__9S19025C10[] = {
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__9S19025C10[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__9S19025C10[] = {
  ABISELECT(-424,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__9S19025C10[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__9S19025C10[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__9S19025C10[] = {
  ABISELECT(-424,-256),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__9S19025C10[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A2__9S19025C10[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C10[] = {
  {&(_ZTV9S19025C10[6]),  6,51},
  {&(_tg__ZTV8S19025C6__A2__9S19025C10[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C6__A7__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C6__A2__9S19025C10[5]),  5,7},
  {&(_ZTV9S19025C10[15]),  15,51},
  {&(_ZTV9S19025C10[33]),  33,51},
  {&(_ZTV9S19025C10[39]),  39,51},
  {&(_ZTV9S19025C10[49]),  49,51},
  {&(_ZTV9S19025C10[43]),  43,51},
  {&(_ZTV9S19025C10[21]),  21,51},
  {&(_ZTV9S19025C10[25]),  25,51},
  {&(_tg__ZTV8S19025C8__9S19025C10[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C8__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A1__9S19025C10[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C8__A5__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C8__A1__9S19025C10[5]),  5,7},
  {&(_tg__ZTV8S19025C38S19025C8__A2__9S19025C10[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C8__A6__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C7__8S19025C8__9S19025C10[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C8__9S19025C10[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C8__9S19025C10[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C8__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C6__A1__8S19025C8__9S19025C10[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A__8S19025C8__9S19025C10[3]),  3,5},
  {&(_tg__ZTV8S19025C7__9S19025C10[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__9S19025C10[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A1__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__9S19025C10[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A3__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__9S19025C10[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__9S19025C10[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__9S19025C10[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__9S19025C10[3]),  3,4},
  {&(_tg__ZTV8S19025C3__A1__9S19025C10[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A2__9S19025C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19025C10[];
extern  VTBL_ENTRY _ZTV9S19025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19025C10[];
Class_Descriptor cd_S19025C10 = {  "S19025C10", // class name
  bases_S19025C10, 22,
  &(vtc_S19025C10[0]), // expected_vtbl_contents
  &(vtt_S19025C10[0]), // expected_vtt_contents
  ABISELECT(464,280), // object size
  NSPAIRA(_ZTI9S19025C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19025C10),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19025C10),36, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S19025C12  {
  long double s19025c12f0;
  char s19025c12f1:3;
  int s19025c12f2;
  __tsi64 s19025c12f3;
  void *s19025c12f4[3];
  long double s19025c12f5;
  void  mf19025c12(); // _ZN9S19025C1210mf19025c12Ev
};
//SIG(1 S19025C12) U1{ m FD Fc:3 Fi FL Fp[3] FD}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19025C9  : S19025C10 , virtual S19025C2 , S19025C5 {
  char s19025c9f0;
  int s19025c9f1[6];
  ::S7223C9_nt s19025c9f2;
  void *s19025c9f3;
  long double s19025c9f4[2];
  int s19025c9f5;
  ::S19025C12 s19025c9f6;
  ~S19025C9(); // tgen
  S19025C9(); // tgen
};
//SIG(-1 S19025C9) C1{ BC2{ VBC3{ m} VBC4{ BC3 BC5{ VBC3 v1} VBC6{ BC3 BC7{ BC3 BC5 v2 Fi[2]} BC8{ VBC3 VBC7 BC5 Fi[2] Fp[3]} BC5 Fi[2]} BC8 BC7 v3 FC7 Fs Fi[2] Fp[3] FC6} BC8 FD Fp[10]} VBC9{ BC7 VBC8 BC6 VBC4 Fc Fs[7]} BC5 Fc Fi[6] FC10{} Fp FD[2] Fi FU11{ m FD Fc:3 Fi FL Fp[3] FD}}


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

static void Test_S19025C9()
{
  extern Class_Descriptor cd_S19025C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(47,116)];
    init_test(&cd_S19025C9, buf);
    S19025C9 *dp, &lv = *(dp=new (buf) S19025C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(736,460), "sizeof(S19025C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19025C9)");
    /*is_ambiguous_... S19025C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C10*), 0, "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C8*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), 0, "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C8*), 0, "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C8*), 0, "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C8*), 0, "S19025C9");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C10*), 0, "S19025C9");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C10*), 0, "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C2*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*), 0, "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*)(S19025C2*), 0, "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*)(S19025C2*), 0, "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*)(S19025C2*), 0, "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*)(S19025C2*), 0, "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*), 0, "S19025C9");
    /*is_ambiguous_... S19025C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C8*), ABISELECT(272,156), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C8*), ABISELECT(272,156), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(512,312), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(496,300), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(496,300), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(496,300), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C8*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C10*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*)(S19025C2*), ABISELECT(568,348), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(512,312), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(512,312), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(552,336), "S19025C9");
    check_base_class_offset(lv, (S19025C7*)(S19025C8*), ABISELECT(496,300), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C8*), ABISELECT(280,160), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C8*), ABISELECT(280,160), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C8*), ABISELECT(320,184), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C8*), ABISELECT(320,184), "S19025C9");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C8*), ABISELECT(320,184), "S19025C9");
    check_base_class_offset(lv, (S19025C8*)(S19025C10*), ABISELECT(272,156), "S19025C9");
    check_base_class_offset(lv, (S19025C8*)(S19025C2*), ABISELECT(272,156), "S19025C9");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C10*), 0, "S19025C9");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C10*), 0, "S19025C9");
    check_base_class_offset(lv, (S19025C10*), 0, "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C2*), ABISELECT(584,360), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C2*), ABISELECT(584,360), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C2*), ABISELECT(584,360), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*), ABISELECT(688,436), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C2*), ABISELECT(688,436), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*)(S19025C2*), ABISELECT(616,384), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*)(S19025C2*), ABISELECT(600,372), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*)(S19025C2*), ABISELECT(600,372), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*)(S19025C2*), ABISELECT(600,372), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*)(S19025C2*), ABISELECT(616,384), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*)(S19025C2*), ABISELECT(616,384), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*)(S19025C2*), ABISELECT(656,408), "S19025C9");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C7*)(S19025C2*), ABISELECT(600,372), "S19025C9");
    check_base_class_offset(lv, (S19025C2*), ABISELECT(584,360), "S19025C9");
    /*is_ambiguous_... S19025C9::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*), ABISELECT(144,76), "S19025C9");
    check_field_offset(lv, s19025c9f0, ABISELECT(152,80), "S19025C9.s19025c9f0");
    check_field_offset(lv, s19025c9f1, ABISELECT(156,84), "S19025C9.s19025c9f1");
    check_field_offset(lv, s19025c9f2, ABISELECT(180,108), "S19025C9.s19025c9f2");
    check_field_offset(lv, s19025c9f3, ABISELECT(184,112), "S19025C9.s19025c9f3");
    check_field_offset(lv, s19025c9f4, ABISELECT(192,116), "S19025C9.s19025c9f4");
    check_field_offset(lv, s19025c9f5, ABISELECT(224,140), "S19025C9.s19025c9f5");
    check_field_offset(lv, s19025c9f6, ABISELECT(240,144), "S19025C9.s19025c9f6");
    test_class_info(&lv, &cd_S19025C9);
    dp->~S19025C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C9(Test_S19025C9, "S19025C9", ABISELECT(736,460));

#else // __cplusplus

extern void _ZN8S19025C9C1Ev();
extern void _ZN8S19025C9D1Ev();
Name_Map name_map_S19025C9[] = {
  NSPAIR(_ZN8S19025C9C1Ev),
  NSPAIR(_ZN8S19025C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C8;
extern VTBL_ENTRY _ZTI8S19025C8[];
extern  VTBL_ENTRY _ZTV8S19025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C8[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C10;
extern VTBL_ENTRY _ZTI9S19025C10[];
extern  VTBL_ENTRY _ZTV9S19025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19025C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19025C2;
extern VTBL_ENTRY _ZTI8S19025C2[];
extern  VTBL_ENTRY _ZTV8S19025C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C2[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
static Base_Class bases_S19025C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(272,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
    19, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(272,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(512,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(496,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
    6, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(496,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(496,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(568,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
    9, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(568,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(568,348), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(512,312), //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(512,312), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(552,336), //bcp->offset
    46, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(496,300), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(280,160), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(320,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
    18, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(320,184), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19025C8,    ABISELECT(272,156), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19025C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19025C6,    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
    27, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19025C10,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(584,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(584,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(584,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(688,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(688,436), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(616,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
    35, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(600,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
    31, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(600,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(600,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(616,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(616,384), //bcp->offset
    74, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(656,408), //bcp->offset
    79, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(600,372), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19025C2,    ABISELECT(584,360), //bcp->offset
    57, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19025C5,    ABISELECT(144,76), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19025C9[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY vtc_S19025C9[] = {
  ABISELECT(688,436),
  ABISELECT(584,360),
  ABISELECT(496,300),
  ABISELECT(272,156),
  ABISELECT(568,348),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
  ABISELECT(288,188),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-496,-300),
  ABISELECT(-496,-300),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-512,-312),
  ABISELECT(-512,-312),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-552,-336),
  ABISELECT(-552,-336),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-568,-348),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-312,-204),
  ABISELECT(-16,-12),
  ABISELECT(104,76),
  ABISELECT(-584,-360),
  ABISELECT(-584,-360),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(-32,-24),
  ABISELECT(-600,-372),
  ABISELECT(-600,-372),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(-616,-384),
  ABISELECT(-616,-384),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-656,-408),
  ABISELECT(-656,-408),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-688,-436),
  ABISELECT(-688,-436),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19025C9[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19025C10__8S19025C9[] = {
  ABISELECT(496,300),
  ABISELECT(272,156),
  ABISELECT(568,348),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C69S19025C10__A2__8S19025C9[] = {
  ABISELECT(568,348),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C69S19025C10__A7__8S19025C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C69S19025C10__A2__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-568,-348),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__9S19025C10__8S19025C9[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__9S19025C10__8S19025C9[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-496,-300),
  ABISELECT(-496,-300),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__9S19025C10__8S19025C9[] = {
  ABISELECT(56,36),
  ABISELECT(-512,-312),
  ABISELECT(-512,-312),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__9S19025C10__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-568,-348),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__9S19025C10__8S19025C9[] = {
  ABISELECT(-552,-336),
  ABISELECT(-552,-336),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A1__9S19025C10__8S19025C9[] = {
  ABISELECT(288,188),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A2__9S19025C10__8S19025C9[] = {
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A13__8S19025C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__8S19025C9[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C8__8S19025C9[] = {
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A1__8S19025C9[] = {
  ABISELECT(288,188),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C8__A5__8S19025C9[] = {
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C8__A1__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A2__8S19025C9[] = {
  ABISELECT(-320,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C8__A6__8S19025C9[] = {
  ABISELECT(-320,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C8__8S19025C9[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-496,-300),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C8__8S19025C9[] = {
  ABISELECT(56,36),
  ABISELECT(-512,-312),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C8__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C8__8S19025C9[] = {
  ABISELECT(-552,-336),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A1__8S19025C8__8S19025C9[] = {
  ABISELECT(288,188),
  ABISELECT(-280,-160),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C8__8S19025C9[] = {
  ABISELECT(-320,-184),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C9[] = {
  ABISELECT(72,48),
  ABISELECT(-496,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__8S19025C9[] = {
  ABISELECT(-496,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A1__8S19025C9[] = {
  ABISELECT(-496,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C9[] = {
  ABISELECT(56,36),
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A3__8S19025C9[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C9[] = {
  ABISELECT(-552,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__8S19025C9[] = {
  ABISELECT(56,36),
  ABISELECT(-512,-312),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__8S19025C9[] = {
  ABISELECT(-552,-336),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C9[] = {
  ABISELECT(-568,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A2__8S19025C9[] = {
  ABISELECT(-568,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C2__8S19025C9[] = {
  ABISELECT(-88,-60),
  ABISELECT(-312,-204),
  ABISELECT(-16,-12),
  ABISELECT(104,76),
  ABISELECT(-584,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C2__A3__8S19025C9[] = {
  ABISELECT(-584,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C2__A8__8S19025C9[] = {
  ABISELECT(-584,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C78S19025C2__A1__8S19025C9[] = {
  ABISELECT(-32,-24),
  ABISELECT(-600,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C78S19025C2__A4__8S19025C9[] = {
  ABISELECT(-600,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C78S19025C2__A10__8S19025C9[] = {
  ABISELECT(-600,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C78S19025C2__A4__8S19025C9[] = {
  ABISELECT(-48,-36),
  ABISELECT(-616,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C78S19025C2__A11__8S19025C9[] = {
  ABISELECT(-616,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C78S19025C2__A4__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C78S19025C2__A12__8S19025C9[] = {
  ABISELECT(-656,-408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C78S19025C2__A1__8S19025C9[] = {
  ABISELECT(-48,-36),
  ABISELECT(-616,-384),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C78S19025C2__A1__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C78S19025C2__A1__8S19025C9[] = {
  ABISELECT(-656,-408),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C2__8S19025C9[] = {
  0,
  ABISELECT(-120,-88),
  ABISELECT(-688,-436),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C2__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A__8S19025C2__8S19025C9[] = {
  ABISELECT(-32,-24),
  ABISELECT(-600,-372),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A1__8S19025C2__8S19025C9[] = {
  ABISELECT(-48,-36),
  ABISELECT(-616,-384),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A5__8S19025C2__8S19025C9[] = {
  ABISELECT(-656,-408),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__8S19025C2__8S19025C9[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-272,-156),
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A1__8S19025C2__8S19025C9[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-496,-300),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A2__8S19025C2__8S19025C9[] = {
  ABISELECT(56,36),
  ABISELECT(-512,-312),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A9__8S19025C2__8S19025C9[] = {
  ABISELECT(-552,-336),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A3__8S19025C2__8S19025C9[] = {
  ABISELECT(288,188),
  ABISELECT(-280,-160),
  ABISELECT(304,200),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A4__8S19025C2__8S19025C9[] = {
  ABISELECT(-320,-184),
  ABISELECT(264,176),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A3__8S19025C9[] = {
  ABISELECT(-120,-88),
  ABISELECT(-688,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C6__A9__8S19025C9[] = {
  ABISELECT(-688,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6__A3__8S19025C9[] = {
  0,
  0,
  ABISELECT(-568,-348),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
static  VTT_ENTRY vtt_S19025C9[] = {
  {&(_ZTV8S19025C9[8]),  8,89},
  {&(_tg__ZTV9S19025C10__8S19025C9[6]),  6,7},
  {&(_tg__ZTV8S19025C69S19025C10__A2__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C69S19025C10__A7__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C69S19025C10__A2__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C8__9S19025C10__8S19025C9[8]),  8,10},
  {&(_tg__ZTV8S19025C7__9S19025C10__8S19025C9[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__9S19025C10__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__9S19025C10__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__9S19025C10__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A1__9S19025C10__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C38S19025C8__A2__9S19025C10__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C5__A13__8S19025C9[3]),  3,4},
  {&(_ZTV8S19025C9[21]),  21,89},
  {&(_ZTV8S19025C9[39]),  39,89},
  {&(_ZTV8S19025C9[45]),  45,89},
  {&(_ZTV8S19025C9[55]),  55,89},
  {&(_ZTV8S19025C9[49]),  49,89},
  {&(_ZTV8S19025C9[27]),  27,89},
  {&(_ZTV8S19025C9[31]),  31,89},
  {&(_ZTV8S19025C9[66]),  66,89},
  {&(_ZTV8S19025C9[88]),  88,89},
  {&(_ZTV8S19025C9[72]),  72,89},
  {&(_ZTV8S19025C9[78]),  78,89},
  {&(_ZTV8S19025C9[82]),  82,89},
  {&(_ZTV8S19025C9[12]),  12,89},
  {&(_tg__ZTV8S19025C8__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C8__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A1__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C8__A5__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C8__A1__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C38S19025C8__A2__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C8__A6__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C7__8S19025C8__8S19025C9[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C8__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C8__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C8__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C6__A1__8S19025C8__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A__8S19025C8__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C7__8S19025C9[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A1__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A3__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C3__A1__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A2__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C2__8S19025C9[7]),  7,9},
  {&(_tg__ZTV8S19025C38S19025C2__A3__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C2__A8__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C78S19025C2__A1__8S19025C9[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C78S19025C2__A4__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C78S19025C2__A10__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C78S19025C2__A4__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C78S19025C2__A11__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C78S19025C2__A4__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C78S19025C2__A12__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C78S19025C2__A1__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C78S19025C2__A1__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C78S19025C2__A1__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C2__8S19025C9[5]),  5,6},
  {&(_tg__ZTV8S19025C3__A1__8S19025C2__8S19025C9[5]),  5,7},
  {&(_tg__ZTV8S19025C7__A__8S19025C2__8S19025C9[4]),  4,6},
  {&(_tg__ZTV8S19025C68S19025C7__A1__8S19025C2__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C7__A5__8S19025C2__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C8__8S19025C2__8S19025C9[8]),  8,10},
  {&(_tg__ZTV8S19025C7__A1__8S19025C2__8S19025C9[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__A2__8S19025C2__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C7__A9__8S19025C2__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A3__8S19025C2__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C38S19025C8__A4__8S19025C2__8S19025C9[3]),  3,5},
  {&(_tg__ZTV8S19025C6__A3__8S19025C9[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C6__A9__8S19025C9[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C6__A3__8S19025C9[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19025C9[];
extern  VTBL_ENTRY _ZTV8S19025C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C9[];
Class_Descriptor cd_S19025C9 = {  "S19025C9", // class name
  bases_S19025C9, 38,
  &(vtc_S19025C9[0]), // expected_vtbl_contents
  &(vtt_S19025C9[0]), // expected_vtt_contents
  ABISELECT(736,460), // object size
  NSPAIRA(_ZTI8S19025C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19025C9),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C9),78, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19025C1  : virtual S19025C2 , S19025C9 , S5719C14 , virtual S5719C10 , S19025C7 {
  void *s19025c1f0;
  int s19025c1f1;
  int s19025c1f2;
  void *s19025c1f3;
  long double s19025c1f4;
  virtual  ~S19025C1(); // _ZN8S19025C1D2Ev
  S19025C1(); // tgen
};
//SIG(1 S19025C1) C1{ VBC2{ BC3{ BC4{ m} BC5{ VBC4 v1} v2 Fi[2]} VBC6{ VBC4 VBC3 BC5 Fi[2] Fp[3]} BC7{ BC4 BC3 BC6 BC5 Fi[2]} VBC8{ BC4 BC5 VBC7 BC6 BC3 v3 FC3 Fs Fi[2] Fp[3] FC7} Fc Fs[7]} BC9{ BC10{ VBC4 VBC8 BC6 FD Fp[10]} VBC2 BC5 Fc Fi[6] FC11{} Fp FD[2] Fi FU12{ m FD Fc:3 Fi FL Fp[3] FD}} BC13{ m FC14{ m FD Fi FC11} Fi[2]} VBC15{ m FC16{ BC17{ m} BC18{ BC17 BC19{ VBC17 v4} v5 Fi[2]} BC20{ VBC17 VBC18 BC19 Fi[2] Fp[3]} BC19 Fi[2]} Fc FD[6] FC21{ BC18 VBC20 BC16 VBC22{ BC17 BC19 VBC16 BC20 BC18 v6 FC18 Fs Fi[2] Fp[3] FC16} Fc Fs[7]}[2] FC21 Fi} BC7 vd Fp Fi Fi Fp FD}


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

static void Test_S19025C1()
{
  extern Class_Descriptor cd_S19025C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,406)];
    init_test(&cd_S19025C1, buf);
    S19025C1 *dp, &lv = *(dp=new (buf) S19025C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1620), "sizeof(S19025C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19025C1)");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C2*), ABISELECT(432,260), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C2*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*), 0, "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*)(S19025C2*), 0, "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*)(S19025C2*), 0, "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*)(S19025C2*), 0, "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*)(S19025C2*), 0, "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C8*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C8*), 0, "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C8*), 0, "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C8*), 0, "S19025C1");
    /*is_ambiguous_... S19025C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C10*)(S19025C9*), 0, "S19025C1");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C10*)(S19025C9*), 0, "S19025C1");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C10*)(S19025C9*), 0, "S19025C1");
    /*is_ambiguous_... S19025C9::S19025C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C9*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C3*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C6*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C6*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C5*)(S19025C7*), 0, "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C2*), ABISELECT(432,260), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C2*), ABISELECT(432,260), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*)(S19025C2*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C8*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C10*)(S19025C9*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C6*)(S19025C7*), ABISELECT(576,360), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*), ABISELECT(536,336), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C2*), ABISELECT(536,336), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*)(S19025C2*), ABISELECT(464,284), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*)(S19025C2*), ABISELECT(448,272), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*)(S19025C2*), ABISELECT(448,272), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*)(S19025C2*), ABISELECT(448,272), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*)(S19025C2*), ABISELECT(464,284), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*)(S19025C2*), ABISELECT(464,284), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*)(S19025C2*), ABISELECT(504,308), "S19025C1");
    /*is_ambiguous_... S19025C2::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C7*)(S19025C2*), ABISELECT(448,272), "S19025C1");
    /*is_ambiguous_... S19025C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C8*), ABISELECT(592,372), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C8*), ABISELECT(592,372), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(832,528), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(816,516), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(816,516), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(816,516), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(832,528), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(832,528), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(872,552), "S19025C1");
    check_base_class_offset(lv, (S19025C7*)(S19025C8*), ABISELECT(816,516), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C8*), ABISELECT(600,376), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C8*), ABISELECT(600,376), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C8*), ABISELECT(640,400), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C8*), ABISELECT(640,400), "S19025C1");
    /*is_ambiguous_... S19025C8::S19025C3 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C8*), ABISELECT(640,400), "S19025C1");
    check_base_class_offset(lv, (S19025C8*)(S19025C2*), ABISELECT(592,372), "S19025C1");
    check_base_class_offset(lv, (S19025C8*)(S19025C10*)(S19025C9*), ABISELECT(592,372), "S19025C1");
    check_base_class_offset(lv, (S19025C2*), ABISELECT(432,260), "S19025C1");
    check_base_class_offset(lv, (S19025C2*)(S19025C9*), ABISELECT(432,260), "S19025C1");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C10*)(S19025C9*), 0, "S19025C1");
    /*is_ambiguous_... S19025C10::S19025C6 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C10*)(S19025C9*), 0, "S19025C1");
    check_base_class_offset(lv, (S19025C10*)(S19025C9*), 0, "S19025C1");
    /*is_ambiguous_... S19025C9::S19025C5 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C9*), ABISELECT(144,76), "S19025C1");
    check_base_class_offset(lv, (S19025C9*), 0, "S19025C1");
    check_base_class_offset(lv, (S5719C14*), ABISELECT(272,156), "S19025C1");
    check_base_class_offset(lv, (S5719C10*), ABISELECT(896,564), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C7*), ABISELECT(336,196), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19025C3*)(S19025C7*), ABISELECT(320,184), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C3*)(S19025C7*), ABISELECT(320,184), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C3*)(S19025C7*), ABISELECT(320,184), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C6*)(S19025C7*), ABISELECT(336,196), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C6*)(S19025C7*), ABISELECT(336,196), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C5*)(S19025C7*), ABISELECT(376,220), "S19025C1");
    /*is_ambiguous_... S19025C1::S19025C7 */ AMB_check_base_class_offset(lv, (S19025C7*), ABISELECT(320,184), "S19025C1");
    check_field_offset(lv, s19025c1f0, ABISELECT(392,232), "S19025C1.s19025c1f0");
    check_field_offset(lv, s19025c1f1, ABISELECT(400,236), "S19025C1.s19025c1f1");
    check_field_offset(lv, s19025c1f2, ABISELECT(404,240), "S19025C1.s19025c1f2");
    check_field_offset(lv, s19025c1f3, ABISELECT(408,244), "S19025C1.s19025c1f3");
    check_field_offset(lv, s19025c1f4, ABISELECT(416,248), "S19025C1.s19025c1f4");
    test_class_info(&lv, &cd_S19025C1);
    dp->~S19025C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19025C1(Test_S19025C1, "S19025C1", ABISELECT(2480,1620));

#else // __cplusplus

extern void _ZN8S19025C1C1Ev();
extern void _ZN8S19025C1D2Ev();
Name_Map name_map_S19025C1[] = {
  NSPAIR(_ZN8S19025C1C1Ev),
  NSPAIR(_ZN8S19025C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C8;
extern VTBL_ENTRY _ZTI8S19025C8[];
extern  VTBL_ENTRY _ZTV8S19025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C8[];
extern Class_Descriptor cd_S19025C2;
extern VTBL_ENTRY _ZTI8S19025C2[];
extern  VTBL_ENTRY _ZTV8S19025C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C2[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C10;
extern VTBL_ENTRY _ZTI9S19025C10[];
extern  VTBL_ENTRY _ZTV9S19025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19025C10[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C9;
extern VTBL_ENTRY _ZTI8S19025C9[];
extern  VTBL_ENTRY _ZTV8S19025C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C9[];
extern Class_Descriptor cd_S5719C14;
extern VTBL_ENTRY _ZTI8S5719C14[];
extern Class_Descriptor cd_S5719C10;
extern VTBL_ENTRY _ZTI8S5719C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C3;
extern VTBL_ENTRY _ZTI8S19025C3[];
extern  VTBL_ENTRY _ZTV8S19025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C3[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C6;
extern VTBL_ENTRY _ZTI8S19025C6[];
extern  VTBL_ENTRY _ZTV8S19025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C6[];
extern Class_Descriptor cd_S19025C5;
extern VTBL_ENTRY _ZTI8S19025C5[];
extern  VTBL_ENTRY _ZTV8S19025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C5[];
extern Class_Descriptor cd_S19025C7;
extern VTBL_ENTRY _ZTI8S19025C7[];
extern  VTBL_ENTRY _ZTV8S19025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C7[];
static Base_Class bases_S19025C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(432,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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19025C5,    ABISELECT(432,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(432,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(576,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
    6, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(576,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(576,360), //bcp->offset
    63, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(536,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(536,336), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(464,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
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(448,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
    12, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(448,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(448,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(464,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(464,284), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(504,308), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(448,272), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(592,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
    32, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(592,372), //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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(832,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(816,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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(816,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(816,516), //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(832,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(832,528), //bcp->offset
    98, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(872,552), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(816,516), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19025C5,    ABISELECT(600,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(600,376), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(640,400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19025C5,    ABISELECT(640,400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(640,400), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19025C8,    ABISELECT(592,372), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19025C2,    ABISELECT(432,260), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19025C5,    0, //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
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19025C6,    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
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19025C10,    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
    38, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(144,76), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19025C9,    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
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5719C14,    ABISELECT(272,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
    -1, //immediately_derived
  1, 0},
  {&cd_S5719C10,    ABISELECT(896,564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(336,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
    48, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(320,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
    44, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19025C3,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(336,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19025C6,    ABISELECT(336,196), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19025C5,    ABISELECT(376,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19025C7,    ABISELECT(320,184), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19025C1[];
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C1D1Ev();
extern void _ZN8S19025C1D0Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY vtc_S19025C1[] = {
  ABISELECT(896,564),
  ABISELECT(536,336),
  ABISELECT(432,260),
  ABISELECT(816,516),
  ABISELECT(592,372),
  ABISELECT(576,360),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19025C1D0Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(256,176),
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(240,164),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-376,-220),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-432,-260),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(128,88),
  ABISELECT(-448,-272),
  ABISELECT(-448,-272),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(112,76),
  ABISELECT(-464,-284),
  ABISELECT(-464,-284),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-536,-336),
  ABISELECT(-536,-336),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-576,-360),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-592,-372),
  ABISELECT(-592,-372),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-600,-376),
  ABISELECT(-600,-376),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-640,-400),
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-816,-516),
  ABISELECT(-816,-516),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  ABISELECT(-832,-528),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  ABISELECT(-872,-552),
  ABISELECT(-872,-552),
  (VTBL_ENTRY)&(_ZTI8S19025C1[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19025C1[];
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C9__8S19025C1[] = {
  ABISELECT(536,336),
  ABISELECT(432,260),
  ABISELECT(816,516),
  ABISELECT(592,372),
  ABISELECT(576,360),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19025C108S19025C9__8S19025C1[] = {
  ABISELECT(816,516),
  ABISELECT(592,372),
  ABISELECT(576,360),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C69S19025C108S19025C9__A4__8S19025C1[] = {
  ABISELECT(576,360),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C69S19025C108S19025C9__A12__8S19025C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C69S19025C108S19025C9__A4__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-576,-360),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__9S19025C108S19025C9__8S19025C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-592,-372),
  ABISELECT(-592,-372),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__9S19025C108S19025C9__8S19025C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-816,-516),
  ABISELECT(-816,-516),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__9S19025C108S19025C9__8S19025C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  ABISELECT(-832,-528),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__9S19025C108S19025C9__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-576,-360),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__9S19025C108S19025C9__8S19025C1[] = {
  ABISELECT(-872,-552),
  ABISELECT(-872,-552),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A1__9S19025C108S19025C9__8S19025C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-600,-376),
  ABISELECT(-600,-376),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A2__9S19025C108S19025C9__8S19025C1[] = {
  ABISELECT(-640,-400),
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI9S19025C10[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C9__A13__8S19025C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__8S19025C9__8S19025C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-592,-372),
  ABISELECT(-592,-372),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C9__8S19025C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-816,-516),
  ABISELECT(-816,-516),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C9__8S19025C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  ABISELECT(-832,-528),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C9__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-576,-360),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C9__8S19025C1[] = {
  ABISELECT(-872,-552),
  ABISELECT(-872,-552),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A1__8S19025C9__8S19025C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-600,-376),
  ABISELECT(-600,-376),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A2__8S19025C9__8S19025C1[] = {
  ABISELECT(-640,-400),
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C2__8S19025C9__8S19025C1[] = {
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-432,-260),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A3__8S19025C9__8S19025C1[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-536,-336),
  ABISELECT(-536,-336),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C78S19025C2__A1__8S19025C9__8S19025C1[] = {
  ABISELECT(128,88),
  ABISELECT(-448,-272),
  ABISELECT(-448,-272),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C78S19025C2__A4__8S19025C9__8S19025C1[] = {
  ABISELECT(112,76),
  ABISELECT(-464,-284),
  ABISELECT(-464,-284),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C78S19025C2__A12__8S19025C9__8S19025C1[] = {
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A13__8S19025C9__8S19025C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C9[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A__8S19025C1[] = {
  ABISELECT(256,176),
  ABISELECT(-320,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__A5__8S19025C1[] = {
  ABISELECT(-320,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A14__8S19025C1[] = {
  ABISELECT(-320,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A5__8S19025C1[] = {
  ABISELECT(240,164),
  ABISELECT(-336,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A15__8S19025C1[] = {
  ABISELECT(-336,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__A5__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A16__8S19025C1[] = {
  ABISELECT(-376,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__A__8S19025C1[] = {
  ABISELECT(240,164),
  ABISELECT(-336,-196),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__A__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__A__8S19025C1[] = {
  ABISELECT(-376,-220),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C2__8S19025C1[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-432,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C2__8S19025C1[] = {
  ABISELECT(-432,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C2__8S19025C1[] = {
  ABISELECT(-432,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C78S19025C2__8S19025C1[] = {
  ABISELECT(128,88),
  ABISELECT(-448,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C78S19025C2__A2__8S19025C1[] = {
  ABISELECT(-448,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C78S19025C2__A3__8S19025C1[] = {
  ABISELECT(-448,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C78S19025C2__A1__8S19025C1[] = {
  ABISELECT(112,76),
  ABISELECT(-464,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C78S19025C2__A4__8S19025C1[] = {
  ABISELECT(-464,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C78S19025C2__A1__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C78S19025C2__A5__8S19025C1[] = {
  ABISELECT(-504,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C78S19025C2__8S19025C1[] = {
  ABISELECT(112,76),
  ABISELECT(-464,-284),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C78S19025C2__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C78S19025C2__8S19025C1[] = {
  ABISELECT(-504,-308),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C2__8S19025C1[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-536,-336),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C2__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A__8S19025C2__8S19025C1[] = {
  ABISELECT(128,88),
  ABISELECT(-448,-272),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A1__8S19025C2__8S19025C1[] = {
  ABISELECT(112,76),
  ABISELECT(-464,-284),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A5__8S19025C2__8S19025C1[] = {
  ABISELECT(-504,-308),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__8S19025C2__8S19025C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-592,-372),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A1__8S19025C2__8S19025C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-816,-516),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A2__8S19025C2__8S19025C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A9__8S19025C2__8S19025C1[] = {
  ABISELECT(-872,-552),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A3__8S19025C2__8S19025C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-600,-376),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A4__8S19025C2__8S19025C1[] = {
  ABISELECT(-640,-400),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S19025C2[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C1[] = {
  ABISELECT(40,24),
  ABISELECT(-536,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C6__A2__8S19025C1[] = {
  ABISELECT(-536,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C6__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C1[] = {
  ABISELECT(-576,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C3__A1__8S19025C1[] = {
  ABISELECT(-576,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C8__8S19025C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-592,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C82v3Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C8__A6__8S19025C1[] = {
  ABISELECT(-592,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C8__A3__8S19025C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-600,-376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C8__A10__8S19025C1[] = {
  ABISELECT(-600,-376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C8__A3__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C8__A4__8S19025C1[] = {
  ABISELECT(-640,-400),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C8__A11__8S19025C1[] = {
  ABISELECT(-640,-400),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__8S19025C8__8S19025C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-816,-516),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__8S19025C8__8S19025C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C8__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A4__8S19025C8__8S19025C1[] = {
  ABISELECT(-872,-552),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__A1__8S19025C8__8S19025C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-600,-376),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A__8S19025C8__8S19025C1[] = {
  ABISELECT(-640,-400),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19025C8[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C7__A1__8S19025C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-816,-516),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C38S19025C7__A3__8S19025C1[] = {
  ABISELECT(-816,-516),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C3[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C38S19025C7__A7__8S19025C1[] = {
  ABISELECT(-816,-516),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C68S19025C7__A2__8S19025C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C68S19025C7__A8__8S19025C1[] = {
  ABISELECT(-832,-528),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__8S19025C68S19025C7__A2__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI8S19025C6[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C58S19025C7__A9__8S19025C1[] = {
  ABISELECT(-872,-552),
  0,
  (VTBL_ENTRY)&(_ZTI8S19025C5[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C6__8S19025C7__A1__8S19025C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-832,-528),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
extern void _ZN8S19025C52v1Ev();
extern void _ZN8S19025C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C3__A1__8S19025C7__A1__8S19025C1[] = {
  0,
  0,
  ABISELECT(-576,-360),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19025C32v2Ev,
};
extern void _ZN8S19025C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19025C5__A3__8S19025C7__A1__8S19025C1[] = {
  ABISELECT(-872,-552),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19025C7[0]),
  (VTBL_ENTRY)&_ZN8S19025C52v1Ev,
};
static  VTT_ENTRY vtt_S19025C1[] = {
  {&(_ZTV8S19025C1[9]),  9,107},
  {&(_tg__ZTV8S19025C9__8S19025C1[8]),  8,9},
  {&(_tg__ZTV9S19025C108S19025C9__8S19025C1[6]),  6,7},
  {&(_tg__ZTV8S19025C69S19025C108S19025C9__A4__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C69S19025C108S19025C9__A12__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C69S19025C108S19025C9__A4__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C8__9S19025C108S19025C9__8S19025C1[8]),  8,10},
  {&(_tg__ZTV8S19025C7__9S19025C108S19025C9__8S19025C1[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__9S19025C108S19025C9__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__9S19025C108S19025C9__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__9S19025C108S19025C9__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A1__9S19025C108S19025C9__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C38S19025C8__A2__9S19025C108S19025C9__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C9__A13__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C8__8S19025C9__8S19025C1[8]),  8,10},
  {&(_tg__ZTV8S19025C7__8S19025C9__8S19025C1[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C9__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C9__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C9__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A1__8S19025C9__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C38S19025C8__A2__8S19025C9__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C2__8S19025C9__8S19025C1[9]),  9,11},
  {&(_tg__ZTV8S19025C6__A3__8S19025C9__8S19025C1[5]),  5,6},
  {&(_tg__ZTV8S19025C78S19025C2__A1__8S19025C9__8S19025C1[4]),  4,6},
  {&(_tg__ZTV8S19025C68S19025C78S19025C2__A4__8S19025C9__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C78S19025C2__A12__8S19025C9__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C5__A13__8S19025C9__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C7__A__8S19025C1[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__A5__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A14__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__A5__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A15__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__A5__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A16__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__A__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__A__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__A__8S19025C1[3]),  3,4},
  {&(_ZTV8S19025C1[40]),  40,107},
  {&(_ZTV8S19025C1[62]),  62,107},
  {&(_ZTV8S19025C1[68]),  68,107},
  {&(_ZTV8S19025C1[46]),  46,107},
  {&(_ZTV8S19025C1[52]),  52,107},
  {&(_ZTV8S19025C1[56]),  56,107},
  {&(_ZTV8S19025C1[78]),  78,107},
  {&(_ZTV8S19025C1[96]),  96,107},
  {&(_ZTV8S19025C1[102]),  102,107},
  {&(_ZTV8S19025C1[106]),  106,107},
  {&(_ZTV8S19025C1[84]),  84,107},
  {&(_ZTV8S19025C1[88]),  88,107},
  {&(_ZTV8S19025C1[15]),  15,107},
  {&(_ZTV8S19025C1[20]),  20,107},
  {&(_ZTV8S19025C1[26]),  26,107},
  {&(_ZTV8S19025C1[30]),  30,107},
  {&(_tg__ZTV8S19025C2__8S19025C1[7]),  7,9},
  {&(_tg__ZTV8S19025C38S19025C2__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C2__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C78S19025C2__8S19025C1[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C78S19025C2__A2__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C78S19025C2__A3__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C78S19025C2__A1__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C78S19025C2__A4__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C78S19025C2__A1__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C78S19025C2__A5__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C78S19025C2__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C78S19025C2__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C78S19025C2__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C2__8S19025C1[5]),  5,6},
  {&(_tg__ZTV8S19025C3__A1__8S19025C2__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C7__A__8S19025C2__8S19025C1[4]),  4,6},
  {&(_tg__ZTV8S19025C68S19025C7__A1__8S19025C2__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C7__A5__8S19025C2__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C8__8S19025C2__8S19025C1[8]),  8,10},
  {&(_tg__ZTV8S19025C7__A1__8S19025C2__8S19025C1[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__A2__8S19025C2__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C7__A9__8S19025C2__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A3__8S19025C2__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C38S19025C8__A4__8S19025C2__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C6__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C6__A2__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C6__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C3__A1__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C3__A1__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C8__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C8__A6__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C8__A3__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C8__A10__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C8__A3__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C38S19025C8__A4__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C8__A11__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C7__8S19025C8__8S19025C1[6]),  6,8},
  {&(_tg__ZTV8S19025C68S19025C7__8S19025C8__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C8__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A4__8S19025C8__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C6__A1__8S19025C8__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A__8S19025C8__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C7__A1__8S19025C1[4]),  4,6},
  {&(_tg__ZTV8S19025C38S19025C7__A3__8S19025C1[3]),  3,5},
  {&(_tg__ZTV8S19025C58S19025C38S19025C7__A7__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C68S19025C7__A2__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C58S19025C68S19025C7__A8__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C3__8S19025C68S19025C7__A2__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C58S19025C7__A9__8S19025C1[3]),  3,4},
  {&(_tg__ZTV8S19025C6__8S19025C7__A1__8S19025C1[4]),  4,5},
  {&(_tg__ZTV8S19025C3__A1__8S19025C7__A1__8S19025C1[5]),  5,7},
  {&(_tg__ZTV8S19025C5__A3__8S19025C7__A1__8S19025C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19025C1[];
extern  VTBL_ENTRY _ZTV8S19025C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19025C1[];
Class_Descriptor cd_S19025C1 = {  "S19025C1", // class name
  bases_S19025C1, 49,
  &(vtc_S19025C1[0]), // expected_vtbl_contents
  &(vtt_S19025C1[0]), // expected_vtt_contents
  ABISELECT(2480,1620), // object size
  NSPAIRA(_ZTI8S19025C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19025C1),107, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19025C1),105, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7107C3  {
  long double s7107c3f0;
  long s7107c3f1;
  virtual void  v11(); // _ZN7S7107C33v11Ev
  virtual void  v12(); // _ZN7S7107C33v12Ev
  virtual void  v13(); // _ZN7S7107C33v13Ev
  virtual void  v14(); // _ZN7S7107C33v14Ev
  virtual void  v15(); // _ZN7S7107C33v15Ev
  virtual void  v16(); // _ZN7S7107C33v16Ev
  ~S7107C3(); // tgen
  S7107C3(); // tgen
};
//SIG(-1 S7107C3) C1{ v1 v2 v3 v4 v5 v6 FD Fl}


void  S7107C3 ::v11(){vfunc_called(this, "_ZN7S7107C33v11Ev");}
void  S7107C3 ::v12(){vfunc_called(this, "_ZN7S7107C33v12Ev");}
void  S7107C3 ::v13(){vfunc_called(this, "_ZN7S7107C33v13Ev");}
void  S7107C3 ::v14(){vfunc_called(this, "_ZN7S7107C33v14Ev");}
void  S7107C3 ::v15(){vfunc_called(this, "_ZN7S7107C33v15Ev");}
void  S7107C3 ::v16(){vfunc_called(this, "_ZN7S7107C33v16Ev");}
S7107C3 ::~S7107C3(){ note_dtor("S7107C3", this);} // tgen
S7107C3 ::S7107C3(){ note_ctor("S7107C3", this);} // tgen

static void Test_S7107C3()
{
  extern Class_Descriptor cd_S7107C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7107C3, buf);
    S7107C3 *dp, &lv = *(dp=new (buf) S7107C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S7107C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C3)");
    check_field_offset(lv, s7107c3f0, ABISELECT(16,4), "S7107C3.s7107c3f0");
    check_field_offset(lv, s7107c3f1, ABISELECT(32,16), "S7107C3.s7107c3f1");
    test_class_info(&lv, &cd_S7107C3);
    dp->~S7107C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C3(Test_S7107C3, "S7107C3", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S7107C3C1Ev();
extern void _ZN7S7107C3D1Ev();
Name_Map name_map_S7107C3[] = {
  NSPAIR(_ZN7S7107C3C1Ev),
  NSPAIR(_ZN7S7107C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7107C3[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY vtc_S7107C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C3[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
Class_Descriptor cd_S7107C3 = {  "S7107C3", // class name
  0,0,//no base classes
  &(vtc_S7107C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S7107C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7107C3),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  S7107C2  {
  ::S7107C3 s7107c2f0;
  int s7107c2f1;
  virtual  ~S7107C2(); // _ZN7S7107C2D1Ev
  virtual void  v7(); // _ZN7S7107C22v7Ev
  virtual void  v8(); // _ZN7S7107C22v8Ev
  virtual void  v9(); // _ZN7S7107C22v9Ev
  virtual void  v10(); // _ZN7S7107C23v10Ev
  S7107C2(); // tgen
};
//SIG(-1 S7107C2) C1{ vd v1 v2 v3 v4 FC2{ v5 v6 v7 v8 v9 v10 FD Fl} Fi}


 S7107C2 ::~S7107C2(){ note_dtor("S7107C2", this);}
void  S7107C2 ::v7(){vfunc_called(this, "_ZN7S7107C22v7Ev");}
void  S7107C2 ::v8(){vfunc_called(this, "_ZN7S7107C22v8Ev");}
void  S7107C2 ::v9(){vfunc_called(this, "_ZN7S7107C22v9Ev");}
void  S7107C2 ::v10(){vfunc_called(this, "_ZN7S7107C23v10Ev");}
S7107C2 ::S7107C2(){ note_ctor("S7107C2", this);} // tgen

static void Test_S7107C2()
{
  extern Class_Descriptor cd_S7107C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7107C2, buf);
    S7107C2 *dp, &lv = *(dp=new (buf) S7107C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,28), "sizeof(S7107C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C2)");
    check_field_offset(lv, s7107c2f0, ABISELECT(16,4), "S7107C2.s7107c2f0");
    check_field_offset(lv, s7107c2f1, ABISELECT(64,24), "S7107C2.s7107c2f1");
    test_class_info(&lv, &cd_S7107C2);
    dp->~S7107C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C2(Test_S7107C2, "S7107C2", ABISELECT(80,28));

#else // __cplusplus

extern void _ZN7S7107C2C1Ev();
extern void _ZN7S7107C2D1Ev();
Name_Map name_map_S7107C2[] = {
  NSPAIR(_ZN7S7107C2C1Ev),
  NSPAIR(_ZN7S7107C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7107C2[];
extern void _ZN7S7107C2D1Ev();
extern void _ZN7S7107C2D0Ev();
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
static  VTBL_ENTRY vtc_S7107C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C2[0]),
  (VTBL_ENTRY)&_ZN7S7107C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S7107C2[];
extern  VTBL_ENTRY _ZTV7S7107C2[];
Class_Descriptor cd_S7107C2 = {  "S7107C2", // class name
  0,0,//no base classes
  &(vtc_S7107C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,28), // object size
  NSPAIRA(_ZTI7S7107C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7107C2),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  S7107C6  : S7107C3 {
  int s7107c6f0;
  virtual void  v17(); // _ZN7S7107C63v17Ev
  virtual void  v18(); // _ZN7S7107C63v18Ev
  virtual void  v19(); // _ZN7S7107C63v19Ev
  virtual void  v20(); // _ZN7S7107C63v20Ev
  virtual void  v21(); // _ZN7S7107C63v21Ev
  virtual void  v22(); // _ZN7S7107C63v22Ev
  virtual void  v23(); // _ZN7S7107C63v23Ev
  ~S7107C6(); // tgen
  S7107C6(); // tgen
};
//SIG(-1 S7107C6) C1{ BC2{ v8 v9 v10 v11 v12 v13 FD Fl} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7107C6 ::v17(){vfunc_called(this, "_ZN7S7107C63v17Ev");}
void  S7107C6 ::v18(){vfunc_called(this, "_ZN7S7107C63v18Ev");}
void  S7107C6 ::v19(){vfunc_called(this, "_ZN7S7107C63v19Ev");}
void  S7107C6 ::v20(){vfunc_called(this, "_ZN7S7107C63v20Ev");}
void  S7107C6 ::v21(){vfunc_called(this, "_ZN7S7107C63v21Ev");}
void  S7107C6 ::v22(){vfunc_called(this, "_ZN7S7107C63v22Ev");}
void  S7107C6 ::v23(){vfunc_called(this, "_ZN7S7107C63v23Ev");}
S7107C6 ::~S7107C6(){ note_dtor("S7107C6", this);} // tgen
S7107C6 ::S7107C6(){ note_ctor("S7107C6", this);} // tgen

static void Test_S7107C6()
{
  extern Class_Descriptor cd_S7107C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S7107C6, buf);
    S7107C6 *dp, &lv = *(dp=new (buf) S7107C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7107C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C6)");
    check_base_class_offset(lv, (S7107C3*), 0, "S7107C6");
    check_field_offset(lv, s7107c6f0, ABISELECT(40,20), "S7107C6.s7107c6f0");
    test_class_info(&lv, &cd_S7107C6);
    dp->~S7107C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C6(Test_S7107C6, "S7107C6", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7107C6C1Ev();
extern void _ZN7S7107C6D1Ev();
Name_Map name_map_S7107C6[] = {
  NSPAIR(_ZN7S7107C6C1Ev),
  NSPAIR(_ZN7S7107C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
static Base_Class bases_S7107C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7107C6[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY vtc_S7107C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C6[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
Class_Descriptor cd_S7107C6 = {  "S7107C6", // class name
  bases_S7107C6, 1,
  &(vtc_S7107C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7107C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7107C6),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  S7107C5  : S7107C6 {
  __tsi64 s7107c5f0[2];
  ::S7107C3 s7107c5f1;
  virtual  ~S7107C5(); // _ZN7S7107C5D1Ev
  virtual void  v31(); // _ZN7S7107C53v31Ev
  virtual void  v32(); // _ZN7S7107C53v32Ev
  virtual void  v33(); // _ZN7S7107C53v33Ev
  virtual void  v34(); // _ZN7S7107C53v34Ev
  S7107C5(); // tgen
};
//SIG(-1 S7107C5) C1{ BC2{ BC3{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v1 v2 v3 v4 FL[2] FC3}


 S7107C5 ::~S7107C5(){ note_dtor("S7107C5", this);}
void  S7107C5 ::v31(){vfunc_called(this, "_ZN7S7107C53v31Ev");}
void  S7107C5 ::v32(){vfunc_called(this, "_ZN7S7107C53v32Ev");}
void  S7107C5 ::v33(){vfunc_called(this, "_ZN7S7107C53v33Ev");}
void  S7107C5 ::v34(){vfunc_called(this, "_ZN7S7107C53v34Ev");}
S7107C5 ::S7107C5(){ note_ctor("S7107C5", this);} // tgen

static void Test_S7107C5()
{
  extern Class_Descriptor cd_S7107C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S7107C5, buf);
    S7107C5 *dp, &lv = *(dp=new (buf) S7107C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7107C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C5)");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*), 0, "S7107C5");
    check_base_class_offset(lv, (S7107C6*), 0, "S7107C5");
    check_field_offset(lv, s7107c5f0, ABISELECT(48,24), "S7107C5.s7107c5f0");
    check_field_offset(lv, s7107c5f1, ABISELECT(64,40), "S7107C5.s7107c5f1");
    test_class_info(&lv, &cd_S7107C5);
    dp->~S7107C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C5(Test_S7107C5, "S7107C5", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7107C5C1Ev();
extern void _ZN7S7107C5D1Ev();
Name_Map name_map_S7107C5[] = {
  NSPAIR(_ZN7S7107C5C1Ev),
  NSPAIR(_ZN7S7107C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
static Base_Class bases_S7107C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7107C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7107C5[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN7S7107C5D1Ev();
extern void _ZN7S7107C5D0Ev();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY vtc_S7107C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C5[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7107C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern VTBL_ENTRY _ZTI7S7107C5[];
extern  VTBL_ENTRY _ZTV7S7107C5[];
Class_Descriptor cd_S7107C5 = {  "S7107C5", // class name
  bases_S7107C5, 2,
  &(vtc_S7107C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7107C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7107C5),21, //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  S7107C8  : virtual S7107C6 , S7107C3 {
  virtual void  v24(); // _ZN7S7107C83v24Ev
  virtual void  v25(); // _ZN7S7107C83v25Ev
  virtual void  v26(); // _ZN7S7107C83v26Ev
  virtual void  v27(); // _ZN7S7107C83v27Ev
  virtual void  v28(); // _ZN7S7107C83v28Ev
  virtual void  v29(); // _ZN7S7107C83v29Ev
  virtual void  v30(); // _ZN7S7107C83v30Ev
  ~S7107C8(); // tgen
  S7107C8(); // tgen
};
//SIG(-1 S7107C8) C1{ VBC2{ BC3{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} BC3 v1 v2 v3 v4 v5 v6 v7}


void  S7107C8 ::v24(){vfunc_called(this, "_ZN7S7107C83v24Ev");}
void  S7107C8 ::v25(){vfunc_called(this, "_ZN7S7107C83v25Ev");}
void  S7107C8 ::v26(){vfunc_called(this, "_ZN7S7107C83v26Ev");}
void  S7107C8 ::v27(){vfunc_called(this, "_ZN7S7107C83v27Ev");}
void  S7107C8 ::v28(){vfunc_called(this, "_ZN7S7107C83v28Ev");}
void  S7107C8 ::v29(){vfunc_called(this, "_ZN7S7107C83v29Ev");}
void  S7107C8 ::v30(){vfunc_called(this, "_ZN7S7107C83v30Ev");}
S7107C8 ::~S7107C8(){ note_dtor("S7107C8", this);} // tgen
S7107C8 ::S7107C8(){ note_ctor("S7107C8", this);} // tgen

static void Test_S7107C8()
{
  extern Class_Descriptor cd_S7107C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7107C8, buf);
    S7107C8 *dp, &lv = *(dp=new (buf) S7107C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S7107C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C8)");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*), ABISELECT(48,20), "S7107C8");
    check_base_class_offset(lv, (S7107C6*), ABISELECT(48,20), "S7107C8");
    /*is_ambiguous_... S7107C8::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*), 0, "S7107C8");
    test_class_info(&lv, &cd_S7107C8);
    dp->~S7107C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C8(Test_S7107C8, "S7107C8", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN7S7107C8C1Ev();
extern void _ZN7S7107C8D1Ev();
Name_Map name_map_S7107C8[] = {
  NSPAIR(_ZN7S7107C8C1Ev),
  NSPAIR(_ZN7S7107C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
static Base_Class bases_S7107C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(48,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7107C8[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY vtc_S7107C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern VTBL_ENTRY _ZTV7S7107C8[];
static  VTT_ENTRY vtt_S7107C8[] = {
  {&(_ZTV7S7107C8[3]),  3,44},
  {&(_ZTV7S7107C8[31]),  31,44},
};
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
Class_Descriptor cd_S7107C8 = {  "S7107C8", // class name
  bases_S7107C8, 3,
  &(vtc_S7107C8[0]), // expected_vtbl_contents
  &(vtt_S7107C8[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI7S7107C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7107C8),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7107C8),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  S7107C7  : S7107C3 , virtual S7107C6 , S7107C8 , virtual S7107C5 {
  virtual void  v35(); // _ZN7S7107C73v35Ev
  ~S7107C7(); // tgen
  S7107C7(); // tgen
};
//SIG(-1 S7107C7) C1{ BC2{ v2 v3 v4 v5 v6 v7 FD Fl} VBC3{ BC2 v8 v9 v10 v11 v12 v13 v14 Fi} BC4{ VBC3 BC2 v15 v16 v17 v18 v19 v20 v21} VBC5{ BC3 vd v22 v23 v24 v25 FL[2] FC2} v1}


void  S7107C7 ::v35(){vfunc_called(this, "_ZN7S7107C73v35Ev");}
S7107C7 ::~S7107C7(){ note_dtor("S7107C7", this);} // tgen
S7107C7 ::S7107C7(){ note_ctor("S7107C7", this);} // tgen

static void Test_S7107C7()
{
  extern Class_Descriptor cd_S7107C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,32)];
    init_test(&cd_S7107C7, buf);
    S7107C7 *dp, &lv = *(dp=new (buf) S7107C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,124), "sizeof(S7107C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C7)");
    /*is_ambiguous_... S7107C7::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*), 0, "S7107C7");
    /*is_ambiguous_... S7107C7::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*), ABISELECT(96,40), "S7107C7");
    /*is_ambiguous_... S7107C7::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*), ABISELECT(96,40), "S7107C7");
    check_base_class_offset(lv, (S7107C6*)(S7107C8*), ABISELECT(96,40), "S7107C7");
    /*is_ambiguous_... S7107C8::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*), ABISELECT(48,20), "S7107C7");
    check_base_class_offset(lv, (S7107C8*), ABISELECT(48,20), "S7107C7");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C5*), ABISELECT(144,64), "S7107C7");
    check_base_class_offset(lv, (S7107C6*)(S7107C5*), ABISELECT(144,64), "S7107C7");
    check_base_class_offset(lv, (S7107C5*), ABISELECT(144,64), "S7107C7");
    test_class_info(&lv, &cd_S7107C7);
    dp->~S7107C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C7(Test_S7107C7, "S7107C7", ABISELECT(256,124));

#else // __cplusplus

extern void _ZN7S7107C7C1Ev();
extern void _ZN7S7107C7D1Ev();
Name_Map name_map_S7107C7[] = {
  NSPAIR(_ZN7S7107C7C1Ev),
  NSPAIR(_ZN7S7107C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C5;
extern VTBL_ENTRY _ZTI7S7107C5[];
extern  VTBL_ENTRY _ZTV7S7107C5[];
static Base_Class bases_S7107C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7107C3,    ABISELECT(96,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
    2, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(96,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    15, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(48,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7107C3,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7107C5,    ABISELECT(144,64), //bcp->offset
    57, //bcp->virtual_function_table_offset
    20, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7107C7[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void _ZN7S7107C7D1Ev();
extern void _ZN7S7107C7D0Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev)();
extern void ABISELECT(_ZThn144_N7S7107C7D1Ev,_ZThn64_N7S7107C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev)();
extern void ABISELECT(_ZThn144_N7S7107C7D0Ev,_ZThn64_N7S7107C7D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY vtc_S7107C7[] = {
  ABISELECT(144,64),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D0Ev,
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern VTBL_ENTRY _ZTV7S7107C7[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C8__7S7107C7[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C8__7S7107C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
static  VTT_ENTRY vtt_S7107C7[] = {
  {&(_ZTV7S7107C7[4]),  4,96},
  {&(_tg__ZTV7S7107C8__7S7107C7[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C8__7S7107C7[15]),  15,28},
  {&(_ZTV7S7107C7[44]),  44,96},
  {&(_ZTV7S7107C7[16]),  16,96},
  {&(_ZTV7S7107C7[77]),  77,96},
};
extern VTBL_ENTRY _ZTI7S7107C7[];
extern  VTBL_ENTRY _ZTV7S7107C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C7[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7107C7D0Ev,_ZThn64_N7S7107C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7107C7D1Ev,_ZThn64_N7S7107C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7107C7 = {  "S7107C7", // class name
  bases_S7107C7, 8,
  &(vtc_S7107C7[0]), // expected_vtbl_contents
  &(vtt_S7107C7[0]), // expected_vtt_contents
  ABISELECT(256,124), // object size
  NSPAIRA(_ZTI7S7107C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7107C7),96, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7107C7),6, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7107C4  : virtual S7107C5 , virtual S7107C7 , S7107C8 , S7107C3 {
  ::S7107C3 s7107c4f0;
  void *s7107c4f1;
  virtual void  v36(); // _ZN7S7107C43v36Ev
  virtual void  v37(); // _ZN7S7107C43v37Ev
  virtual void  v38(); // _ZN7S7107C43v38Ev
  virtual void  v39(); // _ZN7S7107C43v39Ev
  virtual void  v40(); // _ZN7S7107C43v40Ev
  virtual void  v41(); // _ZN7S7107C43v41Ev
  virtual void  v42(); // _ZN7S7107C43v42Ev
  ~S7107C4(); // tgen
  S7107C4(); // tgen
};
//SIG(-1 S7107C4) C1{ VBC2{ BC3{ BC4{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} vd v21 v22 v23 v24 FL[2] FC4} VBC5{ BC4 VBC3 BC6{ VBC3 BC4 v25 v26 v27 v28 v29 v30 v31} VBC2 v32} BC6 BC4 v1 v2 v3 v4 v5 v6 v7 FC4 Fp}


void  S7107C4 ::v36(){vfunc_called(this, "_ZN7S7107C43v36Ev");}
void  S7107C4 ::v37(){vfunc_called(this, "_ZN7S7107C43v37Ev");}
void  S7107C4 ::v38(){vfunc_called(this, "_ZN7S7107C43v38Ev");}
void  S7107C4 ::v39(){vfunc_called(this, "_ZN7S7107C43v39Ev");}
void  S7107C4 ::v40(){vfunc_called(this, "_ZN7S7107C43v40Ev");}
void  S7107C4 ::v41(){vfunc_called(this, "_ZN7S7107C43v41Ev");}
void  S7107C4 ::v42(){vfunc_called(this, "_ZN7S7107C43v42Ev");}
S7107C4 ::~S7107C4(){ note_dtor("S7107C4", this);} // tgen
S7107C4 ::S7107C4(){ note_ctor("S7107C4", this);} // tgen

static void Test_S7107C4()
{
  extern Class_Descriptor cd_S7107C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,48)];
    init_test(&cd_S7107C4, buf);
    S7107C4 *dp, &lv = *(dp=new (buf) S7107C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,188), "sizeof(S7107C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C4)");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C5*), ABISELECT(160,64), "S7107C4");
    check_base_class_offset(lv, (S7107C6*)(S7107C5*), ABISELECT(160,64), "S7107C4");
    check_base_class_offset(lv, (S7107C5*), ABISELECT(160,64), "S7107C4");
    check_base_class_offset(lv, (S7107C5*)(S7107C7*), ABISELECT(160,64), "S7107C4");
    /*is_ambiguous_... S7107C7::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C7*), ABISELECT(272,124), "S7107C4");
    /*is_ambiguous_... S7107C4::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*), ABISELECT(368,164), "S7107C4");
    /*is_ambiguous_... S7107C7::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C7*), ABISELECT(368,164), "S7107C4");
    check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C7*), ABISELECT(368,164), "S7107C4");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C8*), ABISELECT(368,164), "S7107C4");
    /*is_ambiguous_... S7107C8::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C7*), ABISELECT(320,144), "S7107C4");
    check_base_class_offset(lv, (S7107C8*)(S7107C7*), ABISELECT(320,144), "S7107C4");
    check_base_class_offset(lv, (S7107C7*), ABISELECT(272,124), "S7107C4");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*), 0, "S7107C4");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C8*), 0, "S7107C4");
    /*is_ambiguous_... S7107C4::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*), ABISELECT(48,20), "S7107C4");
    check_field_offset(lv, s7107c4f0, ABISELECT(96,40), "S7107C4.s7107c4f0");
    check_field_offset(lv, s7107c4f1, ABISELECT(144,60), "S7107C4.s7107c4f1");
    test_class_info(&lv, &cd_S7107C4);
    dp->~S7107C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C4(Test_S7107C4, "S7107C4", ABISELECT(416,188));

#else // __cplusplus

extern void _ZN7S7107C4C1Ev();
extern void _ZN7S7107C4D1Ev();
Name_Map name_map_S7107C4[] = {
  NSPAIR(_ZN7S7107C4C1Ev),
  NSPAIR(_ZN7S7107C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C5;
extern VTBL_ENTRY _ZTI7S7107C5[];
extern  VTBL_ENTRY _ZTV7S7107C5[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C7;
extern VTBL_ENTRY _ZTI7S7107C7[];
extern  VTBL_ENTRY _ZTV7S7107C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C7[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
static Base_Class bases_S7107C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    ABISELECT(160,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(160,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7107C5,    ABISELECT(160,64), //bcp->offset
    35, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    ABISELECT(272,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(368,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(368,164), //bcp->offset
    118, //bcp->virtual_function_table_offset
    15, //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, 1},
  {&cd_S7107C3,    ABISELECT(320,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(320,144), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7107C7,    ABISELECT(272,124), //bcp->offset
    74, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7107C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7107C3,    ABISELECT(48,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7107C4[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void _ZN7S7107C4D1Ev();
extern void _ZN7S7107C4D0Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn64_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn64_N7S7107C4D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn272_N7S7107C4D1Ev,_ZThn124_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn272_N7S7107C4D0Ev,_ZThn124_N7S7107C4D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY vtc_S7107C4[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D0Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev),
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern VTBL_ENTRY _ZTV7S7107C4[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C8__A1__7S7107C4[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C8__A1__7S7107C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void _ZN7S7107C7D1Ev();
extern void _ZN7S7107C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C4[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C4[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C7__7S7107C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C7__7S7107C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C8__7S7107C7__7S7107C4[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C7__7S7107C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
static  VTT_ENTRY vtt_S7107C4[] = {
  {&(_ZTV7S7107C4[5]),  5,146},
  {&(_tg__ZTV7S7107C8__A1__7S7107C4[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C8__A1__7S7107C4[15]),  15,28},
  {&(_ZTV7S7107C4[55]),  55,146},
  {&(_ZTV7S7107C4[93]),  93,146},
  {&(_ZTV7S7107C4[133]),  133,146},
  {&(_ZTV7S7107C4[105]),  105,146},
  {&(_tg__ZTV7S7107C7__7S7107C4[4]),  4,13},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C4[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C7__7S7107C4[15]),  15,28},
  {&(_tg__ZTV7S7107C6__7S7107C7__7S7107C4[15]),  15,28},
  {&(_tg__ZTV7S7107C8__7S7107C7__7S7107C4[3]),  3,16},
  {&(_tg__ZTV7S7107C5__7S7107C7__7S7107C4[20]),  20,39},
};
extern VTBL_ENTRY _ZTI7S7107C4[];
extern  VTBL_ENTRY _ZTV7S7107C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C4[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7107C4D0Ev,_ZThn124_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7107C4D1Ev,_ZThn124_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn64_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn64_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7107C4 = {  "S7107C4", // class name
  bases_S7107C4, 12,
  &(vtc_S7107C4[0]), // expected_vtbl_contents
  &(vtt_S7107C4[0]), // expected_vtt_contents
  ABISELECT(416,188), // object size
  NSPAIRA(_ZTI7S7107C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7107C4),146, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7107C4),13, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7107C10  : virtual S7107C3 , S7107C6 , virtual S7107C2 , virtual S7107C4 {
  virtual void  v43(); // _ZN8S7107C103v43Ev
  virtual void  v44(); // _ZN8S7107C103v44Ev
  virtual void  v45(); // _ZN8S7107C103v45Ev
  virtual void  v46(); // _ZN8S7107C103v46Ev
  virtual void  v47(); // _ZN8S7107C103v47Ev
  virtual void  v48(); // _ZN8S7107C103v48Ev
  virtual void  v49(); // _ZN8S7107C103v49Ev
  ~S7107C10(); // tgen
  S7107C10(); // tgen
};
//SIG(-1 S7107C10) C1{ VBC2{ v8 v9 v10 v11 v12 v13 FD Fl} BC3{ BC2 v14 v15 v16 v17 v18 v19 v20 Fi} VBC4{ vd v21 v22 v23 v24 FC2 Fi} VBC5{ VBC6{ BC3 vd v25 v26 v27 v28 FL[2] FC2} VBC7{ BC2 VBC3 BC8{ VBC3 BC2 v29 v30 v31 v32 v33 v34 v35} VBC6 v36} BC8 BC2 v37 v38 v39 v40 v41 v42 v43 FC2 Fp} v1 v2 v3 v4 v5 v6 v7}


void  S7107C10 ::v43(){vfunc_called(this, "_ZN8S7107C103v43Ev");}
void  S7107C10 ::v44(){vfunc_called(this, "_ZN8S7107C103v44Ev");}
void  S7107C10 ::v45(){vfunc_called(this, "_ZN8S7107C103v45Ev");}
void  S7107C10 ::v46(){vfunc_called(this, "_ZN8S7107C103v46Ev");}
void  S7107C10 ::v47(){vfunc_called(this, "_ZN8S7107C103v47Ev");}
void  S7107C10 ::v48(){vfunc_called(this, "_ZN8S7107C103v48Ev");}
void  S7107C10 ::v49(){vfunc_called(this, "_ZN8S7107C103v49Ev");}
S7107C10 ::~S7107C10(){ note_dtor("S7107C10", this);} // tgen
S7107C10 ::S7107C10(){ note_ctor("S7107C10", this);} // tgen

static void Test_S7107C10()
{
  extern Class_Descriptor cd_S7107C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,66)];
    init_test(&cd_S7107C10, buf);
    S7107C10 *dp, &lv = *(dp=new (buf) S7107C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,260), "sizeof(S7107C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C10)");
    /*is_ambiguous_... S7107C10::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*), ABISELECT(48,24), "S7107C10");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*), 0, "S7107C10");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*), 0, "S7107C10");
    check_base_class_offset(lv, (S7107C2*), ABISELECT(96,44), "S7107C10");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C5*), ABISELECT(336,136), "S7107C10");
    check_base_class_offset(lv, (S7107C6*)(S7107C5*), ABISELECT(336,136), "S7107C10");
    check_base_class_offset(lv, (S7107C5*)(S7107C4*), ABISELECT(336,136), "S7107C10");
    check_base_class_offset(lv, (S7107C5*)(S7107C7*), ABISELECT(336,136), "S7107C10");
    /*is_ambiguous_... S7107C7::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C7*), ABISELECT(448,196), "S7107C10");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*), ABISELECT(544,236), "S7107C10");
    /*is_ambiguous_... S7107C7::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C7*), ABISELECT(544,236), "S7107C10");
    check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C7*), ABISELECT(544,236), "S7107C10");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C4*), ABISELECT(544,236), "S7107C10");
    /*is_ambiguous_... S7107C8::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C7*), ABISELECT(496,216), "S7107C10");
    check_base_class_offset(lv, (S7107C8*)(S7107C7*), ABISELECT(496,216), "S7107C10");
    check_base_class_offset(lv, (S7107C7*)(S7107C4*), ABISELECT(448,196), "S7107C10");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C4*), ABISELECT(176,72), "S7107C10");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C8*)(S7107C4*), ABISELECT(176,72), "S7107C10");
    /*is_ambiguous_... S7107C4::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C4*), ABISELECT(224,92), "S7107C10");
    check_base_class_offset(lv, (S7107C4*), ABISELECT(176,72), "S7107C10");
    test_class_info(&lv, &cd_S7107C10);
    dp->~S7107C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C10(Test_S7107C10, "S7107C10", ABISELECT(592,260));

#else // __cplusplus

extern void _ZN8S7107C10C1Ev();
extern void _ZN8S7107C10D1Ev();
Name_Map name_map_S7107C10[] = {
  NSPAIR(_ZN8S7107C10C1Ev),
  NSPAIR(_ZN8S7107C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C2;
extern VTBL_ENTRY _ZTI7S7107C2[];
extern  VTBL_ENTRY _ZTV7S7107C2[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C5;
extern VTBL_ENTRY _ZTI7S7107C5[];
extern  VTBL_ENTRY _ZTV7S7107C5[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C7;
extern VTBL_ENTRY _ZTI7S7107C7[];
extern  VTBL_ENTRY _ZTV7S7107C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C7[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C4;
extern VTBL_ENTRY _ZTI7S7107C4[];
extern  VTBL_ENTRY _ZTV7S7107C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C4[];
static Base_Class bases_S7107C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7107C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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},
  {&cd_S7107C2,    ABISELECT(96,44), //bcp->offset
    44, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    ABISELECT(336,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(336,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7107C5,    ABISELECT(336,136), //bcp->offset
    113, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(448,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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(544,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(544,236), //bcp->offset
    196, //bcp->virtual_function_table_offset
    15, //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
    11, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(496,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(496,216), //bcp->offset
    180, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7107C7,    ABISELECT(448,196), //bcp->offset
    152, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(176,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
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(176,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(224,92), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7107C4,    ABISELECT(176,72), //bcp->offset
    57, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7107C10[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN8S7107C103v43Ev();
extern void _ZN8S7107C103v44Ev();
extern void _ZN8S7107C103v45Ev();
extern void _ZN8S7107C103v46Ev();
extern void _ZN8S7107C103v47Ev();
extern void _ZN8S7107C103v48Ev();
extern void _ZN8S7107C103v49Ev();
extern void _ZN8S7107C10D1Ev();
extern void _ZN8S7107C10D0Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S7107C10D1Ev,_ZThn44_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S7107C10D0Ev,_ZThn44_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S7107C10D1Ev,_ZThn72_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S7107C10D0Ev,_ZThn72_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn336_N8S7107C10D1Ev,_ZThn136_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn336_N8S7107C10D0Ev,_ZThn136_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn448_N8S7107C10D1Ev,_ZThn196_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn448_N8S7107C10D0Ev,_ZThn196_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY vtc_S7107C10[] = {
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(336,136),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v49Ev,
  (VTBL_ENTRY)&_ZN8S7107C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7107C10D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
  ABISELECT(-176,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-176,-72),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev),
  ABISELECT(-224,-92),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-448,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-448,-196),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev),
  ABISELECT(48,20),
  ABISELECT(-496,-216),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern VTBL_ENTRY _ZTV8S7107C10[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void _ZN7S7107C4D1Ev();
extern void _ZN7S7107C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C4__8S7107C10[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C4__A1__8S7107C10[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C4__A1__8S7107C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn64_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn64_N7S7107C4D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C4__8S7107C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn272_N7S7107C4D1Ev,_ZThn124_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn272_N7S7107C4D0Ev,_ZThn124_N7S7107C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C4__8S7107C10[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A1__7S7107C4__8S7107C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C4__8S7107C10[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void _ZN7S7107C7D1Ev();
extern void _ZN7S7107C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C7__8S7107C10[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__8S7107C10[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C7__8S7107C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C7__8S7107C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C8__7S7107C7__8S7107C10[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C7__8S7107C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
static  VTT_ENTRY vtt_S7107C10[] = {
  {&(_ZTV8S7107C10[8]),  8,224},
  {&(_ZTV8S7107C10[38]),  38,224},
  {&(_ZTV8S7107C10[51]),  51,224},
  {&(_ZTV8S7107C10[83]),  83,224},
  {&(_ZTV8S7107C10[133]),  133,224},
  {&(_ZTV8S7107C10[171]),  171,224},
  {&(_ZTV8S7107C10[211]),  211,224},
  {&(_ZTV8S7107C10[183]),  183,224},
  {&(_ZTV8S7107C10[107]),  107,224},
  {&(_tg__ZTV7S7107C4__8S7107C10[5]),  5,27},
  {&(_tg__ZTV7S7107C87S7107C4__A1__8S7107C10[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C4__A1__8S7107C10[15]),  15,28},
  {&(_tg__ZTV7S7107C5__7S7107C4__8S7107C10[20]),  20,39},
  {&(_tg__ZTV7S7107C7__7S7107C4__8S7107C10[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A1__7S7107C4__8S7107C10[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C4__8S7107C10[3]),  3,16},
  {&(_tg__ZTV7S7107C7__8S7107C10[4]),  4,13},
  {&(_tg__ZTV7S7107C87S7107C7__8S7107C10[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C7__8S7107C10[15]),  15,28},
  {&(_tg__ZTV7S7107C6__7S7107C7__8S7107C10[15]),  15,28},
  {&(_tg__ZTV7S7107C8__7S7107C7__8S7107C10[3]),  3,16},
  {&(_tg__ZTV7S7107C5__7S7107C7__8S7107C10[20]),  20,39},
};
extern VTBL_ENTRY _ZTI8S7107C10[];
extern  VTBL_ENTRY _ZTV8S7107C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7107C10[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7107C4D0Ev,_ZThn124_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7107C4D1Ev,_ZThn124_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn64_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn64_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S7107C10D0Ev,_ZThn196_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S7107C10D1Ev,_ZThn196_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7107C10D0Ev,_ZThn136_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7107C10D1Ev,_ZThn136_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7107C10D0Ev,_ZThn72_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7107C10D1Ev,_ZThn72_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7107C10D0Ev,_ZThn44_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7107C10D1Ev,_ZThn44_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7107C10 = {  "S7107C10", // class name
  bases_S7107C10, 17,
  &(vtc_S7107C10[0]), // expected_vtbl_contents
  &(vtt_S7107C10[0]), // expected_vtt_contents
  ABISELECT(592,260), // object size
  NSPAIRA(_ZTI8S7107C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7107C10),224, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7107C10),22, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7107C9  : virtual S7107C5 , S7107C3 , S7107C10 {
  virtual void  v50(); // _ZN7S7107C93v50Ev
  virtual void  v51(); // _ZN7S7107C93v51Ev
  virtual void  v52(); // _ZN7S7107C93v52Ev
  ~S7107C9(); // tgen
  S7107C9(); // tgen
};
//SIG(-1 S7107C9) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8 v9 FD Fl} v10 v11 v12 v13 v14 v15 v16 Fi} vd v17 v18 v19 v20 FL[2] FC4} BC4 BC5{ VBC4 BC3 VBC6{ vd v21 v22 v23 v24 FC4 Fi} VBC7{ VBC2 VBC8{ BC4 VBC3 BC9{ VBC3 BC4 v25 v26 v27 v28 v29 v30 v31} VBC2 v32} BC9 BC4 v33 v34 v35 v36 v37 v38 v39 FC4 Fp} v40 v41 v42 v43 v44 v45 v46} v1 v2 v3}


void  S7107C9 ::v50(){vfunc_called(this, "_ZN7S7107C93v50Ev");}
void  S7107C9 ::v51(){vfunc_called(this, "_ZN7S7107C93v51Ev");}
void  S7107C9 ::v52(){vfunc_called(this, "_ZN7S7107C93v52Ev");}
S7107C9 ::~S7107C9(){ note_dtor("S7107C9", this);} // tgen
S7107C9 ::S7107C9(){ note_ctor("S7107C9", this);} // tgen

static void Test_S7107C9()
{
  extern Class_Descriptor cd_S7107C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,71)];
    init_test(&cd_S7107C9, buf);
    S7107C9 *dp, &lv = *(dp=new (buf) S7107C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,280), "sizeof(S7107C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C9)");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C5*), ABISELECT(96,44), "S7107C9");
    check_base_class_offset(lv, (S7107C6*)(S7107C5*), ABISELECT(96,44), "S7107C9");
    check_base_class_offset(lv, (S7107C5*), ABISELECT(96,44), "S7107C9");
    check_base_class_offset(lv, (S7107C5*)(S7107C4*), ABISELECT(96,44), "S7107C9");
    check_base_class_offset(lv, (S7107C5*)(S7107C7*), ABISELECT(96,44), "S7107C9");
    /*is_ambiguous_... S7107C9::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*), 0, "S7107C9");
    /*is_ambiguous_... S7107C10::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C10*), ABISELECT(208,104), "S7107C9");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C10*), ABISELECT(48,20), "S7107C9");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C10*), ABISELECT(48,20), "S7107C9");
    check_base_class_offset(lv, (S7107C2*)(S7107C10*), ABISELECT(256,124), "S7107C9");
    /*is_ambiguous_... S7107C7::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C7*), ABISELECT(496,216), "S7107C9");
    /*is_ambiguous_... S7107C9::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*), ABISELECT(592,256), "S7107C9");
    /*is_ambiguous_... S7107C7::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C7*), ABISELECT(592,256), "S7107C9");
    check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C7*), ABISELECT(592,256), "S7107C9");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C4*), ABISELECT(592,256), "S7107C9");
    /*is_ambiguous_... S7107C8::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C7*), ABISELECT(544,236), "S7107C9");
    check_base_class_offset(lv, (S7107C8*)(S7107C7*), ABISELECT(544,236), "S7107C9");
    check_base_class_offset(lv, (S7107C7*)(S7107C4*), ABISELECT(496,216), "S7107C9");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C4*), ABISELECT(336,152), "S7107C9");
    /*is_ambiguous_... S7107C4::S7107C8 */ AMB_check_base_class_offset(lv, (S7107C8*)(S7107C4*), ABISELECT(336,152), "S7107C9");
    /*is_ambiguous_... S7107C4::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C4*), ABISELECT(384,172), "S7107C9");
    check_base_class_offset(lv, (S7107C4*)(S7107C10*), ABISELECT(336,152), "S7107C9");
    check_base_class_offset(lv, (S7107C10*), ABISELECT(48,20), "S7107C9");
    test_class_info(&lv, &cd_S7107C9);
    dp->~S7107C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C9(Test_S7107C9, "S7107C9", ABISELECT(640,280));

#else // __cplusplus

extern void _ZN7S7107C9C1Ev();
extern void _ZN7S7107C9D1Ev();
Name_Map name_map_S7107C9[] = {
  NSPAIR(_ZN7S7107C9C1Ev),
  NSPAIR(_ZN7S7107C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C5;
extern VTBL_ENTRY _ZTI7S7107C5[];
extern  VTBL_ENTRY _ZTV7S7107C5[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C2;
extern VTBL_ENTRY _ZTI7S7107C2[];
extern  VTBL_ENTRY _ZTV7S7107C2[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C7;
extern VTBL_ENTRY _ZTI7S7107C7[];
extern  VTBL_ENTRY _ZTV7S7107C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C7[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C4;
extern VTBL_ENTRY _ZTI7S7107C4[];
extern  VTBL_ENTRY _ZTV7S7107C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C4[];
extern Class_Descriptor cd_S7107C10;
extern VTBL_ENTRY _ZTI8S7107C10[];
extern  VTBL_ENTRY _ZTV8S7107C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7107C10[];
static Base_Class bases_S7107C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C3,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(96,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7107C5,    ABISELECT(96,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7107C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7107C3,    ABISELECT(208,104), //bcp->offset
    88, //bcp->virtual_function_table_offset
    8, //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
    18, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7107C2,    ABISELECT(256,124), //bcp->offset
    102, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(496,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(592,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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(592,256), //bcp->offset
    215, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(544,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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(544,236), //bcp->offset
    199, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7107C7,    ABISELECT(496,216), //bcp->offset
    171, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(336,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(336,152), //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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(384,172), //bcp->offset
    163, //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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7107C4,    ABISELECT(336,152), //bcp->offset
    115, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7107C10,    ABISELECT(48,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7107C9[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C93v50Ev();
extern void _ZN7S7107C93v51Ev();
extern void _ZN7S7107C93v52Ev();
extern void _ZN7S7107C9D1Ev();
extern void _ZN7S7107C9D0Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN8S7107C103v43Ev();
extern void _ZN8S7107C103v44Ev();
extern void _ZN8S7107C103v45Ev();
extern void _ZN8S7107C103v46Ev();
extern void _ZN8S7107C103v47Ev();
extern void _ZN8S7107C103v48Ev();
extern void _ZN8S7107C103v49Ev();
extern void ABISELECT(_ZThn48_N7S7107C9D1Ev,_ZThn20_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7107C9D0Ev,_ZThn20_N7S7107C9D0Ev)();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C9D1Ev,_ZTv0_n64_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn96_N7S7107C9D1Ev,_ZThn44_N7S7107C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7107C9D0Ev,_ZTv0_n64_N7S7107C9D0Ev)();
extern void ABISELECT(_ZThn96_N7S7107C9D0Ev,_ZThn44_N7S7107C9D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void ABISELECT(_ZTv0_n24_N7S7107C9D1Ev,_ZTv0_n12_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7107C9D1Ev,_ZThn124_N7S7107C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7107C9D0Ev,_ZTv0_n12_N7S7107C9D0Ev)();
extern void ABISELECT(_ZThn256_N7S7107C9D0Ev,_ZThn124_N7S7107C9D0Ev)() __attribute__((weak));
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZTv0_n208_N7S7107C9D1Ev,_ZTv0_n104_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn336_N7S7107C9D1Ev,_ZThn152_N7S7107C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N7S7107C9D0Ev,_ZTv0_n104_N7S7107C9D0Ev)();
extern void ABISELECT(_ZThn336_N7S7107C9D0Ev,_ZThn152_N7S7107C9D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C9D1Ev,_ZTv0_n48_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn496_N7S7107C9D1Ev,_ZThn216_N7S7107C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7107C9D0Ev,_ZTv0_n48_N7S7107C9D0Ev)();
extern void ABISELECT(_ZThn496_N7S7107C9D0Ev,_ZThn216_N7S7107C9D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY vtc_S7107C9[] = {
  ABISELECT(592,256),
  ABISELECT(496,216),
  ABISELECT(336,152),
  ABISELECT(256,124),
  ABISELECT(208,104),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v50Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v51Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v52Ev,
  (VTBL_ENTRY)&_ZN7S7107C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C9D0Ev,
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(48,24),
  ABISELECT(288,132),
  ABISELECT(208,104),
  ABISELECT(160,84),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v49Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7107C9D1Ev,_ZThn20_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7107C9D0Ev,_ZThn20_N7S7107C9D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C9D1Ev,_ZTv0_n64_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C9D0Ev,_ZTv0_n64_N7S7107C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-124),
  ABISELECT(-256,-124),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7107C9D1Ev,_ZTv0_n12_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7107C9D0Ev,_ZTv0_n12_N7S7107C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
  ABISELECT(-336,-152),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,64),
  ABISELECT(-240,-108),
  ABISELECT(256,104),
  ABISELECT(-336,-152),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7107C9D1Ev,_ZTv0_n104_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7107C9D0Ev,_ZTv0_n104_N7S7107C9D0Ev),
  ABISELECT(-384,-172),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-496,-216),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-172),
  ABISELECT(96,40),
  ABISELECT(-496,-216),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C9D1Ev,_ZTv0_n48_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C9D0Ev,_ZTv0_n48_N7S7107C9D0Ev),
  ABISELECT(48,20),
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-256),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern VTBL_ENTRY _ZTV7S7107C9[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN8S7107C103v43Ev();
extern void _ZN8S7107C103v44Ev();
extern void _ZN8S7107C103v45Ev();
extern void _ZN8S7107C103v46Ev();
extern void _ZN8S7107C103v47Ev();
extern void _ZN8S7107C103v48Ev();
extern void _ZN8S7107C103v49Ev();
extern void _ZN8S7107C10D1Ev();
extern void _ZN8S7107C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7107C10__7S7107C9[] = {
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(48,24),
  ABISELECT(288,132),
  ABISELECT(208,104),
  ABISELECT(160,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v49Ev,
  (VTBL_ENTRY)&_ZN8S7107C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7107C10D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C3__8S7107C10__7S7107C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S7107C10D1Ev,_ZThn104_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S7107C10D0Ev,_ZThn104_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C2__8S7107C10__7S7107C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-104),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn288_N8S7107C10D1Ev,_ZThn132_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn288_N8S7107C10D0Ev,_ZThn132_N8S7107C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C4__8S7107C10__7S7107C9[] = {
  ABISELECT(-288,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,64),
  ABISELECT(-240,-108),
  ABISELECT(256,104),
  ABISELECT(-288,-132),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7107C10D1Ev,_ZThn24_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S7107C10D0Ev,_ZThn24_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__8S7107C10__7S7107C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn448_N8S7107C10D1Ev,_ZThn196_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn448_N8S7107C10D0Ev,_ZThn196_N8S7107C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C7__8S7107C10__7S7107C9[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-448,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-172),
  ABISELECT(96,40),
  ABISELECT(-448,-196),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A2__8S7107C10__7S7107C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__8S7107C10__7S7107C9[] = {
  ABISELECT(48,20),
  ABISELECT(-496,-216),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C37S7107C4__A7__8S7107C10__7S7107C9[] = {
  ABISELECT(-336,-152),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void _ZN7S7107C4D1Ev();
extern void _ZN7S7107C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C4__7S7107C9[] = {
  ABISELECT(160,64),
  ABISELECT(-240,-108),
  ABISELECT(256,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C4__A1__7S7107C9[] = {
  ABISELECT(256,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C4__A1__7S7107C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-104),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C4__7S7107C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(240,108),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,108),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn64_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn64_N7S7107C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C4__7S7107C9[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-172),
  ABISELECT(96,40),
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A1__7S7107C4__7S7107C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-104),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C4__7S7107C9[] = {
  ABISELECT(48,20),
  ABISELECT(-208,-84),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void _ZN7S7107C7D1Ev();
extern void _ZN7S7107C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C9[] = {
  ABISELECT(-400,-172),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C7__7S7107C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C7__7S7107C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C8__7S7107C7__7S7107C9[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C7__7S7107C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(400,172),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(400,172),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
static  VTT_ENTRY vtt_S7107C9[] = {
  {&(_ZTV7S7107C9[8]),  8,243},
  {&(_tg__ZTV8S7107C10__7S7107C9[8]),  8,30},
  {&(_tg__ZTV7S7107C3__8S7107C10__7S7107C9[8]),  8,14},
  {&(_tg__ZTV7S7107C2__8S7107C10__7S7107C9[7]),  7,13},
  {&(_tg__ZTV7S7107C4__8S7107C10__7S7107C9[26]),  26,48},
  {&(_tg__ZTV7S7107C5__8S7107C10__7S7107C9[20]),  20,39},
  {&(_tg__ZTV7S7107C7__8S7107C10__7S7107C9[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A2__8S7107C10__7S7107C9[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__8S7107C10__7S7107C9[3]),  3,16},
  {&(_tg__ZTV7S7107C37S7107C4__A7__8S7107C10__7S7107C9[2]),  2,8},
  {&(_ZTV7S7107C9[69]),  69,243},
  {&(_ZTV7S7107C9[27]),  27,243},
  {&(_ZTV7S7107C9[96]),  96,243},
  {&(_ZTV7S7107C9[109]),  109,243},
  {&(_ZTV7S7107C9[141]),  141,243},
  {&(_ZTV7S7107C9[190]),  190,243},
  {&(_ZTV7S7107C9[230]),  230,243},
  {&(_ZTV7S7107C9[202]),  202,243},
  {&(_ZTV7S7107C9[165]),  165,243},
  {&(_tg__ZTV7S7107C4__7S7107C9[5]),  5,27},
  {&(_tg__ZTV7S7107C87S7107C4__A1__7S7107C9[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C4__A1__7S7107C9[15]),  15,28},
  {&(_tg__ZTV7S7107C5__7S7107C4__7S7107C9[20]),  20,39},
  {&(_tg__ZTV7S7107C7__7S7107C4__7S7107C9[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A1__7S7107C4__7S7107C9[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C4__7S7107C9[3]),  3,16},
  {&(_tg__ZTV7S7107C7__7S7107C9[4]),  4,13},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C9[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C7__7S7107C9[15]),  15,28},
  {&(_tg__ZTV7S7107C6__7S7107C7__7S7107C9[15]),  15,28},
  {&(_tg__ZTV7S7107C8__7S7107C7__7S7107C9[3]),  3,16},
  {&(_tg__ZTV7S7107C5__7S7107C7__7S7107C9[20]),  20,39},
};
extern VTBL_ENTRY _ZTI7S7107C9[];
extern  VTBL_ENTRY _ZTV7S7107C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C9[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn64_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn64_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S7107C10D0Ev,_ZThn196_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S7107C10D1Ev,_ZThn196_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7107C10D0Ev,_ZThn24_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7107C10D1Ev,_ZThn24_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7107C10D0Ev,_ZThn132_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7107C10D1Ev,_ZThn132_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7107C10D0Ev,_ZThn104_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7107C10D1Ev,_ZThn104_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C9D0Ev,_ZTv0_n48_N7S7107C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7107C9D0Ev,_ZThn216_N7S7107C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C9D1Ev,_ZTv0_n48_N7S7107C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7107C9D1Ev,_ZThn216_N7S7107C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7107C9D0Ev,_ZTv0_n104_N7S7107C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7107C9D0Ev,_ZThn152_N7S7107C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7107C9D1Ev,_ZTv0_n104_N7S7107C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7107C9D1Ev,_ZThn152_N7S7107C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7107C9D0Ev,_ZTv0_n12_N7S7107C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7107C9D0Ev,_ZThn124_N7S7107C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7107C9D1Ev,_ZTv0_n12_N7S7107C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7107C9D1Ev,_ZThn124_N7S7107C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C9D0Ev,_ZTv0_n64_N7S7107C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7107C9D0Ev,_ZThn44_N7S7107C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C9D1Ev,_ZTv0_n64_N7S7107C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7107C9D1Ev,_ZThn44_N7S7107C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7107C9 = {  "S7107C9", // class name
  bases_S7107C9, 19,
  &(vtc_S7107C9[0]), // expected_vtbl_contents
  &(vtt_S7107C9[0]), // expected_vtt_contents
  ABISELECT(640,280), // object size
  NSPAIRA(_ZTI7S7107C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7107C9),243, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7107C9),32, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7107C1  : S7107C2 , S7107C4 , virtual S7107C9 {
  int s7107c1f0;
  virtual void  v1(); // _ZN7S7107C12v1Ev
  virtual void  v2(); // _ZN7S7107C12v2Ev
  virtual void  v3(); // _ZN7S7107C12v3Ev
  virtual void  v4(); // _ZN7S7107C12v4Ev
  virtual void  v5(); // _ZN7S7107C12v5Ev
  virtual void  v6(); // _ZN7S7107C12v6Ev
  ~S7107C1(); // tgen
  S7107C1(); // tgen
};
//SIG(1 S7107C1) C1{ BC2{ vd v7 v8 v9 v10 FC3{ v11 v12 v13 v14 v15 v16 FD Fl} Fi} BC4{ VBC5{ BC6{ BC3 v17 v18 v19 v20 v21 v22 v23 Fi} vd v24 v25 v26 v27 FL[2] FC3} VBC7{ BC3 VBC6 BC8{ VBC6 BC3 v28 v29 v30 v31 v32 v33 v34} VBC5 v35} BC8 BC3 v36 v37 v38 v39 v40 v41 v42 FC3 Fp} VBC9{ VBC5 BC3 BC10{ VBC3 BC6 VBC2 VBC4 v43 v44 v45 v46 v47 v48 v49} v50 v51 v52} v1 v2 v3 v4 v5 v6 Fi}


void  S7107C1 ::v1(){vfunc_called(this, "_ZN7S7107C12v1Ev");}
void  S7107C1 ::v2(){vfunc_called(this, "_ZN7S7107C12v2Ev");}
void  S7107C1 ::v3(){vfunc_called(this, "_ZN7S7107C12v3Ev");}
void  S7107C1 ::v4(){vfunc_called(this, "_ZN7S7107C12v4Ev");}
void  S7107C1 ::v5(){vfunc_called(this, "_ZN7S7107C12v5Ev");}
void  S7107C1 ::v6(){vfunc_called(this, "_ZN7S7107C12v6Ev");}
S7107C1 ::~S7107C1(){ note_dtor("S7107C1", this);} // tgen
S7107C1 ::S7107C1(){ note_ctor("S7107C1", this);} // tgen

static void Test_S7107C1()
{
  extern Class_Descriptor cd_S7107C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(56,95)];
    init_test(&cd_S7107C1, buf);
    S7107C1 *dp, &lv = *(dp=new (buf) S7107C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(880,376), "sizeof(S7107C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7107C1)");
    /*is_ambiguous_... S7107C1::S7107C2 */ AMB_check_base_class_offset(lv, (S7107C2*), 0, "S7107C1");
    check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C5*), ABISELECT(240,96), "S7107C1");
    check_base_class_offset(lv, (S7107C6*)(S7107C5*), ABISELECT(240,96), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C5*)(S7107C4*), ABISELECT(240,96), "S7107C1");
    check_base_class_offset(lv, (S7107C5*)(S7107C7*), ABISELECT(240,96), "S7107C1");
    check_base_class_offset(lv, (S7107C5*)(S7107C9*), ABISELECT(240,96), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C5*)(S7107C4*), ABISELECT(240,96), "S7107C1");
    /*is_ambiguous_... S7107C7::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C7*), ABISELECT(352,156), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*), ABISELECT(448,196), "S7107C1");
    /*is_ambiguous_... S7107C7::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C7*), ABISELECT(448,196), "S7107C1");
    check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C7*), ABISELECT(448,196), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C4*), ABISELECT(448,196), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C8*)(S7107C4*), ABISELECT(448,196), "S7107C1");
    /*is_ambiguous_... S7107C8::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C7*), ABISELECT(400,176), "S7107C1");
    check_base_class_offset(lv, (S7107C8*)(S7107C7*), ABISELECT(400,176), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C7*)(S7107C4*), ABISELECT(352,156), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C7*)(S7107C4*), ABISELECT(352,156), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C4*), ABISELECT(80,28), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C8*)(S7107C4*), ABISELECT(80,28), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C4*), ABISELECT(128,48), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C4*), ABISELECT(80,28), "S7107C1");
    /*is_ambiguous_... S7107C9::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C9*), ABISELECT(496,220), "S7107C1");
    /*is_ambiguous_... S7107C10::S7107C3 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C10*)(S7107C9*), ABISELECT(592,264), "S7107C1");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C6*)(S7107C10*)(S7107C9*), ABISELECT(544,240), "S7107C1");
    /*is_ambiguous_... S7107C10::S7107C6 */ AMB_check_base_class_offset(lv, (S7107C6*)(S7107C10*)(S7107C9*), ABISELECT(544,240), "S7107C1");
    check_base_class_offset(lv, (S7107C2*)(S7107C10*)(S7107C9*), ABISELECT(640,284), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C8*)(S7107C4*), ABISELECT(720,312), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C8*)(S7107C4*), ABISELECT(720,312), "S7107C1");
    /*is_ambiguous_... S7107C1::S7107C4 */ AMB_check_base_class_offset(lv, (S7107C3*)(S7107C4*), ABISELECT(768,332), "S7107C1");
    check_base_class_offset(lv, (S7107C4*)(S7107C10*)(S7107C9*), ABISELECT(720,312), "S7107C1");
    check_base_class_offset(lv, (S7107C10*)(S7107C9*), ABISELECT(544,240), "S7107C1");
    check_base_class_offset(lv, (S7107C9*), ABISELECT(496,220), "S7107C1");
    check_field_offset(lv, s7107c1f0, ABISELECT(232,92), "S7107C1.s7107c1f0");
    test_class_info(&lv, &cd_S7107C1);
    dp->~S7107C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7107C1(Test_S7107C1, "S7107C1", ABISELECT(880,376));

#else // __cplusplus

extern void _ZN7S7107C1C1Ev();
extern void _ZN7S7107C1D1Ev();
Name_Map name_map_S7107C1[] = {
  NSPAIR(_ZN7S7107C1C1Ev),
  NSPAIR(_ZN7S7107C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7107C2;
extern VTBL_ENTRY _ZTI7S7107C2[];
extern  VTBL_ENTRY _ZTV7S7107C2[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C5;
extern VTBL_ENTRY _ZTI7S7107C5[];
extern  VTBL_ENTRY _ZTV7S7107C5[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C7;
extern VTBL_ENTRY _ZTI7S7107C7[];
extern  VTBL_ENTRY _ZTV7S7107C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C7[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C4;
extern VTBL_ENTRY _ZTI7S7107C4[];
extern  VTBL_ENTRY _ZTV7S7107C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C4[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C6;
extern VTBL_ENTRY _ZTI7S7107C6[];
extern  VTBL_ENTRY _ZTV7S7107C6[];
extern Class_Descriptor cd_S7107C2;
extern VTBL_ENTRY _ZTI7S7107C2[];
extern  VTBL_ENTRY _ZTV7S7107C2[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C8;
extern VTBL_ENTRY _ZTI7S7107C8[];
extern  VTBL_ENTRY _ZTV7S7107C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C8[];
extern Class_Descriptor cd_S7107C3;
extern VTBL_ENTRY _ZTI7S7107C3[];
extern  VTBL_ENTRY _ZTV7S7107C3[];
extern Class_Descriptor cd_S7107C4;
extern VTBL_ENTRY _ZTI7S7107C4[];
extern  VTBL_ENTRY _ZTV7S7107C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C4[];
extern Class_Descriptor cd_S7107C10;
extern VTBL_ENTRY _ZTI8S7107C10[];
extern  VTBL_ENTRY _ZTV8S7107C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7107C10[];
extern Class_Descriptor cd_S7107C9;
extern VTBL_ENTRY _ZTI7S7107C9[];
extern  VTBL_ENTRY _ZTV7S7107C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C9[];
static Base_Class bases_S7107C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7107C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7107C3,    ABISELECT(240,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
    2, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(240,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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7107C5,    ABISELECT(240,96), //bcp->offset
    56, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(352,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(448,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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(448,196), //bcp->offset
    139, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(400,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(400,176), //bcp->offset
    123, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7107C7,    ABISELECT(352,156), //bcp->offset
    95, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(80,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(80,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(128,48), //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
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7107C4,    ABISELECT(80,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7107C3,    ABISELECT(496,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
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(592,264), //bcp->offset
    240, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(544,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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7107C6,    ABISELECT(544,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
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7107C2,    ABISELECT(640,284), //bcp->offset
    254, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7107C3,    ABISELECT(720,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
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7107C8,    ABISELECT(720,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7107C3,    ABISELECT(768,332), //bcp->offset
    315, //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
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7107C4,    ABISELECT(720,312), //bcp->offset
    267, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7107C10,    ABISELECT(544,240), //bcp->offset
    210, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7107C9,    ABISELECT(496,220), //bcp->offset
    167, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7107C1[];
extern void _ZN7S7107C1D1Ev();
extern void _ZN7S7107C1D0Ev();
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
extern void _ZN7S7107C12v1Ev();
extern void _ZN7S7107C12v2Ev();
extern void _ZN7S7107C12v3Ev();
extern void _ZN7S7107C12v4Ev();
extern void _ZN7S7107C12v5Ev();
extern void _ZN7S7107C12v6Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZThn80_N7S7107C1D1Ev,_ZThn28_N7S7107C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7107C1D0Ev,_ZThn28_N7S7107C1D0Ev)();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C1D1Ev,_ZTv0_n64_N7S7107C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S7107C1D1Ev,_ZThn96_N7S7107C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7107C1D0Ev,_ZTv0_n64_N7S7107C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S7107C1D0Ev,_ZThn96_N7S7107C1D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C1D1Ev,_ZTv0_n48_N7S7107C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S7107C1D1Ev,_ZThn156_N7S7107C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7107C1D0Ev,_ZTv0_n48_N7S7107C1D0Ev)();
extern void ABISELECT(_ZThn352_N7S7107C1D0Ev,_ZThn156_N7S7107C1D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C93v50Ev();
extern void _ZN7S7107C93v51Ev();
extern void _ZN7S7107C93v52Ev();
extern void ABISELECT(_ZTv0_n144_N7S7107C1D1Ev,_ZTv0_n72_N7S7107C1D1Ev)();
extern void ABISELECT(_ZThn496_N7S7107C1D1Ev,_ZThn220_N7S7107C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7107C1D0Ev,_ZTv0_n72_N7S7107C1D0Ev)();
extern void ABISELECT(_ZThn496_N7S7107C1D0Ev,_ZThn220_N7S7107C1D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN8S7107C103v43Ev();
extern void _ZN8S7107C103v44Ev();
extern void _ZN8S7107C103v45Ev();
extern void _ZN8S7107C103v46Ev();
extern void _ZN8S7107C103v47Ev();
extern void _ZN8S7107C103v48Ev();
extern void _ZN8S7107C103v49Ev();
extern void ABISELECT(_ZTvn48_n144_N7S7107C1D1Ev,_ZTvn20_n72_N7S7107C1D1Ev)();
extern void ABISELECT(_ZTvn48_n144_N7S7107C1D0Ev,_ZTvn20_n72_N7S7107C1D0Ev)();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void ABISELECT(_ZTv0_n24_N7S7107C1D1Ev,_ZTv0_n12_N7S7107C1D1Ev)();
extern void ABISELECT(_ZThn640_N7S7107C1D1Ev,_ZThn284_N7S7107C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7107C1D0Ev,_ZTv0_n12_N7S7107C1D0Ev)();
extern void ABISELECT(_ZThn640_N7S7107C1D0Ev,_ZThn284_N7S7107C1D0Ev)() __attribute__((weak));
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZTv0_n208_N7S7107C1D1Ev,_ZTv0_n104_N7S7107C1D1Ev)();
extern void ABISELECT(_ZThn720_N7S7107C1D1Ev,_ZThn312_N7S7107C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N7S7107C1D0Ev,_ZTv0_n104_N7S7107C1D0Ev)();
extern void ABISELECT(_ZThn720_N7S7107C1D0Ev,_ZThn312_N7S7107C1D0Ev)() __attribute__((weak));
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY vtc_S7107C1[] = {
  ABISELECT(720,312),
  ABISELECT(640,284),
  ABISELECT(592,264),
  ABISELECT(496,220),
  ABISELECT(448,196),
  ABISELECT(352,156),
  ABISELECT(240,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7107C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7107C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7107C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7107C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7107C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7107C12v6Ev,
  ABISELECT(272,128),
  ABISELECT(160,68),
  ABISELECT(368,168),
  ABISELECT(-80,-28),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7107C1D1Ev,_ZThn28_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7107C1D0Ev,_ZThn28_N7S7107C1D0Ev),
  ABISELECT(-128,-48),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-96),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C1D1Ev,_ZTv0_n64_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C1D0Ev,_ZTv0_n64_N7S7107C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-352,-156),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-352,-156),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C1D1Ev,_ZTv0_n48_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C1D0Ev,_ZTv0_n48_N7S7107C1D0Ev),
  ABISELECT(48,20),
  ABISELECT(-400,-176),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-196),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-496,-220),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-144,-64),
  ABISELECT(224,92),
  ABISELECT(144,64),
  ABISELECT(96,44),
  ABISELECT(-256,-124),
  ABISELECT(-496,-220),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v50Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v51Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v52Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7107C1D1Ev,_ZTv0_n72_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7107C1D0Ev,_ZTv0_n72_N7S7107C1D0Ev),
  ABISELECT(-96,-44),
  ABISELECT(-192,-84),
  ABISELECT(-304,-144),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  ABISELECT(-544,-240),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v49Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n144_N7S7107C1D1Ev,_ZTvn20_n72_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n144_N7S7107C1D0Ev,_ZTvn20_n72_N7S7107C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-264),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-284),
  ABISELECT(-640,-284),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7107C1D1Ev,_ZTv0_n12_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7107C1D0Ev,_ZTv0_n12_N7S7107C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
  ABISELECT(-720,-312),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  ABISELECT(-720,-312),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7107C1D1Ev,_ZTv0_n104_N7S7107C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7107C1D0Ev,_ZTv0_n104_N7S7107C1D0Ev),
  ABISELECT(-768,-332),
  (VTBL_ENTRY)&(_ZTI7S7107C1[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern VTBL_ENTRY _ZTV7S7107C1[];
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void _ZN7S7107C4D1Ev();
extern void _ZN7S7107C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C4__A__7S7107C1[] = {
  ABISELECT(272,128),
  ABISELECT(160,68),
  ABISELECT(368,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C4__A1__7S7107C1[] = {
  ABISELECT(368,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C4__A1__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-168),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn68_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn68_N7S7107C4D0Ev)() __attribute__((weak));
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C4__A__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-68),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev)();
extern void ABISELECT(_ZThn272_N7S7107C4D1Ev,_ZThn128_N7S7107C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev)();
extern void ABISELECT(_ZThn272_N7S7107C4D0Ev,_ZThn128_N7S7107C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C4__A__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-128),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-128),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A1__7S7107C4__A__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-168),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C4__A__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-148),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void _ZN7S7107C7D1Ev();
extern void _ZN7S7107C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C7D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C1[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C7__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C7__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C8__7S7107C7__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C7__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7107C7[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D1Ev,_ZTv0_n64_N7S7107C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C7D0Ev,_ZTv0_n64_N7S7107C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C93v50Ev();
extern void _ZN7S7107C93v51Ev();
extern void _ZN7S7107C93v52Ev();
extern void _ZN7S7107C9D1Ev();
extern void _ZN7S7107C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C9__7S7107C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-144,-64),
  ABISELECT(224,92),
  ABISELECT(144,64),
  ABISELECT(96,44),
  ABISELECT(-256,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v50Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v51Ev,
  (VTBL_ENTRY)&_ZN7S7107C93v52Ev,
  (VTBL_ENTRY)&_ZN7S7107C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C9D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN8S7107C103v43Ev();
extern void _ZN8S7107C103v44Ev();
extern void _ZN8S7107C103v45Ev();
extern void _ZN8S7107C103v46Ev();
extern void _ZN8S7107C103v47Ev();
extern void _ZN8S7107C103v48Ev();
extern void _ZN8S7107C103v49Ev();
extern void _ZN8S7107C10D1Ev();
extern void _ZN8S7107C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7107C107S7107C9__7S7107C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-192,-84),
  ABISELECT(-304,-144),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v49Ev,
  (VTBL_ENTRY)&_ZN8S7107C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7107C10D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C3__8S7107C107S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S7107C10D1Ev,_ZThn44_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S7107C10D0Ev,_ZThn44_N8S7107C10D0Ev)() __attribute__((weak));
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C2__8S7107C107S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S7107C10D1Ev,_ZThn72_N8S7107C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S7107C10D0Ev,_ZThn72_N8S7107C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C4__8S7107C107S7107C9__7S7107C1[] = {
  ABISELECT(-176,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  ABISELECT(-176,-72),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__8S7107C107S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(304,144),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(304,144),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7107C10D1Ev,_ZTv0_n64_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7107C10D0Ev,_ZTv0_n64_N8S7107C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev)();
extern void ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7107C7__8S7107C107S7107C9__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(192,84),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(192,84),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7107C10D1Ev,_ZTv0_n48_N8S7107C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S7107C10D0Ev,_ZTv0_n48_N8S7107C10D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A2__8S7107C107S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__8S7107C107S7107C9__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C37S7107C4__A7__8S7107C107S7107C9__7S7107C1[] = {
  ABISELECT(-224,-92),
  (VTBL_ENTRY)&(_ZTI8S7107C10[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C9D1Ev,_ZTv0_n64_N7S7107C9D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C9D0Ev,_ZTv0_n64_N7S7107C9D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(256,124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(256,124),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C9D1Ev,_ZTv0_n64_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C9D0Ev,_ZTv0_n64_N7S7107C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void _ZN8S7107C103v43Ev();
extern void _ZN8S7107C103v44Ev();
extern void _ZN8S7107C103v45Ev();
extern void _ZN8S7107C103v46Ev();
extern void _ZN8S7107C103v47Ev();
extern void _ZN8S7107C103v48Ev();
extern void _ZN8S7107C103v49Ev();
extern void ABISELECT(_ZThn48_N7S7107C9D1Ev,_ZThn20_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7107C9D0Ev,_ZThn20_N7S7107C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7107C10__7S7107C9__7S7107C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-192,-84),
  ABISELECT(-304,-144),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7107C103v49Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7107C9D1Ev,_ZThn20_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7107C9D0Ev,_ZThn20_N7S7107C9D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C3__A2__7S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7107C9D1Ev,_ZTv0_n12_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn144_N7S7107C9D1Ev,_ZThn64_N7S7107C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7107C9D0Ev,_ZTv0_n12_N7S7107C9D0Ev)();
extern void ABISELECT(_ZThn144_N7S7107C9D0Ev,_ZThn64_N7S7107C9D0Ev)() __attribute__((weak));
extern void _ZN7S7107C22v7Ev();
extern void _ZN7S7107C22v8Ev();
extern void _ZN7S7107C22v9Ev();
extern void _ZN7S7107C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C2__7S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7107C9D1Ev,_ZTv0_n12_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7107C9D0Ev,_ZTv0_n12_N7S7107C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7107C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7107C23v10Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void ABISELECT(_ZTv0_n208_N7S7107C9D1Ev,_ZTv0_n104_N7S7107C9D1Ev)();
extern void ABISELECT(_ZThn224_N7S7107C9D1Ev,_ZThn92_N7S7107C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N7S7107C9D0Ev,_ZTv0_n104_N7S7107C9D0Ev)();
extern void ABISELECT(_ZThn224_N7S7107C9D0Ev,_ZThn92_N7S7107C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7107C4__7S7107C9__7S7107C1[] = {
  ABISELECT(-224,-92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  ABISELECT(-224,-92),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7107C9D1Ev,_ZTv0_n104_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7107C9D0Ev,_ZTv0_n104_N7S7107C9D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C9D1Ev,_ZTv0_n48_N7S7107C9D1Ev)();
extern void ABISELECT(_ZTv0_n96_N7S7107C9D0Ev,_ZTv0_n48_N7S7107C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C9__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(144,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C9D1Ev,_ZTv0_n48_N7S7107C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C9D0Ev,_ZTv0_n48_N7S7107C9D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A2__7S7107C9__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C9__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C37S7107C4__A8__7S7107C9__7S7107C1[] = {
  ABISELECT(-272,-112),
  (VTBL_ENTRY)&(_ZTI7S7107C9[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
extern void _ZN7S7107C43v36Ev();
extern void _ZN7S7107C43v37Ev();
extern void _ZN7S7107C43v38Ev();
extern void _ZN7S7107C43v39Ev();
extern void _ZN7S7107C43v40Ev();
extern void _ZN7S7107C43v41Ev();
extern void _ZN7S7107C43v42Ev();
extern void _ZN7S7107C4D1Ev();
extern void _ZN7S7107C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C4__A1__7S7107C1[] = {
  ABISELECT(-368,-156),
  ABISELECT(-480,-216),
  ABISELECT(-272,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7107C43v42Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7107C4D0Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C4__A2__7S7107C1[] = {
  ABISELECT(-272,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__7S7107C87S7107C4__A2__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,116),
  (VTBL_ENTRY)&(_ZTI7S7107C8[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev)();
extern void _ZN7S7107C53v31Ev();
extern void _ZN7S7107C53v32Ev();
extern void _ZN7S7107C53v33Ev();
extern void _ZN7S7107C53v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C5__7S7107C4__A1__7S7107C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(480,216),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(480,216),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7107C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v32Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v33Ev,
  (VTBL_ENTRY)&_ZN7S7107C53v34Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C73v35Ev();
extern void ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev)();
extern void ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7107C7__7S7107C4__A1__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(368,156),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(368,156),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C73v35Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev),
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C63v17Ev();
extern void _ZN7S7107C63v18Ev();
extern void _ZN7S7107C63v19Ev();
extern void _ZN7S7107C63v20Ev();
extern void _ZN7S7107C63v21Ev();
extern void _ZN7S7107C63v22Ev();
extern void _ZN7S7107C63v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C6__A1__7S7107C4__A1__7S7107C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,116),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7107C63v23Ev,
};
extern void _ZN7S7107C33v11Ev();
extern void _ZN7S7107C33v12Ev();
extern void _ZN7S7107C33v13Ev();
extern void _ZN7S7107C33v14Ev();
extern void _ZN7S7107C33v15Ev();
extern void _ZN7S7107C33v16Ev();
extern void _ZN7S7107C83v24Ev();
extern void _ZN7S7107C83v25Ev();
extern void _ZN7S7107C83v26Ev();
extern void _ZN7S7107C83v27Ev();
extern void _ZN7S7107C83v28Ev();
extern void _ZN7S7107C83v29Ev();
extern void _ZN7S7107C83v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7107C87S7107C7__7S7107C4__A1__7S7107C1[] = {
  ABISELECT(48,20),
  ABISELECT(320,136),
  (VTBL_ENTRY)&(_ZTI7S7107C4[0]),
  (VTBL_ENTRY)&_ZN7S7107C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7107C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7107C83v30Ev,
};
static  VTT_ENTRY vtt_S7107C1[] = {
  {&(_ZTV7S7107C1[9]),  9,323},
  {&(_tg__ZTV7S7107C4__A__7S7107C1[5]),  5,27},
  {&(_tg__ZTV7S7107C87S7107C4__A1__7S7107C1[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C4__A1__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C5__7S7107C4__A__7S7107C1[20]),  20,39},
  {&(_tg__ZTV7S7107C7__7S7107C4__A__7S7107C1[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A1__7S7107C4__A__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C4__A__7S7107C1[3]),  3,16},
  {&(_ZTV7S7107C1[26]),  26,323},
  {&(_ZTV7S7107C1[76]),  76,323},
  {&(_ZTV7S7107C1[114]),  114,323},
  {&(_ZTV7S7107C1[154]),  154,323},
  {&(_ZTV7S7107C1[126]),  126,323},
  {&(_ZTV7S7107C1[199]),  199,323},
  {&(_ZTV7S7107C1[218]),  218,323},
  {&(_ZTV7S7107C1[248]),  248,323},
  {&(_ZTV7S7107C1[261]),  261,323},
  {&(_ZTV7S7107C1[293]),  293,323},
  {&(_ZTV7S7107C1[317]),  317,323},
  {&(_tg__ZTV7S7107C7__7S7107C1[4]),  4,13},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C1[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C7__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C6__7S7107C7__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C8__7S7107C7__7S7107C1[3]),  3,16},
  {&(_tg__ZTV7S7107C5__7S7107C7__7S7107C1[20]),  20,39},
  {&(_tg__ZTV7S7107C9__7S7107C1[8]),  8,19},
  {&(_tg__ZTV8S7107C107S7107C9__7S7107C1[8]),  8,30},
  {&(_tg__ZTV7S7107C3__8S7107C107S7107C9__7S7107C1[8]),  8,14},
  {&(_tg__ZTV7S7107C2__8S7107C107S7107C9__7S7107C1[7]),  7,13},
  {&(_tg__ZTV7S7107C4__8S7107C107S7107C9__7S7107C1[26]),  26,48},
  {&(_tg__ZTV7S7107C5__8S7107C107S7107C9__7S7107C1[20]),  20,39},
  {&(_tg__ZTV7S7107C7__8S7107C107S7107C9__7S7107C1[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A2__8S7107C107S7107C9__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__8S7107C107S7107C9__7S7107C1[3]),  3,16},
  {&(_tg__ZTV7S7107C37S7107C4__A7__8S7107C107S7107C9__7S7107C1[2]),  2,8},
  {&(_tg__ZTV7S7107C5__7S7107C9__7S7107C1[20]),  20,39},
  {&(_tg__ZTV8S7107C10__7S7107C9__7S7107C1[8]),  8,30},
  {&(_tg__ZTV7S7107C3__A2__7S7107C9__7S7107C1[8]),  8,14},
  {&(_tg__ZTV7S7107C2__7S7107C9__7S7107C1[7]),  7,13},
  {&(_tg__ZTV7S7107C4__7S7107C9__7S7107C1[26]),  26,48},
  {&(_tg__ZTV7S7107C7__7S7107C9__7S7107C1[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A2__7S7107C9__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C9__7S7107C1[3]),  3,16},
  {&(_tg__ZTV7S7107C37S7107C4__A8__7S7107C9__7S7107C1[2]),  2,8},
  {&(_tg__ZTV7S7107C4__A1__7S7107C1[5]),  5,27},
  {&(_tg__ZTV7S7107C87S7107C4__A2__7S7107C1[3]),  3,16},
  {&(_tg__ZTV7S7107C6__7S7107C87S7107C4__A2__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C5__7S7107C4__A1__7S7107C1[20]),  20,39},
  {&(_tg__ZTV7S7107C7__7S7107C4__A1__7S7107C1[19]),  19,28},
  {&(_tg__ZTV7S7107C6__A1__7S7107C4__A1__7S7107C1[15]),  15,28},
  {&(_tg__ZTV7S7107C87S7107C7__7S7107C4__A1__7S7107C1[3]),  3,16},
};
extern VTBL_ENTRY _ZTI7S7107C1[];
extern  VTBL_ENTRY _ZTV7S7107C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7107C1[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7107C9D0Ev,_ZTv0_n104_N7S7107C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7107C9D0Ev,_ZThn92_N7S7107C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7107C9D1Ev,_ZTv0_n104_N7S7107C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7107C9D1Ev,_ZThn92_N7S7107C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7107C9D0Ev,_ZTv0_n12_N7S7107C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7107C9D0Ev,_ZThn64_N7S7107C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7107C9D1Ev,_ZTv0_n12_N7S7107C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7107C9D1Ev,_ZThn64_N7S7107C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S7107C10D0Ev,_ZTv0_n104_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7107C10D0Ev,_ZThn72_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S7107C10D1Ev,_ZTv0_n104_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7107C10D1Ev,_ZThn72_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7107C10D0Ev,_ZTv0_n12_N8S7107C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7107C10D0Ev,_ZThn44_N8S7107C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7107C10D1Ev,_ZTv0_n12_N8S7107C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7107C10D1Ev,_ZThn44_N8S7107C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D0Ev,_ZTv0_n48_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7107C4D0Ev,_ZThn128_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C4D1Ev,_ZTv0_n48_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7107C4D1Ev,_ZThn128_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C4D0Ev,_ZTv0_n64_N7S7107C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D0Ev,_ZThn68_N7S7107C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C4D1Ev,_ZTv0_n64_N7S7107C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7107C4D1Ev,_ZThn68_N7S7107C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7107C1D0Ev,_ZTv0_n104_N7S7107C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7107C1D0Ev,_ZThn312_N7S7107C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7107C1D1Ev,_ZTv0_n104_N7S7107C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7107C1D1Ev,_ZThn312_N7S7107C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7107C1D0Ev,_ZTv0_n12_N7S7107C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7107C1D0Ev,_ZThn284_N7S7107C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7107C1D1Ev,_ZTv0_n12_N7S7107C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7107C1D1Ev,_ZThn284_N7S7107C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7107C1D0Ev,_ZTv0_n72_N7S7107C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7107C1D0Ev,_ZThn220_N7S7107C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7107C1D1Ev,_ZTv0_n72_N7S7107C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7107C1D1Ev,_ZThn220_N7S7107C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C1D0Ev,_ZTv0_n48_N7S7107C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7107C1D0Ev,_ZThn156_N7S7107C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7107C1D1Ev,_ZTv0_n48_N7S7107C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7107C1D1Ev,_ZThn156_N7S7107C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C1D0Ev,_ZTv0_n64_N7S7107C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7107C1D0Ev,_ZThn96_N7S7107C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7107C1D1Ev,_ZTv0_n64_N7S7107C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7107C1D1Ev,_ZThn96_N7S7107C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7107C1 = {  "S7107C1", // class name
  bases_S7107C1, 25,
  &(vtc_S7107C1[0]), // expected_vtbl_contents
  &(vtt_S7107C1[0]), // expected_vtt_contents
  ABISELECT(880,376), // object size
  NSPAIRA(_ZTI7S7107C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7107C1),323, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7107C1),51, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C3  {
  ::S7642C12 s20826c3f0;
  virtual void  v21(); // _ZN8S20826C33v21Ev
  ~S20826C3(); // tgen
  S20826C3(); // tgen
};
//SIG(-1 S20826C3) C1{ v1 FU2{ m FD[3]}}


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

static void Test_S20826C3()
{
  extern Class_Descriptor cd_S20826C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S20826C3, buf);
    S20826C3 *dp, &lv = *(dp=new (buf) S20826C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20826C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C3)");
    check_field_offset(lv, s20826c3f0, ABISELECT(16,4), "S20826C3.s20826c3f0");
    test_class_info(&lv, &cd_S20826C3);
    dp->~S20826C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C3(Test_S20826C3, "S20826C3", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20826C3C1Ev();
extern void _ZN8S20826C3D1Ev();
Name_Map name_map_S20826C3[] = {
  NSPAIR(_ZN8S20826C3C1Ev),
  NSPAIR(_ZN8S20826C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20826C3[];
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY vtc_S20826C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C3[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
Class_Descriptor cd_S20826C3 = {  "S20826C3", // class name
  0,0,//no base classes
  &(vtc_S20826C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20826C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20826C3),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  S20826C6  {
  virtual void  v5(); // _ZN8S20826C62v5Ev
  virtual void  v6(); // _ZN8S20826C62v6Ev
  ~S20826C6(); // tgen
  S20826C6(); // tgen
};
//SIG(-1 S20826C6) C1{ v1 v2}


void  S20826C6 ::v5(){vfunc_called(this, "_ZN8S20826C62v5Ev");}
void  S20826C6 ::v6(){vfunc_called(this, "_ZN8S20826C62v6Ev");}
S20826C6 ::~S20826C6(){ note_dtor("S20826C6", this);} // tgen
S20826C6 ::S20826C6(){ note_ctor("S20826C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20826C6C1Ev();
extern void _ZN8S20826C6D1Ev();
Name_Map name_map_S20826C6[] = {
  NSPAIR(_ZN8S20826C6C1Ev),
  NSPAIR(_ZN8S20826C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20826C6[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY vtc_S20826C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C6[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
Class_Descriptor cd_S20826C6 = {  "S20826C6", // class name
  0,0,//no base classes
  &(vtc_S20826C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20826C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20826C6),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  S20826C9  : virtual S20826C6 {
  void *s20826c9f0;
  char s20826c9f1;
  virtual void  v7(); // _ZN8S20826C92v7Ev
  virtual void  v8(); // _ZN8S20826C92v8Ev
  virtual void  v9(); // _ZN8S20826C92v9Ev
  virtual void  v10(); // _ZN8S20826C93v10Ev
  ~S20826C9(); // tgen
  S20826C9(); // tgen
};
//SIG(-1 S20826C9) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S20826C9 ::v7(){vfunc_called(this, "_ZN8S20826C92v7Ev");}
void  S20826C9 ::v8(){vfunc_called(this, "_ZN8S20826C92v8Ev");}
void  S20826C9 ::v9(){vfunc_called(this, "_ZN8S20826C92v9Ev");}
void  S20826C9 ::v10(){vfunc_called(this, "_ZN8S20826C93v10Ev");}
S20826C9 ::~S20826C9(){ note_dtor("S20826C9", this);} // tgen
S20826C9 ::S20826C9(){ note_ctor("S20826C9", this);} // tgen

static void Test_S20826C9()
{
  extern Class_Descriptor cd_S20826C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20826C9, buf);
    S20826C9 *dp, &lv = *(dp=new (buf) S20826C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20826C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20826C9)");
    check_base_class_offset(lv, (S20826C6*), 0, "S20826C9");
    check_field_offset(lv, s20826c9f0, ABISELECT(8,4), "S20826C9.s20826c9f0");
    check_field_offset(lv, s20826c9f1, ABISELECT(16,8), "S20826C9.s20826c9f1");
    test_class_info(&lv, &cd_S20826C9);
    dp->~S20826C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C9(Test_S20826C9, "S20826C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20826C9C1Ev();
extern void _ZN8S20826C9D1Ev();
Name_Map name_map_S20826C9[] = {
  NSPAIR(_ZN8S20826C9C1Ev),
  NSPAIR(_ZN8S20826C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
static Base_Class bases_S20826C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    0, //bcp->offset
    -1, //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 _ZTI8S20826C9[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY vtc_S20826C9[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern VTBL_ENTRY _ZTV8S20826C9[];
static  VTT_ENTRY vtt_S20826C9[] = {
  {&(_ZTV8S20826C9[5]),  5,11},
  {&(_ZTV8S20826C9[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
Class_Descriptor cd_S20826C9 = {  "S20826C9", // class name
  bases_S20826C9, 1,
  &(vtc_S20826C9[0]), // expected_vtbl_contents
  &(vtt_S20826C9[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20826C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20826C9),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20826C9),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  S20826C10  : S20826C6 {
  virtual void  v11(); // _ZN9S20826C103v11Ev
  virtual void  v12(); // _ZN9S20826C103v12Ev
  virtual void  v13(); // _ZN9S20826C103v13Ev
  virtual void  v14(); // _ZN9S20826C103v14Ev
  virtual void  v15(); // _ZN9S20826C103v15Ev
  virtual void  v16(); // _ZN9S20826C103v16Ev
  virtual void  v17(); // _ZN9S20826C103v17Ev
  virtual void  v18(); // _ZN9S20826C103v18Ev
  ~S20826C10(); // tgen
  S20826C10(); // tgen
};
//SIG(-1 S20826C10) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S20826C10 ::v11(){vfunc_called(this, "_ZN9S20826C103v11Ev");}
void  S20826C10 ::v12(){vfunc_called(this, "_ZN9S20826C103v12Ev");}
void  S20826C10 ::v13(){vfunc_called(this, "_ZN9S20826C103v13Ev");}
void  S20826C10 ::v14(){vfunc_called(this, "_ZN9S20826C103v14Ev");}
void  S20826C10 ::v15(){vfunc_called(this, "_ZN9S20826C103v15Ev");}
void  S20826C10 ::v16(){vfunc_called(this, "_ZN9S20826C103v16Ev");}
void  S20826C10 ::v17(){vfunc_called(this, "_ZN9S20826C103v17Ev");}
void  S20826C10 ::v18(){vfunc_called(this, "_ZN9S20826C103v18Ev");}
S20826C10 ::~S20826C10(){ note_dtor("S20826C10", this);} // tgen
S20826C10 ::S20826C10(){ note_ctor("S20826C10", this);} // tgen

static void Test_S20826C10()
{
  extern Class_Descriptor cd_S20826C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20826C10, buf);
    S20826C10 *dp, &lv = *(dp=new (buf) S20826C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20826C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20826C10)");
    check_base_class_offset(lv, (S20826C6*), 0, "S20826C10");
    test_class_info(&lv, &cd_S20826C10);
    dp->~S20826C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C10(Test_S20826C10, "S20826C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20826C10C1Ev();
extern void _ZN9S20826C10D1Ev();
Name_Map name_map_S20826C10[] = {
  NSPAIR(_ZN9S20826C10C1Ev),
  NSPAIR(_ZN9S20826C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
static Base_Class bases_S20826C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20826C10[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C10[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
Class_Descriptor cd_S20826C10 = {  "S20826C10", // class name
  bases_S20826C10, 1,
  &(vtc_S20826C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20826C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20826C10),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  S20826C8  : virtual S20826C6 , S20826C9 , S20826C10 {
  ::S20826C6 s20826c8f0;
  virtual  ~S20826C8(); // _ZN8S20826C8D2Ev
  virtual void  v19(); // _ZN8S20826C83v19Ev
  virtual void  v20(); // _ZN8S20826C83v20Ev
  S20826C8(); // tgen
};
//SIG(-1 S20826C8) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S20826C8 ::~S20826C8(){ note_dtor("S20826C8", this);}
void  S20826C8 ::v19(){vfunc_called(this, "_ZN8S20826C83v19Ev");}
void  S20826C8 ::v20(){vfunc_called(this, "_ZN8S20826C83v20Ev");}
S20826C8 ::S20826C8(){ note_ctor("S20826C8", this);} // tgen

static void Test_S20826C8()
{
  extern Class_Descriptor cd_S20826C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20826C8, buf);
    S20826C8 *dp, &lv = *(dp=new (buf) S20826C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20826C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20826C8)");
    /*is_ambiguous_... S20826C8::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*), 0, "S20826C8");
    check_base_class_offset(lv, (S20826C6*)(S20826C9*), 0, "S20826C8");
    check_base_class_offset(lv, (S20826C9*), 0, "S20826C8");
    check_base_class_offset(lv, (S20826C6*)(S20826C10*), ABISELECT(24,12), "S20826C8");
    check_base_class_offset(lv, (S20826C10*), ABISELECT(24,12), "S20826C8");
    check_field_offset(lv, s20826c8f0, ABISELECT(32,16), "S20826C8.s20826c8f0");
    test_class_info(&lv, &cd_S20826C8);
    dp->~S20826C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C8(Test_S20826C8, "S20826C8", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20826C8C1Ev();
extern void _ZN8S20826C8D2Ev();
Name_Map name_map_S20826C8[] = {
  NSPAIR(_ZN8S20826C8C1Ev),
  NSPAIR(_ZN8S20826C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
static Base_Class bases_S20826C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S20826C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C6,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20826C8[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S20826C8[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__8S20826C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
static  VTT_ENTRY vtt_S20826C8[] = {
  {&(_ZTV8S20826C8[5]),  5,27},
  {&(_tg__ZTV8S20826C9__8S20826C8[5]),  5,11},
  {&(_tg__ZTV8S20826C9__8S20826C8[5]),  5,11},
  {&(_ZTV8S20826C8[5]),  5,27},
};
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
Class_Descriptor cd_S20826C8 = {  "S20826C8", // class name
  bases_S20826C8, 4,
  &(vtc_S20826C8[0]), // expected_vtbl_contents
  &(vtt_S20826C8[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20826C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20826C8),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20826C8),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  S20826C12  : virtual S20826C8 {
  virtual  ~S20826C12(); // _ZN9S20826C12D2Ev
  virtual void  v22(); // _ZN9S20826C123v22Ev
  virtual void  v23(); // _ZN9S20826C123v23Ev
  S20826C12(); // tgen
};
//SIG(-1 S20826C12) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S20826C12 ::~S20826C12(){ note_dtor("S20826C12", this);}
void  S20826C12 ::v22(){vfunc_called(this, "_ZN9S20826C123v22Ev");}
void  S20826C12 ::v23(){vfunc_called(this, "_ZN9S20826C123v23Ev");}
S20826C12 ::S20826C12(){ note_ctor("S20826C12", this);} // tgen

static void Test_S20826C12()
{
  extern Class_Descriptor cd_S20826C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20826C12, buf);
    S20826C12 *dp, &lv = *(dp=new (buf) S20826C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20826C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20826C12)");
    /*is_ambiguous_... S20826C8::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C12");
    check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C12");
    check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(8,4), "S20826C12");
    check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(32,16), "S20826C12");
    check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(32,16), "S20826C12");
    check_base_class_offset(lv, (S20826C8*), ABISELECT(8,4), "S20826C12");
    test_class_info(&lv, &cd_S20826C12);
    dp->~S20826C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C12(Test_S20826C12, "S20826C12", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20826C12C1Ev();
extern void _ZN9S20826C12D2Ev();
Name_Map name_map_S20826C12[] = {
  NSPAIR(_ZN9S20826C12C1Ev),
  NSPAIR(_ZN9S20826C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
static Base_Class bases_S20826C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    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
    1, //immediately_derived
  0, 1},
  {&cd_S20826C9,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI9S20826C12[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C12D1Ev,_ZThn4_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn8_N9S20826C12D0Ev,_ZThn4_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S20826C12[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__9S20826C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__9S20826C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__9S20826C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
static  VTT_ENTRY vtt_S20826C12[] = {
  {&(_ZTV9S20826C12[6]),  6,54},
  {&(_ZTV9S20826C12[32]),  32,54},
  {&(_ZTV9S20826C12[6]),  6,54},
  {&(_ZTV9S20826C12[44]),  44,54},
  {&(_tg__ZTV8S20826C8__9S20826C12[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__9S20826C12[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__9S20826C12[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__9S20826C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20826C12D0Ev,_ZThn4_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20826C12D1Ev,_ZThn4_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C12 = {  "S20826C12", // class name
  bases_S20826C12, 5,
  &(vtc_S20826C12[0]), // expected_vtbl_contents
  &(vtt_S20826C12[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20826C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20826C12),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20826C12),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C11  : S20826C10 , S20826C12 , S20826C3 , S20826C9 {
  void *s20826c11f0;
  long s20826c11f1;
  virtual void  v24(); // _ZN9S20826C113v24Ev
  virtual void  v25(); // _ZN9S20826C113v25Ev
  virtual void  v26(); // _ZN9S20826C113v26Ev
  virtual void  v27(); // _ZN9S20826C113v27Ev
  virtual void  v28(); // _ZN9S20826C113v28Ev
  virtual void  v29(); // _ZN9S20826C113v29Ev
  ~S20826C11(); // tgen
  S20826C11(); // tgen
};
//SIG(-1 S20826C11) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp Fl}


void  S20826C11 ::v24(){vfunc_called(this, "_ZN9S20826C113v24Ev");}
void  S20826C11 ::v25(){vfunc_called(this, "_ZN9S20826C113v25Ev");}
void  S20826C11 ::v26(){vfunc_called(this, "_ZN9S20826C113v26Ev");}
void  S20826C11 ::v27(){vfunc_called(this, "_ZN9S20826C113v27Ev");}
void  S20826C11 ::v28(){vfunc_called(this, "_ZN9S20826C113v28Ev");}
void  S20826C11 ::v29(){vfunc_called(this, "_ZN9S20826C113v29Ev");}
S20826C11 ::~S20826C11(){ note_dtor("S20826C11", this);} // tgen
S20826C11 ::S20826C11(){ note_ctor("S20826C11", this);} // tgen

static void Test_S20826C11()
{
  extern Class_Descriptor cd_S20826C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,23)];
    init_test(&cd_S20826C11, buf);
    S20826C11 *dp, &lv = *(dp=new (buf) S20826C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S20826C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C11)");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*), 0, "S20826C11");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*), 0, "S20826C11");
    /*is_ambiguous_... S20826C8::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), ABISELECT(8,4), "S20826C11");
    check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), ABISELECT(8,4), "S20826C11");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*), ABISELECT(8,4), "S20826C11");
    check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(120,68), "S20826C11");
    check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(144,80), "S20826C11");
    check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(144,80), "S20826C11");
    check_base_class_offset(lv, (S20826C8*)(S20826C12*), ABISELECT(120,68), "S20826C11");
    check_base_class_offset(lv, (S20826C12*), ABISELECT(8,4), "S20826C11");
    check_base_class_offset(lv, (S20826C3*), ABISELECT(16,8), "S20826C11");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*), ABISELECT(80,48), "S20826C11");
    check_field_offset(lv, s20826c11f0, ABISELECT(104,60), "S20826C11.s20826c11f0");
    check_field_offset(lv, s20826c11f1, ABISELECT(112,64), "S20826C11.s20826c11f1");
    test_class_info(&lv, &cd_S20826C11);
    dp->~S20826C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C11(Test_S20826C11, "S20826C11", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN9S20826C11C1Ev();
extern void _ZN9S20826C11D1Ev();
Name_Map name_map_S20826C11[] = {
  NSPAIR(_ZN9S20826C11C1Ev),
  NSPAIR(_ZN9S20826C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
static Base_Class bases_S20826C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20826C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20826C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20826C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(144,80), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(120,68), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20826C12,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C3,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C9,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20826C11[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S20826C11D1Ev,_ZThn68_N9S20826C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S20826C11D0Ev,_ZThn68_N9S20826C11D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C11[] = {
  ABISELECT(8,4),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
  0,
  ABISELECT(112,64),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S20826C11[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C11[] = {
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20826C12D1Ev,_ZThn64_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20826C12D0Ev,_ZThn64_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C12__9S20826C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C12__9S20826C11[] = {
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C9__A1__9S20826C11[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C11[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__9S20826C11[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__9S20826C11[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__9S20826C11[] = {
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
static  VTT_ENTRY vtt_S20826C11[] = {
  {&(_ZTV9S20826C11[4]),  4,90},
  {&(_tg__ZTV9S20826C12__9S20826C11[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C12__9S20826C11[20]),  20,30},
  {&(_tg__ZTV9S20826C12__9S20826C11[6]),  6,12},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C12__9S20826C11[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C11[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C9__A1__9S20826C11[4]),  4,6},
  {&(_ZTV9S20826C11[28]),  28,90},
  {&(_ZTV9S20826C11[68]),  68,90},
  {&(_ZTV9S20826C11[28]),  28,90},
  {&(_ZTV9S20826C11[80]),  80,90},
  {&(_ZTV9S20826C11[42]),  42,90},
  {&(_tg__ZTV8S20826C8__9S20826C11[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__9S20826C11[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__9S20826C11[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__9S20826C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20826C12D0Ev,_ZThn64_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20826C12D1Ev,_ZThn64_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20826C11D0Ev,_ZThn68_N9S20826C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20826C11D1Ev,_ZThn68_N9S20826C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C11 = {  "S20826C11", // class name
  bases_S20826C11, 10,
  &(vtc_S20826C11[0]), // expected_vtbl_contents
  &(vtt_S20826C11[0]), // expected_vtt_contents
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI9S20826C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20826C11),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20826C11),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C7  : virtual S20826C6 , S20826C8 , virtual S20826C3 , S20826C11 , S20826C10 {
  virtual  ~S20826C7(); // _ZN8S20826C7D2Ev
  virtual void  v30(); // _ZN8S20826C73v30Ev
  S20826C7(); // tgen
};
//SIG(-1 S20826C7) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp Fl} BC5 vd v1}


 S20826C7 ::~S20826C7(){ note_dtor("S20826C7", this);}
void  S20826C7 ::v30(){vfunc_called(this, "_ZN8S20826C73v30Ev");}
S20826C7 ::S20826C7(){ note_ctor("S20826C7", this);} // tgen

static void Test_S20826C7()
{
  extern Class_Descriptor cd_S20826C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,39)];
    init_test(&cd_S20826C7, buf);
    S20826C7 *dp, &lv = *(dp=new (buf) S20826C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,152), "sizeof(S20826C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C7)");
    /*is_ambiguous_... S20826C7::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C7");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(24,12), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(24,12), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C8*), 0, "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C3 */ AMB_check_base_class_offset(lv, (S20826C3*), ABISELECT(176,92), "S20826C7");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*), ABISELECT(48,20), "S20826C7");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*), ABISELECT(48,20), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(240,132), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(264,144), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(264,144), "S20826C7");
    check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*), ABISELECT(240,132), "S20826C7");
    check_base_class_offset(lv, (S20826C12*)(S20826C11*), ABISELECT(56,24), "S20826C7");
    check_base_class_offset(lv, (S20826C3*)(S20826C11*), ABISELECT(64,28), "S20826C7");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*), ABISELECT(128,68), "S20826C7");
    check_base_class_offset(lv, (S20826C11*), ABISELECT(48,20), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*), ABISELECT(168,88), "S20826C7");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*), ABISELECT(168,88), "S20826C7");
    test_class_info(&lv, &cd_S20826C7);
    dp->~S20826C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C7(Test_S20826C7, "S20826C7", ABISELECT(288,152));

#else // __cplusplus

extern void _ZN8S20826C7C1Ev();
extern void _ZN8S20826C7D2Ev();
Name_Map name_map_S20826C7[] = {
  NSPAIR(_ZN8S20826C7C1Ev),
  NSPAIR(_ZN8S20826C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
static Base_Class bases_S20826C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20826C9,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20826C8,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C3,    ABISELECT(176,92), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20826C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(264,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(240,132), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20826C12,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C6,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(168,88), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S20826C7[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C7D1Ev();
extern void _ZN8S20826C7D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev)();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S20826C7D1Ev,_ZThn132_N8S20826C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S20826C7D0Ev,_ZThn132_N8S20826C7D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C7[] = {
  ABISELECT(240,132),
  ABISELECT(176,92),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S20826C7[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A__8S20826C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__8S20826C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C11__8S20826C7[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__8S20826C7[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn184_N9S20826C12D1Ev,_ZThn108_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn184_N9S20826C12D0Ev,_ZThn108_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C11__8S20826C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-108),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C11__8S20826C7[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__8S20826C7[] = {
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A2__8S20826C7[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C11__A2__8S20826C7[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C11__8S20826C7[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,108),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S20826C11D1Ev,_ZThn112_N9S20826C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S20826C11D0Ev,_ZThn112_N9S20826C11D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C11__8S20826C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C11__8S20826C7[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C11__8S20826C7[] = {
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C11__8S20826C7[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C7[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__A1__8S20826C7[] = {
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C7[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__A1__8S20826C7[] = {
  0,
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
static  VTT_ENTRY vtt_S20826C7[] = {
  {&(_ZTV8S20826C7[7]),  7,136},
  {&(_tg__ZTV8S20826C8__A__8S20826C7[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__8S20826C7[5]),  5,11},
  {&(_tg__ZTV8S20826C98S20826C8__8S20826C7[5]),  5,11},
  {&(_tg__ZTV8S20826C8__A__8S20826C7[5]),  5,15},
  {&(_tg__ZTV9S20826C11__8S20826C7[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__8S20826C7[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C11__8S20826C7[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C11__8S20826C7[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__8S20826C7[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A2__8S20826C7[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C11__A2__8S20826C7[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C11__8S20826C7[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C11__8S20826C7[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C11__8S20826C7[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C11__8S20826C7[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C11__8S20826C7[5]),  5,11},
  {&(_ZTV8S20826C7[7]),  7,136},
  {&(_ZTV8S20826C7[93]),  93,136},
  {&(_ZTV8S20826C7[34]),  34,136},
  {&(_ZTV8S20826C7[58]),  58,136},
  {&(_ZTV8S20826C7[114]),  114,136},
  {&(_ZTV8S20826C7[126]),  126,136},
  {&(_ZTV8S20826C7[72]),  72,136},
  {&(_tg__ZTV8S20826C8__A1__8S20826C7[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__A1__8S20826C7[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C7[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__A1__8S20826C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20826C7[];
extern  VTBL_ENTRY _ZTV8S20826C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C7[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20826C11D0Ev,_ZThn112_N9S20826C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20826C11D1Ev,_ZThn112_N9S20826C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20826C12D0Ev,_ZThn108_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20826C12D1Ev,_ZThn108_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20826C7D0Ev,_ZThn132_N8S20826C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20826C7D1Ev,_ZThn132_N8S20826C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C7 = {  "S20826C7", // class name
  bases_S20826C7, 18,
  &(vtc_S20826C7[0]), // expected_vtbl_contents
  &(vtt_S20826C7[0]), // expected_vtt_contents
  ABISELECT(288,152), // object size
  NSPAIRA(_ZTI8S20826C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20826C7),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20826C7),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C5  : virtual S20826C6 , S20826C7 , S20826C9 {
  void *s20826c5f0;
  int s20826c5f1;
  virtual void  v31(); // _ZN8S20826C53v31Ev
  virtual void  v32(); // _ZN8S20826C53v32Ev
  ~S20826C5(); // tgen
  S20826C5(); // tgen
};
//SIG(-1 S20826C5) C1{ VBC2{ v3 v4} BC3{ VBC2 BC4{ VBC2 BC5{ VBC2 v5 v6 v7 v8 Fp Fc} BC6{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC2} VBC7{ v19 FU8{ m FD[3]}} BC9{ BC6 BC10{ VBC4 vd v20 v21} BC7 BC5 v22 v23 v24 v25 v26 v27 Fp Fl} BC6 vd v28} BC5 v1 v2 Fp Fi}


void  S20826C5 ::v31(){vfunc_called(this, "_ZN8S20826C53v31Ev");}
void  S20826C5 ::v32(){vfunc_called(this, "_ZN8S20826C53v32Ev");}
S20826C5 ::~S20826C5(){ note_dtor("S20826C5", this);} // tgen
S20826C5 ::S20826C5(){ note_ctor("S20826C5", this);} // tgen

static void Test_S20826C5()
{
  extern Class_Descriptor cd_S20826C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,44)];
    init_test(&cd_S20826C5, buf);
    S20826C5 *dp, &lv = *(dp=new (buf) S20826C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,172), "sizeof(S20826C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C5)");
    /*is_ambiguous_... S20826C5::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*), 0, "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*)(S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*)(S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C5");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*)(S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*), 0, "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*)(S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*)(S20826C7*), ABISELECT(24,12), "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*)(S20826C7*), ABISELECT(24,12), "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C8*)(S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C3 */ AMB_check_base_class_offset(lv, (S20826C3*)(S20826C7*), ABISELECT(224,112), "S20826C5");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*)(S20826C7*), ABISELECT(48,20), "S20826C5");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*)(S20826C7*), ABISELECT(48,20), "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(288,152), "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(312,164), "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(312,164), "S20826C5");
    check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*)(S20826C7*), ABISELECT(288,152), "S20826C5");
    check_base_class_offset(lv, (S20826C12*)(S20826C11*)(S20826C7*), ABISELECT(56,24), "S20826C5");
    check_base_class_offset(lv, (S20826C3*)(S20826C11*)(S20826C7*), ABISELECT(64,28), "S20826C5");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*)(S20826C7*), ABISELECT(128,68), "S20826C5");
    check_base_class_offset(lv, (S20826C11*)(S20826C7*), ABISELECT(48,20), "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C7*), ABISELECT(168,88), "S20826C5");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C7*), ABISELECT(168,88), "S20826C5");
    check_base_class_offset(lv, (S20826C7*), 0, "S20826C5");
    /*is_ambiguous_... S20826C5::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*), ABISELECT(176,92), "S20826C5");
    check_field_offset(lv, s20826c5f0, ABISELECT(200,104), "S20826C5.s20826c5f0");
    check_field_offset(lv, s20826c5f1, ABISELECT(208,108), "S20826C5.s20826c5f1");
    test_class_info(&lv, &cd_S20826C5);
    dp->~S20826C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C5(Test_S20826C5, "S20826C5", ABISELECT(336,172));

#else // __cplusplus

extern void _ZN8S20826C5C1Ev();
extern void _ZN8S20826C5D1Ev();
Name_Map name_map_S20826C5[] = {
  NSPAIR(_ZN8S20826C5C1Ev),
  NSPAIR(_ZN8S20826C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C7;
extern VTBL_ENTRY _ZTI8S20826C7[];
extern  VTBL_ENTRY _ZTV8S20826C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C7[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
static Base_Class bases_S20826C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20826C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(24,12), //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20826C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(224,112), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20826C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(312,164), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(288,152), //bcp->offset
    107, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20826C12,    ABISELECT(56,24), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(64,28), //bcp->offset
    66, //bcp->virtual_function_table_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_S20826C9,    ABISELECT(128,68), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(168,88), //bcp->offset
    80, //bcp->virtual_function_table_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_S20826C7,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C9,    ABISELECT(176,92), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20826C5[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C5D1Ev();
extern void _ZN8S20826C5D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C53v31Ev();
extern void _ZN8S20826C53v32Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C5D1Ev,_ZThn20_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C5D0Ev,_ZThn20_N8S20826C5D0Ev)();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C5D1Ev,_ZThn24_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C5D0Ev,_ZThn24_N8S20826C5D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C5D1Ev,_ZThn152_N8S20826C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C5D0Ev,_ZThn152_N8S20826C5D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C5[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v32Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C5D1Ev,_ZThn20_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C5D0Ev,_ZThn20_N8S20826C5D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C5D1Ev,_ZThn24_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C5D0Ev,_ZThn24_N8S20826C5D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S20826C5[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C7D1Ev();
extern void _ZN8S20826C7D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C7__8S20826C5[] = {
  ABISELECT(288,152),
  ABISELECT(224,112),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C88S20826C7__8S20826C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C88S20826C7__8S20826C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S20826C12D1Ev,_ZThn128_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S20826C12D0Ev,_ZThn128_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-128),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C118S20826C7__8S20826C5[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C118S20826C7__A2__8S20826C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C118S20826C7__A2__8S20826C5[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S20826C11D1Ev,_ZThn132_N9S20826C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S20826C11D0Ev,_ZThn132_N9S20826C11D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C118S20826C7__8S20826C5[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C118S20826C7__8S20826C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C3__8S20826C7__8S20826C5[] = {
  0,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C11__8S20826C7__8S20826C5[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,132),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__8S20826C7__8S20826C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,128),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C7D1Ev,_ZThn152_N8S20826C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C7D0Ev,_ZThn152_N8S20826C7D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C7__8S20826C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-152),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A2__8S20826C7__8S20826C5[] = {
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A2__8S20826C7__8S20826C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A3__8S20826C5[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C9__A3__8S20826C5[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C5[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__A1__8S20826C5[] = {
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C5[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__A1__8S20826C5[] = {
  0,
  0,
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
static  VTT_ENTRY vtt_S20826C5[] = {
  {&(_ZTV8S20826C5[7]),  7,149},
  {&(_tg__ZTV8S20826C7__8S20826C5[7]),  7,18},
  {&(_tg__ZTV8S20826C88S20826C7__8S20826C5[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C88S20826C7__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C98S20826C88S20826C7__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C88S20826C7__8S20826C5[5]),  5,15},
  {&(_tg__ZTV9S20826C118S20826C7__8S20826C5[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C118S20826C7__8S20826C5[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C118S20826C7__8S20826C5[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C118S20826C7__8S20826C5[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C118S20826C7__8S20826C5[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C118S20826C7__A2__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C118S20826C7__A2__8S20826C5[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C118S20826C7__8S20826C5[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C118S20826C7__8S20826C5[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C118S20826C7__8S20826C5[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C118S20826C7__8S20826C5[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C118S20826C7__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C7__8S20826C5[7]),  7,18},
  {&(_tg__ZTV8S20826C3__8S20826C7__8S20826C5[3]),  3,4},
  {&(_tg__ZTV9S20826C11__8S20826C7__8S20826C5[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__8S20826C7__8S20826C5[6]),  6,12},
  {&(_tg__ZTV8S20826C8__A1__8S20826C7__8S20826C5[20]),  20,30},
  {&(_tg__ZTV9S20826C108S20826C8__A2__8S20826C7__8S20826C5[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A2__8S20826C7__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C9__A3__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C9__A3__8S20826C5[4]),  4,6},
  {&(_ZTV8S20826C5[7]),  7,149},
  {&(_ZTV8S20826C5[106]),  106,149},
  {&(_ZTV8S20826C5[36]),  36,149},
  {&(_ZTV8S20826C5[60]),  60,149},
  {&(_ZTV8S20826C5[127]),  127,149},
  {&(_ZTV8S20826C5[139]),  139,149},
  {&(_ZTV8S20826C5[74]),  74,149},
  {&(_ZTV8S20826C5[97]),  97,149},
  {&(_tg__ZTV8S20826C8__A1__8S20826C5[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__A1__8S20826C5[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C5[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__A1__8S20826C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20826C5[];
extern  VTBL_ENTRY _ZTV8S20826C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C5[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C7D0Ev,_ZThn152_N8S20826C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C7D1Ev,_ZThn152_N8S20826C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20826C11D0Ev,_ZThn132_N9S20826C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20826C11D1Ev,_ZThn132_N9S20826C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20826C12D0Ev,_ZThn128_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20826C12D1Ev,_ZThn128_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C5D0Ev,_ZThn152_N8S20826C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C5D1Ev,_ZThn152_N8S20826C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C5 = {  "S20826C5", // class name
  bases_S20826C5, 20,
  &(vtc_S20826C5[0]), // expected_vtbl_contents
  &(vtt_S20826C5[0]), // expected_vtt_contents
  ABISELECT(336,172), // object size
  NSPAIRA(_ZTI8S20826C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20826C5),149, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20826C5),39, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C2  : virtual S20826C3 , S20826C5 , S20826C10 , virtual S20826C11 {
  virtual void  v33(); // _ZN8S20826C23v33Ev
  virtual void  v34(); // _ZN8S20826C23v34Ev
  virtual void  v35(); // _ZN8S20826C23v35Ev
  ~S20826C2(); // tgen
  S20826C2(); // tgen
};
//SIG(-1 S20826C2) C1{ VBC2{ v4 FU3{ m FD[3]}} BC4{ VBC5{ v5 v6} BC6{ VBC5 BC7{ VBC5 BC8{ VBC5 v7 v8 v9 v10 Fp Fc} BC9{ BC5 v11 v12 v13 v14 v15 v16 v17 v18} vd v19 v20 FC5} VBC2 BC10{ BC9 BC11{ VBC7 vd v21 v22} BC2 BC8 v23 v24 v25 v26 v27 v28 Fp Fl} BC9 vd v29} BC8 v30 v31 Fp Fi} BC9 VBC10 v1 v2 v3}


void  S20826C2 ::v33(){vfunc_called(this, "_ZN8S20826C23v33Ev");}
void  S20826C2 ::v34(){vfunc_called(this, "_ZN8S20826C23v34Ev");}
void  S20826C2 ::v35(){vfunc_called(this, "_ZN8S20826C23v35Ev");}
S20826C2 ::~S20826C2(){ note_dtor("S20826C2", this);} // tgen
S20826C2 ::S20826C2(){ note_ctor("S20826C2", this);} // tgen

static void Test_S20826C2()
{
  extern Class_Descriptor cd_S20826C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,62)];
    init_test(&cd_S20826C2, buf);
    S20826C2 *dp, &lv = *(dp=new (buf) S20826C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,244), "sizeof(S20826C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C2)");
    /*is_ambiguous_... S20826C2::S20826C3 */ AMB_check_base_class_offset(lv, (S20826C3*), ABISELECT(224,116), "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C3 */ AMB_check_base_class_offset(lv, (S20826C3*)(S20826C7*)(S20826C5*), ABISELECT(224,116), "S20826C2");
    /*is_ambiguous_... S20826C5::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*)(S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*)(S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C2");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*)(S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C5::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*), 0, "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*)(S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*)(S20826C7*)(S20826C5*), ABISELECT(24,12), "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*)(S20826C7*)(S20826C5*), ABISELECT(24,12), "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C8*)(S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(48,20), "S20826C2");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(48,20), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(288,156), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(312,168), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(312,168), "S20826C2");
    check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(288,156), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*), ABISELECT(288,156), "S20826C2");
    check_base_class_offset(lv, (S20826C12*)(S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(56,24), "S20826C2");
    check_base_class_offset(lv, (S20826C3*)(S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(64,28), "S20826C2");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(128,68), "S20826C2");
    check_base_class_offset(lv, (S20826C11*)(S20826C7*)(S20826C5*), ABISELECT(48,20), "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C7*)(S20826C5*), ABISELECT(168,88), "S20826C2");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C7*)(S20826C5*), ABISELECT(168,88), "S20826C2");
    check_base_class_offset(lv, (S20826C7*)(S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C5::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C5*), ABISELECT(176,92), "S20826C2");
    check_base_class_offset(lv, (S20826C5*), 0, "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*), ABISELECT(216,112), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*), ABISELECT(216,112), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*), ABISELECT(336,176), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*), ABISELECT(336,176), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C12*)(S20826C11*), ABISELECT(344,180), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C3*)(S20826C11*), ABISELECT(352,184), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*), ABISELECT(416,224), "S20826C2");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C11*), ABISELECT(336,176), "S20826C2");
    test_class_info(&lv, &cd_S20826C2);
    dp->~S20826C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C2(Test_S20826C2, "S20826C2", ABISELECT(464,244));

#else // __cplusplus

extern void _ZN8S20826C2C1Ev();
extern void _ZN8S20826C2D1Ev();
Name_Map name_map_S20826C2[] = {
  NSPAIR(_ZN8S20826C2C1Ev),
  NSPAIR(_ZN8S20826C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C7;
extern VTBL_ENTRY _ZTI8S20826C7[];
extern  VTBL_ENTRY _ZTV8S20826C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C7[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C5;
extern VTBL_ENTRY _ZTI8S20826C5[];
extern  VTBL_ENTRY _ZTV8S20826C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C5[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
static Base_Class bases_S20826C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C3,    ABISELECT(224,116), //bcp->offset
    119, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20826C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20826C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20826C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(288,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(312,168), //bcp->offset
    153, //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(288,156), //bcp->offset
    123, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20826C12,    ABISELECT(56,24), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(64,28), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(128,68), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(48,20), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(168,88), //bcp->offset
    84, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S20826C7,    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
    25, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(176,92), //bcp->offset
    96, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20826C5,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C6,    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
    28, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(216,112), //bcp->offset
    107, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S20826C6,    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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20826C10,    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
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C12,    ABISELECT(344,180), //bcp->offset
    211, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(352,184), //bcp->offset
    223, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(416,224), //bcp->offset
    226, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(336,176), //bcp->offset
    165, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20826C2[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C2D1Ev();
extern void _ZN8S20826C2D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C53v31Ev();
extern void _ZN8S20826C53v32Ev();
extern void _ZN8S20826C23v33Ev();
extern void _ZN8S20826C23v34Ev();
extern void _ZN8S20826C23v35Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C2D1Ev,_ZThn20_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C2D0Ev,_ZThn20_N8S20826C2D0Ev)();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C2D1Ev,_ZThn24_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C2D0Ev,_ZThn24_N8S20826C2D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C2D1Ev,_ZTv0_n40_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C2D1Ev,_ZThn156_N8S20826C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C2D0Ev,_ZTv0_n40_N8S20826C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C2D0Ev,_ZThn156_N8S20826C2D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N8S20826C2D1Ev,_ZTv0_n84_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20826C2D1Ev,_ZThn176_N8S20826C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20826C2D0Ev,_ZTv0_n84_N8S20826C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20826C2D0Ev,_ZThn176_N8S20826C2D0Ev)() __attribute__((weak));
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N8S20826C2D1Ev,_ZTvn4_n84_N8S20826C2D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N8S20826C2D0Ev,_ZTvn4_n84_N8S20826C2D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY vtc_S20826C2[] = {
  ABISELECT(336,176),
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v35Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C2D1Ev,_ZThn20_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C2D0Ev,_ZThn20_N8S20826C2D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C2D1Ev,_ZThn24_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C2D0Ev,_ZThn24_N8S20826C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C2D1Ev,_ZTv0_n40_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C2D0Ev,_ZTv0_n40_N8S20826C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-336,-176),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-176),
  ABISELECT(-48,-20),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20826C2D1Ev,_ZTv0_n84_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20826C2D0Ev,_ZTv0_n84_N8S20826C2D0Ev),
  ABISELECT(-344,-180),
  ABISELECT(-56,-24),
  ABISELECT(-344,-180),
  ABISELECT(-344,-180),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20826C2D1Ev,_ZTvn4_n84_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20826C2D0Ev,_ZTvn4_n84_N8S20826C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern VTBL_ENTRY _ZTV8S20826C2[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C5D1Ev();
extern void _ZN8S20826C5D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C53v31Ev();
extern void _ZN8S20826C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C5__8S20826C2[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v32Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C7D1Ev();
extern void _ZN8S20826C7D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C88S20826C78S20826C5__8S20826C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C88S20826C78S20826C5__8S20826C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S20826C12D1Ev,_ZThn132_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S20826C12D0Ev,_ZThn132_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C118S20826C78S20826C5__8S20826C2[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C118S20826C78S20826C5__A2__8S20826C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C118S20826C78S20826C5__A2__8S20826C2[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S20826C11D1Ev,_ZThn136_N9S20826C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S20826C11D0Ev,_ZThn136_N9S20826C11D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C118S20826C78S20826C5__8S20826C2[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C118S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C3__8S20826C78S20826C5__8S20826C2[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C11__8S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__8S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C7D1Ev,_ZThn156_N8S20826C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C7D0Ev,_ZThn156_N8S20826C7D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A2__8S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A2__8S20826C78S20826C5__8S20826C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C5__A3__8S20826C2[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C5__A3__8S20826C2[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C3__8S20826C5__8S20826C2[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C5D1Ev,_ZThn20_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C5D0Ev,_ZThn20_N8S20826C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C118S20826C7__8S20826C5__8S20826C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C5D1Ev,_ZThn20_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C5D0Ev,_ZThn20_N8S20826C5D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C5D1Ev,_ZThn24_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C5D0Ev,_ZThn24_N8S20826C5D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C118S20826C7__8S20826C5__8S20826C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C5D1Ev,_ZThn24_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C5D0Ev,_ZThn24_N8S20826C5D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C5D1Ev,_ZThn156_N8S20826C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C5D0Ev,_ZThn156_N8S20826C5D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C5__8S20826C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A2__8S20826C5__8S20826C2[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C118S20826C7__A2__8S20826C5__8S20826C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A3__8S20826C5__8S20826C2[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C2[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__A1__8S20826C2[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C2[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__A1__8S20826C2[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C11__A1__8S20826C2[] = {
  ABISELECT(-336,-176),
  ABISELECT(-48,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__A1__8S20826C2[] = {
  ABISELECT(-344,-180),
  ABISELECT(-56,-24),
  ABISELECT(-344,-180),
  ABISELECT(-344,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C11__A1__8S20826C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(56,24),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C11__A1__8S20826C2[] = {
  0,
  0,
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__A1__8S20826C2[] = {
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A4__8S20826C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C11__A4__8S20826C2[] = {
  0,
  0,
  ABISELECT(416,224),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C11__A1__8S20826C2[] = {
  ABISELECT(-344,-180),
  ABISELECT(-56,-24),
  ABISELECT(-344,-180),
  ABISELECT(-344,-180),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C11__A1__8S20826C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C11__A1__8S20826C2[] = {
  0,
  0,
  ABISELECT(336,176),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C11__A1__8S20826C2[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C11__A1__8S20826C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
static  VTT_ENTRY vtt_S20826C2[] = {
  {&(_ZTV8S20826C2[8]),  8,237},
  {&(_tg__ZTV8S20826C5__8S20826C2[7]),  7,20},
  {&(_tg__ZTV8S20826C78S20826C5__8S20826C2[7]),  7,18},
  {&(_tg__ZTV8S20826C88S20826C78S20826C5__8S20826C2[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C88S20826C78S20826C5__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C98S20826C88S20826C78S20826C5__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C88S20826C78S20826C5__8S20826C2[5]),  5,15},
  {&(_tg__ZTV9S20826C118S20826C78S20826C5__8S20826C2[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C118S20826C78S20826C5__8S20826C2[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C118S20826C78S20826C5__8S20826C2[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C118S20826C78S20826C5__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C118S20826C78S20826C5__8S20826C2[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C118S20826C78S20826C5__A2__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C118S20826C78S20826C5__A2__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C118S20826C78S20826C5__8S20826C2[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C118S20826C78S20826C5__8S20826C2[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C118S20826C78S20826C5__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C118S20826C78S20826C5__8S20826C2[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C118S20826C78S20826C5__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C78S20826C5__8S20826C2[7]),  7,18},
  {&(_tg__ZTV8S20826C3__8S20826C78S20826C5__8S20826C2[3]),  3,4},
  {&(_tg__ZTV9S20826C11__8S20826C78S20826C5__8S20826C2[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__8S20826C78S20826C5__8S20826C2[6]),  6,12},
  {&(_tg__ZTV8S20826C8__A1__8S20826C78S20826C5__8S20826C2[20]),  20,30},
  {&(_tg__ZTV9S20826C108S20826C8__A2__8S20826C78S20826C5__8S20826C2[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A2__8S20826C78S20826C5__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C98S20826C5__A3__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C5__A3__8S20826C2[4]),  4,6},
  {&(_tg__ZTV8S20826C5__8S20826C2[7]),  7,20},
  {&(_tg__ZTV8S20826C3__8S20826C5__8S20826C2[3]),  3,4},
  {&(_tg__ZTV9S20826C118S20826C7__8S20826C5__8S20826C2[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C118S20826C7__8S20826C5__8S20826C2[6]),  6,12},
  {&(_tg__ZTV8S20826C8__A1__8S20826C5__8S20826C2[20]),  20,30},
  {&(_tg__ZTV9S20826C108S20826C8__A2__8S20826C5__8S20826C2[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C118S20826C7__A2__8S20826C5__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C9__A3__8S20826C5__8S20826C2[5]),  5,11},
  {&(_ZTV8S20826C2[122]),  122,237},
  {&(_ZTV8S20826C2[8]),  8,237},
  {&(_ZTV8S20826C2[40]),  40,237},
  {&(_ZTV8S20826C2[64]),  64,237},
  {&(_ZTV8S20826C2[143]),  143,237},
  {&(_ZTV8S20826C2[155]),  155,237},
  {&(_ZTV8S20826C2[78]),  78,237},
  {&(_ZTV8S20826C2[101]),  101,237},
  {&(_ZTV8S20826C2[193]),  193,237},
  {&(_ZTV8S20826C2[217]),  217,237},
  {&(_ZTV8S20826C2[225]),  225,237},
  {&(_ZTV8S20826C2[231]),  231,237},
  {&(_tg__ZTV8S20826C8__A1__8S20826C2[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__A1__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C2[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__A1__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C11__A1__8S20826C2[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__A1__8S20826C2[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C11__A1__8S20826C2[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C11__A1__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__A1__8S20826C2[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A4__8S20826C2[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C11__A4__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C11__A1__8S20826C2[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C11__A1__8S20826C2[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C11__A1__8S20826C2[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C11__A1__8S20826C2[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C11__A1__8S20826C2[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20826C2[];
extern  VTBL_ENTRY _ZTV8S20826C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C2[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C5D0Ev,_ZThn156_N8S20826C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C5D1Ev,_ZThn156_N8S20826C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C7D0Ev,_ZThn156_N8S20826C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C7D1Ev,_ZThn156_N8S20826C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20826C11D0Ev,_ZThn136_N9S20826C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20826C11D1Ev,_ZThn136_N9S20826C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20826C12D0Ev,_ZThn132_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20826C12D1Ev,_ZThn132_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20826C2D0Ev,_ZTv0_n84_N8S20826C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20826C2D0Ev,_ZThn176_N8S20826C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20826C2D1Ev,_ZTv0_n84_N8S20826C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20826C2D1Ev,_ZThn176_N8S20826C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C2D0Ev,_ZTv0_n40_N8S20826C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C2D0Ev,_ZThn156_N8S20826C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C2D1Ev,_ZTv0_n40_N8S20826C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C2D1Ev,_ZThn156_N8S20826C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C2 = {  "S20826C2", // class name
  bases_S20826C2, 29,
  &(vtc_S20826C2[0]), // expected_vtbl_contents
  &(vtt_S20826C2[0]), // expected_vtt_contents
  ABISELECT(464,244), // object size
  NSPAIRA(_ZTI8S20826C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20826C2),237, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20826C2),64, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C13  : virtual S20826C11 {
  void *s20826c13f0[10];
  virtual  ~S20826C13(); // _ZN9S20826C13D2Ev
  virtual void  v36(); // _ZN9S20826C133v36Ev
  virtual void  v37(); // _ZN9S20826C133v37Ev
  virtual void  v38(); // _ZN9S20826C133v38Ev
  virtual void  v39(); // _ZN9S20826C133v39Ev
  virtual void  v40(); // _ZN9S20826C133v40Ev
  virtual void  v41(); // _ZN9S20826C133v41Ev
  S20826C13(); // tgen
};
//SIG(-1 S20826C13) C1{ VBC2{ BC3{ BC4{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC5{ VBC6{ VBC4 BC7{ VBC4 v17 v18 v19 v20 Fp Fc} BC3 vd v21 v22 FC4} vd v23 v24} BC8{ v25 FU9{ m FD[3]}} BC7 v26 v27 v28 v29 v30 v31 Fp Fl} vd v1 v2 v3 v4 v5 v6 Fp[10]}


 S20826C13 ::~S20826C13(){ note_dtor("S20826C13", this);}
void  S20826C13 ::v36(){vfunc_called(this, "_ZN9S20826C133v36Ev");}
void  S20826C13 ::v37(){vfunc_called(this, "_ZN9S20826C133v37Ev");}
void  S20826C13 ::v38(){vfunc_called(this, "_ZN9S20826C133v38Ev");}
void  S20826C13 ::v39(){vfunc_called(this, "_ZN9S20826C133v39Ev");}
void  S20826C13 ::v40(){vfunc_called(this, "_ZN9S20826C133v40Ev");}
void  S20826C13 ::v41(){vfunc_called(this, "_ZN9S20826C133v41Ev");}
S20826C13 ::S20826C13(){ note_ctor("S20826C13", this);} // tgen

static void Test_S20826C13()
{
  extern Class_Descriptor cd_S20826C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,34)];
    init_test(&cd_S20826C13, buf);
    S20826C13 *dp, &lv = *(dp=new (buf) S20826C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S20826C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C13)");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*), ABISELECT(96,44), "S20826C13");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*), ABISELECT(96,44), "S20826C13");
    /*is_ambiguous_... S20826C8::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C13");
    check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C13");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*), 0, "S20826C13");
    check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(216,112), "S20826C13");
    check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(240,124), "S20826C13");
    check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(240,124), "S20826C13");
    check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*), ABISELECT(216,112), "S20826C13");
    check_base_class_offset(lv, (S20826C12*)(S20826C11*), ABISELECT(104,48), "S20826C13");
    check_base_class_offset(lv, (S20826C3*)(S20826C11*), ABISELECT(112,52), "S20826C13");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*), ABISELECT(176,92), "S20826C13");
    check_base_class_offset(lv, (S20826C11*), ABISELECT(96,44), "S20826C13");
    check_field_offset(lv, s20826c13f0, ABISELECT(8,4), "S20826C13.s20826c13f0");
    test_class_info(&lv, &cd_S20826C13);
    dp->~S20826C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C13(Test_S20826C13, "S20826C13", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN9S20826C13C1Ev();
extern void _ZN9S20826C13D2Ev();
Name_Map name_map_S20826C13[] = {
  NSPAIR(_ZN9S20826C13C1Ev),
  NSPAIR(_ZN9S20826C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
static Base_Class bases_S20826C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C6,    ABISELECT(96,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
    6, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C6,    0, //bcp->offset
    -1, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20826C9,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(240,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(240,124), //bcp->offset
    119, //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
    6, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(216,112), //bcp->offset
    89, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20826C12,    ABISELECT(104,48), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(112,52), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(176,92), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(96,44), //bcp->offset
    17, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20826C13[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C13D1Ev();
extern void _ZN9S20826C13D0Ev();
extern void _ZN9S20826C133v36Ev();
extern void _ZN9S20826C133v37Ev();
extern void _ZN9S20826C133v38Ev();
extern void _ZN9S20826C133v39Ev();
extern void _ZN9S20826C133v40Ev();
extern void _ZN9S20826C133v41Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N9S20826C13D1Ev,_ZTv0_n84_N9S20826C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20826C13D1Ev,_ZThn44_N9S20826C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N9S20826C13D0Ev,_ZTv0_n84_N9S20826C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20826C13D0Ev,_ZThn44_N9S20826C13D0Ev)() __attribute__((weak));
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N9S20826C13D1Ev,_ZTvn4_n84_N9S20826C13D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N9S20826C13D0Ev,_ZTvn4_n84_N9S20826C13D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C13D1Ev,_ZTv0_n40_N9S20826C13D1Ev)();
extern void ABISELECT(_ZThn216_N9S20826C13D1Ev,_ZThn112_N9S20826C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C13D0Ev,_ZTv0_n40_N9S20826C13D0Ev)();
extern void ABISELECT(_ZThn216_N9S20826C13D0Ev,_ZThn112_N9S20826C13D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY vtc_S20826C13[] = {
  0,
  ABISELECT(216,112),
  ABISELECT(96,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C13D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v36Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v37Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v38Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v39Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v40Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v41Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-96,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(120,68),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20826C13D1Ev,_ZTv0_n84_N9S20826C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20826C13D0Ev,_ZTv0_n84_N9S20826C13D0Ev),
  ABISELECT(-104,-48),
  ABISELECT(112,64),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20826C13D1Ev,_ZTvn4_n84_N9S20826C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20826C13D0Ev,_ZTvn4_n84_N9S20826C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-216,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C13D1Ev,_ZTv0_n40_N9S20826C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C13D0Ev,_ZTv0_n40_N9S20826C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S20826C13[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C11__9S20826C13[] = {
  ABISELECT(-96,-44),
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__9S20826C13[] = {
  ABISELECT(-104,-48),
  ABISELECT(112,64),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20826C12D1Ev,_ZThn64_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20826C12D0Ev,_ZThn64_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C11__9S20826C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C11__9S20826C13[] = {
  0,
  0,
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__9S20826C13[] = {
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A1__9S20826C13[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C11__A1__9S20826C13[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C11__9S20826C13[] = {
  ABISELECT(-104,-48),
  ABISELECT(112,64),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S20826C11D1Ev,_ZThn68_N9S20826C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S20826C11D0Ev,_ZThn68_N9S20826C11D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C11__9S20826C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C11__9S20826C13[] = {
  0,
  0,
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C11__9S20826C13[] = {
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C11__9S20826C13[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C13[] = {
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__9S20826C13[] = {
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__9S20826C13[] = {
  0,
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__9S20826C13[] = {
  0,
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
static  VTT_ENTRY vtt_S20826C13[] = {
  {&(_ZTV9S20826C13[7]),  7,131},
  {&(_ZTV9S20826C13[45]),  45,131},
  {&(_ZTV9S20826C13[69]),  69,131},
  {&(_ZTV9S20826C13[109]),  109,131},
  {&(_ZTV9S20826C13[7]),  7,131},
  {&(_ZTV9S20826C13[121]),  121,131},
  {&(_ZTV9S20826C13[77]),  77,131},
  {&(_ZTV9S20826C13[83]),  83,131},
  {&(_tg__ZTV9S20826C11__9S20826C13[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__9S20826C13[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C11__9S20826C13[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C11__9S20826C13[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__9S20826C13[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A1__9S20826C13[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C11__A1__9S20826C13[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C11__9S20826C13[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C11__9S20826C13[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C11__9S20826C13[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C11__9S20826C13[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C11__9S20826C13[5]),  5,11},
  {&(_tg__ZTV8S20826C8__9S20826C13[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__9S20826C13[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__9S20826C13[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__9S20826C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20826C13[];
extern  VTBL_ENTRY _ZTV9S20826C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C13[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20826C11D0Ev,_ZThn68_N9S20826C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20826C11D1Ev,_ZThn68_N9S20826C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20826C12D0Ev,_ZThn64_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20826C12D1Ev,_ZThn64_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C13D0Ev,_ZTv0_n40_N9S20826C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20826C13D0Ev,_ZThn112_N9S20826C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C13D1Ev,_ZTv0_n40_N9S20826C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20826C13D1Ev,_ZThn112_N9S20826C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20826C13D0Ev,_ZTv0_n84_N9S20826C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20826C13D0Ev,_ZThn44_N9S20826C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20826C13D1Ev,_ZTv0_n84_N9S20826C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20826C13D1Ev,_ZThn44_N9S20826C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C13 = {  "S20826C13", // class name
  bases_S20826C13, 11,
  &(vtc_S20826C13[0]), // expected_vtbl_contents
  &(vtt_S20826C13[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI9S20826C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20826C13),131, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20826C13),24, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20826C1  : virtual S20826C2 , virtual S20826C13 {
  virtual void  v1(); // _ZN8S20826C12v1Ev
  virtual void  v2(); // _ZN8S20826C12v2Ev
  virtual void  v3(); // _ZN8S20826C12v3Ev
  virtual void  v4(); // _ZN8S20826C12v4Ev
  ~S20826C1(); // tgen
  S20826C1(); // tgen
};
//SIG(1 S20826C1) C1{ VBC2{ VBC3{ v5 FU4{ m FD[3]}} BC5{ VBC6{ v6 v7} BC7{ VBC6 BC8{ VBC6 BC9{ VBC6 v8 v9 v10 v11 Fp Fc} BC10{ BC6 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC6} VBC3 BC11{ BC10 BC12{ VBC8 vd v22 v23} BC3 BC9 v24 v25 v26 v27 v28 v29 Fp Fl} BC10 vd v30} BC9 v31 v32 Fp Fi} BC10 VBC11 v33 v34 v35} VBC13{ VBC11 vd v36 v37 v38 v39 v40 v41 Fp[10]} v1 v2 v3 v4}


void  S20826C1 ::v1(){vfunc_called(this, "_ZN8S20826C12v1Ev");}
void  S20826C1 ::v2(){vfunc_called(this, "_ZN8S20826C12v2Ev");}
void  S20826C1 ::v3(){vfunc_called(this, "_ZN8S20826C12v3Ev");}
void  S20826C1 ::v4(){vfunc_called(this, "_ZN8S20826C12v4Ev");}
S20826C1 ::~S20826C1(){ note_dtor("S20826C1", this);} // tgen
S20826C1 ::S20826C1(){ note_ctor("S20826C1", this);} // tgen

static void Test_S20826C1()
{
  extern Class_Descriptor cd_S20826C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,74)];
    init_test(&cd_S20826C1, buf);
    S20826C1 *dp, &lv = *(dp=new (buf) S20826C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,292), "sizeof(S20826C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20826C1)");
    /*is_ambiguous_... S20826C2::S20826C3 */ AMB_check_base_class_offset(lv, (S20826C3*)(S20826C2*), ABISELECT(240,120), "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C3 */ AMB_check_base_class_offset(lv, (S20826C3*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(240,120), "S20826C1");
    /*is_ambiguous_... S20826C5::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C5*)(S20826C2*), 0, "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C6 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C7*)(S20826C5*)(S20826C2*), 0, "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*)(S20826C7*)(S20826C5*)(S20826C2*), 0, "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*)(S20826C7*)(S20826C5*)(S20826C2*), 0, "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C8*), 0, "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C8*), 0, "S20826C1");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), 0, "S20826C1");
    /*is_ambiguous_... S20826C5::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C5*)(S20826C2*), 0, "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C9*)(S20826C11*), 0, "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(16,4), "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(40,16), "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(40,16), "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C8*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(16,4), "S20826C1");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(64,24), "S20826C1");
    /*is_ambiguous_... S20826C11::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(64,24), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C8*), ABISELECT(304,160), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C8*), ABISELECT(328,172), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C8 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C8*), ABISELECT(328,172), "S20826C1");
    check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(304,160), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C8*)(S20826C12*)(S20826C11*), ABISELECT(304,160), "S20826C1");
    check_base_class_offset(lv, (S20826C12*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(72,28), "S20826C1");
    check_base_class_offset(lv, (S20826C3*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(80,32), "S20826C1");
    /*is_ambiguous_... S20826C11::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(144,72), "S20826C1");
    check_base_class_offset(lv, (S20826C11*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(64,24), "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(184,92), "S20826C1");
    /*is_ambiguous_... S20826C7::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(184,92), "S20826C1");
    check_base_class_offset(lv, (S20826C7*)(S20826C5*)(S20826C2*), ABISELECT(16,4), "S20826C1");
    /*is_ambiguous_... S20826C5::S20826C9 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C5*)(S20826C2*), ABISELECT(192,96), "S20826C1");
    check_base_class_offset(lv, (S20826C5*)(S20826C2*), ABISELECT(16,4), "S20826C1");
    /*is_ambiguous_... S20826C2::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C2*), ABISELECT(232,116), "S20826C1");
    /*is_ambiguous_... S20826C2::S20826C10 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C2*), ABISELECT(232,116), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C6*)(S20826C10*)(S20826C11*), ABISELECT(352,180), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C10*)(S20826C11*), ABISELECT(352,180), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C12*)(S20826C11*), ABISELECT(360,184), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C3*)(S20826C11*), ABISELECT(368,188), "S20826C1");
    /*is_ambiguous_... S20826C1::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C9*)(S20826C11*), ABISELECT(432,228), "S20826C1");
    /*is_ambiguous_... S20826C2::S20826C11 */ AMB_check_base_class_offset(lv, (S20826C11*)(S20826C2*), ABISELECT(352,180), "S20826C1");
    check_base_class_offset(lv, (S20826C11*)(S20826C13*), ABISELECT(352,180), "S20826C1");
    check_base_class_offset(lv, (S20826C2*), ABISELECT(16,4), "S20826C1");
    check_base_class_offset(lv, (S20826C13*), ABISELECT(472,248), "S20826C1");
    test_class_info(&lv, &cd_S20826C1);
    dp->~S20826C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20826C1(Test_S20826C1, "S20826C1", ABISELECT(560,292));

#else // __cplusplus

extern void _ZN8S20826C1C1Ev();
extern void _ZN8S20826C1D1Ev();
Name_Map name_map_S20826C1[] = {
  NSPAIR(_ZN8S20826C1C1Ev),
  NSPAIR(_ZN8S20826C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C8;
extern VTBL_ENTRY _ZTI8S20826C8[];
extern  VTBL_ENTRY _ZTV8S20826C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C8[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C7;
extern VTBL_ENTRY _ZTI8S20826C7[];
extern  VTBL_ENTRY _ZTV8S20826C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C7[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C5;
extern VTBL_ENTRY _ZTI8S20826C5[];
extern  VTBL_ENTRY _ZTV8S20826C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C5[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C6;
extern VTBL_ENTRY _ZTI8S20826C6[];
extern  VTBL_ENTRY _ZTV8S20826C6[];
extern Class_Descriptor cd_S20826C10;
extern VTBL_ENTRY _ZTI9S20826C10[];
extern  VTBL_ENTRY _ZTV9S20826C10[];
extern Class_Descriptor cd_S20826C12;
extern VTBL_ENTRY _ZTI9S20826C12[];
extern  VTBL_ENTRY _ZTV9S20826C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C12[];
extern Class_Descriptor cd_S20826C3;
extern VTBL_ENTRY _ZTI8S20826C3[];
extern  VTBL_ENTRY _ZTV8S20826C3[];
extern Class_Descriptor cd_S20826C9;
extern VTBL_ENTRY _ZTI8S20826C9[];
extern  VTBL_ENTRY _ZTV8S20826C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C9[];
extern Class_Descriptor cd_S20826C11;
extern VTBL_ENTRY _ZTI9S20826C11[];
extern  VTBL_ENTRY _ZTV9S20826C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C11[];
extern Class_Descriptor cd_S20826C2;
extern VTBL_ENTRY _ZTI8S20826C2[];
extern  VTBL_ENTRY _ZTV8S20826C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C2[];
extern Class_Descriptor cd_S20826C13;
extern VTBL_ENTRY _ZTI9S20826C13[];
extern  VTBL_ENTRY _ZTV9S20826C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20826C13[];
static Base_Class bases_S20826C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20826C3,    ABISELECT(240,120), //bcp->offset
    167, //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
    18, //immediately_derived
  0, 1},
  {&cd_S20826C6,    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
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20826C9,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(40,16), //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(40,16), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C6,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(328,172), //bcp->offset
    201, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20826C8,    ABISELECT(304,160), //bcp->offset
    171, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20826C12,    ABISELECT(72,28), //bcp->offset
    106, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(80,32), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(144,72), //bcp->offset
    121, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(64,24), //bcp->offset
    84, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(184,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
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(184,92), //bcp->offset
    132, //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
    24, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20826C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(192,96), //bcp->offset
    144, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20826C5,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(232,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
    28, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(232,116), //bcp->offset
    155, //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
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20826C6,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20826C10,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C12,    ABISELECT(360,184), //bcp->offset
    259, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C3,    ABISELECT(368,188), //bcp->offset
    271, //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
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C9,    ABISELECT(432,228), //bcp->offset
    274, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20826C11,    ABISELECT(352,180), //bcp->offset
    213, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20826C2,    ABISELECT(16,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    38, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20826C13,    ABISELECT(472,248), //bcp->offset
    285, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20826C1[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C12v1Ev();
extern void _ZN8S20826C12v2Ev();
extern void _ZN8S20826C12v3Ev();
extern void _ZN8S20826C12v4Ev();
extern void _ZN8S20826C1D1Ev();
extern void _ZN8S20826C1D0Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n104_N8S20826C1D1Ev,_ZTv0_n52_N8S20826C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20826C1D1Ev,_ZThn4_N8S20826C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S20826C1D0Ev,_ZTv0_n52_N8S20826C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20826C1D0Ev,_ZThn4_N8S20826C1D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C53v31Ev();
extern void _ZN8S20826C53v32Ev();
extern void _ZN8S20826C23v33Ev();
extern void _ZN8S20826C23v34Ev();
extern void _ZN8S20826C23v35Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZTvn48_n104_N8S20826C1D1Ev,_ZTvn20_n52_N8S20826C1D1Ev)();
extern void ABISELECT(_ZTvn48_n104_N8S20826C1D0Ev,_ZTvn20_n52_N8S20826C1D0Ev)();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTvn56_n104_N8S20826C1D1Ev,_ZTvn24_n52_N8S20826C1D1Ev)();
extern void ABISELECT(_ZTvn56_n104_N8S20826C1D0Ev,_ZTvn24_n52_N8S20826C1D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C1D1Ev,_ZTv0_n40_N8S20826C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S20826C1D1Ev,_ZThn160_N8S20826C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C1D0Ev,_ZTv0_n40_N8S20826C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S20826C1D0Ev,_ZThn160_N8S20826C1D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N8S20826C1D1Ev,_ZTv0_n84_N8S20826C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20826C1D1Ev,_ZThn180_N8S20826C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20826C1D0Ev,_ZTv0_n84_N8S20826C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20826C1D0Ev,_ZThn180_N8S20826C1D0Ev)() __attribute__((weak));
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N8S20826C1D1Ev,_ZTvn4_n84_N8S20826C1D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N8S20826C1D0Ev,_ZTvn4_n84_N8S20826C1D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
extern void _ZN8S20826C33v21Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S20826C1D1Ev,_ZTv0_n32_N8S20826C1D1Ev)();
extern void ABISELECT(_ZThn472_N8S20826C1D1Ev,_ZThn248_N8S20826C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20826C1D0Ev,_ZTv0_n32_N8S20826C1D0Ev)();
extern void ABISELECT(_ZThn472_N8S20826C1D0Ev,_ZThn248_N8S20826C1D0Ev)() __attribute__((weak));
extern void _ZN9S20826C133v36Ev();
extern void _ZN9S20826C133v37Ev();
extern void _ZN9S20826C133v38Ev();
extern void _ZN9S20826C133v39Ev();
extern void _ZN9S20826C133v40Ev();
extern void _ZN9S20826C133v41Ev();
static  VTBL_ENTRY vtc_S20826C1[] = {
  ABISELECT(472,248),
  ABISELECT(352,180),
  ABISELECT(304,160),
  0,
  ABISELECT(240,120),
  ABISELECT(16,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20826C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20826C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20826C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20826C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-4),
  0,
  0,
  0,
  0,
  ABISELECT(336,176),
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20826C1D1Ev,_ZTv0_n52_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20826C1D0Ev,_ZTv0_n52_N8S20826C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v35Ev,
  ABISELECT(-40,-16),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-64,-24),
  ABISELECT(240,136),
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n104_N8S20826C1D1Ev,_ZTvn20_n52_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n104_N8S20826C1D0Ev,_ZTvn20_n52_N8S20826C1D0Ev),
  ABISELECT(-72,-28),
  ABISELECT(232,132),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n104_N8S20826C1D1Ev,_ZTvn24_n52_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n104_N8S20826C1D0Ev,_ZTvn24_n52_N8S20826C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-80,-32),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  0,
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-304,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C1D1Ev,_ZTv0_n40_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C1D0Ev,_ZTv0_n40_N8S20826C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  ABISELECT(-328,-172),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-352,-180),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-180),
  ABISELECT(-48,-20),
  ABISELECT(-352,-180),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20826C1D1Ev,_ZTv0_n84_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20826C1D0Ev,_ZTv0_n84_N8S20826C1D0Ev),
  ABISELECT(-360,-184),
  ABISELECT(-56,-24),
  ABISELECT(-360,-184),
  ABISELECT(-360,-184),
  ABISELECT(-360,-184),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20826C1D1Ev,_ZTvn4_n84_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20826C1D0Ev,_ZTvn4_n84_N8S20826C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
  ABISELECT(-368,-188),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-472,-248),
  ABISELECT(-472,-248),
  ABISELECT(-168,-88),
  ABISELECT(-120,-68),
  ABISELECT(-472,-248),
  ABISELECT(-472,-248),
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI8S20826C1[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20826C1D1Ev,_ZTv0_n32_N8S20826C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20826C1D0Ev,_ZTv0_n32_N8S20826C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C133v36Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v37Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v38Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v39Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v40Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v41Ev,
};
extern VTBL_ENTRY _ZTV8S20826C1[];
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C2D1Ev();
extern void _ZN8S20826C2D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C53v31Ev();
extern void _ZN8S20826C53v32Ev();
extern void _ZN8S20826C23v33Ev();
extern void _ZN8S20826C23v34Ev();
extern void _ZN8S20826C23v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C2__8S20826C1[] = {
  ABISELECT(336,176),
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20826C23v35Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C5D1Ev();
extern void _ZN8S20826C5D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
extern void _ZN8S20826C53v31Ev();
extern void _ZN8S20826C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20826C53v32Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C7D1Ev();
extern void _ZN8S20826C7D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
extern void _ZN8S20826C73v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20826C73v30Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C88S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C88S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C88S20826C78S20826C58S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C88S20826C78S20826C58S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,132),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S20826C12D1Ev,_ZThn132_N9S20826C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S20826C12D0Ev,_ZThn132_N9S20826C12D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(72,28),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C118S20826C78S20826C58S20826C2__A2__8S20826C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C118S20826C78S20826C58S20826C2__A2__8S20826C1[] = {
  0,
  0,
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,132),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S20826C11D1Ev,_ZThn136_N9S20826C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S20826C11D0Ev,_ZThn136_N9S20826C11D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(64,24),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C3__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C11__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D1Ev,_ZThn20_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C7D0Ev,_ZThn20_N8S20826C7D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,132),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D1Ev,_ZThn24_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C7D0Ev,_ZThn24_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C7D1Ev,_ZThn156_N8S20826C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C7D0Ev,_ZThn156_N8S20826C7D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A2__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A2__8S20826C78S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C7[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C58S20826C2__A3__8S20826C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C58S20826C2__A3__8S20826C1[] = {
  0,
  0,
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C58S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C3__8S20826C58S20826C2__8S20826C1[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C5D1Ev,_ZThn20_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C5D0Ev,_ZThn20_N8S20826C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C118S20826C7__8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C5D1Ev,_ZThn20_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C5D0Ev,_ZThn20_N8S20826C5D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C5D1Ev,_ZThn24_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C5D0Ev,_ZThn24_N8S20826C5D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C118S20826C7__8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,132),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C5D1Ev,_ZThn24_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C5D0Ev,_ZThn24_N8S20826C5D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C5D1Ev,_ZThn156_N8S20826C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C5D0Ev,_ZThn156_N8S20826C5D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A2__8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C118S20826C7__A2__8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A3__8S20826C58S20826C2__8S20826C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C5[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C3__8S20826C2__8S20826C1[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C2__8S20826C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20826C2D1Ev,_ZThn20_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20826C2D0Ev,_ZThn20_N8S20826C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C118S20826C78S20826C5__8S20826C2__8S20826C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C2D1Ev,_ZThn20_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20826C2D0Ev,_ZThn20_N8S20826C2D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20826C2D1Ev,_ZThn24_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20826C2D0Ev,_ZThn24_N8S20826C2D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C118S20826C78S20826C5__8S20826C2__8S20826C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,132),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C2D1Ev,_ZThn24_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20826C2D0Ev,_ZThn24_N8S20826C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20826C2D1Ev,_ZTv0_n40_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S20826C2D1Ev,_ZThn156_N8S20826C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20826C2D0Ev,_ZTv0_n40_N8S20826C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S20826C2D0Ev,_ZThn156_N8S20826C2D0Ev)() __attribute__((weak));
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C2__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C2D1Ev,_ZTv0_n40_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20826C2D0Ev,_ZTv0_n40_N8S20826C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A2__8S20826C2__8S20826C1[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C118S20826C78S20826C5__A2__8S20826C2__8S20826C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C5__A3__8S20826C2__8S20826C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N8S20826C2D1Ev,_ZTv0_n84_N8S20826C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20826C2D1Ev,_ZThn176_N8S20826C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20826C2D0Ev,_ZTv0_n84_N8S20826C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20826C2D0Ev,_ZThn176_N8S20826C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20826C11__A1__8S20826C2__8S20826C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-336,-176),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-180),
  ABISELECT(-48,-20),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20826C2D1Ev,_ZTv0_n84_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20826C2D0Ev,_ZTv0_n84_N8S20826C2D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N8S20826C2D1Ev,_ZTvn4_n84_N8S20826C2D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N8S20826C2D0Ev,_ZTvn4_n84_N8S20826C2D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__A1__8S20826C2__8S20826C1[] = {
  ABISELECT(-360,-184),
  ABISELECT(-56,-24),
  ABISELECT(-360,-184),
  ABISELECT(-360,-184),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20826C2D1Ev,_ZTvn4_n84_N8S20826C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20826C2D0Ev,_ZTvn4_n84_N8S20826C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C39S20826C11__A2__8S20826C2__8S20826C1[] = {
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A4__8S20826C2__8S20826C1[] = {
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI8S20826C2[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void _ZN8S20826C8D1Ev();
extern void _ZN8S20826C8D0Ev();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__A1__8S20826C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20826C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C98S20826C8__A1__8S20826C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C1[] = {
  0,
  0,
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C8__A1__8S20826C1[] = {
  0,
  0,
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S20826C8[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void _ZN9S20826C11D1Ev();
extern void _ZN9S20826C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C11__A1__8S20826C1[] = {
  ABISELECT(-352,-180),
  ABISELECT(-48,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C11D0Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C12D1Ev();
extern void _ZN9S20826C12D0Ev();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__A1__8S20826C1[] = {
  ABISELECT(-360,-184),
  ABISELECT(-56,-24),
  ABISELECT(-360,-184),
  ABISELECT(-360,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev)();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C129S20826C11__A1__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(56,24),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__9S20826C129S20826C11__A1__8S20826C1[] = {
  0,
  0,
  ABISELECT(360,184),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__A1__8S20826C1[] = {
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20826C12[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A4__8S20826C1[] = {
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__8S20826C99S20826C11__A4__8S20826C1[] = {
  0,
  0,
  ABISELECT(432,228),
  (VTBL_ENTRY)&(_ZTI8S20826C9[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C12__9S20826C11__A1__8S20826C1[] = {
  ABISELECT(-360,-184),
  ABISELECT(-56,-24),
  ABISELECT(-360,-184),
  ABISELECT(-360,-184),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D1Ev,_ZThn4_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20826C11D0Ev,_ZThn4_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev)();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C11__A1__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C11__A1__8S20826C1[] = {
  0,
  0,
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C11__A1__8S20826C1[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C9__A1__9S20826C11__A1__8S20826C1[] = {
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20826C11[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C13D1Ev();
extern void _ZN9S20826C13D0Ev();
extern void _ZN9S20826C133v36Ev();
extern void _ZN9S20826C133v37Ev();
extern void _ZN9S20826C133v38Ev();
extern void _ZN9S20826C133v39Ev();
extern void _ZN9S20826C133v40Ev();
extern void _ZN9S20826C133v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C13__8S20826C1[] = {
  ABISELECT(-472,-248),
  ABISELECT(-168,-88),
  ABISELECT(-120,-68),
  ABISELECT(-472,-248),
  ABISELECT(-472,-248),
  0,
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20826C13D0Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v36Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v37Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v38Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v39Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v40Ev,
  (VTBL_ENTRY)&_ZN9S20826C133v41Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
extern void _ZN9S20826C113v24Ev();
extern void _ZN9S20826C113v25Ev();
extern void _ZN9S20826C113v26Ev();
extern void _ZN9S20826C113v27Ev();
extern void _ZN9S20826C113v28Ev();
extern void _ZN9S20826C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N9S20826C13D1Ev,_ZTv0_n84_N9S20826C13D1Ev)();
extern void ABISELECT(_ZTv0_n168_N9S20826C13D0Ev,_ZTv0_n84_N9S20826C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20826C11__9S20826C13__8S20826C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(120,68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-180),
  ABISELECT(-48,-20),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20826C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20826C13D1Ev,_ZTv0_n84_N9S20826C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20826C13D0Ev,_ZTv0_n84_N9S20826C13D0Ev),
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N9S20826C13D1Ev,_ZTvn4_n84_N9S20826C13D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N9S20826C13D0Ev,_ZTvn4_n84_N9S20826C13D0Ev)();
extern void _ZN9S20826C123v22Ev();
extern void _ZN9S20826C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C129S20826C11__9S20826C13__8S20826C1[] = {
  ABISELECT(-360,-184),
  ABISELECT(-56,-24),
  ABISELECT(-360,-184),
  ABISELECT(-360,-184),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20826C13D1Ev,_ZTvn4_n84_N9S20826C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20826C13D0Ev,_ZTvn4_n84_N9S20826C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20826C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20826C123v23Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20826C13D1Ev,_ZTv0_n40_N9S20826C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20826C13D0Ev,_ZTv0_n40_N9S20826C13D0Ev)();
extern void _ZN8S20826C83v19Ev();
extern void _ZN8S20826C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C8__9S20826C13__8S20826C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(168,88),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(-304,-160),
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C13D1Ev,_ZTv0_n40_N9S20826C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20826C13D0Ev,_ZTv0_n40_N9S20826C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20826C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20826C83v20Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C6__A1__9S20826C13__8S20826C1[] = {
  0,
  0,
  ABISELECT(472,248),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN9S20826C103v11Ev();
extern void _ZN9S20826C103v12Ev();
extern void _ZN9S20826C103v13Ev();
extern void _ZN9S20826C103v14Ev();
extern void _ZN9S20826C103v15Ev();
extern void _ZN9S20826C103v16Ev();
extern void _ZN9S20826C103v17Ev();
extern void _ZN9S20826C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20826C108S20826C8__A1__9S20826C13__8S20826C1[] = {
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20826C103v18Ev,
};
extern void _ZN8S20826C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C39S20826C11__9S20826C13__8S20826C1[] = {
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C33v21Ev,
};
extern void _ZN8S20826C62v5Ev();
extern void _ZN8S20826C62v6Ev();
extern void _ZN8S20826C92v7Ev();
extern void _ZN8S20826C92v8Ev();
extern void _ZN8S20826C92v9Ev();
extern void _ZN8S20826C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20826C99S20826C11__A1__9S20826C13__8S20826C1[] = {
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20826C13[0]),
  (VTBL_ENTRY)&_ZN8S20826C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20826C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20826C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20826C93v10Ev,
};
static  VTT_ENTRY vtt_S20826C1[] = {
  {&(_ZTV8S20826C1[10]),  10,309},
  {&(_ZTV8S20826C1[56]),  56,309},
  {&(_ZTV8S20826C1[170]),  170,309},
  {&(_ZTV8S20826C1[10]),  10,309},
  {&(_ZTV8S20826C1[74]),  74,309},
  {&(_ZTV8S20826C1[88]),  88,309},
  {&(_ZTV8S20826C1[112]),  112,309},
  {&(_ZTV8S20826C1[191]),  191,309},
  {&(_ZTV8S20826C1[203]),  203,309},
  {&(_ZTV8S20826C1[120]),  120,309},
  {&(_ZTV8S20826C1[126]),  126,309},
  {&(_ZTV8S20826C1[134]),  134,309},
  {&(_ZTV8S20826C1[149]),  149,309},
  {&(_ZTV8S20826C1[157]),  157,309},
  {&(_ZTV8S20826C1[241]),  241,309},
  {&(_ZTV8S20826C1[265]),  265,309},
  {&(_ZTV8S20826C1[273]),  273,309},
  {&(_ZTV8S20826C1[279]),  279,309},
  {&(_ZTV8S20826C1[299]),  299,309},
  {&(_tg__ZTV8S20826C2__8S20826C1[8]),  8,24},
  {&(_tg__ZTV8S20826C58S20826C2__8S20826C1[7]),  7,20},
  {&(_tg__ZTV8S20826C78S20826C58S20826C2__8S20826C1[7]),  7,18},
  {&(_tg__ZTV8S20826C88S20826C78S20826C58S20826C2__8S20826C1[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C88S20826C78S20826C58S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C88S20826C78S20826C58S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C88S20826C78S20826C58S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C118S20826C78S20826C58S20826C2__8S20826C1[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C118S20826C78S20826C58S20826C2__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C118S20826C78S20826C58S20826C2__A2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C118S20826C78S20826C58S20826C2__A2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C118S20826C78S20826C58S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C78S20826C58S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV8S20826C3__8S20826C78S20826C58S20826C2__8S20826C1[3]),  3,4},
  {&(_tg__ZTV9S20826C11__8S20826C78S20826C58S20826C2__8S20826C1[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__8S20826C78S20826C58S20826C2__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__A1__8S20826C78S20826C58S20826C2__8S20826C1[20]),  20,30},
  {&(_tg__ZTV9S20826C108S20826C8__A2__8S20826C78S20826C58S20826C2__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A2__8S20826C78S20826C58S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C98S20826C58S20826C2__A3__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C58S20826C2__A3__8S20826C1[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C58S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV8S20826C3__8S20826C58S20826C2__8S20826C1[3]),  3,4},
  {&(_tg__ZTV9S20826C118S20826C7__8S20826C58S20826C2__8S20826C1[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C118S20826C7__8S20826C58S20826C2__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__A1__8S20826C58S20826C2__8S20826C1[20]),  20,30},
  {&(_tg__ZTV9S20826C108S20826C8__A2__8S20826C58S20826C2__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C118S20826C7__A2__8S20826C58S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C9__A3__8S20826C58S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C3__8S20826C2__8S20826C1[3]),  3,4},
  {&(_tg__ZTV8S20826C6__8S20826C2__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C118S20826C78S20826C5__8S20826C2__8S20826C1[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C118S20826C78S20826C5__8S20826C2__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__A1__8S20826C2__8S20826C1[20]),  20,30},
  {&(_tg__ZTV9S20826C108S20826C8__A2__8S20826C2__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C118S20826C78S20826C5__A2__8S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C98S20826C5__A3__8S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV9S20826C11__A1__8S20826C2__8S20826C1[28]),  28,46},
  {&(_tg__ZTV9S20826C129S20826C11__A1__8S20826C2__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C39S20826C11__A2__8S20826C2__8S20826C1[2]),  2,3},
  {&(_tg__ZTV8S20826C99S20826C11__A4__8S20826C2__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C8__A1__8S20826C1[5]),  5,15},
  {&(_tg__ZTV8S20826C98S20826C8__A1__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C98S20826C8__A1__8S20826C1[4]),  4,6},
  {&(_tg__ZTV8S20826C6__8S20826C8__A1__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C11__A1__8S20826C1[4]),  4,22},
  {&(_tg__ZTV9S20826C129S20826C11__A1__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C129S20826C11__A1__8S20826C1[20]),  20,30},
  {&(_tg__ZTV8S20826C6__9S20826C129S20826C11__A1__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__9S20826C129S20826C11__A1__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C99S20826C11__A4__8S20826C1[5]),  5,11},
  {&(_tg__ZTV8S20826C6__8S20826C99S20826C11__A4__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C12__9S20826C11__A1__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C11__A1__8S20826C1[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C11__A1__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C11__A1__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C9__A1__9S20826C11__A1__8S20826C1[5]),  5,11},
  {&(_tg__ZTV9S20826C13__8S20826C1[7]),  7,17},
  {&(_tg__ZTV9S20826C11__9S20826C13__8S20826C1[28]),  28,46},
  {&(_tg__ZTV9S20826C129S20826C11__9S20826C13__8S20826C1[6]),  6,12},
  {&(_tg__ZTV8S20826C8__9S20826C13__8S20826C1[20]),  20,30},
  {&(_tg__ZTV8S20826C6__A1__9S20826C13__8S20826C1[4]),  4,6},
  {&(_tg__ZTV9S20826C108S20826C8__A1__9S20826C13__8S20826C1[2]),  2,12},
  {&(_tg__ZTV8S20826C39S20826C11__9S20826C13__8S20826C1[2]),  2,3},
  {&(_tg__ZTV8S20826C99S20826C11__A1__9S20826C13__8S20826C1[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20826C1[];
extern  VTBL_ENTRY _ZTV8S20826C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20826C1[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20826C2D0Ev,_ZTv0_n84_N8S20826C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20826C2D0Ev,_ZThn176_N8S20826C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20826C2D1Ev,_ZTv0_n84_N8S20826C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20826C2D1Ev,_ZThn176_N8S20826C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C2D0Ev,_ZTv0_n40_N8S20826C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C2D0Ev,_ZThn156_N8S20826C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C2D1Ev,_ZTv0_n40_N8S20826C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C2D1Ev,_ZThn156_N8S20826C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C5D0Ev,_ZTv0_n40_N8S20826C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C5D0Ev,_ZThn156_N8S20826C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C5D1Ev,_ZTv0_n40_N8S20826C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C5D1Ev,_ZThn156_N8S20826C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D0Ev,_ZTv0_n40_N8S20826C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C7D0Ev,_ZThn156_N8S20826C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C7D1Ev,_ZTv0_n40_N8S20826C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20826C7D1Ev,_ZThn156_N8S20826C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D0Ev,_ZTv0_n40_N9S20826C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20826C11D0Ev,_ZThn136_N9S20826C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C11D1Ev,_ZTv0_n40_N9S20826C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20826C11D1Ev,_ZThn136_N9S20826C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D0Ev,_ZTv0_n40_N9S20826C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20826C12D0Ev,_ZThn132_N9S20826C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20826C12D1Ev,_ZTv0_n40_N9S20826C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20826C12D1Ev,_ZThn132_N9S20826C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20826C1D0Ev,_ZTv0_n32_N8S20826C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S20826C1D0Ev,_ZThn248_N8S20826C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20826C1D1Ev,_ZTv0_n32_N8S20826C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S20826C1D1Ev,_ZThn248_N8S20826C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20826C1D0Ev,_ZTv0_n84_N8S20826C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20826C1D0Ev,_ZThn180_N8S20826C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20826C1D1Ev,_ZTv0_n84_N8S20826C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20826C1D1Ev,_ZThn180_N8S20826C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C1D0Ev,_ZTv0_n40_N8S20826C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20826C1D0Ev,_ZThn160_N8S20826C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20826C1D1Ev,_ZTv0_n40_N8S20826C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20826C1D1Ev,_ZThn160_N8S20826C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20826C1D0Ev,_ZTv0_n52_N8S20826C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20826C1D0Ev,_ZThn4_N8S20826C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20826C1D1Ev,_ZTv0_n52_N8S20826C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20826C1D1Ev,_ZThn4_N8S20826C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20826C1 = {  "S20826C1", // class name
  bases_S20826C1, 31,
  &(vtc_S20826C1[0]), // expected_vtbl_contents
  &(vtt_S20826C1[0]), // expected_vtt_contents
  ABISELECT(560,292), // object size
  NSPAIRA(_ZTI8S20826C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20826C1),309, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20826C1),91, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C3  {
  ::S7642C12 s20827c3f0;
  virtual void  v21(); // _ZN8S20827C33v21Ev
  ~S20827C3(); // tgen
  S20827C3(); // tgen
};
//SIG(-1 S20827C3) C1{ v1 FU2{ m FD[3]}}


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

static void Test_S20827C3()
{
  extern Class_Descriptor cd_S20827C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,11)];
    init_test(&cd_S20827C3, buf);
    S20827C3 *dp, &lv = *(dp=new (buf) S20827C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20827C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C3)");
    check_field_offset(lv, s20827c3f0, ABISELECT(16,4), "S20827C3.s20827c3f0");
    test_class_info(&lv, &cd_S20827C3);
    dp->~S20827C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C3(Test_S20827C3, "S20827C3", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20827C3C1Ev();
extern void _ZN8S20827C3D1Ev();
Name_Map name_map_S20827C3[] = {
  NSPAIR(_ZN8S20827C3C1Ev),
  NSPAIR(_ZN8S20827C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20827C3[];
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY vtc_S20827C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C3[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
Class_Descriptor cd_S20827C3 = {  "S20827C3", // class name
  0,0,//no base classes
  &(vtc_S20827C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20827C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20827C3),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  S20827C6  {
  virtual void  v5(); // _ZN8S20827C62v5Ev
  virtual void  v6(); // _ZN8S20827C62v6Ev
  ~S20827C6(); // tgen
  S20827C6(); // tgen
};
//SIG(-1 S20827C6) C1{ v1 v2}


void  S20827C6 ::v5(){vfunc_called(this, "_ZN8S20827C62v5Ev");}
void  S20827C6 ::v6(){vfunc_called(this, "_ZN8S20827C62v6Ev");}
S20827C6 ::~S20827C6(){ note_dtor("S20827C6", this);} // tgen
S20827C6 ::S20827C6(){ note_ctor("S20827C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20827C6C1Ev();
extern void _ZN8S20827C6D1Ev();
Name_Map name_map_S20827C6[] = {
  NSPAIR(_ZN8S20827C6C1Ev),
  NSPAIR(_ZN8S20827C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20827C6[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY vtc_S20827C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C6[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
Class_Descriptor cd_S20827C6 = {  "S20827C6", // class name
  0,0,//no base classes
  &(vtc_S20827C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20827C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20827C6),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  S20827C9  : virtual S20827C6 {
  void *s20827c9f0;
  char s20827c9f1;
  virtual void  v7(); // _ZN8S20827C92v7Ev
  virtual void  v8(); // _ZN8S20827C92v8Ev
  virtual void  v9(); // _ZN8S20827C92v9Ev
  virtual void  v10(); // _ZN8S20827C93v10Ev
  ~S20827C9(); // tgen
  S20827C9(); // tgen
};
//SIG(-1 S20827C9) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fp Fc}


void  S20827C9 ::v7(){vfunc_called(this, "_ZN8S20827C92v7Ev");}
void  S20827C9 ::v8(){vfunc_called(this, "_ZN8S20827C92v8Ev");}
void  S20827C9 ::v9(){vfunc_called(this, "_ZN8S20827C92v9Ev");}
void  S20827C9 ::v10(){vfunc_called(this, "_ZN8S20827C93v10Ev");}
S20827C9 ::~S20827C9(){ note_dtor("S20827C9", this);} // tgen
S20827C9 ::S20827C9(){ note_ctor("S20827C9", this);} // tgen

static void Test_S20827C9()
{
  extern Class_Descriptor cd_S20827C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20827C9, buf);
    S20827C9 *dp, &lv = *(dp=new (buf) S20827C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20827C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20827C9)");
    check_base_class_offset(lv, (S20827C6*), 0, "S20827C9");
    check_field_offset(lv, s20827c9f0, ABISELECT(8,4), "S20827C9.s20827c9f0");
    check_field_offset(lv, s20827c9f1, ABISELECT(16,8), "S20827C9.s20827c9f1");
    test_class_info(&lv, &cd_S20827C9);
    dp->~S20827C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C9(Test_S20827C9, "S20827C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20827C9C1Ev();
extern void _ZN8S20827C9D1Ev();
Name_Map name_map_S20827C9[] = {
  NSPAIR(_ZN8S20827C9C1Ev),
  NSPAIR(_ZN8S20827C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
static Base_Class bases_S20827C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    0, //bcp->offset
    -1, //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 _ZTI8S20827C9[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY vtc_S20827C9[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern VTBL_ENTRY _ZTV8S20827C9[];
static  VTT_ENTRY vtt_S20827C9[] = {
  {&(_ZTV8S20827C9[5]),  5,11},
  {&(_ZTV8S20827C9[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
Class_Descriptor cd_S20827C9 = {  "S20827C9", // class name
  bases_S20827C9, 1,
  &(vtc_S20827C9[0]), // expected_vtbl_contents
  &(vtt_S20827C9[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20827C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20827C9),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20827C9),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  S20827C10  : S20827C6 {
  virtual void  v11(); // _ZN9S20827C103v11Ev
  virtual void  v12(); // _ZN9S20827C103v12Ev
  virtual void  v13(); // _ZN9S20827C103v13Ev
  virtual void  v14(); // _ZN9S20827C103v14Ev
  virtual void  v15(); // _ZN9S20827C103v15Ev
  virtual void  v16(); // _ZN9S20827C103v16Ev
  virtual void  v17(); // _ZN9S20827C103v17Ev
  virtual void  v18(); // _ZN9S20827C103v18Ev
  ~S20827C10(); // tgen
  S20827C10(); // tgen
};
//SIG(-1 S20827C10) C1{ BC2{ v9 v10} v1 v2 v3 v4 v5 v6 v7 v8}


void  S20827C10 ::v11(){vfunc_called(this, "_ZN9S20827C103v11Ev");}
void  S20827C10 ::v12(){vfunc_called(this, "_ZN9S20827C103v12Ev");}
void  S20827C10 ::v13(){vfunc_called(this, "_ZN9S20827C103v13Ev");}
void  S20827C10 ::v14(){vfunc_called(this, "_ZN9S20827C103v14Ev");}
void  S20827C10 ::v15(){vfunc_called(this, "_ZN9S20827C103v15Ev");}
void  S20827C10 ::v16(){vfunc_called(this, "_ZN9S20827C103v16Ev");}
void  S20827C10 ::v17(){vfunc_called(this, "_ZN9S20827C103v17Ev");}
void  S20827C10 ::v18(){vfunc_called(this, "_ZN9S20827C103v18Ev");}
S20827C10 ::~S20827C10(){ note_dtor("S20827C10", this);} // tgen
S20827C10 ::S20827C10(){ note_ctor("S20827C10", this);} // tgen

static void Test_S20827C10()
{
  extern Class_Descriptor cd_S20827C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20827C10, buf);
    S20827C10 *dp, &lv = *(dp=new (buf) S20827C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20827C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20827C10)");
    check_base_class_offset(lv, (S20827C6*), 0, "S20827C10");
    test_class_info(&lv, &cd_S20827C10);
    dp->~S20827C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C10(Test_S20827C10, "S20827C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20827C10C1Ev();
extern void _ZN9S20827C10D1Ev();
Name_Map name_map_S20827C10[] = {
  NSPAIR(_ZN9S20827C10C1Ev),
  NSPAIR(_ZN9S20827C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
static Base_Class bases_S20827C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20827C10[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C10[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
Class_Descriptor cd_S20827C10 = {  "S20827C10", // class name
  bases_S20827C10, 1,
  &(vtc_S20827C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20827C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20827C10),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  S20827C8  : virtual S20827C6 , S20827C9 , S20827C10 {
  ::S20827C6 s20827c8f0;
  virtual  ~S20827C8(); // _ZN8S20827C8D2Ev
  virtual void  v19(); // _ZN8S20827C83v19Ev
  virtual void  v20(); // _ZN8S20827C83v20Ev
  S20827C8(); // tgen
};
//SIG(-1 S20827C8) C1{ VBC2{ v3 v4} BC3{ VBC2 v5 v6 v7 v8 Fp Fc} BC4{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v1 v2 FC2}


 S20827C8 ::~S20827C8(){ note_dtor("S20827C8", this);}
void  S20827C8 ::v19(){vfunc_called(this, "_ZN8S20827C83v19Ev");}
void  S20827C8 ::v20(){vfunc_called(this, "_ZN8S20827C83v20Ev");}
S20827C8 ::S20827C8(){ note_ctor("S20827C8", this);} // tgen

static void Test_S20827C8()
{
  extern Class_Descriptor cd_S20827C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20827C8, buf);
    S20827C8 *dp, &lv = *(dp=new (buf) S20827C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20827C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20827C8)");
    /*is_ambiguous_... S20827C8::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*), 0, "S20827C8");
    check_base_class_offset(lv, (S20827C6*)(S20827C9*), 0, "S20827C8");
    check_base_class_offset(lv, (S20827C9*), 0, "S20827C8");
    check_base_class_offset(lv, (S20827C6*)(S20827C10*), ABISELECT(24,12), "S20827C8");
    check_base_class_offset(lv, (S20827C10*), ABISELECT(24,12), "S20827C8");
    check_field_offset(lv, s20827c8f0, ABISELECT(32,16), "S20827C8.s20827c8f0");
    test_class_info(&lv, &cd_S20827C8);
    dp->~S20827C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C8(Test_S20827C8, "S20827C8", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20827C8C1Ev();
extern void _ZN8S20827C8D2Ev();
Name_Map name_map_S20827C8[] = {
  NSPAIR(_ZN8S20827C8C1Ev),
  NSPAIR(_ZN8S20827C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
static Base_Class bases_S20827C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S20827C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C6,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(24,12), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20827C8[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S20827C8[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__8S20827C8[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
static  VTT_ENTRY vtt_S20827C8[] = {
  {&(_ZTV8S20827C8[5]),  5,27},
  {&(_tg__ZTV8S20827C9__8S20827C8[5]),  5,11},
  {&(_tg__ZTV8S20827C9__8S20827C8[5]),  5,11},
  {&(_ZTV8S20827C8[5]),  5,27},
};
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
Class_Descriptor cd_S20827C8 = {  "S20827C8", // class name
  bases_S20827C8, 4,
  &(vtc_S20827C8[0]), // expected_vtbl_contents
  &(vtt_S20827C8[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20827C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20827C8),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20827C8),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  S20827C12  : virtual S20827C8 {
  virtual  ~S20827C12(); // _ZN9S20827C12D2Ev
  virtual void  v22(); // _ZN9S20827C123v22Ev
  virtual void  v23(); // _ZN9S20827C123v23Ev
  S20827C12(); // tgen
};
//SIG(-1 S20827C12) C1{ VBC2{ VBC3{ v3 v4} BC4{ VBC3 v5 v6 v7 v8 Fp Fc} BC5{ BC3 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC3} vd v1 v2}


 S20827C12 ::~S20827C12(){ note_dtor("S20827C12", this);}
void  S20827C12 ::v22(){vfunc_called(this, "_ZN9S20827C123v22Ev");}
void  S20827C12 ::v23(){vfunc_called(this, "_ZN9S20827C123v23Ev");}
S20827C12 ::S20827C12(){ note_ctor("S20827C12", this);} // tgen

static void Test_S20827C12()
{
  extern Class_Descriptor cd_S20827C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20827C12, buf);
    S20827C12 *dp, &lv = *(dp=new (buf) S20827C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20827C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20827C12)");
    /*is_ambiguous_... S20827C8::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C12");
    check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C12");
    check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(8,4), "S20827C12");
    check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(32,16), "S20827C12");
    check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(32,16), "S20827C12");
    check_base_class_offset(lv, (S20827C8*), ABISELECT(8,4), "S20827C12");
    test_class_info(&lv, &cd_S20827C12);
    dp->~S20827C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C12(Test_S20827C12, "S20827C12", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20827C12C1Ev();
extern void _ZN9S20827C12D2Ev();
Name_Map name_map_S20827C12[] = {
  NSPAIR(_ZN9S20827C12C1Ev),
  NSPAIR(_ZN9S20827C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
static Base_Class bases_S20827C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    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
    1, //immediately_derived
  0, 1},
  {&cd_S20827C9,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(32,16), //bcp->offset
    42, //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
    4, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    20, //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 _ZTI9S20827C12[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C12D1Ev,_ZThn4_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn8_N9S20827C12D0Ev,_ZThn4_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S20827C12[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__9S20827C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__9S20827C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__9S20827C12[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
static  VTT_ENTRY vtt_S20827C12[] = {
  {&(_ZTV9S20827C12[6]),  6,54},
  {&(_ZTV9S20827C12[32]),  32,54},
  {&(_ZTV9S20827C12[6]),  6,54},
  {&(_ZTV9S20827C12[44]),  44,54},
  {&(_tg__ZTV8S20827C8__9S20827C12[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__9S20827C12[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__9S20827C12[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__9S20827C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20827C12D0Ev,_ZThn4_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20827C12D1Ev,_ZThn4_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C12 = {  "S20827C12", // class name
  bases_S20827C12, 5,
  &(vtc_S20827C12[0]), // expected_vtbl_contents
  &(vtt_S20827C12[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20827C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20827C12),54, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20827C12),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C11  : S20827C10 , S20827C12 , S20827C3 , S20827C9 {
  void *s20827c11f0;
  __tsi64 s20827c11f1;
  virtual void  v24(); // _ZN9S20827C113v24Ev
  virtual void  v25(); // _ZN9S20827C113v25Ev
  virtual void  v26(); // _ZN9S20827C113v26Ev
  virtual void  v27(); // _ZN9S20827C113v27Ev
  virtual void  v28(); // _ZN9S20827C113v28Ev
  virtual void  v29(); // _ZN9S20827C113v29Ev
  ~S20827C11(); // tgen
  S20827C11(); // tgen
};
//SIG(-1 S20827C11) C1{ BC2{ BC3{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC4{ VBC5{ VBC3 BC6{ VBC3 v17 v18 v19 v20 Fp Fc} BC2 vd v21 v22 FC3} vd v23 v24} BC7{ v25 FU8{ m FD[3]}} BC6 v1 v2 v3 v4 v5 v6 Fp FL}


void  S20827C11 ::v24(){vfunc_called(this, "_ZN9S20827C113v24Ev");}
void  S20827C11 ::v25(){vfunc_called(this, "_ZN9S20827C113v25Ev");}
void  S20827C11 ::v26(){vfunc_called(this, "_ZN9S20827C113v26Ev");}
void  S20827C11 ::v27(){vfunc_called(this, "_ZN9S20827C113v27Ev");}
void  S20827C11 ::v28(){vfunc_called(this, "_ZN9S20827C113v28Ev");}
void  S20827C11 ::v29(){vfunc_called(this, "_ZN9S20827C113v29Ev");}
S20827C11 ::~S20827C11(){ note_dtor("S20827C11", this);} // tgen
S20827C11 ::S20827C11(){ note_ctor("S20827C11", this);} // tgen

static void Test_S20827C11()
{
  extern Class_Descriptor cd_S20827C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S20827C11, buf);
    S20827C11 *dp, &lv = *(dp=new (buf) S20827C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S20827C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C11)");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*), 0, "S20827C11");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*), 0, "S20827C11");
    /*is_ambiguous_... S20827C8::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), ABISELECT(8,4), "S20827C11");
    check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), ABISELECT(8,4), "S20827C11");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*), ABISELECT(8,4), "S20827C11");
    check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(120,72), "S20827C11");
    check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(144,84), "S20827C11");
    check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(144,84), "S20827C11");
    check_base_class_offset(lv, (S20827C8*)(S20827C12*), ABISELECT(120,72), "S20827C11");
    check_base_class_offset(lv, (S20827C12*), ABISELECT(8,4), "S20827C11");
    check_base_class_offset(lv, (S20827C3*), ABISELECT(16,8), "S20827C11");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*), ABISELECT(80,48), "S20827C11");
    check_field_offset(lv, s20827c11f0, ABISELECT(104,60), "S20827C11.s20827c11f0");
    check_field_offset(lv, s20827c11f1, ABISELECT(112,64), "S20827C11.s20827c11f1");
    test_class_info(&lv, &cd_S20827C11);
    dp->~S20827C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C11(Test_S20827C11, "S20827C11", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN9S20827C11C1Ev();
extern void _ZN9S20827C11D1Ev();
Name_Map name_map_S20827C11[] = {
  NSPAIR(_ZN9S20827C11C1Ev),
  NSPAIR(_ZN9S20827C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
static Base_Class bases_S20827C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20827C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20827C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20827C9,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(144,84), //bcp->offset
    78, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(120,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20827C12,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C3,    ABISELECT(16,8), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C9,    ABISELECT(80,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20827C11[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S20827C11D1Ev,_ZThn72_N9S20827C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S20827C11D0Ev,_ZThn72_N9S20827C11D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C11[] = {
  ABISELECT(8,4),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
  0,
  ABISELECT(112,68),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-72),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S20827C11[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C11[] = {
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20827C12D1Ev,_ZThn68_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20827C12D0Ev,_ZThn68_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C12__9S20827C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C12__9S20827C11[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C9__A1__9S20827C11[] = {
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C11[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__9S20827C11[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__9S20827C11[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__9S20827C11[] = {
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
static  VTT_ENTRY vtt_S20827C11[] = {
  {&(_ZTV9S20827C11[4]),  4,90},
  {&(_tg__ZTV9S20827C12__9S20827C11[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C12__9S20827C11[20]),  20,30},
  {&(_tg__ZTV9S20827C12__9S20827C11[6]),  6,12},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C12__9S20827C11[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C11[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C9__A1__9S20827C11[4]),  4,6},
  {&(_ZTV9S20827C11[28]),  28,90},
  {&(_ZTV9S20827C11[68]),  68,90},
  {&(_ZTV9S20827C11[28]),  28,90},
  {&(_ZTV9S20827C11[80]),  80,90},
  {&(_ZTV9S20827C11[42]),  42,90},
  {&(_tg__ZTV8S20827C8__9S20827C11[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__9S20827C11[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__9S20827C11[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__9S20827C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20827C12D0Ev,_ZThn68_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20827C12D1Ev,_ZThn68_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20827C11D0Ev,_ZThn72_N9S20827C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20827C11D1Ev,_ZThn72_N9S20827C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C11 = {  "S20827C11", // class name
  bases_S20827C11, 10,
  &(vtc_S20827C11[0]), // expected_vtbl_contents
  &(vtt_S20827C11[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI9S20827C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20827C11),90, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20827C11),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C7  : virtual S20827C6 , S20827C8 , virtual S20827C3 , S20827C11 , S20827C10 {
  virtual  ~S20827C7(); // _ZN8S20827C7D2Ev
  virtual void  v30(); // _ZN8S20827C73v30Ev
  S20827C7(); // tgen
};
//SIG(-1 S20827C7) C1{ VBC2{ v2 v3} BC3{ VBC2 BC4{ VBC2 v4 v5 v6 v7 Fp Fc} BC5{ BC2 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 FC2} VBC6{ v18 FU7{ m FD[3]}} BC8{ BC5 BC9{ VBC3 vd v19 v20} BC6 BC4 v21 v22 v23 v24 v25 v26 Fp FL} BC5 vd v1}


 S20827C7 ::~S20827C7(){ note_dtor("S20827C7", this);}
void  S20827C7 ::v30(){vfunc_called(this, "_ZN8S20827C73v30Ev");}
S20827C7 ::S20827C7(){ note_ctor("S20827C7", this);} // tgen

static void Test_S20827C7()
{
  extern Class_Descriptor cd_S20827C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,40)];
    init_test(&cd_S20827C7, buf);
    S20827C7 *dp, &lv = *(dp=new (buf) S20827C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S20827C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C7)");
    /*is_ambiguous_... S20827C7::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C7");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(24,12), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(24,12), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C8*), 0, "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C3 */ AMB_check_base_class_offset(lv, (S20827C3*), ABISELECT(176,96), "S20827C7");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*), ABISELECT(48,20), "S20827C7");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*), ABISELECT(48,20), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(240,136), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(264,148), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(264,148), "S20827C7");
    check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*), ABISELECT(240,136), "S20827C7");
    check_base_class_offset(lv, (S20827C12*)(S20827C11*), ABISELECT(56,24), "S20827C7");
    check_base_class_offset(lv, (S20827C3*)(S20827C11*), ABISELECT(64,28), "S20827C7");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*), ABISELECT(128,68), "S20827C7");
    check_base_class_offset(lv, (S20827C11*), ABISELECT(48,20), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*), ABISELECT(168,92), "S20827C7");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*), ABISELECT(168,92), "S20827C7");
    test_class_info(&lv, &cd_S20827C7);
    dp->~S20827C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C7(Test_S20827C7, "S20827C7", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN8S20827C7C1Ev();
extern void _ZN8S20827C7D2Ev();
Name_Map name_map_S20827C7[] = {
  NSPAIR(_ZN8S20827C7C1Ev),
  NSPAIR(_ZN8S20827C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
static Base_Class bases_S20827C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20827C9,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20827C8,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C3,    ABISELECT(176,96), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20827C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C6,    ABISELECT(264,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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(264,148), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(240,136), //bcp->offset
    94, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20827C12,    ABISELECT(56,24), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(64,28), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(128,68), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(48,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C6,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(168,92), //bcp->offset
    78, //bcp->virtual_function_table_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 _ZTI8S20827C7[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C7D1Ev();
extern void _ZN8S20827C7D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev)();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S20827C7D1Ev,_ZThn136_N8S20827C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S20827C7D0Ev,_ZThn136_N8S20827C7D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C7[] = {
  ABISELECT(240,136),
  ABISELECT(176,96),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S20827C7[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A__8S20827C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__8S20827C7[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C11__8S20827C7[] = {
  ABISELECT(-48,-20),
  ABISELECT(192,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__8S20827C7[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn184_N9S20827C12D1Ev,_ZThn112_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn184_N9S20827C12D0Ev,_ZThn112_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C11__8S20827C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-184,-112),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C11__8S20827C7[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__8S20827C7[] = {
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A2__8S20827C7[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C11__A2__8S20827C7[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C11__8S20827C7[] = {
  ABISELECT(-56,-24),
  ABISELECT(184,112),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S20827C11D1Ev,_ZThn116_N9S20827C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S20827C11D0Ev,_ZThn116_N9S20827C11D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C11__8S20827C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-192,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C11__8S20827C7[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C11__8S20827C7[] = {
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C11__8S20827C7[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C7[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__A1__8S20827C7[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C7[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__A1__8S20827C7[] = {
  0,
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
static  VTT_ENTRY vtt_S20827C7[] = {
  {&(_ZTV8S20827C7[7]),  7,136},
  {&(_tg__ZTV8S20827C8__A__8S20827C7[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__8S20827C7[5]),  5,11},
  {&(_tg__ZTV8S20827C98S20827C8__8S20827C7[5]),  5,11},
  {&(_tg__ZTV8S20827C8__A__8S20827C7[5]),  5,15},
  {&(_tg__ZTV9S20827C11__8S20827C7[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__8S20827C7[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C11__8S20827C7[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C11__8S20827C7[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__8S20827C7[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A2__8S20827C7[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C11__A2__8S20827C7[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C11__8S20827C7[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C11__8S20827C7[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C11__8S20827C7[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C11__8S20827C7[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C11__8S20827C7[5]),  5,11},
  {&(_ZTV8S20827C7[7]),  7,136},
  {&(_ZTV8S20827C7[93]),  93,136},
  {&(_ZTV8S20827C7[34]),  34,136},
  {&(_ZTV8S20827C7[58]),  58,136},
  {&(_ZTV8S20827C7[114]),  114,136},
  {&(_ZTV8S20827C7[126]),  126,136},
  {&(_ZTV8S20827C7[72]),  72,136},
  {&(_tg__ZTV8S20827C8__A1__8S20827C7[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__A1__8S20827C7[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C7[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__A1__8S20827C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20827C7[];
extern  VTBL_ENTRY _ZTV8S20827C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C7[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20827C11D0Ev,_ZThn116_N9S20827C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20827C11D1Ev,_ZThn116_N9S20827C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20827C12D0Ev,_ZThn112_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20827C12D1Ev,_ZThn112_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20827C7D0Ev,_ZThn136_N8S20827C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20827C7D1Ev,_ZThn136_N8S20827C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C7 = {  "S20827C7", // class name
  bases_S20827C7, 18,
  &(vtc_S20827C7[0]), // expected_vtbl_contents
  &(vtt_S20827C7[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI8S20827C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20827C7),136, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20827C7),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C5  : virtual S20827C6 , S20827C7 , S20827C9 {
  void *s20827c5f0;
  int s20827c5f1;
  virtual void  v31(); // _ZN8S20827C53v31Ev
  virtual void  v32(); // _ZN8S20827C53v32Ev
  ~S20827C5(); // tgen
  S20827C5(); // tgen
};
//SIG(-1 S20827C5) C1{ VBC2{ v3 v4} BC3{ VBC2 BC4{ VBC2 BC5{ VBC2 v5 v6 v7 v8 Fp Fc} BC6{ BC2 v9 v10 v11 v12 v13 v14 v15 v16} vd v17 v18 FC2} VBC7{ v19 FU8{ m FD[3]}} BC9{ BC6 BC10{ VBC4 vd v20 v21} BC7 BC5 v22 v23 v24 v25 v26 v27 Fp FL} BC6 vd v28} BC5 v1 v2 Fp Fi}


void  S20827C5 ::v31(){vfunc_called(this, "_ZN8S20827C53v31Ev");}
void  S20827C5 ::v32(){vfunc_called(this, "_ZN8S20827C53v32Ev");}
S20827C5 ::~S20827C5(){ note_dtor("S20827C5", this);} // tgen
S20827C5 ::S20827C5(){ note_ctor("S20827C5", this);} // tgen

static void Test_S20827C5()
{
  extern Class_Descriptor cd_S20827C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,45)];
    init_test(&cd_S20827C5, buf);
    S20827C5 *dp, &lv = *(dp=new (buf) S20827C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,176), "sizeof(S20827C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C5)");
    /*is_ambiguous_... S20827C5::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*), 0, "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*)(S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*)(S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C5");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*)(S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*), 0, "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*)(S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*)(S20827C7*), ABISELECT(24,12), "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*)(S20827C7*), ABISELECT(24,12), "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C8*)(S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C3 */ AMB_check_base_class_offset(lv, (S20827C3*)(S20827C7*), ABISELECT(224,116), "S20827C5");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*)(S20827C7*), ABISELECT(48,20), "S20827C5");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*)(S20827C7*), ABISELECT(48,20), "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(288,156), "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(312,168), "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(312,168), "S20827C5");
    check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*)(S20827C7*), ABISELECT(288,156), "S20827C5");
    check_base_class_offset(lv, (S20827C12*)(S20827C11*)(S20827C7*), ABISELECT(56,24), "S20827C5");
    check_base_class_offset(lv, (S20827C3*)(S20827C11*)(S20827C7*), ABISELECT(64,28), "S20827C5");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*)(S20827C7*), ABISELECT(128,68), "S20827C5");
    check_base_class_offset(lv, (S20827C11*)(S20827C7*), ABISELECT(48,20), "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C7*), ABISELECT(168,92), "S20827C5");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C7*), ABISELECT(168,92), "S20827C5");
    check_base_class_offset(lv, (S20827C7*), 0, "S20827C5");
    /*is_ambiguous_... S20827C5::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*), ABISELECT(176,96), "S20827C5");
    check_field_offset(lv, s20827c5f0, ABISELECT(200,108), "S20827C5.s20827c5f0");
    check_field_offset(lv, s20827c5f1, ABISELECT(208,112), "S20827C5.s20827c5f1");
    test_class_info(&lv, &cd_S20827C5);
    dp->~S20827C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C5(Test_S20827C5, "S20827C5", ABISELECT(336,176));

#else // __cplusplus

extern void _ZN8S20827C5C1Ev();
extern void _ZN8S20827C5D1Ev();
Name_Map name_map_S20827C5[] = {
  NSPAIR(_ZN8S20827C5C1Ev),
  NSPAIR(_ZN8S20827C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C7;
extern VTBL_ENTRY _ZTI8S20827C7[];
extern  VTBL_ENTRY _ZTV8S20827C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C7[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
static Base_Class bases_S20827C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20827C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(24,12), //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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20827C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(224,116), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20827C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(288,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(312,168), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(288,156), //bcp->offset
    107, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20827C12,    ABISELECT(56,24), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(64,28), //bcp->offset
    66, //bcp->virtual_function_table_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_S20827C9,    ABISELECT(128,68), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(168,92), //bcp->offset
    80, //bcp->virtual_function_table_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_S20827C7,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C9,    ABISELECT(176,96), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20827C5[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C5D1Ev();
extern void _ZN8S20827C5D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C53v31Ev();
extern void _ZN8S20827C53v32Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C5D1Ev,_ZThn20_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C5D0Ev,_ZThn20_N8S20827C5D0Ev)();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C5D1Ev,_ZThn24_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C5D0Ev,_ZThn24_N8S20827C5D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C5D1Ev,_ZThn156_N8S20827C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C5D0Ev,_ZThn156_N8S20827C5D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C5[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v32Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C5D1Ev,_ZThn20_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C5D0Ev,_ZThn20_N8S20827C5D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C5D1Ev,_ZThn24_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C5D0Ev,_ZThn24_N8S20827C5D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S20827C5[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C7D1Ev();
extern void _ZN8S20827C7D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C7__8S20827C5[] = {
  ABISELECT(288,156),
  ABISELECT(224,116),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C88S20827C7__8S20827C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C88S20827C7__8S20827C5[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S20827C12D1Ev,_ZThn132_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S20827C12D0Ev,_ZThn132_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C118S20827C7__8S20827C5[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C118S20827C7__A2__8S20827C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C118S20827C7__A2__8S20827C5[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S20827C11D1Ev,_ZThn136_N9S20827C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S20827C11D0Ev,_ZThn136_N9S20827C11D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C118S20827C7__8S20827C5[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C118S20827C7__8S20827C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C3__8S20827C7__8S20827C5[] = {
  0,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C11__8S20827C7__8S20827C5[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,136),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__8S20827C7__8S20827C5[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,132),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C7D1Ev,_ZThn156_N8S20827C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C7D0Ev,_ZThn156_N8S20827C7D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C7__8S20827C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-156),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A2__8S20827C7__8S20827C5[] = {
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A2__8S20827C7__8S20827C5[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A3__8S20827C5[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C9__A3__8S20827C5[] = {
  0,
  0,
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C5[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__A1__8S20827C5[] = {
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  ABISELECT(-288,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C5[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__A1__8S20827C5[] = {
  0,
  0,
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
static  VTT_ENTRY vtt_S20827C5[] = {
  {&(_ZTV8S20827C5[7]),  7,149},
  {&(_tg__ZTV8S20827C7__8S20827C5[7]),  7,18},
  {&(_tg__ZTV8S20827C88S20827C7__8S20827C5[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C88S20827C7__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C98S20827C88S20827C7__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C88S20827C7__8S20827C5[5]),  5,15},
  {&(_tg__ZTV9S20827C118S20827C7__8S20827C5[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C118S20827C7__8S20827C5[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C118S20827C7__8S20827C5[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C118S20827C7__8S20827C5[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C118S20827C7__8S20827C5[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C118S20827C7__A2__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C118S20827C7__A2__8S20827C5[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C118S20827C7__8S20827C5[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C118S20827C7__8S20827C5[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C118S20827C7__8S20827C5[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C118S20827C7__8S20827C5[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C118S20827C7__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C7__8S20827C5[7]),  7,18},
  {&(_tg__ZTV8S20827C3__8S20827C7__8S20827C5[3]),  3,4},
  {&(_tg__ZTV9S20827C11__8S20827C7__8S20827C5[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__8S20827C7__8S20827C5[6]),  6,12},
  {&(_tg__ZTV8S20827C8__A1__8S20827C7__8S20827C5[20]),  20,30},
  {&(_tg__ZTV9S20827C108S20827C8__A2__8S20827C7__8S20827C5[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A2__8S20827C7__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C9__A3__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C9__A3__8S20827C5[4]),  4,6},
  {&(_ZTV8S20827C5[7]),  7,149},
  {&(_ZTV8S20827C5[106]),  106,149},
  {&(_ZTV8S20827C5[36]),  36,149},
  {&(_ZTV8S20827C5[60]),  60,149},
  {&(_ZTV8S20827C5[127]),  127,149},
  {&(_ZTV8S20827C5[139]),  139,149},
  {&(_ZTV8S20827C5[74]),  74,149},
  {&(_ZTV8S20827C5[97]),  97,149},
  {&(_tg__ZTV8S20827C8__A1__8S20827C5[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__A1__8S20827C5[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C5[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__A1__8S20827C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20827C5[];
extern  VTBL_ENTRY _ZTV8S20827C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C5[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C7D0Ev,_ZThn156_N8S20827C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C7D1Ev,_ZThn156_N8S20827C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20827C11D0Ev,_ZThn136_N9S20827C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20827C11D1Ev,_ZThn136_N9S20827C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20827C12D0Ev,_ZThn132_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20827C12D1Ev,_ZThn132_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C5D0Ev,_ZThn156_N8S20827C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C5D1Ev,_ZThn156_N8S20827C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C5 = {  "S20827C5", // class name
  bases_S20827C5, 20,
  &(vtc_S20827C5[0]), // expected_vtbl_contents
  &(vtt_S20827C5[0]), // expected_vtt_contents
  ABISELECT(336,176), // object size
  NSPAIRA(_ZTI8S20827C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20827C5),149, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20827C5),39, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C2  : virtual S20827C3 , S20827C5 , S20827C10 , virtual S20827C11 {
  virtual void  v33(); // _ZN8S20827C23v33Ev
  virtual void  v34(); // _ZN8S20827C23v34Ev
  virtual void  v35(); // _ZN8S20827C23v35Ev
  ~S20827C2(); // tgen
  S20827C2(); // tgen
};
//SIG(-1 S20827C2) C1{ VBC2{ v4 FU3{ m FD[3]}} BC4{ VBC5{ v5 v6} BC6{ VBC5 BC7{ VBC5 BC8{ VBC5 v7 v8 v9 v10 Fp Fc} BC9{ BC5 v11 v12 v13 v14 v15 v16 v17 v18} vd v19 v20 FC5} VBC2 BC10{ BC9 BC11{ VBC7 vd v21 v22} BC2 BC8 v23 v24 v25 v26 v27 v28 Fp FL} BC9 vd v29} BC8 v30 v31 Fp Fi} BC9 VBC10 v1 v2 v3}


void  S20827C2 ::v33(){vfunc_called(this, "_ZN8S20827C23v33Ev");}
void  S20827C2 ::v34(){vfunc_called(this, "_ZN8S20827C23v34Ev");}
void  S20827C2 ::v35(){vfunc_called(this, "_ZN8S20827C23v35Ev");}
S20827C2 ::~S20827C2(){ note_dtor("S20827C2", this);} // tgen
S20827C2 ::S20827C2(){ note_ctor("S20827C2", this);} // tgen

static void Test_S20827C2()
{
  extern Class_Descriptor cd_S20827C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,64)];
    init_test(&cd_S20827C2, buf);
    S20827C2 *dp, &lv = *(dp=new (buf) S20827C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,252), "sizeof(S20827C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C2)");
    /*is_ambiguous_... S20827C2::S20827C3 */ AMB_check_base_class_offset(lv, (S20827C3*), ABISELECT(224,120), "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C3 */ AMB_check_base_class_offset(lv, (S20827C3*)(S20827C7*)(S20827C5*), ABISELECT(224,120), "S20827C2");
    /*is_ambiguous_... S20827C5::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*)(S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*)(S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C2");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*)(S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C5::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*), 0, "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*)(S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*)(S20827C7*)(S20827C5*), ABISELECT(24,12), "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*)(S20827C7*)(S20827C5*), ABISELECT(24,12), "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C8*)(S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(48,20), "S20827C2");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(48,20), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(288,160), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(312,172), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(312,172), "S20827C2");
    check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(288,160), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*), ABISELECT(288,160), "S20827C2");
    check_base_class_offset(lv, (S20827C12*)(S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(56,24), "S20827C2");
    check_base_class_offset(lv, (S20827C3*)(S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(64,28), "S20827C2");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(128,68), "S20827C2");
    check_base_class_offset(lv, (S20827C11*)(S20827C7*)(S20827C5*), ABISELECT(48,20), "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C7*)(S20827C5*), ABISELECT(168,92), "S20827C2");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C7*)(S20827C5*), ABISELECT(168,92), "S20827C2");
    check_base_class_offset(lv, (S20827C7*)(S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C5::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C5*), ABISELECT(176,96), "S20827C2");
    check_base_class_offset(lv, (S20827C5*), 0, "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*), ABISELECT(216,116), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*), ABISELECT(216,116), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*), ABISELECT(336,180), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*), ABISELECT(336,180), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C12*)(S20827C11*), ABISELECT(344,184), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C3*)(S20827C11*), ABISELECT(352,188), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*), ABISELECT(416,228), "S20827C2");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C11*), ABISELECT(336,180), "S20827C2");
    test_class_info(&lv, &cd_S20827C2);
    dp->~S20827C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C2(Test_S20827C2, "S20827C2", ABISELECT(464,252));

#else // __cplusplus

extern void _ZN8S20827C2C1Ev();
extern void _ZN8S20827C2D1Ev();
Name_Map name_map_S20827C2[] = {
  NSPAIR(_ZN8S20827C2C1Ev),
  NSPAIR(_ZN8S20827C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C7;
extern VTBL_ENTRY _ZTI8S20827C7[];
extern  VTBL_ENTRY _ZTV8S20827C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C7[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C5;
extern VTBL_ENTRY _ZTI8S20827C5[];
extern  VTBL_ENTRY _ZTV8S20827C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C5[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
static Base_Class bases_S20827C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C3,    ABISELECT(224,120), //bcp->offset
    119, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20827C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20827C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20827C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(288,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C6,    ABISELECT(312,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(312,172), //bcp->offset
    153, //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(288,160), //bcp->offset
    123, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20827C12,    ABISELECT(56,24), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(64,28), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(128,68), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(48,20), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(168,92), //bcp->offset
    84, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S20827C7,    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
    25, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(176,96), //bcp->offset
    96, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20827C5,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C6,    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
    28, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(216,116), //bcp->offset
    107, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S20827C6,    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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20827C10,    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
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C12,    ABISELECT(344,184), //bcp->offset
    211, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(352,188), //bcp->offset
    223, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(416,228), //bcp->offset
    226, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(336,180), //bcp->offset
    165, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20827C2[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C2D1Ev();
extern void _ZN8S20827C2D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C53v31Ev();
extern void _ZN8S20827C53v32Ev();
extern void _ZN8S20827C23v33Ev();
extern void _ZN8S20827C23v34Ev();
extern void _ZN8S20827C23v35Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C2D1Ev,_ZThn20_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C2D0Ev,_ZThn20_N8S20827C2D0Ev)();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C2D1Ev,_ZThn24_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C2D0Ev,_ZThn24_N8S20827C2D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C2D1Ev,_ZTv0_n40_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C2D1Ev,_ZThn160_N8S20827C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C2D0Ev,_ZTv0_n40_N8S20827C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C2D0Ev,_ZThn160_N8S20827C2D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N8S20827C2D1Ev,_ZTv0_n84_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20827C2D1Ev,_ZThn180_N8S20827C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20827C2D0Ev,_ZTv0_n84_N8S20827C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20827C2D0Ev,_ZThn180_N8S20827C2D0Ev)() __attribute__((weak));
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N8S20827C2D1Ev,_ZTvn4_n84_N8S20827C2D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N8S20827C2D0Ev,_ZTvn4_n84_N8S20827C2D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY vtc_S20827C2[] = {
  ABISELECT(336,180),
  ABISELECT(288,160),
  ABISELECT(224,120),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v35Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-48,-20),
  ABISELECT(240,140),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C2D1Ev,_ZThn20_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C2D0Ev,_ZThn20_N8S20827C2D0Ev),
  ABISELECT(-56,-24),
  ABISELECT(232,136),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C2D1Ev,_ZThn24_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C2D0Ev,_ZThn24_N8S20827C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C2D1Ev,_ZTv0_n40_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C2D0Ev,_ZTv0_n40_N8S20827C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-336,-180),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-180),
  ABISELECT(-48,-20),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20827C2D1Ev,_ZTv0_n84_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20827C2D0Ev,_ZTv0_n84_N8S20827C2D0Ev),
  ABISELECT(-344,-184),
  ABISELECT(-56,-24),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20827C2D1Ev,_ZTvn4_n84_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20827C2D0Ev,_ZTvn4_n84_N8S20827C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern VTBL_ENTRY _ZTV8S20827C2[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C5D1Ev();
extern void _ZN8S20827C5D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C53v31Ev();
extern void _ZN8S20827C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C5__8S20827C2[] = {
  ABISELECT(288,160),
  ABISELECT(224,120),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v32Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C7D1Ev();
extern void _ZN8S20827C7D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(288,160),
  ABISELECT(224,120),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C88S20827C78S20827C5__8S20827C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C88S20827C78S20827C5__8S20827C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,136),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S20827C12D1Ev,_ZThn136_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S20827C12D0Ev,_ZThn136_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-232,-136),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C118S20827C78S20827C5__8S20827C2[] = {
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C118S20827C78S20827C5__A2__8S20827C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C118S20827C78S20827C5__A2__8S20827C2[] = {
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,136),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S20827C11D1Ev,_ZThn140_N9S20827C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S20827C11D0Ev,_ZThn140_N9S20827C11D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-140),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C118S20827C78S20827C5__8S20827C2[] = {
  0,
  0,
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C118S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C3__8S20827C78S20827C5__8S20827C2[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C11__8S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,140),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__8S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,136),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C7D1Ev,_ZThn160_N8S20827C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C7D0Ev,_ZThn160_N8S20827C7D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A2__8S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A2__8S20827C78S20827C5__8S20827C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C5__A3__8S20827C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C5__A3__8S20827C2[] = {
  0,
  0,
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C3__8S20827C5__8S20827C2[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C5D1Ev,_ZThn20_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C5D0Ev,_ZThn20_N8S20827C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C118S20827C7__8S20827C5__8S20827C2[] = {
  ABISELECT(-48,-20),
  ABISELECT(240,140),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C5D1Ev,_ZThn20_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C5D0Ev,_ZThn20_N8S20827C5D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C5D1Ev,_ZThn24_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C5D0Ev,_ZThn24_N8S20827C5D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C118S20827C7__8S20827C5__8S20827C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(232,136),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C5D1Ev,_ZThn24_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C5D0Ev,_ZThn24_N8S20827C5D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C5D1Ev,_ZThn160_N8S20827C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C5D0Ev,_ZThn160_N8S20827C5D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C5__8S20827C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A2__8S20827C5__8S20827C2[] = {
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C118S20827C7__A2__8S20827C5__8S20827C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A3__8S20827C5__8S20827C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C2[] = {
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__A1__8S20827C2[] = {
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C2[] = {
  0,
  0,
  ABISELECT(288,160),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__A1__8S20827C2[] = {
  0,
  0,
  ABISELECT(288,160),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C11__A1__8S20827C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-48,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__A1__8S20827C2[] = {
  ABISELECT(-344,-184),
  ABISELECT(-56,-24),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C11__A1__8S20827C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(56,24),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C11__A1__8S20827C2[] = {
  0,
  0,
  ABISELECT(344,184),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__A1__8S20827C2[] = {
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A4__8S20827C2[] = {
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C11__A4__8S20827C2[] = {
  0,
  0,
  ABISELECT(416,228),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C11__A1__8S20827C2[] = {
  ABISELECT(-344,-184),
  ABISELECT(-56,-24),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C11__A1__8S20827C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C11__A1__8S20827C2[] = {
  0,
  0,
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C11__A1__8S20827C2[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C11__A1__8S20827C2[] = {
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  ABISELECT(-416,-228),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
static  VTT_ENTRY vtt_S20827C2[] = {
  {&(_ZTV8S20827C2[8]),  8,237},
  {&(_tg__ZTV8S20827C5__8S20827C2[7]),  7,20},
  {&(_tg__ZTV8S20827C78S20827C5__8S20827C2[7]),  7,18},
  {&(_tg__ZTV8S20827C88S20827C78S20827C5__8S20827C2[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C88S20827C78S20827C5__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C98S20827C88S20827C78S20827C5__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C88S20827C78S20827C5__8S20827C2[5]),  5,15},
  {&(_tg__ZTV9S20827C118S20827C78S20827C5__8S20827C2[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C118S20827C78S20827C5__8S20827C2[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C118S20827C78S20827C5__8S20827C2[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C118S20827C78S20827C5__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C118S20827C78S20827C5__8S20827C2[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C118S20827C78S20827C5__A2__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C118S20827C78S20827C5__A2__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C118S20827C78S20827C5__8S20827C2[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C118S20827C78S20827C5__8S20827C2[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C118S20827C78S20827C5__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C118S20827C78S20827C5__8S20827C2[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C118S20827C78S20827C5__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C78S20827C5__8S20827C2[7]),  7,18},
  {&(_tg__ZTV8S20827C3__8S20827C78S20827C5__8S20827C2[3]),  3,4},
  {&(_tg__ZTV9S20827C11__8S20827C78S20827C5__8S20827C2[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__8S20827C78S20827C5__8S20827C2[6]),  6,12},
  {&(_tg__ZTV8S20827C8__A1__8S20827C78S20827C5__8S20827C2[20]),  20,30},
  {&(_tg__ZTV9S20827C108S20827C8__A2__8S20827C78S20827C5__8S20827C2[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A2__8S20827C78S20827C5__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C98S20827C5__A3__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C5__A3__8S20827C2[4]),  4,6},
  {&(_tg__ZTV8S20827C5__8S20827C2[7]),  7,20},
  {&(_tg__ZTV8S20827C3__8S20827C5__8S20827C2[3]),  3,4},
  {&(_tg__ZTV9S20827C118S20827C7__8S20827C5__8S20827C2[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C118S20827C7__8S20827C5__8S20827C2[6]),  6,12},
  {&(_tg__ZTV8S20827C8__A1__8S20827C5__8S20827C2[20]),  20,30},
  {&(_tg__ZTV9S20827C108S20827C8__A2__8S20827C5__8S20827C2[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C118S20827C7__A2__8S20827C5__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C9__A3__8S20827C5__8S20827C2[5]),  5,11},
  {&(_ZTV8S20827C2[122]),  122,237},
  {&(_ZTV8S20827C2[8]),  8,237},
  {&(_ZTV8S20827C2[40]),  40,237},
  {&(_ZTV8S20827C2[64]),  64,237},
  {&(_ZTV8S20827C2[143]),  143,237},
  {&(_ZTV8S20827C2[155]),  155,237},
  {&(_ZTV8S20827C2[78]),  78,237},
  {&(_ZTV8S20827C2[101]),  101,237},
  {&(_ZTV8S20827C2[193]),  193,237},
  {&(_ZTV8S20827C2[217]),  217,237},
  {&(_ZTV8S20827C2[225]),  225,237},
  {&(_ZTV8S20827C2[231]),  231,237},
  {&(_tg__ZTV8S20827C8__A1__8S20827C2[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__A1__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C2[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__A1__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C11__A1__8S20827C2[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__A1__8S20827C2[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C11__A1__8S20827C2[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C11__A1__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__A1__8S20827C2[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A4__8S20827C2[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C11__A4__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C11__A1__8S20827C2[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C11__A1__8S20827C2[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C11__A1__8S20827C2[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C11__A1__8S20827C2[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C11__A1__8S20827C2[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20827C2[];
extern  VTBL_ENTRY _ZTV8S20827C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C2[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C5D0Ev,_ZThn160_N8S20827C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C5D1Ev,_ZThn160_N8S20827C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C7D0Ev,_ZThn160_N8S20827C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C7D1Ev,_ZThn160_N8S20827C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20827C11D0Ev,_ZThn140_N9S20827C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20827C11D1Ev,_ZThn140_N9S20827C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20827C12D0Ev,_ZThn136_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20827C12D1Ev,_ZThn136_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20827C2D0Ev,_ZTv0_n84_N8S20827C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20827C2D0Ev,_ZThn180_N8S20827C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20827C2D1Ev,_ZTv0_n84_N8S20827C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20827C2D1Ev,_ZThn180_N8S20827C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C2D0Ev,_ZTv0_n40_N8S20827C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C2D0Ev,_ZThn160_N8S20827C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C2D1Ev,_ZTv0_n40_N8S20827C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C2D1Ev,_ZThn160_N8S20827C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C2 = {  "S20827C2", // class name
  bases_S20827C2, 29,
  &(vtc_S20827C2[0]), // expected_vtbl_contents
  &(vtt_S20827C2[0]), // expected_vtt_contents
  ABISELECT(464,252), // object size
  NSPAIRA(_ZTI8S20827C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20827C2),237, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20827C2),64, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C13  : virtual S20827C11 {
  void *s20827c13f0[10];
  virtual  ~S20827C13(); // _ZN9S20827C13D2Ev
  virtual void  v36(); // _ZN9S20827C133v36Ev
  virtual void  v37(); // _ZN9S20827C133v37Ev
  virtual void  v38(); // _ZN9S20827C133v38Ev
  virtual void  v39(); // _ZN9S20827C133v39Ev
  virtual void  v40(); // _ZN9S20827C133v40Ev
  virtual void  v41(); // _ZN9S20827C133v41Ev
  S20827C13(); // tgen
};
//SIG(-1 S20827C13) C1{ VBC2{ BC3{ BC4{ v7 v8} v9 v10 v11 v12 v13 v14 v15 v16} BC5{ VBC6{ VBC4 BC7{ VBC4 v17 v18 v19 v20 Fp Fc} BC3 vd v21 v22 FC4} vd v23 v24} BC8{ v25 FU9{ m FD[3]}} BC7 v26 v27 v28 v29 v30 v31 Fp FL} vd v1 v2 v3 v4 v5 v6 Fp[10]}


 S20827C13 ::~S20827C13(){ note_dtor("S20827C13", this);}
void  S20827C13 ::v36(){vfunc_called(this, "_ZN9S20827C133v36Ev");}
void  S20827C13 ::v37(){vfunc_called(this, "_ZN9S20827C133v37Ev");}
void  S20827C13 ::v38(){vfunc_called(this, "_ZN9S20827C133v38Ev");}
void  S20827C13 ::v39(){vfunc_called(this, "_ZN9S20827C133v39Ev");}
void  S20827C13 ::v40(){vfunc_called(this, "_ZN9S20827C133v40Ev");}
void  S20827C13 ::v41(){vfunc_called(this, "_ZN9S20827C133v41Ev");}
S20827C13 ::S20827C13(){ note_ctor("S20827C13", this);} // tgen

static void Test_S20827C13()
{
  extern Class_Descriptor cd_S20827C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,35)];
    init_test(&cd_S20827C13, buf);
    S20827C13 *dp, &lv = *(dp=new (buf) S20827C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,136), "sizeof(S20827C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C13)");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*), ABISELECT(96,44), "S20827C13");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*), ABISELECT(96,44), "S20827C13");
    /*is_ambiguous_... S20827C8::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C13");
    check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C13");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*), 0, "S20827C13");
    check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(216,116), "S20827C13");
    check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(240,128), "S20827C13");
    check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(240,128), "S20827C13");
    check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*), ABISELECT(216,116), "S20827C13");
    check_base_class_offset(lv, (S20827C12*)(S20827C11*), ABISELECT(104,48), "S20827C13");
    check_base_class_offset(lv, (S20827C3*)(S20827C11*), ABISELECT(112,52), "S20827C13");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*), ABISELECT(176,92), "S20827C13");
    check_base_class_offset(lv, (S20827C11*), ABISELECT(96,44), "S20827C13");
    check_field_offset(lv, s20827c13f0, ABISELECT(8,4), "S20827C13.s20827c13f0");
    test_class_info(&lv, &cd_S20827C13);
    dp->~S20827C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C13(Test_S20827C13, "S20827C13", ABISELECT(256,136));

#else // __cplusplus

extern void _ZN9S20827C13C1Ev();
extern void _ZN9S20827C13D2Ev();
Name_Map name_map_S20827C13[] = {
  NSPAIR(_ZN9S20827C13C1Ev),
  NSPAIR(_ZN9S20827C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
static Base_Class bases_S20827C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C6,    ABISELECT(96,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
    6, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C6,    0, //bcp->offset
    -1, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20827C9,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(240,128), //bcp->offset
    119, //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
    6, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(216,116), //bcp->offset
    89, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20827C12,    ABISELECT(104,48), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(112,52), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(176,92), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(96,44), //bcp->offset
    17, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20827C13[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C13D1Ev();
extern void _ZN9S20827C13D0Ev();
extern void _ZN9S20827C133v36Ev();
extern void _ZN9S20827C133v37Ev();
extern void _ZN9S20827C133v38Ev();
extern void _ZN9S20827C133v39Ev();
extern void _ZN9S20827C133v40Ev();
extern void _ZN9S20827C133v41Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N9S20827C13D1Ev,_ZTv0_n84_N9S20827C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20827C13D1Ev,_ZThn44_N9S20827C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N9S20827C13D0Ev,_ZTv0_n84_N9S20827C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20827C13D0Ev,_ZThn44_N9S20827C13D0Ev)() __attribute__((weak));
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N9S20827C13D1Ev,_ZTvn4_n84_N9S20827C13D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N9S20827C13D0Ev,_ZTvn4_n84_N9S20827C13D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C13D1Ev,_ZTv0_n40_N9S20827C13D1Ev)();
extern void ABISELECT(_ZThn216_N9S20827C13D1Ev,_ZThn116_N9S20827C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C13D0Ev,_ZTv0_n40_N9S20827C13D0Ev)();
extern void ABISELECT(_ZThn216_N9S20827C13D0Ev,_ZThn116_N9S20827C13D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY vtc_S20827C13[] = {
  0,
  ABISELECT(216,116),
  ABISELECT(96,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C13D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v36Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v37Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v38Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v39Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v40Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v41Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-96,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(120,72),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20827C13D1Ev,_ZTv0_n84_N9S20827C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20827C13D0Ev,_ZTv0_n84_N9S20827C13D0Ev),
  ABISELECT(-104,-48),
  ABISELECT(112,68),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20827C13D1Ev,_ZTvn4_n84_N9S20827C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20827C13D0Ev,_ZTvn4_n84_N9S20827C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-216,-116),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C13D1Ev,_ZTv0_n40_N9S20827C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C13D0Ev,_ZTv0_n40_N9S20827C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S20827C13[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C11__9S20827C13[] = {
  ABISELECT(-96,-44),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__9S20827C13[] = {
  ABISELECT(-104,-48),
  ABISELECT(112,68),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20827C12D1Ev,_ZThn68_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20827C12D0Ev,_ZThn68_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C11__9S20827C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-112,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C11__9S20827C13[] = {
  0,
  0,
  ABISELECT(104,48),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__9S20827C13[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A1__9S20827C13[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C11__A1__9S20827C13[] = {
  0,
  0,
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C11__9S20827C13[] = {
  ABISELECT(-104,-48),
  ABISELECT(112,68),
  ABISELECT(-104,-48),
  ABISELECT(-104,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S20827C11D1Ev,_ZThn72_N9S20827C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S20827C11D0Ev,_ZThn72_N9S20827C11D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C11__9S20827C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-120,-72),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C11__9S20827C13[] = {
  0,
  0,
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C11__9S20827C13[] = {
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C11__9S20827C13[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C13[] = {
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__9S20827C13[] = {
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__9S20827C13[] = {
  0,
  0,
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__9S20827C13[] = {
  0,
  0,
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
static  VTT_ENTRY vtt_S20827C13[] = {
  {&(_ZTV9S20827C13[7]),  7,131},
  {&(_ZTV9S20827C13[45]),  45,131},
  {&(_ZTV9S20827C13[69]),  69,131},
  {&(_ZTV9S20827C13[109]),  109,131},
  {&(_ZTV9S20827C13[7]),  7,131},
  {&(_ZTV9S20827C13[121]),  121,131},
  {&(_ZTV9S20827C13[77]),  77,131},
  {&(_ZTV9S20827C13[83]),  83,131},
  {&(_tg__ZTV9S20827C11__9S20827C13[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__9S20827C13[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C11__9S20827C13[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C11__9S20827C13[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__9S20827C13[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A1__9S20827C13[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C11__A1__9S20827C13[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C11__9S20827C13[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C11__9S20827C13[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C11__9S20827C13[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C11__9S20827C13[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C11__9S20827C13[5]),  5,11},
  {&(_tg__ZTV8S20827C8__9S20827C13[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__9S20827C13[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__9S20827C13[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__9S20827C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20827C13[];
extern  VTBL_ENTRY _ZTV9S20827C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C13[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20827C11D0Ev,_ZThn72_N9S20827C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20827C11D1Ev,_ZThn72_N9S20827C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20827C12D0Ev,_ZThn68_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20827C12D1Ev,_ZThn68_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C13D0Ev,_ZTv0_n40_N9S20827C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20827C13D0Ev,_ZThn116_N9S20827C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C13D1Ev,_ZTv0_n40_N9S20827C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20827C13D1Ev,_ZThn116_N9S20827C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20827C13D0Ev,_ZTv0_n84_N9S20827C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20827C13D0Ev,_ZThn44_N9S20827C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20827C13D1Ev,_ZTv0_n84_N9S20827C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20827C13D1Ev,_ZThn44_N9S20827C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C13 = {  "S20827C13", // class name
  bases_S20827C13, 11,
  &(vtc_S20827C13[0]), // expected_vtbl_contents
  &(vtt_S20827C13[0]), // expected_vtt_contents
  ABISELECT(256,136), // object size
  NSPAIRA(_ZTI9S20827C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20827C13),131, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20827C13),24, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20827C1  : virtual S20827C2 , virtual S20827C13 {
  virtual void  v1(); // _ZN8S20827C12v1Ev
  virtual void  v2(); // _ZN8S20827C12v2Ev
  virtual void  v3(); // _ZN8S20827C12v3Ev
  virtual void  v4(); // _ZN8S20827C12v4Ev
  ~S20827C1(); // tgen
  S20827C1(); // tgen
};
//SIG(1 S20827C1) C1{ VBC2{ VBC3{ v5 FU4{ m FD[3]}} BC5{ VBC6{ v6 v7} BC7{ VBC6 BC8{ VBC6 BC9{ VBC6 v8 v9 v10 v11 Fp Fc} BC10{ BC6 v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 FC6} VBC3 BC11{ BC10 BC12{ VBC8 vd v22 v23} BC3 BC9 v24 v25 v26 v27 v28 v29 Fp FL} BC10 vd v30} BC9 v31 v32 Fp Fi} BC10 VBC11 v33 v34 v35} VBC13{ VBC11 vd v36 v37 v38 v39 v40 v41 Fp[10]} v1 v2 v3 v4}


void  S20827C1 ::v1(){vfunc_called(this, "_ZN8S20827C12v1Ev");}
void  S20827C1 ::v2(){vfunc_called(this, "_ZN8S20827C12v2Ev");}
void  S20827C1 ::v3(){vfunc_called(this, "_ZN8S20827C12v3Ev");}
void  S20827C1 ::v4(){vfunc_called(this, "_ZN8S20827C12v4Ev");}
S20827C1 ::~S20827C1(){ note_dtor("S20827C1", this);} // tgen
S20827C1 ::S20827C1(){ note_ctor("S20827C1", this);} // tgen

static void Test_S20827C1()
{
  extern Class_Descriptor cd_S20827C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,76)];
    init_test(&cd_S20827C1, buf);
    S20827C1 *dp, &lv = *(dp=new (buf) S20827C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,300), "sizeof(S20827C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20827C1)");
    /*is_ambiguous_... S20827C2::S20827C3 */ AMB_check_base_class_offset(lv, (S20827C3*)(S20827C2*), ABISELECT(240,124), "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C3 */ AMB_check_base_class_offset(lv, (S20827C3*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(240,124), "S20827C1");
    /*is_ambiguous_... S20827C5::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C5*)(S20827C2*), 0, "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C6 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C7*)(S20827C5*)(S20827C2*), 0, "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*)(S20827C7*)(S20827C5*)(S20827C2*), 0, "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*)(S20827C7*)(S20827C5*)(S20827C2*), 0, "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C8*), 0, "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C8*), 0, "S20827C1");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), 0, "S20827C1");
    /*is_ambiguous_... S20827C5::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C5*)(S20827C2*), 0, "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C9*)(S20827C11*), 0, "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(16,4), "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(40,16), "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(40,16), "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C8*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(16,4), "S20827C1");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(64,24), "S20827C1");
    /*is_ambiguous_... S20827C11::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(64,24), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C8*), ABISELECT(304,164), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C8*), ABISELECT(328,176), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C8 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C8*), ABISELECT(328,176), "S20827C1");
    check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(304,164), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C8*)(S20827C12*)(S20827C11*), ABISELECT(304,164), "S20827C1");
    check_base_class_offset(lv, (S20827C12*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(72,28), "S20827C1");
    check_base_class_offset(lv, (S20827C3*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(80,32), "S20827C1");
    /*is_ambiguous_... S20827C11::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(144,72), "S20827C1");
    check_base_class_offset(lv, (S20827C11*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(64,24), "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(184,96), "S20827C1");
    /*is_ambiguous_... S20827C7::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(184,96), "S20827C1");
    check_base_class_offset(lv, (S20827C7*)(S20827C5*)(S20827C2*), ABISELECT(16,4), "S20827C1");
    /*is_ambiguous_... S20827C5::S20827C9 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C5*)(S20827C2*), ABISELECT(192,100), "S20827C1");
    check_base_class_offset(lv, (S20827C5*)(S20827C2*), ABISELECT(16,4), "S20827C1");
    /*is_ambiguous_... S20827C2::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C2*), ABISELECT(232,120), "S20827C1");
    /*is_ambiguous_... S20827C2::S20827C10 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C2*), ABISELECT(232,120), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C6*)(S20827C10*)(S20827C11*), ABISELECT(352,184), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C10*)(S20827C11*), ABISELECT(352,184), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C12*)(S20827C11*), ABISELECT(360,188), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C3*)(S20827C11*), ABISELECT(368,192), "S20827C1");
    /*is_ambiguous_... S20827C1::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C9*)(S20827C11*), ABISELECT(432,232), "S20827C1");
    /*is_ambiguous_... S20827C2::S20827C11 */ AMB_check_base_class_offset(lv, (S20827C11*)(S20827C2*), ABISELECT(352,184), "S20827C1");
    check_base_class_offset(lv, (S20827C11*)(S20827C13*), ABISELECT(352,184), "S20827C1");
    check_base_class_offset(lv, (S20827C2*), ABISELECT(16,4), "S20827C1");
    check_base_class_offset(lv, (S20827C13*), ABISELECT(472,256), "S20827C1");
    test_class_info(&lv, &cd_S20827C1);
    dp->~S20827C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20827C1(Test_S20827C1, "S20827C1", ABISELECT(560,300));

#else // __cplusplus

extern void _ZN8S20827C1C1Ev();
extern void _ZN8S20827C1D1Ev();
Name_Map name_map_S20827C1[] = {
  NSPAIR(_ZN8S20827C1C1Ev),
  NSPAIR(_ZN8S20827C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C8;
extern VTBL_ENTRY _ZTI8S20827C8[];
extern  VTBL_ENTRY _ZTV8S20827C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C8[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C7;
extern VTBL_ENTRY _ZTI8S20827C7[];
extern  VTBL_ENTRY _ZTV8S20827C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C7[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C5;
extern VTBL_ENTRY _ZTI8S20827C5[];
extern  VTBL_ENTRY _ZTV8S20827C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C5[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C6;
extern VTBL_ENTRY _ZTI8S20827C6[];
extern  VTBL_ENTRY _ZTV8S20827C6[];
extern Class_Descriptor cd_S20827C10;
extern VTBL_ENTRY _ZTI9S20827C10[];
extern  VTBL_ENTRY _ZTV9S20827C10[];
extern Class_Descriptor cd_S20827C12;
extern VTBL_ENTRY _ZTI9S20827C12[];
extern  VTBL_ENTRY _ZTV9S20827C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C12[];
extern Class_Descriptor cd_S20827C3;
extern VTBL_ENTRY _ZTI8S20827C3[];
extern  VTBL_ENTRY _ZTV8S20827C3[];
extern Class_Descriptor cd_S20827C9;
extern VTBL_ENTRY _ZTI8S20827C9[];
extern  VTBL_ENTRY _ZTV8S20827C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C9[];
extern Class_Descriptor cd_S20827C11;
extern VTBL_ENTRY _ZTI9S20827C11[];
extern  VTBL_ENTRY _ZTV9S20827C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C11[];
extern Class_Descriptor cd_S20827C2;
extern VTBL_ENTRY _ZTI8S20827C2[];
extern  VTBL_ENTRY _ZTV8S20827C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C2[];
extern Class_Descriptor cd_S20827C13;
extern VTBL_ENTRY _ZTI9S20827C13[];
extern  VTBL_ENTRY _ZTV9S20827C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20827C13[];
static Base_Class bases_S20827C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20827C3,    ABISELECT(240,124), //bcp->offset
    167, //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
    18, //immediately_derived
  0, 1},
  {&cd_S20827C6,    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
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20827C9,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20827C6,    ABISELECT(40,16), //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(40,16), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C6,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(328,176), //bcp->offset
    201, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20827C8,    ABISELECT(304,164), //bcp->offset
    171, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20827C12,    ABISELECT(72,28), //bcp->offset
    106, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(80,32), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(144,72), //bcp->offset
    121, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(64,24), //bcp->offset
    84, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(184,96), //bcp->offset
    132, //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
    24, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20827C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(192,100), //bcp->offset
    144, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20827C5,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20827C6,    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
    28, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(232,120), //bcp->offset
    155, //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
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20827C6,    ABISELECT(352,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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20827C10,    ABISELECT(352,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
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C12,    ABISELECT(360,188), //bcp->offset
    259, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C3,    ABISELECT(368,192), //bcp->offset
    271, //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
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C9,    ABISELECT(432,232), //bcp->offset
    274, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20827C11,    ABISELECT(352,184), //bcp->offset
    213, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20827C2,    ABISELECT(16,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    38, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20827C13,    ABISELECT(472,256), //bcp->offset
    285, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20827C1[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C12v1Ev();
extern void _ZN8S20827C12v2Ev();
extern void _ZN8S20827C12v3Ev();
extern void _ZN8S20827C12v4Ev();
extern void _ZN8S20827C1D1Ev();
extern void _ZN8S20827C1D0Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n104_N8S20827C1D1Ev,_ZTv0_n52_N8S20827C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20827C1D1Ev,_ZThn4_N8S20827C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S20827C1D0Ev,_ZTv0_n52_N8S20827C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20827C1D0Ev,_ZThn4_N8S20827C1D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C53v31Ev();
extern void _ZN8S20827C53v32Ev();
extern void _ZN8S20827C23v33Ev();
extern void _ZN8S20827C23v34Ev();
extern void _ZN8S20827C23v35Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZTvn48_n104_N8S20827C1D1Ev,_ZTvn20_n52_N8S20827C1D1Ev)();
extern void ABISELECT(_ZTvn48_n104_N8S20827C1D0Ev,_ZTvn20_n52_N8S20827C1D0Ev)();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTvn56_n104_N8S20827C1D1Ev,_ZTvn24_n52_N8S20827C1D1Ev)();
extern void ABISELECT(_ZTvn56_n104_N8S20827C1D0Ev,_ZTvn24_n52_N8S20827C1D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C1D1Ev,_ZTv0_n40_N8S20827C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S20827C1D1Ev,_ZThn164_N8S20827C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C1D0Ev,_ZTv0_n40_N8S20827C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S20827C1D0Ev,_ZThn164_N8S20827C1D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N8S20827C1D1Ev,_ZTv0_n84_N8S20827C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20827C1D1Ev,_ZThn184_N8S20827C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20827C1D0Ev,_ZTv0_n84_N8S20827C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20827C1D0Ev,_ZThn184_N8S20827C1D0Ev)() __attribute__((weak));
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N8S20827C1D1Ev,_ZTvn4_n84_N8S20827C1D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N8S20827C1D0Ev,_ZTvn4_n84_N8S20827C1D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
extern void _ZN8S20827C33v21Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S20827C1D1Ev,_ZTv0_n32_N8S20827C1D1Ev)();
extern void ABISELECT(_ZThn472_N8S20827C1D1Ev,_ZThn256_N8S20827C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20827C1D0Ev,_ZTv0_n32_N8S20827C1D0Ev)();
extern void ABISELECT(_ZThn472_N8S20827C1D0Ev,_ZThn256_N8S20827C1D0Ev)() __attribute__((weak));
extern void _ZN9S20827C133v36Ev();
extern void _ZN9S20827C133v37Ev();
extern void _ZN9S20827C133v38Ev();
extern void _ZN9S20827C133v39Ev();
extern void _ZN9S20827C133v40Ev();
extern void _ZN9S20827C133v41Ev();
static  VTBL_ENTRY vtc_S20827C1[] = {
  ABISELECT(472,256),
  ABISELECT(352,184),
  ABISELECT(304,164),
  0,
  ABISELECT(240,124),
  ABISELECT(16,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20827C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20827C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20827C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20827C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,28),
  ABISELECT(56,24),
  ABISELECT(56,24),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-16,-4),
  0,
  0,
  0,
  0,
  ABISELECT(336,180),
  ABISELECT(288,160),
  ABISELECT(224,120),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20827C1D1Ev,_ZTv0_n52_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20827C1D0Ev,_ZTv0_n52_N8S20827C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v35Ev,
  ABISELECT(-40,-16),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-64,-24),
  ABISELECT(240,140),
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n104_N8S20827C1D1Ev,_ZTvn20_n52_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n104_N8S20827C1D0Ev,_ZTvn20_n52_N8S20827C1D0Ev),
  ABISELECT(-72,-28),
  ABISELECT(232,136),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n104_N8S20827C1D1Ev,_ZTvn24_n52_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n104_N8S20827C1D0Ev,_ZTvn24_n52_N8S20827C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-80,-32),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  0,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-304,-164),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C1D1Ev,_ZTv0_n40_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C1D0Ev,_ZTv0_n40_N8S20827C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-352,-184),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-184),
  ABISELECT(-48,-20),
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20827C1D1Ev,_ZTv0_n84_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20827C1D0Ev,_ZTv0_n84_N8S20827C1D0Ev),
  ABISELECT(-360,-188),
  ABISELECT(-56,-24),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20827C1D1Ev,_ZTvn4_n84_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20827C1D0Ev,_ZTvn4_n84_N8S20827C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
  ABISELECT(-368,-192),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-168,-92),
  ABISELECT(-120,-72),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  (VTBL_ENTRY)&(_ZTI8S20827C1[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20827C1D1Ev,_ZTv0_n32_N8S20827C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20827C1D0Ev,_ZTv0_n32_N8S20827C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C133v36Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v37Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v38Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v39Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v40Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v41Ev,
};
extern VTBL_ENTRY _ZTV8S20827C1[];
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C2D1Ev();
extern void _ZN8S20827C2D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C53v31Ev();
extern void _ZN8S20827C53v32Ev();
extern void _ZN8S20827C23v33Ev();
extern void _ZN8S20827C23v34Ev();
extern void _ZN8S20827C23v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C2__8S20827C1[] = {
  ABISELECT(336,180),
  ABISELECT(288,160),
  ABISELECT(224,120),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20827C23v35Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C5D1Ev();
extern void _ZN8S20827C5D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
extern void _ZN8S20827C53v31Ev();
extern void _ZN8S20827C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(288,160),
  ABISELECT(224,120),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20827C53v32Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C7D1Ev();
extern void _ZN8S20827C7D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
extern void _ZN8S20827C73v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(288,160),
  ABISELECT(224,120),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20827C73v30Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C88S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C88S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C88S20827C78S20827C58S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C88S20827C78S20827C58S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,136),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZThn232_N9S20827C12D1Ev,_ZThn136_N9S20827C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void ABISELECT(_ZThn232_N9S20827C12D0Ev,_ZThn136_N9S20827C12D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-232,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-232,-136),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(72,28),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C118S20827C78S20827C58S20827C2__A2__8S20827C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C118S20827C78S20827C58S20827C2__A2__8S20827C1[] = {
  0,
  0,
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,136),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn240_N9S20827C11D1Ev,_ZThn140_N9S20827C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void ABISELECT(_ZThn240_N9S20827C11D0Ev,_ZThn140_N9S20827C11D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-240,-140),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(64,24),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C3__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C11__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,140),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D1Ev,_ZThn20_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C7D0Ev,_ZThn20_N8S20827C7D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,136),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D1Ev,_ZThn24_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C7D0Ev,_ZThn24_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C7D1Ev,_ZThn160_N8S20827C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C7D0Ev,_ZThn160_N8S20827C7D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A2__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A2__8S20827C78S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C7[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C58S20827C2__A3__8S20827C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C58S20827C2__A3__8S20827C1[] = {
  0,
  0,
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C58S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C3__8S20827C58S20827C2__8S20827C1[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C5D1Ev,_ZThn20_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C5D0Ev,_ZThn20_N8S20827C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C118S20827C7__8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,140),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C5D1Ev,_ZThn20_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C5D0Ev,_ZThn20_N8S20827C5D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C5D1Ev,_ZThn24_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C5D0Ev,_ZThn24_N8S20827C5D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C118S20827C7__8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,136),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C5D1Ev,_ZThn24_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C5D0Ev,_ZThn24_N8S20827C5D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C5D1Ev,_ZThn160_N8S20827C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C5D0Ev,_ZThn160_N8S20827C5D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A2__8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C118S20827C7__A2__8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A3__8S20827C58S20827C2__8S20827C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C5[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C3__8S20827C2__8S20827C1[] = {
  0,
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C2__8S20827C1[] = {
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZThn48_N8S20827C2D1Ev,_ZThn20_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20827C2D0Ev,_ZThn20_N8S20827C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C118S20827C78S20827C5__8S20827C2__8S20827C1[] = {
  ABISELECT(-64,-24),
  ABISELECT(240,140),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C2D1Ev,_ZThn20_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20827C2D0Ev,_ZThn20_N8S20827C2D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn56_N8S20827C2D1Ev,_ZThn24_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20827C2D0Ev,_ZThn24_N8S20827C2D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C118S20827C78S20827C5__8S20827C2__8S20827C1[] = {
  ABISELECT(-72,-28),
  ABISELECT(232,136),
  ABISELECT(-72,-28),
  ABISELECT(-72,-28),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C2D1Ev,_ZThn24_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20827C2D0Ev,_ZThn24_N8S20827C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S20827C2D1Ev,_ZTv0_n40_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S20827C2D1Ev,_ZThn160_N8S20827C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20827C2D0Ev,_ZTv0_n40_N8S20827C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S20827C2D0Ev,_ZThn160_N8S20827C2D0Ev)() __attribute__((weak));
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C2__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(-288,-160),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C2D1Ev,_ZTv0_n40_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20827C2D0Ev,_ZTv0_n40_N8S20827C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A2__8S20827C2__8S20827C1[] = {
  ABISELECT(-312,-172),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C118S20827C78S20827C5__A2__8S20827C2__8S20827C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C5__A3__8S20827C2__8S20827C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N8S20827C2D1Ev,_ZTv0_n84_N8S20827C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20827C2D1Ev,_ZThn180_N8S20827C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20827C2D0Ev,_ZTv0_n84_N8S20827C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20827C2D0Ev,_ZThn180_N8S20827C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20827C11__A1__8S20827C2__8S20827C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-336,-180),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-184),
  ABISELECT(-48,-20),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20827C2D1Ev,_ZTv0_n84_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20827C2D0Ev,_ZTv0_n84_N8S20827C2D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N8S20827C2D1Ev,_ZTvn4_n84_N8S20827C2D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N8S20827C2D0Ev,_ZTvn4_n84_N8S20827C2D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__A1__8S20827C2__8S20827C1[] = {
  ABISELECT(-360,-188),
  ABISELECT(-56,-24),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20827C2D1Ev,_ZTvn4_n84_N8S20827C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N8S20827C2D0Ev,_ZTvn4_n84_N8S20827C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C39S20827C11__A2__8S20827C2__8S20827C1[] = {
  ABISELECT(-352,-188),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A4__8S20827C2__8S20827C1[] = {
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-416,-228),
  (VTBL_ENTRY)&(_ZTI8S20827C2[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void _ZN8S20827C8D1Ev();
extern void _ZN8S20827C8D0Ev();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__A1__8S20827C1[] = {
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20827C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C98S20827C8__A1__8S20827C1[] = {
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C1[] = {
  0,
  0,
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C8__A1__8S20827C1[] = {
  0,
  0,
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI8S20827C8[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void _ZN9S20827C11D1Ev();
extern void _ZN9S20827C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C11__A1__8S20827C1[] = {
  ABISELECT(-352,-184),
  ABISELECT(-48,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C11D0Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C12D1Ev();
extern void _ZN9S20827C12D0Ev();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__A1__8S20827C1[] = {
  ABISELECT(-360,-188),
  ABISELECT(-56,-24),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev)();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C129S20827C11__A1__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(56,24),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__9S20827C129S20827C11__A1__8S20827C1[] = {
  0,
  0,
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__A1__8S20827C1[] = {
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20827C12[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A4__8S20827C1[] = {
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__8S20827C99S20827C11__A4__8S20827C1[] = {
  0,
  0,
  ABISELECT(432,232),
  (VTBL_ENTRY)&(_ZTI8S20827C9[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C12__9S20827C11__A1__8S20827C1[] = {
  ABISELECT(-360,-188),
  ABISELECT(-56,-24),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D1Ev,_ZThn4_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20827C11D0Ev,_ZThn4_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev)();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C11__A1__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(48,20),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C11__A1__8S20827C1[] = {
  0,
  0,
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C11__A1__8S20827C1[] = {
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C9__A1__9S20827C11__A1__8S20827C1[] = {
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20827C11[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C13D1Ev();
extern void _ZN9S20827C13D0Ev();
extern void _ZN9S20827C133v36Ev();
extern void _ZN9S20827C133v37Ev();
extern void _ZN9S20827C133v38Ev();
extern void _ZN9S20827C133v39Ev();
extern void _ZN9S20827C133v40Ev();
extern void _ZN9S20827C133v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C13__8S20827C1[] = {
  ABISELECT(-472,-256),
  ABISELECT(-168,-92),
  ABISELECT(-120,-72),
  ABISELECT(-472,-256),
  ABISELECT(-472,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20827C13D0Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v36Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v37Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v38Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v39Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v40Ev,
  (VTBL_ENTRY)&_ZN9S20827C133v41Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
extern void _ZN9S20827C113v24Ev();
extern void _ZN9S20827C113v25Ev();
extern void _ZN9S20827C113v26Ev();
extern void _ZN9S20827C113v27Ev();
extern void _ZN9S20827C113v28Ev();
extern void _ZN9S20827C113v29Ev();
extern void ABISELECT(_ZTv0_n168_N9S20827C13D1Ev,_ZTv0_n84_N9S20827C13D1Ev)();
extern void ABISELECT(_ZTv0_n168_N9S20827C13D0Ev,_ZTv0_n84_N9S20827C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20827C11__9S20827C13__8S20827C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(120,72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-184),
  ABISELECT(-48,-20),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v24Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v25Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20827C113v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20827C13D1Ev,_ZTv0_n84_N9S20827C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20827C13D0Ev,_ZTv0_n84_N9S20827C13D0Ev),
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void ABISELECT(_ZTvn8_n168_N9S20827C13D1Ev,_ZTvn4_n84_N9S20827C13D1Ev)();
extern void ABISELECT(_ZTvn8_n168_N9S20827C13D0Ev,_ZTvn4_n84_N9S20827C13D0Ev)();
extern void _ZN9S20827C123v22Ev();
extern void _ZN9S20827C123v23Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C129S20827C11__9S20827C13__8S20827C1[] = {
  ABISELECT(-360,-188),
  ABISELECT(-56,-24),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20827C13D1Ev,_ZTvn4_n84_N9S20827C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n168_N9S20827C13D0Ev,_ZTvn4_n84_N9S20827C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20827C123v22Ev,
  (VTBL_ENTRY)&_ZN9S20827C123v23Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
extern void ABISELECT(_ZTv0_n80_N9S20827C13D1Ev,_ZTv0_n40_N9S20827C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20827C13D0Ev,_ZTv0_n40_N9S20827C13D0Ev)();
extern void _ZN8S20827C83v19Ev();
extern void _ZN8S20827C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C8__9S20827C13__8S20827C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(168,92),
  0,
  0,
  0,
  0,
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C13D1Ev,_ZTv0_n40_N9S20827C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20827C13D0Ev,_ZTv0_n40_N9S20827C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20827C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20827C83v20Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C6__A1__9S20827C13__8S20827C1[] = {
  0,
  0,
  ABISELECT(472,256),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN9S20827C103v11Ev();
extern void _ZN9S20827C103v12Ev();
extern void _ZN9S20827C103v13Ev();
extern void _ZN9S20827C103v14Ev();
extern void _ZN9S20827C103v15Ev();
extern void _ZN9S20827C103v16Ev();
extern void _ZN9S20827C103v17Ev();
extern void _ZN9S20827C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20827C108S20827C8__A1__9S20827C13__8S20827C1[] = {
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v11Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v12Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v13Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v14Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v15Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v16Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v17Ev,
  (VTBL_ENTRY)&_ZN9S20827C103v18Ev,
};
extern void _ZN8S20827C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C39S20827C11__9S20827C13__8S20827C1[] = {
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C33v21Ev,
};
extern void _ZN8S20827C62v5Ev();
extern void _ZN8S20827C62v6Ev();
extern void _ZN8S20827C92v7Ev();
extern void _ZN8S20827C92v8Ev();
extern void _ZN8S20827C92v9Ev();
extern void _ZN8S20827C93v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20827C99S20827C11__A1__9S20827C13__8S20827C1[] = {
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20827C13[0]),
  (VTBL_ENTRY)&_ZN8S20827C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20827C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20827C92v9Ev,
  (VTBL_ENTRY)&_ZN8S20827C93v10Ev,
};
static  VTT_ENTRY vtt_S20827C1[] = {
  {&(_ZTV8S20827C1[10]),  10,309},
  {&(_ZTV8S20827C1[56]),  56,309},
  {&(_ZTV8S20827C1[170]),  170,309},
  {&(_ZTV8S20827C1[10]),  10,309},
  {&(_ZTV8S20827C1[74]),  74,309},
  {&(_ZTV8S20827C1[88]),  88,309},
  {&(_ZTV8S20827C1[112]),  112,309},
  {&(_ZTV8S20827C1[191]),  191,309},
  {&(_ZTV8S20827C1[203]),  203,309},
  {&(_ZTV8S20827C1[120]),  120,309},
  {&(_ZTV8S20827C1[126]),  126,309},
  {&(_ZTV8S20827C1[134]),  134,309},
  {&(_ZTV8S20827C1[149]),  149,309},
  {&(_ZTV8S20827C1[157]),  157,309},
  {&(_ZTV8S20827C1[241]),  241,309},
  {&(_ZTV8S20827C1[265]),  265,309},
  {&(_ZTV8S20827C1[273]),  273,309},
  {&(_ZTV8S20827C1[279]),  279,309},
  {&(_ZTV8S20827C1[299]),  299,309},
  {&(_tg__ZTV8S20827C2__8S20827C1[8]),  8,24},
  {&(_tg__ZTV8S20827C58S20827C2__8S20827C1[7]),  7,20},
  {&(_tg__ZTV8S20827C78S20827C58S20827C2__8S20827C1[7]),  7,18},
  {&(_tg__ZTV8S20827C88S20827C78S20827C58S20827C2__8S20827C1[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C88S20827C78S20827C58S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C88S20827C78S20827C58S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C88S20827C78S20827C58S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C118S20827C78S20827C58S20827C2__8S20827C1[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C118S20827C78S20827C58S20827C2__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C118S20827C78S20827C58S20827C2__A2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C118S20827C78S20827C58S20827C2__A2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C118S20827C78S20827C58S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C78S20827C58S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV8S20827C3__8S20827C78S20827C58S20827C2__8S20827C1[3]),  3,4},
  {&(_tg__ZTV9S20827C11__8S20827C78S20827C58S20827C2__8S20827C1[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__8S20827C78S20827C58S20827C2__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__A1__8S20827C78S20827C58S20827C2__8S20827C1[20]),  20,30},
  {&(_tg__ZTV9S20827C108S20827C8__A2__8S20827C78S20827C58S20827C2__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A2__8S20827C78S20827C58S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C98S20827C58S20827C2__A3__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C58S20827C2__A3__8S20827C1[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C58S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV8S20827C3__8S20827C58S20827C2__8S20827C1[3]),  3,4},
  {&(_tg__ZTV9S20827C118S20827C7__8S20827C58S20827C2__8S20827C1[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C118S20827C7__8S20827C58S20827C2__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__A1__8S20827C58S20827C2__8S20827C1[20]),  20,30},
  {&(_tg__ZTV9S20827C108S20827C8__A2__8S20827C58S20827C2__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C118S20827C7__A2__8S20827C58S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C9__A3__8S20827C58S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C3__8S20827C2__8S20827C1[3]),  3,4},
  {&(_tg__ZTV8S20827C6__8S20827C2__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C118S20827C78S20827C5__8S20827C2__8S20827C1[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C118S20827C78S20827C5__8S20827C2__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__A1__8S20827C2__8S20827C1[20]),  20,30},
  {&(_tg__ZTV9S20827C108S20827C8__A2__8S20827C2__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C118S20827C78S20827C5__A2__8S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C98S20827C5__A3__8S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV9S20827C11__A1__8S20827C2__8S20827C1[28]),  28,46},
  {&(_tg__ZTV9S20827C129S20827C11__A1__8S20827C2__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C39S20827C11__A2__8S20827C2__8S20827C1[2]),  2,3},
  {&(_tg__ZTV8S20827C99S20827C11__A4__8S20827C2__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C8__A1__8S20827C1[5]),  5,15},
  {&(_tg__ZTV8S20827C98S20827C8__A1__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C98S20827C8__A1__8S20827C1[4]),  4,6},
  {&(_tg__ZTV8S20827C6__8S20827C8__A1__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C11__A1__8S20827C1[4]),  4,22},
  {&(_tg__ZTV9S20827C129S20827C11__A1__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C129S20827C11__A1__8S20827C1[20]),  20,30},
  {&(_tg__ZTV8S20827C6__9S20827C129S20827C11__A1__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__9S20827C129S20827C11__A1__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C99S20827C11__A4__8S20827C1[5]),  5,11},
  {&(_tg__ZTV8S20827C6__8S20827C99S20827C11__A4__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C12__9S20827C11__A1__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C11__A1__8S20827C1[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C11__A1__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C11__A1__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C9__A1__9S20827C11__A1__8S20827C1[5]),  5,11},
  {&(_tg__ZTV9S20827C13__8S20827C1[7]),  7,17},
  {&(_tg__ZTV9S20827C11__9S20827C13__8S20827C1[28]),  28,46},
  {&(_tg__ZTV9S20827C129S20827C11__9S20827C13__8S20827C1[6]),  6,12},
  {&(_tg__ZTV8S20827C8__9S20827C13__8S20827C1[20]),  20,30},
  {&(_tg__ZTV8S20827C6__A1__9S20827C13__8S20827C1[4]),  4,6},
  {&(_tg__ZTV9S20827C108S20827C8__A1__9S20827C13__8S20827C1[2]),  2,12},
  {&(_tg__ZTV8S20827C39S20827C11__9S20827C13__8S20827C1[2]),  2,3},
  {&(_tg__ZTV8S20827C99S20827C11__A1__9S20827C13__8S20827C1[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S20827C1[];
extern  VTBL_ENTRY _ZTV8S20827C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20827C1[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20827C2D0Ev,_ZTv0_n84_N8S20827C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20827C2D0Ev,_ZThn180_N8S20827C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20827C2D1Ev,_ZTv0_n84_N8S20827C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20827C2D1Ev,_ZThn180_N8S20827C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C2D0Ev,_ZTv0_n40_N8S20827C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C2D0Ev,_ZThn160_N8S20827C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C2D1Ev,_ZTv0_n40_N8S20827C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C2D1Ev,_ZThn160_N8S20827C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C5D0Ev,_ZTv0_n40_N8S20827C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C5D0Ev,_ZThn160_N8S20827C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C5D1Ev,_ZTv0_n40_N8S20827C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C5D1Ev,_ZThn160_N8S20827C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D0Ev,_ZTv0_n40_N8S20827C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C7D0Ev,_ZThn160_N8S20827C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C7D1Ev,_ZTv0_n40_N8S20827C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20827C7D1Ev,_ZThn160_N8S20827C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D0Ev,_ZTv0_n40_N9S20827C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20827C11D0Ev,_ZThn140_N9S20827C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C11D1Ev,_ZTv0_n40_N9S20827C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20827C11D1Ev,_ZThn140_N9S20827C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D0Ev,_ZTv0_n40_N9S20827C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20827C12D0Ev,_ZThn136_N9S20827C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20827C12D1Ev,_ZTv0_n40_N9S20827C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20827C12D1Ev,_ZThn136_N9S20827C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20827C1D0Ev,_ZTv0_n32_N8S20827C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S20827C1D0Ev,_ZThn256_N8S20827C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20827C1D1Ev,_ZTv0_n32_N8S20827C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S20827C1D1Ev,_ZThn256_N8S20827C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20827C1D0Ev,_ZTv0_n84_N8S20827C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20827C1D0Ev,_ZThn184_N8S20827C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20827C1D1Ev,_ZTv0_n84_N8S20827C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20827C1D1Ev,_ZThn184_N8S20827C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C1D0Ev,_ZTv0_n40_N8S20827C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20827C1D0Ev,_ZThn164_N8S20827C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20827C1D1Ev,_ZTv0_n40_N8S20827C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20827C1D1Ev,_ZThn164_N8S20827C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20827C1D0Ev,_ZTv0_n52_N8S20827C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20827C1D0Ev,_ZThn4_N8S20827C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20827C1D1Ev,_ZTv0_n52_N8S20827C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20827C1D1Ev,_ZThn4_N8S20827C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20827C1 = {  "S20827C1", // class name
  bases_S20827C1, 31,
  &(vtc_S20827C1[0]), // expected_vtbl_contents
  &(vtt_S20827C1[0]), // expected_vtt_contents
  ABISELECT(560,300), // object size
  NSPAIRA(_ZTI8S20827C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20827C1),309, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20827C1),91, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7150C3  {
  long double s7150c3f0;
  long s7150c3f1;
  virtual void  v12(); // _ZN7S7150C33v12Ev
  virtual void  v13(); // _ZN7S7150C33v13Ev
  virtual void  v14(); // _ZN7S7150C33v14Ev
  virtual void  v15(); // _ZN7S7150C33v15Ev
  virtual void  v16(); // _ZN7S7150C33v16Ev
  virtual void  v17(); // _ZN7S7150C33v17Ev
  ~S7150C3(); // tgen
  S7150C3(); // tgen
};
//SIG(-1 S7150C3) C1{ v1 v2 v3 v4 v5 v6 FD Fl}


void  S7150C3 ::v12(){vfunc_called(this, "_ZN7S7150C33v12Ev");}
void  S7150C3 ::v13(){vfunc_called(this, "_ZN7S7150C33v13Ev");}
void  S7150C3 ::v14(){vfunc_called(this, "_ZN7S7150C33v14Ev");}
void  S7150C3 ::v15(){vfunc_called(this, "_ZN7S7150C33v15Ev");}
void  S7150C3 ::v16(){vfunc_called(this, "_ZN7S7150C33v16Ev");}
void  S7150C3 ::v17(){vfunc_called(this, "_ZN7S7150C33v17Ev");}
S7150C3 ::~S7150C3(){ note_dtor("S7150C3", this);} // tgen
S7150C3 ::S7150C3(){ note_ctor("S7150C3", this);} // tgen

static void Test_S7150C3()
{
  extern Class_Descriptor cd_S7150C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7150C3, buf);
    S7150C3 *dp, &lv = *(dp=new (buf) S7150C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S7150C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C3)");
    check_field_offset(lv, s7150c3f0, ABISELECT(16,4), "S7150C3.s7150c3f0");
    check_field_offset(lv, s7150c3f1, ABISELECT(32,16), "S7150C3.s7150c3f1");
    test_class_info(&lv, &cd_S7150C3);
    dp->~S7150C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C3(Test_S7150C3, "S7150C3", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S7150C3C1Ev();
extern void _ZN7S7150C3D1Ev();
Name_Map name_map_S7150C3[] = {
  NSPAIR(_ZN7S7150C3C1Ev),
  NSPAIR(_ZN7S7150C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7150C3[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
static  VTBL_ENTRY vtc_S7150C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C3[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
};
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
Class_Descriptor cd_S7150C3 = {  "S7150C3", // class name
  0,0,//no base classes
  &(vtc_S7150C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S7150C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7150C3),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  S7150C2  {
  ::S7150C3 s7150c2f0;
  int s7150c2f1;
  virtual  ~S7150C2(); // _ZN7S7150C2D1Ev
  virtual void  v8(); // _ZN7S7150C22v8Ev
  virtual void  v9(); // _ZN7S7150C22v9Ev
  virtual void  v10(); // _ZN7S7150C23v10Ev
  virtual void  v11(); // _ZN7S7150C23v11Ev
  S7150C2(); // tgen
};
//SIG(-1 S7150C2) C1{ vd v1 v2 v3 v4 FC2{ v5 v6 v7 v8 v9 v10 FD Fl} Fi}


 S7150C2 ::~S7150C2(){ note_dtor("S7150C2", this);}
void  S7150C2 ::v8(){vfunc_called(this, "_ZN7S7150C22v8Ev");}
void  S7150C2 ::v9(){vfunc_called(this, "_ZN7S7150C22v9Ev");}
void  S7150C2 ::v10(){vfunc_called(this, "_ZN7S7150C23v10Ev");}
void  S7150C2 ::v11(){vfunc_called(this, "_ZN7S7150C23v11Ev");}
S7150C2 ::S7150C2(){ note_ctor("S7150C2", this);} // tgen

static void Test_S7150C2()
{
  extern Class_Descriptor cd_S7150C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7150C2, buf);
    S7150C2 *dp, &lv = *(dp=new (buf) S7150C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,28), "sizeof(S7150C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C2)");
    check_field_offset(lv, s7150c2f0, ABISELECT(16,4), "S7150C2.s7150c2f0");
    check_field_offset(lv, s7150c2f1, ABISELECT(64,24), "S7150C2.s7150c2f1");
    test_class_info(&lv, &cd_S7150C2);
    dp->~S7150C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C2(Test_S7150C2, "S7150C2", ABISELECT(80,28));

#else // __cplusplus

extern void _ZN7S7150C2C1Ev();
extern void _ZN7S7150C2D1Ev();
Name_Map name_map_S7150C2[] = {
  NSPAIR(_ZN7S7150C2C1Ev),
  NSPAIR(_ZN7S7150C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7150C2[];
extern void _ZN7S7150C2D1Ev();
extern void _ZN7S7150C2D0Ev();
extern void _ZN7S7150C22v8Ev();
extern void _ZN7S7150C22v9Ev();
extern void _ZN7S7150C23v10Ev();
extern void _ZN7S7150C23v11Ev();
static  VTBL_ENTRY vtc_S7150C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C2[0]),
  (VTBL_ENTRY)&_ZN7S7150C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S7150C2[];
extern  VTBL_ENTRY _ZTV7S7150C2[];
Class_Descriptor cd_S7150C2 = {  "S7150C2", // class name
  0,0,//no base classes
  &(vtc_S7150C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,28), // object size
  NSPAIRA(_ZTI7S7150C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7150C2),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  S7150C5  : S7150C3 {
  int s7150c5f0;
  virtual void  v18(); // _ZN7S7150C53v18Ev
  virtual void  v19(); // _ZN7S7150C53v19Ev
  virtual void  v20(); // _ZN7S7150C53v20Ev
  virtual void  v21(); // _ZN7S7150C53v21Ev
  virtual void  v22(); // _ZN7S7150C53v22Ev
  virtual void  v23(); // _ZN7S7150C53v23Ev
  virtual void  v24(); // _ZN7S7150C53v24Ev
  ~S7150C5(); // tgen
  S7150C5(); // tgen
};
//SIG(-1 S7150C5) C1{ BC2{ v8 v9 v10 v11 v12 v13 FD Fl} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7150C5 ::v18(){vfunc_called(this, "_ZN7S7150C53v18Ev");}
void  S7150C5 ::v19(){vfunc_called(this, "_ZN7S7150C53v19Ev");}
void  S7150C5 ::v20(){vfunc_called(this, "_ZN7S7150C53v20Ev");}
void  S7150C5 ::v21(){vfunc_called(this, "_ZN7S7150C53v21Ev");}
void  S7150C5 ::v22(){vfunc_called(this, "_ZN7S7150C53v22Ev");}
void  S7150C5 ::v23(){vfunc_called(this, "_ZN7S7150C53v23Ev");}
void  S7150C5 ::v24(){vfunc_called(this, "_ZN7S7150C53v24Ev");}
S7150C5 ::~S7150C5(){ note_dtor("S7150C5", this);} // tgen
S7150C5 ::S7150C5(){ note_ctor("S7150C5", this);} // tgen

static void Test_S7150C5()
{
  extern Class_Descriptor cd_S7150C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S7150C5, buf);
    S7150C5 *dp, &lv = *(dp=new (buf) S7150C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7150C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C5)");
    check_base_class_offset(lv, (S7150C3*), 0, "S7150C5");
    check_field_offset(lv, s7150c5f0, ABISELECT(40,20), "S7150C5.s7150c5f0");
    test_class_info(&lv, &cd_S7150C5);
    dp->~S7150C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C5(Test_S7150C5, "S7150C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7150C5C1Ev();
extern void _ZN7S7150C5D1Ev();
Name_Map name_map_S7150C5[] = {
  NSPAIR(_ZN7S7150C5C1Ev),
  NSPAIR(_ZN7S7150C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
static Base_Class bases_S7150C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7150C5[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY vtc_S7150C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C5[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
Class_Descriptor cd_S7150C5 = {  "S7150C5", // class name
  bases_S7150C5, 1,
  &(vtc_S7150C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7150C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7150C5),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  S7150C7  : S7150C5 {
  __tsi64 s7150c7f0[2];
  ::S7150C3 s7150c7f1;
  virtual  ~S7150C7(); // _ZN7S7150C7D1Ev
  virtual void  v32(); // _ZN7S7150C73v32Ev
  virtual void  v33(); // _ZN7S7150C73v33Ev
  virtual void  v34(); // _ZN7S7150C73v34Ev
  virtual void  v35(); // _ZN7S7150C73v35Ev
  S7150C7(); // tgen
};
//SIG(-1 S7150C7) C1{ BC2{ BC3{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v1 v2 v3 v4 FL[2] FC3}


 S7150C7 ::~S7150C7(){ note_dtor("S7150C7", this);}
void  S7150C7 ::v32(){vfunc_called(this, "_ZN7S7150C73v32Ev");}
void  S7150C7 ::v33(){vfunc_called(this, "_ZN7S7150C73v33Ev");}
void  S7150C7 ::v34(){vfunc_called(this, "_ZN7S7150C73v34Ev");}
void  S7150C7 ::v35(){vfunc_called(this, "_ZN7S7150C73v35Ev");}
S7150C7 ::S7150C7(){ note_ctor("S7150C7", this);} // tgen

static void Test_S7150C7()
{
  extern Class_Descriptor cd_S7150C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S7150C7, buf);
    S7150C7 *dp, &lv = *(dp=new (buf) S7150C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7150C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C7)");
    check_base_class_offset(lv, (S7150C3*)(S7150C5*), 0, "S7150C7");
    check_base_class_offset(lv, (S7150C5*), 0, "S7150C7");
    check_field_offset(lv, s7150c7f0, ABISELECT(48,24), "S7150C7.s7150c7f0");
    check_field_offset(lv, s7150c7f1, ABISELECT(64,40), "S7150C7.s7150c7f1");
    test_class_info(&lv, &cd_S7150C7);
    dp->~S7150C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C7(Test_S7150C7, "S7150C7", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7150C7C1Ev();
extern void _ZN7S7150C7D1Ev();
Name_Map name_map_S7150C7[] = {
  NSPAIR(_ZN7S7150C7C1Ev),
  NSPAIR(_ZN7S7150C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
static Base_Class bases_S7150C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7150C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7150C7[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void _ZN7S7150C7D1Ev();
extern void _ZN7S7150C7D0Ev();
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY vtc_S7150C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C7[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7150C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
extern VTBL_ENTRY _ZTI7S7150C7[];
extern  VTBL_ENTRY _ZTV7S7150C7[];
Class_Descriptor cd_S7150C7 = {  "S7150C7", // class name
  bases_S7150C7, 2,
  &(vtc_S7150C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7150C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7150C7),21, //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  S7150C9  : virtual S7150C5 , S7150C3 {
  virtual void  v25(); // _ZN7S7150C93v25Ev
  virtual void  v26(); // _ZN7S7150C93v26Ev
  virtual void  v27(); // _ZN7S7150C93v27Ev
  virtual void  v28(); // _ZN7S7150C93v28Ev
  virtual void  v29(); // _ZN7S7150C93v29Ev
  virtual void  v30(); // _ZN7S7150C93v30Ev
  virtual void  v31(); // _ZN7S7150C93v31Ev
  ~S7150C9(); // tgen
  S7150C9(); // tgen
};
//SIG(-1 S7150C9) C1{ VBC2{ BC3{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} BC3 v1 v2 v3 v4 v5 v6 v7}


void  S7150C9 ::v25(){vfunc_called(this, "_ZN7S7150C93v25Ev");}
void  S7150C9 ::v26(){vfunc_called(this, "_ZN7S7150C93v26Ev");}
void  S7150C9 ::v27(){vfunc_called(this, "_ZN7S7150C93v27Ev");}
void  S7150C9 ::v28(){vfunc_called(this, "_ZN7S7150C93v28Ev");}
void  S7150C9 ::v29(){vfunc_called(this, "_ZN7S7150C93v29Ev");}
void  S7150C9 ::v30(){vfunc_called(this, "_ZN7S7150C93v30Ev");}
void  S7150C9 ::v31(){vfunc_called(this, "_ZN7S7150C93v31Ev");}
S7150C9 ::~S7150C9(){ note_dtor("S7150C9", this);} // tgen
S7150C9 ::S7150C9(){ note_ctor("S7150C9", this);} // tgen

static void Test_S7150C9()
{
  extern Class_Descriptor cd_S7150C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7150C9, buf);
    S7150C9 *dp, &lv = *(dp=new (buf) S7150C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S7150C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C9)");
    check_base_class_offset(lv, (S7150C3*)(S7150C5*), ABISELECT(48,20), "S7150C9");
    check_base_class_offset(lv, (S7150C5*), ABISELECT(48,20), "S7150C9");
    /*is_ambiguous_... S7150C9::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*), 0, "S7150C9");
    test_class_info(&lv, &cd_S7150C9);
    dp->~S7150C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C9(Test_S7150C9, "S7150C9", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN7S7150C9C1Ev();
extern void _ZN7S7150C9D1Ev();
Name_Map name_map_S7150C9[] = {
  NSPAIR(_ZN7S7150C9C1Ev),
  NSPAIR(_ZN7S7150C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
static Base_Class bases_S7150C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(48,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7150C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7150C9[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY vtc_S7150C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern VTBL_ENTRY _ZTV7S7150C9[];
static  VTT_ENTRY vtt_S7150C9[] = {
  {&(_ZTV7S7150C9[3]),  3,44},
  {&(_ZTV7S7150C9[31]),  31,44},
};
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
Class_Descriptor cd_S7150C9 = {  "S7150C9", // class name
  bases_S7150C9, 3,
  &(vtc_S7150C9[0]), // expected_vtbl_contents
  &(vtt_S7150C9[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI7S7150C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7150C9),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7150C9),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  S7150C8  : S7150C3 , virtual S7150C5 , S7150C9 , virtual S7150C7 {
  virtual void  v36(); // _ZN7S7150C83v36Ev
  ~S7150C8(); // tgen
  S7150C8(); // tgen
};
//SIG(-1 S7150C8) C1{ BC2{ v2 v3 v4 v5 v6 v7 FD Fl} VBC3{ BC2 v8 v9 v10 v11 v12 v13 v14 Fi} BC4{ VBC3 BC2 v15 v16 v17 v18 v19 v20 v21} VBC5{ BC3 vd v22 v23 v24 v25 FL[2] FC2} v1}


void  S7150C8 ::v36(){vfunc_called(this, "_ZN7S7150C83v36Ev");}
S7150C8 ::~S7150C8(){ note_dtor("S7150C8", this);} // tgen
S7150C8 ::S7150C8(){ note_ctor("S7150C8", this);} // tgen

static void Test_S7150C8()
{
  extern Class_Descriptor cd_S7150C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,32)];
    init_test(&cd_S7150C8, buf);
    S7150C8 *dp, &lv = *(dp=new (buf) S7150C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,124), "sizeof(S7150C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C8)");
    /*is_ambiguous_... S7150C8::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*), 0, "S7150C8");
    /*is_ambiguous_... S7150C8::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C5*), ABISELECT(96,40), "S7150C8");
    /*is_ambiguous_... S7150C8::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C5*), ABISELECT(96,40), "S7150C8");
    check_base_class_offset(lv, (S7150C5*)(S7150C9*), ABISELECT(96,40), "S7150C8");
    /*is_ambiguous_... S7150C9::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*), ABISELECT(48,20), "S7150C8");
    check_base_class_offset(lv, (S7150C9*), ABISELECT(48,20), "S7150C8");
    check_base_class_offset(lv, (S7150C3*)(S7150C5*)(S7150C7*), ABISELECT(144,64), "S7150C8");
    check_base_class_offset(lv, (S7150C5*)(S7150C7*), ABISELECT(144,64), "S7150C8");
    check_base_class_offset(lv, (S7150C7*), ABISELECT(144,64), "S7150C8");
    test_class_info(&lv, &cd_S7150C8);
    dp->~S7150C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C8(Test_S7150C8, "S7150C8", ABISELECT(256,124));

#else // __cplusplus

extern void _ZN7S7150C8C1Ev();
extern void _ZN7S7150C8D1Ev();
Name_Map name_map_S7150C8[] = {
  NSPAIR(_ZN7S7150C8C1Ev),
  NSPAIR(_ZN7S7150C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C7;
extern VTBL_ENTRY _ZTI7S7150C7[];
extern  VTBL_ENTRY _ZTV7S7150C7[];
static Base_Class bases_S7150C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7150C3,    ABISELECT(96,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
    2, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(96,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    15, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7150C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7150C9,    ABISELECT(48,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7150C3,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7150C7,    ABISELECT(144,64), //bcp->offset
    57, //bcp->virtual_function_table_offset
    20, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7150C8[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void _ZN7S7150C8D1Ev();
extern void _ZN7S7150C8D0Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev)();
extern void ABISELECT(_ZThn144_N7S7150C8D1Ev,_ZThn64_N7S7150C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev)();
extern void ABISELECT(_ZThn144_N7S7150C8D0Ev,_ZThn64_N7S7150C8D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY vtc_S7150C8[] = {
  ABISELECT(144,64),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D0Ev,
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
extern VTBL_ENTRY _ZTV7S7150C8[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C9__7S7150C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C9__7S7150C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
static  VTT_ENTRY vtt_S7150C8[] = {
  {&(_ZTV7S7150C8[4]),  4,96},
  {&(_tg__ZTV7S7150C9__7S7150C8[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C9__7S7150C8[15]),  15,28},
  {&(_ZTV7S7150C8[44]),  44,96},
  {&(_ZTV7S7150C8[16]),  16,96},
  {&(_ZTV7S7150C8[77]),  77,96},
};
extern VTBL_ENTRY _ZTI7S7150C8[];
extern  VTBL_ENTRY _ZTV7S7150C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C8[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7150C8D0Ev,_ZThn64_N7S7150C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7150C8D1Ev,_ZThn64_N7S7150C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7150C8 = {  "S7150C8", // class name
  bases_S7150C8, 8,
  &(vtc_S7150C8[0]), // expected_vtbl_contents
  &(vtt_S7150C8[0]), // expected_vtt_contents
  ABISELECT(256,124), // object size
  NSPAIRA(_ZTI7S7150C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7150C8),96, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7150C8),6, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7150C6  : virtual S7150C7 , virtual S7150C8 , S7150C9 , S7150C3 {
  ::S7150C3 s7150c6f0;
  void *s7150c6f1;
  virtual void  v37(); // _ZN7S7150C63v37Ev
  virtual void  v38(); // _ZN7S7150C63v38Ev
  virtual void  v39(); // _ZN7S7150C63v39Ev
  virtual void  v40(); // _ZN7S7150C63v40Ev
  virtual void  v41(); // _ZN7S7150C63v41Ev
  virtual void  v42(); // _ZN7S7150C63v42Ev
  virtual void  v43(); // _ZN7S7150C63v43Ev
  ~S7150C6(); // tgen
  S7150C6(); // tgen
};
//SIG(-1 S7150C6) C1{ VBC2{ BC3{ BC4{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} vd v21 v22 v23 v24 FL[2] FC4} VBC5{ BC4 VBC3 BC6{ VBC3 BC4 v25 v26 v27 v28 v29 v30 v31} VBC2 v32} BC6 BC4 v1 v2 v3 v4 v5 v6 v7 FC4 Fp}


void  S7150C6 ::v37(){vfunc_called(this, "_ZN7S7150C63v37Ev");}
void  S7150C6 ::v38(){vfunc_called(this, "_ZN7S7150C63v38Ev");}
void  S7150C6 ::v39(){vfunc_called(this, "_ZN7S7150C63v39Ev");}
void  S7150C6 ::v40(){vfunc_called(this, "_ZN7S7150C63v40Ev");}
void  S7150C6 ::v41(){vfunc_called(this, "_ZN7S7150C63v41Ev");}
void  S7150C6 ::v42(){vfunc_called(this, "_ZN7S7150C63v42Ev");}
void  S7150C6 ::v43(){vfunc_called(this, "_ZN7S7150C63v43Ev");}
S7150C6 ::~S7150C6(){ note_dtor("S7150C6", this);} // tgen
S7150C6 ::S7150C6(){ note_ctor("S7150C6", this);} // tgen

static void Test_S7150C6()
{
  extern Class_Descriptor cd_S7150C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,48)];
    init_test(&cd_S7150C6, buf);
    S7150C6 *dp, &lv = *(dp=new (buf) S7150C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,188), "sizeof(S7150C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C6)");
    check_base_class_offset(lv, (S7150C3*)(S7150C5*)(S7150C7*), ABISELECT(160,64), "S7150C6");
    check_base_class_offset(lv, (S7150C5*)(S7150C7*), ABISELECT(160,64), "S7150C6");
    check_base_class_offset(lv, (S7150C7*), ABISELECT(160,64), "S7150C6");
    check_base_class_offset(lv, (S7150C7*)(S7150C8*), ABISELECT(160,64), "S7150C6");
    /*is_ambiguous_... S7150C8::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C8*), ABISELECT(272,124), "S7150C6");
    /*is_ambiguous_... S7150C6::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C5*), ABISELECT(368,164), "S7150C6");
    /*is_ambiguous_... S7150C8::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C8*), ABISELECT(368,164), "S7150C6");
    check_base_class_offset(lv, (S7150C5*)(S7150C9*)(S7150C8*), ABISELECT(368,164), "S7150C6");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C9*), ABISELECT(368,164), "S7150C6");
    /*is_ambiguous_... S7150C9::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*)(S7150C8*), ABISELECT(320,144), "S7150C6");
    check_base_class_offset(lv, (S7150C9*)(S7150C8*), ABISELECT(320,144), "S7150C6");
    check_base_class_offset(lv, (S7150C8*), ABISELECT(272,124), "S7150C6");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*), 0, "S7150C6");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C9*), 0, "S7150C6");
    /*is_ambiguous_... S7150C6::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*), ABISELECT(48,20), "S7150C6");
    check_field_offset(lv, s7150c6f0, ABISELECT(96,40), "S7150C6.s7150c6f0");
    check_field_offset(lv, s7150c6f1, ABISELECT(144,60), "S7150C6.s7150c6f1");
    test_class_info(&lv, &cd_S7150C6);
    dp->~S7150C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C6(Test_S7150C6, "S7150C6", ABISELECT(416,188));

#else // __cplusplus

extern void _ZN7S7150C6C1Ev();
extern void _ZN7S7150C6D1Ev();
Name_Map name_map_S7150C6[] = {
  NSPAIR(_ZN7S7150C6C1Ev),
  NSPAIR(_ZN7S7150C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C7;
extern VTBL_ENTRY _ZTI7S7150C7[];
extern  VTBL_ENTRY _ZTV7S7150C7[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C8;
extern VTBL_ENTRY _ZTI7S7150C8[];
extern  VTBL_ENTRY _ZTV7S7150C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C8[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
static Base_Class bases_S7150C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C3,    ABISELECT(160,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(160,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7150C7,    ABISELECT(160,64), //bcp->offset
    35, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7150C3,    ABISELECT(272,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7150C3,    ABISELECT(368,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(368,164), //bcp->offset
    118, //bcp->virtual_function_table_offset
    15, //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, 1},
  {&cd_S7150C3,    ABISELECT(320,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7150C9,    ABISELECT(320,144), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7150C8,    ABISELECT(272,124), //bcp->offset
    74, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7150C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7150C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7150C3,    ABISELECT(48,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7150C6[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C63v37Ev();
extern void _ZN7S7150C63v38Ev();
extern void _ZN7S7150C63v39Ev();
extern void _ZN7S7150C63v40Ev();
extern void _ZN7S7150C63v41Ev();
extern void _ZN7S7150C63v42Ev();
extern void _ZN7S7150C63v43Ev();
extern void _ZN7S7150C6D1Ev();
extern void _ZN7S7150C6D0Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7150C6D1Ev,_ZThn64_N7S7150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7150C6D0Ev,_ZThn64_N7S7150C6D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev)();
extern void ABISELECT(_ZThn272_N7S7150C6D1Ev,_ZThn124_N7S7150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev)();
extern void ABISELECT(_ZThn272_N7S7150C6D0Ev,_ZThn124_N7S7150C6D0Ev)() __attribute__((weak));
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY vtc_S7150C6[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v42Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v43Ev,
  (VTBL_ENTRY)&_ZN7S7150C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C6D0Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev),
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern VTBL_ENTRY _ZTV7S7150C6[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C9__A1__7S7150C6[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C9__A1__7S7150C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void _ZN7S7150C8D1Ev();
extern void _ZN7S7150C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C8__7S7150C6[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D0Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C8__7S7150C6[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C97S7150C8__7S7150C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C8__7S7150C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C9__7S7150C8__7S7150C6[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev)();
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C7__7S7150C8__7S7150C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
static  VTT_ENTRY vtt_S7150C6[] = {
  {&(_ZTV7S7150C6[5]),  5,146},
  {&(_tg__ZTV7S7150C9__A1__7S7150C6[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C9__A1__7S7150C6[15]),  15,28},
  {&(_ZTV7S7150C6[55]),  55,146},
  {&(_ZTV7S7150C6[93]),  93,146},
  {&(_ZTV7S7150C6[133]),  133,146},
  {&(_ZTV7S7150C6[105]),  105,146},
  {&(_tg__ZTV7S7150C8__7S7150C6[4]),  4,13},
  {&(_tg__ZTV7S7150C97S7150C8__7S7150C6[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C97S7150C8__7S7150C6[15]),  15,28},
  {&(_tg__ZTV7S7150C5__7S7150C8__7S7150C6[15]),  15,28},
  {&(_tg__ZTV7S7150C9__7S7150C8__7S7150C6[3]),  3,16},
  {&(_tg__ZTV7S7150C7__7S7150C8__7S7150C6[20]),  20,39},
};
extern VTBL_ENTRY _ZTI7S7150C6[];
extern  VTBL_ENTRY _ZTV7S7150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C6[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C6D0Ev,_ZThn124_N7S7150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C6D1Ev,_ZThn124_N7S7150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7150C6D0Ev,_ZThn64_N7S7150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7150C6D1Ev,_ZThn64_N7S7150C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7150C6 = {  "S7150C6", // class name
  bases_S7150C6, 12,
  &(vtc_S7150C6[0]), // expected_vtbl_contents
  &(vtt_S7150C6[0]), // expected_vtt_contents
  ABISELECT(416,188), // object size
  NSPAIRA(_ZTI7S7150C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7150C6),146, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7150C6),13, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7150C4  : virtual S7150C3 , S7150C5 , virtual S7150C2 , virtual S7150C6 {
  virtual void  v44(); // _ZN7S7150C43v44Ev
  virtual void  v45(); // _ZN7S7150C43v45Ev
  virtual void  v46(); // _ZN7S7150C43v46Ev
  virtual void  v47(); // _ZN7S7150C43v47Ev
  virtual void  v48(); // _ZN7S7150C43v48Ev
  virtual void  v49(); // _ZN7S7150C43v49Ev
  virtual void  v50(); // _ZN7S7150C43v50Ev
  ~S7150C4(); // tgen
  S7150C4(); // tgen
};
//SIG(-1 S7150C4) C1{ VBC2{ v8 v9 v10 v11 v12 v13 FD Fl} BC3{ BC2 v14 v15 v16 v17 v18 v19 v20 Fi} VBC4{ vd v21 v22 v23 v24 FC2 Fi} VBC5{ VBC6{ BC3 vd v25 v26 v27 v28 FL[2] FC2} VBC7{ BC2 VBC3 BC8{ VBC3 BC2 v29 v30 v31 v32 v33 v34 v35} VBC6 v36} BC8 BC2 v37 v38 v39 v40 v41 v42 v43 FC2 Fp} v1 v2 v3 v4 v5 v6 v7}


void  S7150C4 ::v44(){vfunc_called(this, "_ZN7S7150C43v44Ev");}
void  S7150C4 ::v45(){vfunc_called(this, "_ZN7S7150C43v45Ev");}
void  S7150C4 ::v46(){vfunc_called(this, "_ZN7S7150C43v46Ev");}
void  S7150C4 ::v47(){vfunc_called(this, "_ZN7S7150C43v47Ev");}
void  S7150C4 ::v48(){vfunc_called(this, "_ZN7S7150C43v48Ev");}
void  S7150C4 ::v49(){vfunc_called(this, "_ZN7S7150C43v49Ev");}
void  S7150C4 ::v50(){vfunc_called(this, "_ZN7S7150C43v50Ev");}
S7150C4 ::~S7150C4(){ note_dtor("S7150C4", this);} // tgen
S7150C4 ::S7150C4(){ note_ctor("S7150C4", this);} // tgen

static void Test_S7150C4()
{
  extern Class_Descriptor cd_S7150C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,66)];
    init_test(&cd_S7150C4, buf);
    S7150C4 *dp, &lv = *(dp=new (buf) S7150C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,260), "sizeof(S7150C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C4)");
    /*is_ambiguous_... S7150C4::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*), ABISELECT(48,24), "S7150C4");
    /*is_ambiguous_... S7150C4::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C5*), 0, "S7150C4");
    /*is_ambiguous_... S7150C4::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C5*), 0, "S7150C4");
    check_base_class_offset(lv, (S7150C2*), ABISELECT(96,44), "S7150C4");
    check_base_class_offset(lv, (S7150C3*)(S7150C5*)(S7150C7*), ABISELECT(336,136), "S7150C4");
    check_base_class_offset(lv, (S7150C5*)(S7150C7*), ABISELECT(336,136), "S7150C4");
    check_base_class_offset(lv, (S7150C7*)(S7150C6*), ABISELECT(336,136), "S7150C4");
    check_base_class_offset(lv, (S7150C7*)(S7150C8*), ABISELECT(336,136), "S7150C4");
    /*is_ambiguous_... S7150C8::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C8*), ABISELECT(448,196), "S7150C4");
    /*is_ambiguous_... S7150C4::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C5*), ABISELECT(544,236), "S7150C4");
    /*is_ambiguous_... S7150C8::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C8*), ABISELECT(544,236), "S7150C4");
    check_base_class_offset(lv, (S7150C5*)(S7150C9*)(S7150C8*), ABISELECT(544,236), "S7150C4");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C9*)(S7150C6*), ABISELECT(544,236), "S7150C4");
    /*is_ambiguous_... S7150C9::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*)(S7150C8*), ABISELECT(496,216), "S7150C4");
    check_base_class_offset(lv, (S7150C9*)(S7150C8*), ABISELECT(496,216), "S7150C4");
    check_base_class_offset(lv, (S7150C8*)(S7150C6*), ABISELECT(448,196), "S7150C4");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*)(S7150C6*), ABISELECT(176,72), "S7150C4");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C9*)(S7150C6*), ABISELECT(176,72), "S7150C4");
    /*is_ambiguous_... S7150C6::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C6*), ABISELECT(224,92), "S7150C4");
    check_base_class_offset(lv, (S7150C6*), ABISELECT(176,72), "S7150C4");
    test_class_info(&lv, &cd_S7150C4);
    dp->~S7150C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C4(Test_S7150C4, "S7150C4", ABISELECT(592,260));

#else // __cplusplus

extern void _ZN7S7150C4C1Ev();
extern void _ZN7S7150C4D1Ev();
Name_Map name_map_S7150C4[] = {
  NSPAIR(_ZN7S7150C4C1Ev),
  NSPAIR(_ZN7S7150C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C2;
extern VTBL_ENTRY _ZTI7S7150C2[];
extern  VTBL_ENTRY _ZTV7S7150C2[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C7;
extern VTBL_ENTRY _ZTI7S7150C7[];
extern  VTBL_ENTRY _ZTV7S7150C7[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C8;
extern VTBL_ENTRY _ZTI7S7150C8[];
extern  VTBL_ENTRY _ZTV7S7150C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C8[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C6;
extern VTBL_ENTRY _ZTI7S7150C6[];
extern  VTBL_ENTRY _ZTV7S7150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C6[];
static Base_Class bases_S7150C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C3,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7150C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7150C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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},
  {&cd_S7150C2,    ABISELECT(96,44), //bcp->offset
    44, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7150C3,    ABISELECT(336,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(336,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7150C7,    ABISELECT(336,136), //bcp->offset
    113, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(448,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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7150C3,    ABISELECT(544,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(544,236), //bcp->offset
    196, //bcp->virtual_function_table_offset
    15, //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
    11, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(496,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7150C9,    ABISELECT(496,216), //bcp->offset
    180, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7150C8,    ABISELECT(448,196), //bcp->offset
    152, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(176,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
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7150C9,    ABISELECT(176,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7150C3,    ABISELECT(224,92), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7150C6,    ABISELECT(176,72), //bcp->offset
    57, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7150C4[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void _ZN7S7150C43v44Ev();
extern void _ZN7S7150C43v45Ev();
extern void _ZN7S7150C43v46Ev();
extern void _ZN7S7150C43v47Ev();
extern void _ZN7S7150C43v48Ev();
extern void _ZN7S7150C43v49Ev();
extern void _ZN7S7150C43v50Ev();
extern void _ZN7S7150C4D1Ev();
extern void _ZN7S7150C4D0Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void ABISELECT(_ZTv0_n24_N7S7150C4D1Ev,_ZTv0_n12_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7150C4D1Ev,_ZThn44_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7150C4D0Ev,_ZTv0_n12_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7150C4D0Ev,_ZThn44_N7S7150C4D0Ev)() __attribute__((weak));
extern void _ZN7S7150C22v8Ev();
extern void _ZN7S7150C22v9Ev();
extern void _ZN7S7150C23v10Ev();
extern void _ZN7S7150C23v11Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C63v37Ev();
extern void _ZN7S7150C63v38Ev();
extern void _ZN7S7150C63v39Ev();
extern void _ZN7S7150C63v40Ev();
extern void _ZN7S7150C63v41Ev();
extern void _ZN7S7150C63v42Ev();
extern void _ZN7S7150C63v43Ev();
extern void ABISELECT(_ZTv0_n208_N7S7150C4D1Ev,_ZTv0_n104_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7150C4D1Ev,_ZThn72_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N7S7150C4D0Ev,_ZTv0_n104_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7150C4D0Ev,_ZThn72_N7S7150C4D0Ev)() __attribute__((weak));
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C4D1Ev,_ZTv0_n64_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn336_N7S7150C4D1Ev,_ZThn136_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C4D0Ev,_ZTv0_n64_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn336_N7S7150C4D0Ev,_ZThn136_N7S7150C4D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void ABISELECT(_ZTv0_n96_N7S7150C4D1Ev,_ZTv0_n48_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn448_N7S7150C4D1Ev,_ZThn196_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7150C4D0Ev,_ZTv0_n48_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn448_N7S7150C4D0Ev,_ZThn196_N7S7150C4D0Ev)() __attribute__((weak));
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY vtc_S7150C4[] = {
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(336,136),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v44Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v45Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v46Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v47Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v48Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v49Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v50Ev,
  (VTBL_ENTRY)&_ZN7S7150C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C4D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7150C4D1Ev,_ZTv0_n12_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7150C4D0Ev,_ZTv0_n12_N7S7150C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v11Ev,
  ABISELECT(-176,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-176,-72),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v42Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v43Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7150C4D1Ev,_ZTv0_n104_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7150C4D0Ev,_ZTv0_n104_N7S7150C4D0Ev),
  ABISELECT(-224,-92),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C4D1Ev,_ZTv0_n64_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C4D0Ev,_ZTv0_n64_N7S7150C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-448,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-448,-196),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C4D1Ev,_ZTv0_n48_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C4D0Ev,_ZTv0_n48_N7S7150C4D0Ev),
  ABISELECT(48,20),
  ABISELECT(-496,-216),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern VTBL_ENTRY _ZTV7S7150C4[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C63v37Ev();
extern void _ZN7S7150C63v38Ev();
extern void _ZN7S7150C63v39Ev();
extern void _ZN7S7150C63v40Ev();
extern void _ZN7S7150C63v41Ev();
extern void _ZN7S7150C63v42Ev();
extern void _ZN7S7150C63v43Ev();
extern void _ZN7S7150C6D1Ev();
extern void _ZN7S7150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C6__7S7150C4[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v42Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v43Ev,
  (VTBL_ENTRY)&_ZN7S7150C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C6D0Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C6__A1__7S7150C4[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C97S7150C6__A1__7S7150C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7150C6D1Ev,_ZThn64_N7S7150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7150C6D0Ev,_ZThn64_N7S7150C6D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C7__7S7150C6__7S7150C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev)();
extern void ABISELECT(_ZThn272_N7S7150C6D1Ev,_ZThn124_N7S7150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev)();
extern void ABISELECT(_ZThn272_N7S7150C6D0Ev,_ZThn124_N7S7150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7150C8__7S7150C6__7S7150C4[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev),
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__A1__7S7150C6__7S7150C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C8__7S7150C6__7S7150C4[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void _ZN7S7150C8D1Ev();
extern void _ZN7S7150C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C8__7S7150C4[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D0Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C8__7S7150C4[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C97S7150C8__7S7150C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C8__7S7150C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C9__7S7150C8__7S7150C4[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev)();
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C7__7S7150C8__7S7150C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
static  VTT_ENTRY vtt_S7150C4[] = {
  {&(_ZTV7S7150C4[8]),  8,224},
  {&(_ZTV7S7150C4[38]),  38,224},
  {&(_ZTV7S7150C4[51]),  51,224},
  {&(_ZTV7S7150C4[83]),  83,224},
  {&(_ZTV7S7150C4[133]),  133,224},
  {&(_ZTV7S7150C4[171]),  171,224},
  {&(_ZTV7S7150C4[211]),  211,224},
  {&(_ZTV7S7150C4[183]),  183,224},
  {&(_ZTV7S7150C4[107]),  107,224},
  {&(_tg__ZTV7S7150C6__7S7150C4[5]),  5,27},
  {&(_tg__ZTV7S7150C97S7150C6__A1__7S7150C4[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C97S7150C6__A1__7S7150C4[15]),  15,28},
  {&(_tg__ZTV7S7150C7__7S7150C6__7S7150C4[20]),  20,39},
  {&(_tg__ZTV7S7150C8__7S7150C6__7S7150C4[19]),  19,28},
  {&(_tg__ZTV7S7150C5__A1__7S7150C6__7S7150C4[15]),  15,28},
  {&(_tg__ZTV7S7150C97S7150C8__7S7150C6__7S7150C4[3]),  3,16},
  {&(_tg__ZTV7S7150C8__7S7150C4[4]),  4,13},
  {&(_tg__ZTV7S7150C97S7150C8__7S7150C4[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C97S7150C8__7S7150C4[15]),  15,28},
  {&(_tg__ZTV7S7150C5__7S7150C8__7S7150C4[15]),  15,28},
  {&(_tg__ZTV7S7150C9__7S7150C8__7S7150C4[3]),  3,16},
  {&(_tg__ZTV7S7150C7__7S7150C8__7S7150C4[20]),  20,39},
};
extern VTBL_ENTRY _ZTI7S7150C4[];
extern  VTBL_ENTRY _ZTV7S7150C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C4[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C6D0Ev,_ZThn124_N7S7150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C6D1Ev,_ZThn124_N7S7150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7150C6D0Ev,_ZThn64_N7S7150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7150C6D1Ev,_ZThn64_N7S7150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C4D0Ev,_ZTv0_n48_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7150C4D0Ev,_ZThn196_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C4D1Ev,_ZTv0_n48_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7150C4D1Ev,_ZThn196_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C4D0Ev,_ZTv0_n64_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7150C4D0Ev,_ZThn136_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C4D1Ev,_ZTv0_n64_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7150C4D1Ev,_ZThn136_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7150C4D0Ev,_ZTv0_n104_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7150C4D0Ev,_ZThn72_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7150C4D1Ev,_ZTv0_n104_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7150C4D1Ev,_ZThn72_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7150C4D0Ev,_ZTv0_n12_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7150C4D0Ev,_ZThn44_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7150C4D1Ev,_ZTv0_n12_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7150C4D1Ev,_ZThn44_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7150C4 = {  "S7150C4", // class name
  bases_S7150C4, 17,
  &(vtc_S7150C4[0]), // expected_vtbl_contents
  &(vtt_S7150C4[0]), // expected_vtt_contents
  ABISELECT(592,260), // object size
  NSPAIRA(_ZTI7S7150C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7150C4),224, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7150C4),22, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S7150C10_nt  {
  void  mf7150c10(); // _ZN11S7150C10_nt9mf7150c10Ev
};
//SIG(1 S7150C10_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7150C1  : S7150C2 , virtual S7150C4 {
  ::S7150C10_nt s7150c1f0;
  void *s7150c1f1;
  char s7150c1f2;
  virtual  ~S7150C1(); // _ZN7S7150C1D2Ev
  virtual void  v1(); // _ZN7S7150C12v1Ev
  virtual void  v2(); // _ZN7S7150C12v2Ev
  virtual void  v3(); // _ZN7S7150C12v3Ev
  virtual void  v4(); // _ZN7S7150C12v4Ev
  virtual void  v5(); // _ZN7S7150C12v5Ev
  virtual void  v6(); // _ZN7S7150C12v6Ev
  virtual void  v7(); // _ZN7S7150C12v7Ev
  S7150C1(); // tgen
};
//SIG(1 S7150C1) C1{ BC2{ vd v8 v9 v10 v11 FC3{ v12 v13 v14 v15 v16 v17 FD Fl} Fi} VBC4{ VBC3 BC5{ BC3 v18 v19 v20 v21 v22 v23 v24 Fi} VBC2 VBC6{ VBC7{ BC5 vd v25 v26 v27 v28 FL[2] FC3} VBC8{ BC3 VBC5 BC9{ VBC5 BC3 v29 v30 v31 v32 v33 v34 v35} VBC7 v36} BC9 BC3 v37 v38 v39 v40 v41 v42 v43 FC3 Fp} v44 v45 v46 v47 v48 v49 v50} vd v1 v2 v3 v4 v5 v6 v7 FU10{ m} Fp Fc}


 S7150C1 ::~S7150C1(){ note_dtor("S7150C1", this);}
void  S7150C1 ::v1(){vfunc_called(this, "_ZN7S7150C12v1Ev");}
void  S7150C1 ::v2(){vfunc_called(this, "_ZN7S7150C12v2Ev");}
void  S7150C1 ::v3(){vfunc_called(this, "_ZN7S7150C12v3Ev");}
void  S7150C1 ::v4(){vfunc_called(this, "_ZN7S7150C12v4Ev");}
void  S7150C1 ::v5(){vfunc_called(this, "_ZN7S7150C12v5Ev");}
void  S7150C1 ::v6(){vfunc_called(this, "_ZN7S7150C12v6Ev");}
void  S7150C1 ::v7(){vfunc_called(this, "_ZN7S7150C12v7Ev");}
S7150C1 ::S7150C1(){ note_ctor("S7150C1", this);} // tgen

static void Test_S7150C1()
{
  extern Class_Descriptor cd_S7150C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(44,76)];
    init_test(&cd_S7150C1, buf);
    S7150C1 *dp, &lv = *(dp=new (buf) S7150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,300), "sizeof(S7150C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7150C1)");
    /*is_ambiguous_... S7150C1::S7150C2 */ AMB_check_base_class_offset(lv, (S7150C2*), 0, "S7150C1");
    /*is_ambiguous_... S7150C4::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C4*), ABISELECT(144,64), "S7150C1");
    /*is_ambiguous_... S7150C4::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C5*)(S7150C4*), ABISELECT(96,40), "S7150C1");
    /*is_ambiguous_... S7150C4::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C4*), ABISELECT(96,40), "S7150C1");
    check_base_class_offset(lv, (S7150C2*)(S7150C4*), ABISELECT(192,84), "S7150C1");
    check_base_class_offset(lv, (S7150C3*)(S7150C5*)(S7150C7*), ABISELECT(432,176), "S7150C1");
    check_base_class_offset(lv, (S7150C5*)(S7150C7*), ABISELECT(432,176), "S7150C1");
    check_base_class_offset(lv, (S7150C7*)(S7150C6*), ABISELECT(432,176), "S7150C1");
    check_base_class_offset(lv, (S7150C7*)(S7150C8*), ABISELECT(432,176), "S7150C1");
    /*is_ambiguous_... S7150C8::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C8*), ABISELECT(544,236), "S7150C1");
    /*is_ambiguous_... S7150C1::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C5*), ABISELECT(640,276), "S7150C1");
    /*is_ambiguous_... S7150C8::S7150C5 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C8*), ABISELECT(640,276), "S7150C1");
    check_base_class_offset(lv, (S7150C5*)(S7150C9*)(S7150C8*), ABISELECT(640,276), "S7150C1");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C5*)(S7150C9*)(S7150C6*), ABISELECT(640,276), "S7150C1");
    /*is_ambiguous_... S7150C9::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*)(S7150C8*), ABISELECT(592,256), "S7150C1");
    check_base_class_offset(lv, (S7150C9*)(S7150C8*), ABISELECT(592,256), "S7150C1");
    check_base_class_offset(lv, (S7150C8*)(S7150C6*), ABISELECT(544,236), "S7150C1");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C9*)(S7150C6*), ABISELECT(272,112), "S7150C1");
    /*is_ambiguous_... S7150C6::S7150C9 */ AMB_check_base_class_offset(lv, (S7150C9*)(S7150C6*), ABISELECT(272,112), "S7150C1");
    /*is_ambiguous_... S7150C6::S7150C3 */ AMB_check_base_class_offset(lv, (S7150C3*)(S7150C6*), ABISELECT(320,132), "S7150C1");
    check_base_class_offset(lv, (S7150C6*)(S7150C4*), ABISELECT(272,112), "S7150C1");
    check_base_class_offset(lv, (S7150C4*), ABISELECT(96,40), "S7150C1");
    check_field_offset(lv, s7150c1f0, ABISELECT(68,28), "S7150C1.s7150c1f0");
    check_field_offset(lv, s7150c1f1, ABISELECT(72,32), "S7150C1.s7150c1f1");
    check_field_offset(lv, s7150c1f2, ABISELECT(80,36), "S7150C1.s7150c1f2");
    test_class_info(&lv, &cd_S7150C1);
    dp->~S7150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7150C1(Test_S7150C1, "S7150C1", ABISELECT(688,300));

#else // __cplusplus

extern void _ZN7S7150C1C1Ev();
extern void _ZN7S7150C1D2Ev();
Name_Map name_map_S7150C1[] = {
  NSPAIR(_ZN7S7150C1C1Ev),
  NSPAIR(_ZN7S7150C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7150C2;
extern VTBL_ENTRY _ZTI7S7150C2[];
extern  VTBL_ENTRY _ZTV7S7150C2[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C2;
extern VTBL_ENTRY _ZTI7S7150C2[];
extern  VTBL_ENTRY _ZTV7S7150C2[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C7;
extern VTBL_ENTRY _ZTI7S7150C7[];
extern  VTBL_ENTRY _ZTV7S7150C7[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C5;
extern VTBL_ENTRY _ZTI7S7150C5[];
extern  VTBL_ENTRY _ZTV7S7150C5[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C8;
extern VTBL_ENTRY _ZTI7S7150C8[];
extern  VTBL_ENTRY _ZTV7S7150C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C8[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C9;
extern VTBL_ENTRY _ZTI7S7150C9[];
extern  VTBL_ENTRY _ZTV7S7150C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C9[];
extern Class_Descriptor cd_S7150C3;
extern VTBL_ENTRY _ZTI7S7150C3[];
extern  VTBL_ENTRY _ZTV7S7150C3[];
extern Class_Descriptor cd_S7150C6;
extern VTBL_ENTRY _ZTI7S7150C6[];
extern  VTBL_ENTRY _ZTV7S7150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C6[];
extern Class_Descriptor cd_S7150C4;
extern VTBL_ENTRY _ZTI7S7150C4[];
extern  VTBL_ENTRY _ZTV7S7150C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C4[];
static Base_Class bases_S7150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7150C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7150C3,    ABISELECT(144,64), //bcp->offset
    73, //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
    1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(96,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
    3, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(96,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
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7150C2,    ABISELECT(192,84), //bcp->offset
    87, //bcp->virtual_function_table_offset
    7, //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
    18, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(432,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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(432,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7150C7,    ABISELECT(432,176), //bcp->offset
    156, //bcp->virtual_function_table_offset
    20, //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
    13, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(544,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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7150C3,    ABISELECT(640,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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7150C5,    ABISELECT(640,276), //bcp->offset
    239, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(592,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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7150C9,    ABISELECT(592,256), //bcp->offset
    223, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7150C8,    ABISELECT(544,236), //bcp->offset
    195, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7150C3,    ABISELECT(272,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7150C9,    ABISELECT(272,112), //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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7150C3,    ABISELECT(320,132), //bcp->offset
    148, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7150C6,    ABISELECT(272,112), //bcp->offset
    100, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7150C4,    ABISELECT(96,40), //bcp->offset
    22, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7150C1[];
extern void _ZN7S7150C1D1Ev();
extern void _ZN7S7150C1D0Ev();
extern void _ZN7S7150C22v8Ev();
extern void _ZN7S7150C22v9Ev();
extern void _ZN7S7150C23v10Ev();
extern void _ZN7S7150C23v11Ev();
extern void _ZN7S7150C12v1Ev();
extern void _ZN7S7150C12v2Ev();
extern void _ZN7S7150C12v3Ev();
extern void _ZN7S7150C12v4Ev();
extern void _ZN7S7150C12v5Ev();
extern void _ZN7S7150C12v6Ev();
extern void _ZN7S7150C12v7Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void _ZN7S7150C43v44Ev();
extern void _ZN7S7150C43v45Ev();
extern void _ZN7S7150C43v46Ev();
extern void _ZN7S7150C43v47Ev();
extern void _ZN7S7150C43v48Ev();
extern void _ZN7S7150C43v49Ev();
extern void _ZN7S7150C43v50Ev();
extern void ABISELECT(_ZTv0_n232_N7S7150C1D1Ev,_ZTv0_n116_N7S7150C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7150C1D1Ev,_ZThn40_N7S7150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n232_N7S7150C1D0Ev,_ZTv0_n116_N7S7150C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7150C1D0Ev,_ZThn40_N7S7150C1D0Ev)() __attribute__((weak));
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void ABISELECT(_ZTv0_n24_N7S7150C1D1Ev,_ZTv0_n12_N7S7150C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7150C1D1Ev,_ZThn84_N7S7150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7150C1D0Ev,_ZTv0_n12_N7S7150C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7150C1D0Ev,_ZThn84_N7S7150C1D0Ev)() __attribute__((weak));
extern void _ZN7S7150C22v8Ev();
extern void _ZN7S7150C22v9Ev();
extern void _ZN7S7150C23v10Ev();
extern void _ZN7S7150C23v11Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C63v37Ev();
extern void _ZN7S7150C63v38Ev();
extern void _ZN7S7150C63v39Ev();
extern void _ZN7S7150C63v40Ev();
extern void _ZN7S7150C63v41Ev();
extern void _ZN7S7150C63v42Ev();
extern void _ZN7S7150C63v43Ev();
extern void ABISELECT(_ZTv0_n208_N7S7150C1D1Ev,_ZTv0_n104_N7S7150C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S7150C1D1Ev,_ZThn112_N7S7150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N7S7150C1D0Ev,_ZTv0_n104_N7S7150C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S7150C1D0Ev,_ZThn112_N7S7150C1D0Ev)() __attribute__((weak));
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C1D1Ev,_ZTv0_n64_N7S7150C1D1Ev)();
extern void ABISELECT(_ZThn432_N7S7150C1D1Ev,_ZThn176_N7S7150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C1D0Ev,_ZTv0_n64_N7S7150C1D0Ev)();
extern void ABISELECT(_ZThn432_N7S7150C1D0Ev,_ZThn176_N7S7150C1D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void ABISELECT(_ZTv0_n96_N7S7150C1D1Ev,_ZTv0_n48_N7S7150C1D1Ev)();
extern void ABISELECT(_ZThn544_N7S7150C1D1Ev,_ZThn236_N7S7150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7150C1D0Ev,_ZTv0_n48_N7S7150C1D0Ev)();
extern void ABISELECT(_ZThn544_N7S7150C1D0Ev,_ZThn236_N7S7150C1D0Ev)() __attribute__((weak));
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY vtc_S7150C1[] = {
  ABISELECT(640,276),
  ABISELECT(544,236),
  ABISELECT(432,176),
  ABISELECT(272,112),
  ABISELECT(192,84),
  ABISELECT(144,64),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7150C12v7Ev,
  ABISELECT(-96,-40),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(336,136),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v44Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v45Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v46Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v47Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v48Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v49Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N7S7150C1D1Ev,_ZTv0_n116_N7S7150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n232_N7S7150C1D0Ev,_ZTv0_n116_N7S7150C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-84),
  ABISELECT(-192,-84),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7150C1D1Ev,_ZTv0_n12_N7S7150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7150C1D0Ev,_ZTv0_n12_N7S7150C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v11Ev,
  ABISELECT(-272,-112),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-272,-112),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v42Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v43Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7150C1D1Ev,_ZTv0_n104_N7S7150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7150C1D0Ev,_ZTv0_n104_N7S7150C1D0Ev),
  ABISELECT(-320,-132),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-176),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-176),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C1D1Ev,_ZTv0_n64_N7S7150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C1D0Ev,_ZTv0_n64_N7S7150C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-544,-236),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C1D1Ev,_ZTv0_n48_N7S7150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C1D0Ev,_ZTv0_n48_N7S7150C1D0Ev),
  ABISELECT(48,20),
  ABISELECT(-592,-256),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-276),
  (VTBL_ENTRY)&(_ZTI7S7150C1[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern VTBL_ENTRY _ZTV7S7150C1[];
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void _ZN7S7150C43v44Ev();
extern void _ZN7S7150C43v45Ev();
extern void _ZN7S7150C43v46Ev();
extern void _ZN7S7150C43v47Ev();
extern void _ZN7S7150C43v48Ev();
extern void _ZN7S7150C43v49Ev();
extern void _ZN7S7150C43v50Ev();
extern void _ZN7S7150C4D1Ev();
extern void _ZN7S7150C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C4__7S7150C1[] = {
  ABISELECT(544,236),
  ABISELECT(448,196),
  ABISELECT(336,136),
  ABISELECT(176,72),
  ABISELECT(96,44),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v44Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v45Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v46Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v47Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v48Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v49Ev,
  (VTBL_ENTRY)&_ZN7S7150C43v50Ev,
  (VTBL_ENTRY)&_ZN7S7150C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C4D0Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C3__7S7150C4__7S7150C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7150C4D1Ev,_ZTv0_n12_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7150C4D1Ev,_ZThn44_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7150C4D0Ev,_ZTv0_n12_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7150C4D0Ev,_ZThn44_N7S7150C4D0Ev)() __attribute__((weak));
extern void _ZN7S7150C22v8Ev();
extern void _ZN7S7150C22v9Ev();
extern void _ZN7S7150C23v10Ev();
extern void _ZN7S7150C23v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C2__7S7150C4__7S7150C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7150C4D1Ev,_ZTv0_n12_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7150C4D0Ev,_ZTv0_n12_N7S7150C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7150C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7150C23v11Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C63v37Ev();
extern void _ZN7S7150C63v38Ev();
extern void _ZN7S7150C63v39Ev();
extern void _ZN7S7150C63v40Ev();
extern void _ZN7S7150C63v41Ev();
extern void _ZN7S7150C63v42Ev();
extern void _ZN7S7150C63v43Ev();
extern void ABISELECT(_ZTv0_n208_N7S7150C4D1Ev,_ZTv0_n104_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7150C4D1Ev,_ZThn72_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N7S7150C4D0Ev,_ZTv0_n104_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7150C4D0Ev,_ZThn72_N7S7150C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7150C6__7S7150C4__7S7150C1[] = {
  ABISELECT(-176,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  ABISELECT(-176,-72),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v42Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v43Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7150C4D1Ev,_ZTv0_n104_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N7S7150C4D0Ev,_ZTv0_n104_N7S7150C4D0Ev),
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C4D1Ev,_ZTv0_n64_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn336_N7S7150C4D1Ev,_ZThn136_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C4D0Ev,_ZTv0_n64_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn336_N7S7150C4D0Ev,_ZThn136_N7S7150C4D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C7__7S7150C4__7S7150C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-136),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C4D1Ev,_ZTv0_n64_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C4D0Ev,_ZTv0_n64_N7S7150C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void ABISELECT(_ZTv0_n96_N7S7150C4D1Ev,_ZTv0_n48_N7S7150C4D1Ev)();
extern void ABISELECT(_ZThn448_N7S7150C4D1Ev,_ZThn196_N7S7150C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7150C4D0Ev,_ZTv0_n48_N7S7150C4D0Ev)();
extern void ABISELECT(_ZThn448_N7S7150C4D0Ev,_ZThn196_N7S7150C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7150C8__7S7150C4__7S7150C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-448,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-448,-196),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C4D1Ev,_ZTv0_n48_N7S7150C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C4D0Ev,_ZTv0_n48_N7S7150C4D0Ev),
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__A2__7S7150C4__7S7150C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-236),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C8__7S7150C4__7S7150C1[] = {
  ABISELECT(48,20),
  ABISELECT(-496,-216),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C37S7150C6__A7__7S7150C4__7S7150C1[] = {
  ABISELECT(-224,-92),
  (VTBL_ENTRY)&(_ZTI7S7150C4[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
extern void _ZN7S7150C63v37Ev();
extern void _ZN7S7150C63v38Ev();
extern void _ZN7S7150C63v39Ev();
extern void _ZN7S7150C63v40Ev();
extern void _ZN7S7150C63v41Ev();
extern void _ZN7S7150C63v42Ev();
extern void _ZN7S7150C63v43Ev();
extern void _ZN7S7150C6D1Ev();
extern void _ZN7S7150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C6__7S7150C1[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v42Ev,
  (VTBL_ENTRY)&_ZN7S7150C63v43Ev,
  (VTBL_ENTRY)&_ZN7S7150C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C6D0Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C6__A1__7S7150C1[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C97S7150C6__A1__7S7150C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7150C6D1Ev,_ZThn64_N7S7150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7150C6D0Ev,_ZThn64_N7S7150C6D0Ev)() __attribute__((weak));
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C7__7S7150C6__7S7150C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev)();
extern void ABISELECT(_ZThn272_N7S7150C6D1Ev,_ZThn124_N7S7150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev)();
extern void ABISELECT(_ZThn272_N7S7150C6D0Ev,_ZThn124_N7S7150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7150C8__7S7150C6__7S7150C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev),
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__A1__7S7150C6__7S7150C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C8__7S7150C6__7S7150C1[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI7S7150C6[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C83v36Ev();
extern void _ZN7S7150C8D1Ev();
extern void _ZN7S7150C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C8__7S7150C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7150C8D0Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C97S7150C8__7S7150C1[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C97S7150C8__7S7150C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C9[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C5__7S7150C8__7S7150C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C93v25Ev();
extern void _ZN7S7150C93v26Ev();
extern void _ZN7S7150C93v27Ev();
extern void _ZN7S7150C93v28Ev();
extern void _ZN7S7150C93v29Ev();
extern void _ZN7S7150C93v30Ev();
extern void _ZN7S7150C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C9__7S7150C8__7S7150C1[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v26Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7150C93v31Ev,
};
extern void _ZN7S7150C33v12Ev();
extern void _ZN7S7150C33v13Ev();
extern void _ZN7S7150C33v14Ev();
extern void _ZN7S7150C33v15Ev();
extern void _ZN7S7150C33v16Ev();
extern void _ZN7S7150C33v17Ev();
extern void _ZN7S7150C53v18Ev();
extern void _ZN7S7150C53v19Ev();
extern void _ZN7S7150C53v20Ev();
extern void _ZN7S7150C53v21Ev();
extern void _ZN7S7150C53v22Ev();
extern void _ZN7S7150C53v23Ev();
extern void _ZN7S7150C53v24Ev();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev)();
extern void _ZN7S7150C73v32Ev();
extern void _ZN7S7150C73v33Ev();
extern void _ZN7S7150C73v34Ev();
extern void _ZN7S7150C73v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7150C7__7S7150C8__7S7150C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7150C8[0]),
  (VTBL_ENTRY)&_ZN7S7150C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7150C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7150C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D1Ev,_ZTv0_n64_N7S7150C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7150C8D0Ev,_ZTv0_n64_N7S7150C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7150C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v34Ev,
  (VTBL_ENTRY)&_ZN7S7150C73v35Ev,
};
static  VTT_ENTRY vtt_S7150C1[] = {
  {&(_ZTV7S7150C1[9]),  9,267},
  {&(_ZTV7S7150C1[51]),  51,267},
  {&(_ZTV7S7150C1[81]),  81,267},
  {&(_ZTV7S7150C1[94]),  94,267},
  {&(_ZTV7S7150C1[126]),  126,267},
  {&(_ZTV7S7150C1[176]),  176,267},
  {&(_ZTV7S7150C1[214]),  214,267},
  {&(_ZTV7S7150C1[254]),  254,267},
  {&(_ZTV7S7150C1[226]),  226,267},
  {&(_ZTV7S7150C1[150]),  150,267},
  {&(_tg__ZTV7S7150C4__7S7150C1[8]),  8,30},
  {&(_tg__ZTV7S7150C3__7S7150C4__7S7150C1[8]),  8,14},
  {&(_tg__ZTV7S7150C2__7S7150C4__7S7150C1[7]),  7,13},
  {&(_tg__ZTV7S7150C6__7S7150C4__7S7150C1[26]),  26,48},
  {&(_tg__ZTV7S7150C7__7S7150C4__7S7150C1[20]),  20,39},
  {&(_tg__ZTV7S7150C8__7S7150C4__7S7150C1[19]),  19,28},
  {&(_tg__ZTV7S7150C5__A2__7S7150C4__7S7150C1[15]),  15,28},
  {&(_tg__ZTV7S7150C97S7150C8__7S7150C4__7S7150C1[3]),  3,16},
  {&(_tg__ZTV7S7150C37S7150C6__A7__7S7150C4__7S7150C1[2]),  2,8},
  {&(_tg__ZTV7S7150C6__7S7150C1[5]),  5,27},
  {&(_tg__ZTV7S7150C97S7150C6__A1__7S7150C1[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C97S7150C6__A1__7S7150C1[15]),  15,28},
  {&(_tg__ZTV7S7150C7__7S7150C6__7S7150C1[20]),  20,39},
  {&(_tg__ZTV7S7150C8__7S7150C6__7S7150C1[19]),  19,28},
  {&(_tg__ZTV7S7150C5__A1__7S7150C6__7S7150C1[15]),  15,28},
  {&(_tg__ZTV7S7150C97S7150C8__7S7150C6__7S7150C1[3]),  3,16},
  {&(_tg__ZTV7S7150C8__7S7150C1[4]),  4,13},
  {&(_tg__ZTV7S7150C97S7150C8__7S7150C1[3]),  3,16},
  {&(_tg__ZTV7S7150C5__7S7150C97S7150C8__7S7150C1[15]),  15,28},
  {&(_tg__ZTV7S7150C5__7S7150C8__7S7150C1[15]),  15,28},
  {&(_tg__ZTV7S7150C9__7S7150C8__7S7150C1[3]),  3,16},
  {&(_tg__ZTV7S7150C7__7S7150C8__7S7150C1[20]),  20,39},
};
extern VTBL_ENTRY _ZTI7S7150C1[];
extern  VTBL_ENTRY _ZTV7S7150C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7150C1[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C6D0Ev,_ZTv0_n48_N7S7150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C6D0Ev,_ZThn124_N7S7150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C6D1Ev,_ZTv0_n48_N7S7150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C6D1Ev,_ZThn124_N7S7150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C6D0Ev,_ZTv0_n64_N7S7150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7150C6D0Ev,_ZThn64_N7S7150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C6D1Ev,_ZTv0_n64_N7S7150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7150C6D1Ev,_ZThn64_N7S7150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C4D0Ev,_ZTv0_n48_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7150C4D0Ev,_ZThn196_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C4D1Ev,_ZTv0_n48_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7150C4D1Ev,_ZThn196_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C4D0Ev,_ZTv0_n64_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7150C4D0Ev,_ZThn136_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C4D1Ev,_ZTv0_n64_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7150C4D1Ev,_ZThn136_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7150C4D0Ev,_ZTv0_n104_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7150C4D0Ev,_ZThn72_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7150C4D1Ev,_ZTv0_n104_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7150C4D1Ev,_ZThn72_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7150C4D0Ev,_ZTv0_n12_N7S7150C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7150C4D0Ev,_ZThn44_N7S7150C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7150C4D1Ev,_ZTv0_n12_N7S7150C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7150C4D1Ev,_ZThn44_N7S7150C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C1D0Ev,_ZTv0_n48_N7S7150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7150C1D0Ev,_ZThn236_N7S7150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7150C1D1Ev,_ZTv0_n48_N7S7150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7150C1D1Ev,_ZThn236_N7S7150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C1D0Ev,_ZTv0_n64_N7S7150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7150C1D0Ev,_ZThn176_N7S7150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7150C1D1Ev,_ZTv0_n64_N7S7150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7150C1D1Ev,_ZThn176_N7S7150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7150C1D0Ev,_ZTv0_n104_N7S7150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C1D0Ev,_ZThn112_N7S7150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N7S7150C1D1Ev,_ZTv0_n104_N7S7150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7150C1D1Ev,_ZThn112_N7S7150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7150C1D0Ev,_ZTv0_n12_N7S7150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7150C1D0Ev,_ZThn84_N7S7150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7150C1D1Ev,_ZTv0_n12_N7S7150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7150C1D1Ev,_ZThn84_N7S7150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N7S7150C1D0Ev,_ZTv0_n116_N7S7150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7150C1D0Ev,_ZThn40_N7S7150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n232_N7S7150C1D1Ev,_ZTv0_n116_N7S7150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7150C1D1Ev,_ZThn40_N7S7150C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7150C1 = {  "S7150C1", // class name
  bases_S7150C1, 19,
  &(vtc_S7150C1[0]), // expected_vtbl_contents
  &(vtt_S7150C1[0]), // expected_vtt_contents
  ABISELECT(688,300), // object size
  NSPAIRA(_ZTI7S7150C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7150C1),267, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7150C1),32, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1156C5  : virtual S19490C26 {
  virtual void  v1(); // _ZN7S1156C52v1Ev
  ~S1156C5(); // tgen
  S1156C5(); // tgen
};
//SIG(-1 S1156C5) C1{ VBC2{ m} v1}


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

static void Test_S1156C5()
{
  extern Class_Descriptor cd_S1156C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1156C5, buf);
    S1156C5 *dp, &lv = *(dp=new (buf) S1156C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1156C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C5)");
    check_base_class_offset(lv, (S19490C26*), 0, "S1156C5");
    test_class_info(&lv, &cd_S1156C5);
    dp->~S1156C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C5(Test_S1156C5, "S1156C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1156C5C1Ev();
extern void _ZN7S1156C5D1Ev();
Name_Map name_map_S1156C5[] = {
  NSPAIR(_ZN7S1156C5C1Ev),
  NSPAIR(_ZN7S1156C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S1156C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1156C5[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY vtc_S1156C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S1156C5[];
static  VTT_ENTRY vtt_S1156C5[] = {
  {&(_ZTV7S1156C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
Class_Descriptor cd_S1156C5 = {  "S1156C5", // class name
  bases_S1156C5, 1,
  &(vtc_S1156C5[0]), // expected_vtbl_contents
  &(vtt_S1156C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1156C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1156C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C5),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  S1156C3  : S19490C26 , S1156C5 {
  int s1156c3f0[2];
  virtual void  v2(); // _ZN7S1156C32v2Ev
  ~S1156C3(); // tgen
  S1156C3(); // tgen
};
//SIG(-1 S1156C3) C1{ BC2{ m} BC3{ VBC2 v2} v1 Fi[2]}


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

static void Test_S1156C3()
{
  extern Class_Descriptor cd_S1156C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1156C3, buf);
    S1156C3 *dp, &lv = *(dp=new (buf) S1156C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1156C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C3)");
    /*is_ambiguous_... S1156C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1156C3");
    check_base_class_offset(lv, (S19490C26*)(S1156C5*), ABISELECT(16,12), "S1156C3");
    check_base_class_offset(lv, (S1156C5*), 0, "S1156C3");
    check_field_offset(lv, s1156c3f0, ABISELECT(8,4), "S1156C3.s1156c3f0");
    test_class_info(&lv, &cd_S1156C3);
    dp->~S1156C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C3(Test_S1156C3, "S1156C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S1156C3C1Ev();
extern void _ZN7S1156C3D1Ev();
Name_Map name_map_S1156C3[] = {
  NSPAIR(_ZN7S1156C3C1Ev),
  NSPAIR(_ZN7S1156C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
static Base_Class bases_S1156C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    2, //immediately_derived
  0, 1},
  {&cd_S1156C5,    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 _ZTI7S1156C3[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1156C3[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__7S1156C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C3[] = {
  {&(_ZTV7S1156C3[3]),  3,5},
  {&(_tg__ZTV7S1156C5__7S1156C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
Class_Descriptor cd_S1156C3 = {  "S1156C3", // class name
  bases_S1156C3, 3,
  &(vtc_S1156C3[0]), // expected_vtbl_contents
  &(vtt_S1156C3[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S1156C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1156C3),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C3),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  S1156C6  : virtual S19490C26 , virtual S1156C3 , S1156C5 {
  int s1156c6f0[2];
  void *s1156c6f1[3];
  ~S1156C6(); // tgen
  S1156C6(); // tgen
};
//SIG(-1 S1156C6) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC4 Fi[2] Fp[3]}


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

static void Test_S1156C6()
{
  extern Class_Descriptor cd_S1156C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S1156C6, buf);
    S1156C6 *dp, &lv = *(dp=new (buf) S1156C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S1156C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C6)");
    /*is_ambiguous_... S1156C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1156C6");
    check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), 0, "S1156C6");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), 0, "S1156C6");
    /*is_ambiguous_... S1156C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(40,24), "S1156C6");
    check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(40,24), "S1156C6");
    check_base_class_offset(lv, (S1156C3*), ABISELECT(40,24), "S1156C6");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*), 0, "S1156C6");
    check_field_offset(lv, s1156c6f0, ABISELECT(8,4), "S1156C6.s1156c6f0");
    check_field_offset(lv, s1156c6f1, ABISELECT(16,12), "S1156C6.s1156c6f1");
    test_class_info(&lv, &cd_S1156C6);
    dp->~S1156C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C6(Test_S1156C6, "S1156C6", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S1156C6C1Ev();
extern void _ZN7S1156C6D1Ev();
Name_Map name_map_S1156C6[] = {
  NSPAIR(_ZN7S1156C6C1Ev),
  NSPAIR(_ZN7S1156C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
static Base_Class bases_S1156C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(40,24), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(40,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1156C5,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1156C6[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C6[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1156C6[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A1__7S1156C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__7S1156C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C6[] = {
  {&(_ZTV7S1156C6[4]),  4,12},
  {&(_tg__ZTV7S1156C5__A1__7S1156C6[3]),  3,4},
  {&(_ZTV7S1156C6[10]),  10,12},
  {&(_tg__ZTV7S1156C3__7S1156C6[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__7S1156C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
Class_Descriptor cd_S1156C6 = {  "S1156C6", // class name
  bases_S1156C6, 5,
  &(vtc_S1156C6[0]), // expected_vtbl_contents
  &(vtt_S1156C6[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S1156C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1156C6),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C6),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1156C7  : S19490C26 , S1156C3 , S1156C6 , S1156C5 {
  int s1156c7f0[2];
  ~S1156C7(); // tgen
  S1156C7(); // tgen
};
//SIG(-1 S1156C7) C1{ BC2{ m} BC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC5{ VBC2 VBC3 BC4 Fi[2] Fp[3]} BC4 Fi[2]}


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

static void Test_S1156C7()
{
  extern Class_Descriptor cd_S1156C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S1156C7, buf);
    S1156C7 *dp, &lv = *(dp=new (buf) S1156C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S1156C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C7)");
    /*is_ambiguous_... S1156C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(16,12), "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), 0, "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(72,48), "S1156C7");
    /*is_ambiguous_... S1156C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), ABISELECT(72,48), "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(72,48), "S1156C7");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), ABISELECT(72,48), "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), ABISELECT(72,48), "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), 0, "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*), 0, "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(80,52), "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(80,52), "S1156C7");
    check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(80,52), "S1156C7");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), ABISELECT(16,12), "S1156C7");
    check_base_class_offset(lv, (S1156C6*), ABISELECT(16,12), "S1156C7");
    /*is_ambiguous_... S1156C7::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*), ABISELECT(56,36), "S1156C7");
    check_field_offset(lv, s1156c7f0, ABISELECT(64,40), "S1156C7.s1156c7f0");
    test_class_info(&lv, &cd_S1156C7);
    dp->~S1156C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C7(Test_S1156C7, "S1156C7", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S1156C7C1Ev();
extern void _ZN7S1156C7D1Ev();
Name_Map name_map_S1156C7[] = {
  NSPAIR(_ZN7S1156C7C1Ev),
  NSPAIR(_ZN7S1156C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
static Base_Class bases_S1156C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    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, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1156C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1156C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(80,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(16,12), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1156C5,    ABISELECT(56,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1156C7[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C7[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(16,12),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1156C7[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__7S1156C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A2__7S1156C7[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__7S1156C7[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A1__7S1156C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C7[] = {
  {&(_ZTV7S1156C7[4]),  4,22},
  {&(_tg__ZTV7S1156C3__A__7S1156C7[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__7S1156C7[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A2__7S1156C7[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__7S1156C7[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7[3]),  3,4},
  {&(_ZTV7S1156C7[10]),  10,22},
  {&(_ZTV7S1156C7[20]),  20,22},
  {&(_ZTV7S1156C7[14]),  14,22},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A1__7S1156C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
Class_Descriptor cd_S1156C7 = {  "S1156C7", // class name
  bases_S1156C7, 11,
  &(vtc_S1156C7[0]), // expected_vtbl_contents
  &(vtt_S1156C7[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S1156C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1156C7),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C7),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1156C8  : S19490C26 , S1156C5 , virtual S1156C7 , S1156C6 , S1156C3 {
  ::S1156C3 s1156c8f0;
  short s1156c8f1;
  int s1156c8f2[2];
  void *s1156c8f3[3];
  ::S1156C7 s1156c8f4;
  virtual void  v3(); // _ZN7S1156C82v3Ev
  ~S1156C8(); // tgen
  S1156C8(); // tgen
};
//SIG(-1 S1156C8) C1{ BC2{ m} BC3{ VBC2 v2} VBC4{ BC2 BC5{ BC2 BC3 v3 Fi[2]} BC6{ VBC2 VBC5 BC3 Fi[2] Fp[3]} BC3 Fi[2]} BC6 BC5 v1 FC5 Fs Fi[2] Fp[3] FC4}


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

static void Test_S1156C8()
{
  extern Class_Descriptor cd_S1156C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S1156C8, buf);
    S1156C8 *dp, &lv = *(dp=new (buf) S1156C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S1156C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C8)");
    /*is_ambiguous_... S1156C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C7::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(224,144), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*), 0, "S1156C8");
    /*is_ambiguous_... S1156C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*), ABISELECT(248,160), "S1156C8");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*), ABISELECT(232,148), "S1156C8");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(232,148), "S1156C8");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*), ABISELECT(232,148), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(304,196), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(304,196), "S1156C8");
    check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*), ABISELECT(304,196), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(304,196), "S1156C8");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(248,160), "S1156C8");
    check_base_class_offset(lv, (S1156C6*)(S1156C7*), ABISELECT(248,160), "S1156C8");
    /*is_ambiguous_... S1156C7::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*), ABISELECT(288,184), "S1156C8");
    check_base_class_offset(lv, (S1156C7*), ABISELECT(232,148), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), ABISELECT(8,4), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*), ABISELECT(8,4), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(48,28), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(48,28), "S1156C8");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*), ABISELECT(48,28), "S1156C8");
    check_field_offset(lv, s1156c8f0, ABISELECT(64,40), "S1156C8.s1156c8f0");
    check_field_offset(lv, s1156c8f1, ABISELECT(88,56), "S1156C8.s1156c8f1");
    check_field_offset(lv, s1156c8f2, ABISELECT(92,60), "S1156C8.s1156c8f2");
    check_field_offset(lv, s1156c8f3, ABISELECT(104,68), "S1156C8.s1156c8f3");
    check_field_offset(lv, s1156c8f4, ABISELECT(128,80), "S1156C8.s1156c8f4");
    test_class_info(&lv, &cd_S1156C8);
    dp->~S1156C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C8(Test_S1156C8, "S1156C8", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN7S1156C8C1Ev();
extern void _ZN7S1156C8D1Ev();
Name_Map name_map_S1156C8[] = {
  NSPAIR(_ZN7S1156C8C1Ev),
  NSPAIR(_ZN7S1156C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
static Base_Class bases_S1156C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1156C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(248,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(304,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(248,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(288,184), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(232,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1156C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1156C8[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C8[] = {
  ABISELECT(304,196),
  ABISELECT(232,148),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
  ABISELECT(296,192),
  ABISELECT(216,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(176,116),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1156C8[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__7S1156C8[] = {
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A1__7S1156C8[] = {
  ABISELECT(296,192),
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A5__7S1156C8[] = {
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__A1__7S1156C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C8[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A6__7S1156C8[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__7S1156C8[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C7__7S1156C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C7__A1__7S1156C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__7S1156C8[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C7__A3__7S1156C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C7__7S1156C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__7S1156C8[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7__7S1156C8[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7__7S1156C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7__7S1156C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C8[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A2__7S1156C8[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C8[] = {
  {&(_ZTV7S1156C8[5]),  5,41},
  {&(_tg__ZTV7S1156C5__7S1156C8[3]),  3,4},
  {&(_tg__ZTV7S1156C6__A1__7S1156C8[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A5__7S1156C8[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__A1__7S1156C8[5]),  5,7},
  {&(_tg__ZTV7S1156C3__A__7S1156C8[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A6__7S1156C8[3]),  3,4},
  {&(_ZTV7S1156C8[23]),  23,41},
  {&(_ZTV7S1156C8[29]),  29,41},
  {&(_ZTV7S1156C8[39]),  39,41},
  {&(_ZTV7S1156C8[33]),  33,41},
  {&(_ZTV7S1156C8[11]),  11,41},
  {&(_ZTV7S1156C8[15]),  15,41},
  {&(_tg__ZTV7S1156C7__7S1156C8[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C7__7S1156C8[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C7__A1__7S1156C8[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C7__7S1156C8[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C7__A3__7S1156C8[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C7__7S1156C8[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__7S1156C8[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7__7S1156C8[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7__7S1156C8[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7__7S1156C8[3]),  3,4},
  {&(_tg__ZTV7S1156C3__A1__7S1156C8[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A2__7S1156C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C8[];
extern  VTBL_ENTRY _ZTV7S1156C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C8[];
Class_Descriptor cd_S1156C8 = {  "S1156C8", // class name
  bases_S1156C8, 19,
  &(vtc_S1156C8[0]), // expected_vtbl_contents
  &(vtt_S1156C8[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI7S1156C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1156C8),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C8),25, //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  S1156C2  : S1156C3 , virtual S1156C6 , S1156C7 , virtual S1156C8 {
  char s1156c2f0;
  short s1156c2f1[7];
  ~S1156C2(); // tgen
  S1156C2(); // tgen
};
//SIG(-1 S1156C2) C1{ BC2{ BC3{ m} BC4{ VBC3 v1} v2 Fi[2]} VBC5{ VBC3 VBC2 BC4 Fi[2] Fp[3]} BC6{ BC3 BC2 BC5 BC4 Fi[2]} VBC7{ BC3 BC4 VBC6 BC5 BC2 v3 FC2 Fs Fi[2] Fp[3] FC6} Fc Fs[7]}


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

static void Test_S1156C2()
{
  extern Class_Descriptor cd_S1156C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(58,77)];
    init_test(&cd_S1156C2, buf);
    S1156C2 *dp, &lv = *(dp=new (buf) S1156C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(456,304), "sizeof(S1156C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C2)");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), 0, "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C8*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C8*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C8*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C8*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), 0, "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*), 0, "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(144,100), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(144,100), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(144,100), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*), ABISELECT(144,100), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*), ABISELECT(144,100), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C8*), ABISELECT(144,100), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*), ABISELECT(104,76), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*), ABISELECT(32,24), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*), ABISELECT(16,12), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(16,12), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*), ABISELECT(16,12), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(32,24), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*), ABISELECT(32,24), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*), ABISELECT(72,48), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C7*), ABISELECT(16,12), "S1156C2");
    /*is_ambiguous_... S1156C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C8*), ABISELECT(160,112), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C8*), ABISELECT(160,112), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*), ABISELECT(400,268), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*), ABISELECT(384,256), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(384,256), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*), ABISELECT(384,256), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(400,268), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*), ABISELECT(400,268), "S1156C2");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*), ABISELECT(440,292), "S1156C2");
    check_base_class_offset(lv, (S1156C7*)(S1156C8*), ABISELECT(384,256), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C8*), ABISELECT(168,116), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C8*), ABISELECT(168,116), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C8*), ABISELECT(208,140), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C8*), ABISELECT(208,140), "S1156C2");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C8*), ABISELECT(208,140), "S1156C2");
    check_base_class_offset(lv, (S1156C8*), ABISELECT(160,112), "S1156C2");
    check_field_offset(lv, s1156c2f0, ABISELECT(88,60), "S1156C2.s1156c2f0");
    check_field_offset(lv, s1156c2f1, ABISELECT(90,62), "S1156C2.s1156c2f1");
    test_class_info(&lv, &cd_S1156C2);
    dp->~S1156C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C2(Test_S1156C2, "S1156C2", ABISELECT(456,304));

#else // __cplusplus

extern void _ZN7S1156C2C1Ev();
extern void _ZN7S1156C2D1Ev();
Name_Map name_map_S1156C2[] = {
  NSPAIR(_ZN7S1156C2C1Ev),
  NSPAIR(_ZN7S1156C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C8;
extern VTBL_ENTRY _ZTI7S1156C8[];
extern  VTBL_ENTRY _ZTV7S1156C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C8[];
static Base_Class bases_S1156C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1156C5,    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
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1156C3,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(144,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, 0},
  {&cd_S1156C5,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(144,100), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(104,76), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S1156C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(16,12), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(32,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(72,48), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(400,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
    26, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    22, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(384,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(384,256), //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(400,268), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(400,268), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(440,292), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(384,256), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(168,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(168,116), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(208,140), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1156C8,    ABISELECT(160,112), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1156C2[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY vtc_S1156C2[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(128,88),
  ABISELECT(88,64),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(32,28),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-104,-64),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-336,-216),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S1156C2[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C2[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__7S1156C2[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A__7S1156C2[] = {
  ABISELECT(128,88),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C7__A2__7S1156C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C7__A3__7S1156C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A1__7S1156C2[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C7__A4__7S1156C2[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C7__A1__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A5__7S1156C2[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7__A__7S1156C2[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7__A__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7__A__7S1156C2[] = {
  ABISELECT(32,28),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C2[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A2__7S1156C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A1__7S1156C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__7S1156C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C8__A6__7S1156C2[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__7S1156C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C8__A10__7S1156C2[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C8__A3__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__7S1156C2[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C8__A11__7S1156C2[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__7S1156C8__7S1156C2[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__7S1156C8__7S1156C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C8__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__7S1156C8__7S1156C2[] = {
  ABISELECT(-336,-216),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A1__7S1156C8__7S1156C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C8__7S1156C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__7S1156C2[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C7__A3__7S1156C2[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C7__A7__7S1156C2[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__7S1156C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C7__A8__7S1156C2[] = {
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C7__A2__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__7S1156C2[] = {
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7__A1__7S1156C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7__A1__7S1156C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7__A1__7S1156C2[] = {
  ABISELECT(-336,-216),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C2[] = {
  {&(_ZTV7S1156C2[7]),  7,74},
  {&(_tg__ZTV7S1156C3__A__7S1156C2[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C7__A__7S1156C2[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C7__A2__7S1156C2[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C7__A3__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C7__A1__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C7__A4__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C7__A1__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A5__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7__A__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7__A__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7__A__7S1156C2[3]),  3,4},
  {&(_ZTV7S1156C2[29]),  29,74},
  {&(_ZTV7S1156C2[35]),  35,74},
  {&(_ZTV7S1156C2[13]),  13,74},
  {&(_ZTV7S1156C2[19]),  19,74},
  {&(_ZTV7S1156C2[23]),  23,74},
  {&(_ZTV7S1156C2[45]),  45,74},
  {&(_ZTV7S1156C2[63]),  63,74},
  {&(_ZTV7S1156C2[69]),  69,74},
  {&(_ZTV7S1156C2[73]),  73,74},
  {&(_ZTV7S1156C2[51]),  51,74},
  {&(_ZTV7S1156C2[55]),  55,74},
  {&(_tg__ZTV7S1156C6__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A2__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C3__A1__7S1156C2[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A1__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C8__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C8__A6__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C8__A10__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C8__A3__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C37S1156C8__A4__7S1156C2[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C8__A11__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C7__7S1156C8__7S1156C2[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__7S1156C8__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C8__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__7S1156C8__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C6__A1__7S1156C8__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A__7S1156C8__7S1156C2[3]),  3,5},
  {&(_tg__ZTV7S1156C7__A1__7S1156C2[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C7__A3__7S1156C2[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C7__A7__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C7__A2__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C7__A8__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C7__A2__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A9__7S1156C2[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7__A1__7S1156C2[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7__A1__7S1156C2[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7__A1__7S1156C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C2[];
extern  VTBL_ENTRY _ZTV7S1156C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C2[];
Class_Descriptor cd_S1156C2 = {  "S1156C2", // class name
  bases_S1156C2, 33,
  &(vtc_S1156C2[0]), // expected_vtbl_contents
  &(vtt_S1156C2[0]), // expected_vtt_contents
  ABISELECT(456,304), // object size
  NSPAIRA(_ZTI7S1156C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1156C2),74, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C2),52, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1156C9  : virtual S1156C5 , virtual S1156C3 {
  int s1156c9f0;
  ~S1156C9(); // tgen
  S1156C9(); // tgen
};
//SIG(-1 S1156C9) C1{ VBC2{ VBC3{ m} v1} VBC4{ BC3 BC2 v2 Fi[2]} Fi}


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

static void Test_S1156C9()
{
  extern Class_Descriptor cd_S1156C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1156C9, buf);
    S1156C9 *dp, &lv = *(dp=new (buf) S1156C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1156C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1156C9)");
    /*is_ambiguous_... S1156C9::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), 0, "S1156C9");
    check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), 0, "S1156C9");
    /*is_ambiguous_... S1156C9::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*), 0, "S1156C9");
    /*is_ambiguous_... S1156C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(16,8), "S1156C9");
    check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(16,8), "S1156C9");
    check_base_class_offset(lv, (S1156C3*), ABISELECT(16,8), "S1156C9");
    check_field_offset(lv, s1156c9f0, ABISELECT(8,4), "S1156C9.s1156c9f0");
    test_class_info(&lv, &cd_S1156C9);
    dp->~S1156C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C9(Test_S1156C9, "S1156C9", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1156C9C1Ev();
extern void _ZN7S1156C9D1Ev();
Name_Map name_map_S1156C9[] = {
  NSPAIR(_ZN7S1156C9C1Ev),
  NSPAIR(_ZN7S1156C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
static Base_Class bases_S1156C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1156C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1156C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1156C9[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C9[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C9[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1156C9[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1156C9[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__7S1156C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A1__7S1156C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C9[] = {
  {&(_ZTV7S1156C9[6]),  6,14},
  {&(_ZTV7S1156C9[6]),  6,14},
  {&(_ZTV7S1156C9[12]),  12,14},
  {&(_tg__ZTV7S1156C5__7S1156C9[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C9[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A1__7S1156C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1156C9[];
extern  VTBL_ENTRY _ZTV7S1156C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C9[];
Class_Descriptor cd_S1156C9 = {  "S1156C9", // class name
  bases_S1156C9, 5,
  &(vtc_S1156C9[0]), // expected_vtbl_contents
  &(vtt_S1156C9[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1156C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1156C9),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C9),6, //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  S1156C11  : virtual S19490C26 , virtual S1156C8 , S1156C6 {
  long double s1156c11f0;
  void *s1156c11f1[10];
  ~S1156C11(); // tgen
  S1156C11(); // tgen
};
//SIG(-1 S1156C11) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} VBC5{ BC2 BC6{ BC2 BC4 v2 Fi[2]} BC7{ VBC2 VBC6 BC4 Fi[2] Fp[3]} BC4 Fi[2]} BC7 BC6 v3 FC6 Fs Fi[2] Fp[3] FC5} BC7 FD Fp[10]}


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

static void Test_S1156C11()
{
  extern Class_Descriptor cd_S1156C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,71)];
    init_test(&cd_S1156C11, buf);
    S1156C11 *dp, &lv = *(dp=new (buf) S1156C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,280), "sizeof(S1156C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1156C11)");
    /*is_ambiguous_... S1156C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C8*), 0, "S1156C11");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*), 0, "S1156C11");
    /*is_ambiguous_... S1156C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*), 0, "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), 0, "S1156C11");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*), 0, "S1156C11");
    /*is_ambiguous_... S1156C7::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*), 0, "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C8*), 0, "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C8*), 0, "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C8*), 0, "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), 0, "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), 0, "S1156C11");
    /*is_ambiguous_... S1156C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C8*), ABISELECT(144,76), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C8*), ABISELECT(144,76), "S1156C11");
    /*is_ambiguous_... S1156C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*), ABISELECT(384,232), "S1156C11");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*), ABISELECT(368,220), "S1156C11");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(368,220), "S1156C11");
    /*is_ambiguous_... S1156C7::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*), ABISELECT(368,220), "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(440,268), "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(440,268), "S1156C11");
    check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*), ABISELECT(440,268), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C8*), ABISELECT(440,268), "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(440,268), "S1156C11");
    /*is_ambiguous_... S1156C6::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(384,232), "S1156C11");
    check_base_class_offset(lv, (S1156C6*)(S1156C7*), ABISELECT(384,232), "S1156C11");
    /*is_ambiguous_... S1156C7::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*), ABISELECT(424,256), "S1156C11");
    check_base_class_offset(lv, (S1156C7*)(S1156C8*), ABISELECT(368,220), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C8*), ABISELECT(152,80), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C8*), ABISELECT(152,80), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C8*), ABISELECT(192,104), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C8*), ABISELECT(192,104), "S1156C11");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C8*), ABISELECT(192,104), "S1156C11");
    check_base_class_offset(lv, (S1156C8*), ABISELECT(144,76), "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), 0, "S1156C11");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*), 0, "S1156C11");
    check_field_offset(lv, s1156c11f0, ABISELECT(48,24), "S1156C11.s1156c11f0");
    check_field_offset(lv, s1156c11f1, ABISELECT(64,36), "S1156C11.s1156c11f1");
    test_class_info(&lv, &cd_S1156C11);
    dp->~S1156C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C11(Test_S1156C11, "S1156C11", ABISELECT(464,280));

#else // __cplusplus

extern void _ZN8S1156C11C1Ev();
extern void _ZN8S1156C11D1Ev();
Name_Map name_map_S1156C11[] = {
  NSPAIR(_ZN8S1156C11C1Ev),
  NSPAIR(_ZN8S1156C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C8;
extern VTBL_ENTRY _ZTI7S1156C8[];
extern  VTBL_ENTRY _ZTV7S1156C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C8[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
static Base_Class bases_S1156C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    19, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(368,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
    6, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(368,220), //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(368,220), //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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(440,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
    9, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(440,268), //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
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(440,268), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(384,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(384,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(424,256), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(368,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(152,80), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    18, //immediately_derived
  0, 0},
  {&cd_S1156C5,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(192,104), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1156C8,    ABISELECT(144,76), //bcp->offset
    7, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1156C5,    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
    21, //immediately_derived
  0, 0},
  {&cd_S1156C6,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1156C11[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C11[] = {
  ABISELECT(368,220),
  ABISELECT(144,76),
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-424,-256),
  ABISELECT(-424,-256),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S1156C11[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A2__8S1156C11[] = {
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A7__8S1156C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__A2__8S1156C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__8S1156C11[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C8__8S1156C11[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A1__8S1156C11[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C8__A5__8S1156C11[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C8__A1__8S1156C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A2__8S1156C11[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C8__A6__8S1156C11[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__7S1156C8__8S1156C11[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__7S1156C8__8S1156C11[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C8__8S1156C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__7S1156C8__8S1156C11[] = {
  ABISELECT(-424,-256),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A1__7S1156C8__8S1156C11[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C8__8S1156C11[] = {
  ABISELECT(-192,-104),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__8S1156C11[] = {
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C7__8S1156C11[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C7__A1__8S1156C11[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__8S1156C11[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C7__A3__8S1156C11[] = {
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C7__8S1156C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__8S1156C11[] = {
  ABISELECT(-424,-256),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7__8S1156C11[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7__8S1156C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7__8S1156C11[] = {
  ABISELECT(-424,-256),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__8S1156C11[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A2__8S1156C11[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C11[] = {
  {&(_ZTV8S1156C11[6]),  6,51},
  {&(_tg__ZTV7S1156C6__A2__8S1156C11[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A7__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__A2__8S1156C11[5]),  5,7},
  {&(_ZTV8S1156C11[15]),  15,51},
  {&(_ZTV8S1156C11[33]),  33,51},
  {&(_ZTV8S1156C11[39]),  39,51},
  {&(_ZTV8S1156C11[49]),  49,51},
  {&(_ZTV8S1156C11[43]),  43,51},
  {&(_ZTV8S1156C11[21]),  21,51},
  {&(_ZTV8S1156C11[25]),  25,51},
  {&(_tg__ZTV7S1156C8__8S1156C11[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C8__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A1__8S1156C11[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C8__A5__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C8__A1__8S1156C11[5]),  5,7},
  {&(_tg__ZTV7S1156C37S1156C8__A2__8S1156C11[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C8__A6__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C7__7S1156C8__8S1156C11[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__7S1156C8__8S1156C11[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C8__8S1156C11[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__7S1156C8__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C6__A1__7S1156C8__8S1156C11[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A__7S1156C8__8S1156C11[3]),  3,5},
  {&(_tg__ZTV7S1156C7__8S1156C11[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C7__8S1156C11[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C7__A1__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C7__8S1156C11[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C7__A3__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C7__8S1156C11[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7__8S1156C11[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7__8S1156C11[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7__8S1156C11[3]),  3,4},
  {&(_tg__ZTV7S1156C3__A1__8S1156C11[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A2__8S1156C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1156C11[];
extern  VTBL_ENTRY _ZTV8S1156C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1156C11[];
Class_Descriptor cd_S1156C11 = {  "S1156C11", // class name
  bases_S1156C11, 22,
  &(vtc_S1156C11[0]), // expected_vtbl_contents
  &(vtt_S1156C11[0]), // expected_vtt_contents
  ABISELECT(464,280), // object size
  NSPAIRA(_ZTI8S1156C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1156C11),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1156C11),36, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1156C10  : virtual S19490C26 , virtual S1156C2 , S1156C5 , virtual S1156C11 {
  int s1156c10f0;
  long double s1156c10f1[12];
  int s1156c10f2;
  ::S1156C8 s1156c10f3;
  char s1156c10f4;
  virtual  ~S1156C10(); // _ZN8S1156C10D2Ev
  S1156C10(); // tgen
};
//SIG(-1 S1156C10) C1{ VBC2{ m} VBC3{ BC4{ BC2 BC5{ VBC2 v1} v2 Fi[2]} VBC6{ VBC2 VBC4 BC5 Fi[2] Fp[3]} BC7{ BC2 BC4 BC6 BC5 Fi[2]} VBC8{ BC2 BC5 VBC7 BC6 BC4 v3 FC4 Fs Fi[2] Fp[3] FC7} Fc Fs[7]} BC5 VBC9{ VBC2 VBC8 BC6 FD Fp[10]} vd Fi FD[12] Fi FC8 Fc}


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

static void Test_S1156C10()
{
  extern Class_Descriptor cd_S1156C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,188)];
    init_test(&cd_S1156C10, buf);
    S1156C10 *dp, &lv = *(dp=new (buf) S1156C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,748), "sizeof(S1156C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1156C10)");
    /*is_ambiguous_... S1156C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C2*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), 0, "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*)(S1156C2*), 0, "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*)(S1156C2*), 0, "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*)(S1156C2*), 0, "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*)(S1156C2*), 0, "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C8*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*), 0, "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C8*), 0, "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C8*), 0, "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C8*), 0, "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), 0, "S1156C10");
    /*is_ambiguous_... S1156C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C11*), 0, "S1156C10");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C11*), 0, "S1156C10");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C11*), 0, "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C2*), ABISELECT(544,368), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C2*), ABISELECT(544,368), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C2*), ABISELECT(544,368), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C8*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C11*), ABISELECT(688,468), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), ABISELECT(648,444), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C2*), ABISELECT(648,444), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*)(S1156C2*), ABISELECT(576,392), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(560,380), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(560,380), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(560,380), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(576,392), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(576,392), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*)(S1156C2*), ABISELECT(616,416), "S1156C10");
    /*is_ambiguous_... S1156C2::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C7*)(S1156C2*), ABISELECT(560,380), "S1156C10");
    /*is_ambiguous_... S1156C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C8*), ABISELECT(704,480), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C8*), ABISELECT(704,480), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*), ABISELECT(944,636), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*), ABISELECT(928,624), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(928,624), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*), ABISELECT(928,624), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(944,636), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*), ABISELECT(944,636), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*), ABISELECT(984,660), "S1156C10");
    check_base_class_offset(lv, (S1156C7*)(S1156C8*), ABISELECT(928,624), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C8*), ABISELECT(712,484), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C8*), ABISELECT(712,484), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C8*), ABISELECT(752,508), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C8*), ABISELECT(752,508), "S1156C10");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C8*), ABISELECT(752,508), "S1156C10");
    check_base_class_offset(lv, (S1156C8*)(S1156C2*), ABISELECT(704,480), "S1156C10");
    check_base_class_offset(lv, (S1156C8*)(S1156C11*), ABISELECT(704,480), "S1156C10");
    check_base_class_offset(lv, (S1156C2*), ABISELECT(544,368), "S1156C10");
    /*is_ambiguous_... S1156C10::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*), 0, "S1156C10");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C11*), ABISELECT(1008,672), "S1156C10");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C11*), ABISELECT(1008,672), "S1156C10");
    check_base_class_offset(lv, (S1156C11*), ABISELECT(1008,672), "S1156C10");
    check_field_offset(lv, s1156c10f0, ABISELECT(8,4), "S1156C10.s1156c10f0");
    check_field_offset(lv, s1156c10f1, ABISELECT(16,8), "S1156C10.s1156c10f1");
    check_field_offset(lv, s1156c10f2, ABISELECT(208,152), "S1156C10.s1156c10f2");
    check_field_offset(lv, s1156c10f3, ABISELECT(216,156), "S1156C10.s1156c10f3");
    check_field_offset(lv, s1156c10f4, ABISELECT(536,364), "S1156C10.s1156c10f4");
    test_class_info(&lv, &cd_S1156C10);
    dp->~S1156C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C10(Test_S1156C10, "S1156C10", ABISELECT(1152,748));

#else // __cplusplus

extern void _ZN8S1156C10C1Ev();
extern void _ZN8S1156C10D2Ev();
Name_Map name_map_S1156C10[] = {
  NSPAIR(_ZN8S1156C10C1Ev),
  NSPAIR(_ZN8S1156C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C8;
extern VTBL_ENTRY _ZTI7S1156C8[];
extern  VTBL_ENTRY _ZTV7S1156C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C8[];
extern Class_Descriptor cd_S1156C2;
extern VTBL_ENTRY _ZTI7S1156C2[];
extern  VTBL_ENTRY _ZTV7S1156C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C2[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C11;
extern VTBL_ENTRY _ZTI8S1156C11[];
extern  VTBL_ENTRY _ZTV8S1156C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1156C11[];
static Base_Class bases_S1156C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(544,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
    3, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(544,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(544,368), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(688,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(688,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(688,468), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(648,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    8, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(648,444), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(576,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(560,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
    12, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(560,380), //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
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(560,380), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(576,392), //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
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(576,392), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(616,416), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(560,380), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(704,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(704,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(944,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(944,636), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(944,636), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(984,660), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(928,624), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(712,484), //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
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(712,484), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(752,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(752,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(752,508), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1156C8,    ABISELECT(704,480), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1156C2,    ABISELECT(544,368), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1156C5,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1156C5,    ABISELECT(1008,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(1008,672), //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
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1156C11,    ABISELECT(1008,672), //bcp->offset
    88, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1156C10[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN8S1156C10D1Ev();
extern void _ZN8S1156C10D0Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY vtc_S1156C10[] = {
  ABISELECT(1008,672),
  ABISELECT(928,624),
  ABISELECT(704,480),
  ABISELECT(688,468),
  ABISELECT(648,444),
  ABISELECT(544,368),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN8S1156C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1156C10D0Ev,
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-544,-368),
  ABISELECT(-544,-368),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  ABISELECT(-560,-380),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-576,-392),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-616,-416),
  ABISELECT(-616,-416),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  ABISELECT(-648,-444),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-688,-468),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(-704,-480),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-712,-484),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-752,-508),
  ABISELECT(-752,-508),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-928,-624),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-944,-636),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-984,-660),
  ABISELECT(-984,-660),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  ABISELECT(-1008,-672),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S1156C10[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A12__8S1156C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C2__8S1156C10[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C2__8S1156C10[] = {
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C2__8S1156C10[] = {
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C77S1156C2__8S1156C10[] = {
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C77S1156C2__A2__8S1156C10[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C77S1156C2__A3__8S1156C10[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C77S1156C2__A1__8S1156C10[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C77S1156C2__A4__8S1156C10[] = {
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C77S1156C2__A1__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C77S1156C2__A5__8S1156C10[] = {
  ABISELECT(-616,-416),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C77S1156C2__8S1156C10[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C77S1156C2__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C77S1156C2__8S1156C10[] = {
  ABISELECT(-616,-416),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C2__8S1156C10[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C2__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A__7S1156C2__8S1156C10[] = {
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A1__7S1156C2__8S1156C10[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A5__7S1156C2__8S1156C10[] = {
  ABISELECT(-616,-416),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__7S1156C2__8S1156C10[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__7S1156C2__8S1156C10[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__7S1156C2__8S1156C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__7S1156C2__8S1156C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__7S1156C2__8S1156C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__7S1156C2__8S1156C10[] = {
  ABISELECT(-752,-508),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__8S1156C10[] = {
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A2__8S1156C10[] = {
  ABISELECT(-648,-444),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__8S1156C10[] = {
  ABISELECT(-688,-468),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A1__8S1156C10[] = {
  ABISELECT(-688,-468),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__8S1156C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C8__A6__8S1156C10[] = {
  ABISELECT(-704,-480),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__8S1156C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C8__A10__8S1156C10[] = {
  ABISELECT(-712,-484),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C8__A3__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__8S1156C10[] = {
  ABISELECT(-752,-508),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C8__A11__8S1156C10[] = {
  ABISELECT(-752,-508),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__7S1156C8__8S1156C10[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__7S1156C8__8S1156C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C8__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__7S1156C8__8S1156C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A1__7S1156C8__8S1156C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C8__8S1156C10[] = {
  ABISELECT(-752,-508),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__8S1156C10[] = {
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C7__A3__8S1156C10[] = {
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C7__A7__8S1156C10[] = {
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__8S1156C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C7__A8__8S1156C10[] = {
  ABISELECT(-944,-636),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C7__A2__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__8S1156C10[] = {
  ABISELECT(-984,-660),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7__A1__8S1156C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7__A1__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7__A1__8S1156C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1156C11__8S1156C10[] = {
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C68S1156C11__A4__8S1156C10[] = {
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C68S1156C11__A13__8S1156C10[] = {
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C68S1156C11__A4__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__8S1156C11__8S1156C10[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(304,192),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__8S1156C11__8S1156C10[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__8S1156C11__8S1156C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__8S1156C11__8S1156C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__8S1156C11__8S1156C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A1__8S1156C11__8S1156C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(296,188),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A2__8S1156C11__8S1156C10[] = {
  ABISELECT(-752,-508),
  ABISELECT(256,164),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
static  VTT_ENTRY vtt_S1156C10[] = {
  {&(_ZTV8S1156C10[9]),  9,96},
  {&(_tg__ZTV7S1156C5__A12__8S1156C10[3]),  3,4},
  {&(_ZTV8S1156C10[21]),  21,96},
  {&(_ZTV8S1156C10[43]),  43,96},
  {&(_ZTV8S1156C10[49]),  49,96},
  {&(_ZTV8S1156C10[27]),  27,96},
  {&(_ZTV8S1156C10[33]),  33,96},
  {&(_ZTV8S1156C10[37]),  37,96},
  {&(_ZTV8S1156C10[59]),  59,96},
  {&(_ZTV8S1156C10[77]),  77,96},
  {&(_ZTV8S1156C10[83]),  83,96},
  {&(_ZTV8S1156C10[87]),  87,96},
  {&(_ZTV8S1156C10[65]),  65,96},
  {&(_ZTV8S1156C10[69]),  69,96},
  {&(_ZTV8S1156C10[95]),  95,96},
  {&(_tg__ZTV7S1156C2__8S1156C10[7]),  7,9},
  {&(_tg__ZTV7S1156C37S1156C2__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C2__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C77S1156C2__8S1156C10[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C77S1156C2__A2__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C77S1156C2__A3__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C77S1156C2__A1__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C77S1156C2__A4__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C77S1156C2__A1__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C77S1156C2__A5__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C77S1156C2__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C77S1156C2__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C77S1156C2__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C2__8S1156C10[5]),  5,6},
  {&(_tg__ZTV7S1156C3__A1__7S1156C2__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C7__A__7S1156C2__8S1156C10[4]),  4,6},
  {&(_tg__ZTV7S1156C67S1156C7__A1__7S1156C2__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A5__7S1156C2__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C8__7S1156C2__8S1156C10[8]),  8,10},
  {&(_tg__ZTV7S1156C7__A1__7S1156C2__8S1156C10[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__A2__7S1156C2__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A9__7S1156C2__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__7S1156C2__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C37S1156C8__A4__7S1156C2__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C6__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A2__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C3__A1__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A1__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C8__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C8__A6__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C8__A10__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C8__A3__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C37S1156C8__A4__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C8__A11__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C7__7S1156C8__8S1156C10[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__7S1156C8__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C8__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__7S1156C8__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C6__A1__7S1156C8__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A__7S1156C8__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C7__A1__8S1156C10[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C7__A3__8S1156C10[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C7__A7__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C7__A2__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C7__A8__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C7__A2__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A9__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7__A1__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7__A1__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7__A1__8S1156C10[3]),  3,4},
  {&(_tg__ZTV8S1156C11__8S1156C10[6]),  6,7},
  {&(_tg__ZTV7S1156C68S1156C11__A4__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C68S1156C11__A13__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C68S1156C11__A4__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C8__8S1156C11__8S1156C10[8]),  8,10},
  {&(_tg__ZTV7S1156C7__8S1156C11__8S1156C10[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__8S1156C11__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__8S1156C11__8S1156C10[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__8S1156C11__8S1156C10[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A1__8S1156C11__8S1156C10[4]),  4,5},
  {&(_tg__ZTV7S1156C37S1156C8__A2__8S1156C11__8S1156C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S1156C10[];
extern  VTBL_ENTRY _ZTV8S1156C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1156C10[];
Class_Descriptor cd_S1156C10 = {  "S1156C10", // class name
  bases_S1156C10, 38,
  &(vtc_S1156C10[0]), // expected_vtbl_contents
  &(vtt_S1156C10[0]), // expected_vtt_contents
  ABISELECT(1152,748), // object size
  NSPAIRA(_ZTI8S1156C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1156C10),96, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1156C10),78, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1156C12  : S5719C14 , S1156C9 {
  short s1156c12f0;
  int s1156c12f1;
  ::S1156C2 s1156c12f2[5];
  __tsi64 s1156c12f3;
  long double s1156c12f4;
  virtual  ~S1156C12(); // _ZN8S1156C12D2Ev
  virtual void  v4(); // _ZN8S1156C122v4Ev
  S1156C12(); // tgen
};
//SIG(-1 S1156C12) C1{ BC2{ m FC3{ m FD Fi FC4{}} Fi[2]} BC5{ VBC6{ VBC7{ m} v2} VBC8{ BC7 BC6 v3 Fi[2]} Fi} vd v1 Fs Fi FC9{ BC8 VBC10{ VBC7 VBC8 BC6 Fi[2] Fp[3]} BC11{ BC7 BC8 BC10 BC6 Fi[2]} VBC12{ BC7 BC6 VBC11 BC10 BC8 v4 FC8 Fs Fi[2] Fp[3] FC11} Fc Fs[7]}[5] FL FD}


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

static void Test_S1156C12()
{
  extern Class_Descriptor cd_S1156C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(151,400)];
    init_test(&cd_S1156C12, buf);
    S1156C12 *dp, &lv = *(dp=new (buf) S1156C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2400,1596), "sizeof(S1156C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1156C12)");
    check_base_class_offset(lv, (S5719C14*), ABISELECT(16,8), "S1156C12");
    /*is_ambiguous_... S1156C12::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), 0, "S1156C12");
    check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), 0, "S1156C12");
    /*is_ambiguous_... S1156C9::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C9*), 0, "S1156C12");
    /*is_ambiguous_... S1156C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(2384,1584), "S1156C12");
    check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(2384,1584), "S1156C12");
    check_base_class_offset(lv, (S1156C3*)(S1156C9*), ABISELECT(2384,1584), "S1156C12");
    check_base_class_offset(lv, (S1156C9*), 0, "S1156C12");
    check_field_offset(lv, s1156c12f0, ABISELECT(64,36), "S1156C12.s1156c12f0");
    check_field_offset(lv, s1156c12f1, ABISELECT(68,40), "S1156C12.s1156c12f1");
    check_field_offset(lv, s1156c12f2, ABISELECT(72,44), "S1156C12.s1156c12f2");
    check_field_offset(lv, s1156c12f3, ABISELECT(2352,1564), "S1156C12.s1156c12f3");
    check_field_offset(lv, s1156c12f4, ABISELECT(2368,1572), "S1156C12.s1156c12f4");
    test_class_info(&lv, &cd_S1156C12);
    dp->~S1156C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C12(Test_S1156C12, "S1156C12", ABISELECT(2400,1596));

#else // __cplusplus

extern void _ZN8S1156C12C1Ev();
extern void _ZN8S1156C12D2Ev();
Name_Map name_map_S1156C12[] = {
  NSPAIR(_ZN8S1156C12C1Ev),
  NSPAIR(_ZN8S1156C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5719C14;
extern VTBL_ENTRY _ZTI8S5719C14[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C9;
extern VTBL_ENTRY _ZTI7S1156C9[];
extern  VTBL_ENTRY _ZTV7S1156C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C9[];
static Base_Class bases_S1156C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5719C14,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1156C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(2384,1584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1156C5,    ABISELECT(2384,1584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(2384,1584), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1156C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1156C12[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN8S1156C12D1Ev();
extern void _ZN8S1156C12D0Ev();
extern void _ZN8S1156C122v4Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY vtc_S1156C12[] = {
  ABISELECT(2384,1584),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1156C12[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN8S1156C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1156C12D0Ev,
  (VTBL_ENTRY)&_ZN8S1156C122v4Ev,
  0,
  0,
  ABISELECT(-2384,-1584),
  ABISELECT(-2384,-1584),
  (VTBL_ENTRY)&(_ZTI8S1156C12[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S1156C12[];
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C9__8S1156C12[] = {
  ABISELECT(2384,1584),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C9[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C9__8S1156C12[] = {
  0,
  0,
  ABISELECT(-2384,-1584),
  ABISELECT(-2384,-1584),
  (VTBL_ENTRY)&(_ZTI7S1156C9[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__8S1156C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__8S1156C12[] = {
  ABISELECT(-2384,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A1__8S1156C12[] = {
  ABISELECT(-2384,-1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
static  VTT_ENTRY vtt_S1156C12[] = {
  {&(_ZTV8S1156C12[6]),  6,17},
  {&(_tg__ZTV7S1156C9__8S1156C12[6]),  6,7},
  {&(_tg__ZTV7S1156C9__8S1156C12[6]),  6,7},
  {&(_tg__ZTV7S1156C3__7S1156C9__8S1156C12[5]),  5,7},
  {&(_ZTV8S1156C12[6]),  6,17},
  {&(_ZTV8S1156C12[15]),  15,17},
  {&(_tg__ZTV7S1156C5__8S1156C12[3]),  3,4},
  {&(_tg__ZTV7S1156C3__8S1156C12[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A1__8S1156C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1156C12[];
extern  VTBL_ENTRY _ZTV8S1156C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1156C12[];
Class_Descriptor cd_S1156C12 = {  "S1156C12", // class name
  bases_S1156C12, 7,
  &(vtc_S1156C12[0]), // expected_vtbl_contents
  &(vtt_S1156C12[0]), // expected_vtt_contents
  ABISELECT(2400,1596), // object size
  NSPAIRA(_ZTI8S1156C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1156C12),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1156C12),9, //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  S1156C1  : S1156C2 , S1156C6 , S1156C9 , S1156C10 {
  ::S1156C12 s1156c1f0;
  void *s1156c1f1;
  int s1156c1f2[2];
  virtual  ~S1156C1(); // _ZN7S1156C1D2Ev
  S1156C1(); // tgen
};
//SIG(1 S1156C1) C1{ BC2{ BC3{ BC4{ m} BC5{ VBC4 v1} v2 Fi[2]} VBC6{ VBC4 VBC3 BC5 Fi[2] Fp[3]} BC7{ BC4 BC3 BC6 BC5 Fi[2]} VBC8{ BC4 BC5 VBC7 BC6 BC3 v3 FC3 Fs Fi[2] Fp[3] FC7} Fc Fs[7]} BC6 BC9{ VBC5 VBC3 Fi} BC10{ VBC4 VBC2 BC5 VBC11{ VBC4 VBC8 BC6 FD Fp[10]} vd Fi FD[12] Fi FC8 Fc} vd FC12{ BC13{ m FC14{ m FD Fi FC15{}} Fi[2]} BC9 vd v4 Fs Fi FC2[5] FL FD} Fp Fi[2]}


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

static void Test_S1156C1()
{
  extern Class_Descriptor cd_S1156C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(234,617)];
    init_test(&cd_S1156C1, buf);
    S1156C1 *dp, &lv = *(dp=new (buf) S1156C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3728,2464), "sizeof(S1156C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1156C1)");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C2*), 0, "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C8*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C8*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C8*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C8*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C10*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C7*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C10::S1156C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C10*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C11*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C6*)(S1156C11*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C5*)(S1156C6*)(S1156C11*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C2*), 0, "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C2*), 0, "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C8*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*), ABISELECT(3160,2108), "S1156C1");
    check_base_class_offset(lv, (S1156C3*)(S1156C9*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C6*)(S1156C11*), ABISELECT(3160,2108), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C2*), ABISELECT(3120,2084), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*)(S1156C2*), ABISELECT(32,24), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(16,12), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(16,12), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(16,12), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(32,24), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(32,24), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*)(S1156C2*), ABISELECT(72,48), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C7*)(S1156C2*), ABISELECT(16,12), "S1156C1");
    /*is_ambiguous_... S1156C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C8*), ABISELECT(3176,2120), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C8*), ABISELECT(3176,2120), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*), ABISELECT(3416,2276), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*), ABISELECT(3400,2264), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*), ABISELECT(3400,2264), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*), ABISELECT(3400,2264), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*), ABISELECT(3416,2276), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*), ABISELECT(3416,2276), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C7 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*), ABISELECT(3456,2300), "S1156C1");
    check_base_class_offset(lv, (S1156C7*)(S1156C8*), ABISELECT(3400,2264), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C8*), ABISELECT(3184,2124), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C8*), ABISELECT(3184,2124), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C8*), ABISELECT(3224,2148), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C8*), ABISELECT(3224,2148), "S1156C1");
    /*is_ambiguous_... S1156C8::S1156C3 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C8*), ABISELECT(3224,2148), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C8*)(S1156C2*), ABISELECT(3176,2120), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C8*)(S1156C2*), ABISELECT(3176,2120), "S1156C1");
    check_base_class_offset(lv, (S1156C8*)(S1156C11*), ABISELECT(3176,2120), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C2*), 0, "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*), ABISELECT(104,76), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*), ABISELECT(104,76), "S1156C1");
    /*is_ambiguous_... S1156C9::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C9*), ABISELECT(144,100), "S1156C1");
    check_base_class_offset(lv, (S1156C9*), ABISELECT(144,100), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C2*), ABISELECT(3472,2312), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C2*), ABISELECT(3472,2312), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C2*), ABISELECT(3472,2312), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C7*)(S1156C2*), ABISELECT(3504,2336), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(3488,2324), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(3488,2324), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C3*)(S1156C7*)(S1156C2*), ABISELECT(3488,2324), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3504,2336), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C7*)(S1156C2*), ABISELECT(3504,2336), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C7*)(S1156C2*), ABISELECT(3544,2360), "S1156C1");
    /*is_ambiguous_... S1156C1::S1156C2 */ AMB_check_base_class_offset(lv, (S1156C7*)(S1156C2*), ABISELECT(3488,2324), "S1156C1");
    check_base_class_offset(lv, (S1156C2*)(S1156C10*), ABISELECT(3472,2312), "S1156C1");
    /*is_ambiguous_... S1156C10::S1156C5 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C10*), ABISELECT(160,108), "S1156C1");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C5*)(S1156C6*)(S1156C11*), ABISELECT(3584,2388), "S1156C1");
    /*is_ambiguous_... S1156C11::S1156C6 */ AMB_check_base_class_offset(lv, (S1156C6*)(S1156C11*), ABISELECT(3584,2388), "S1156C1");
    check_base_class_offset(lv, (S1156C11*)(S1156C10*), ABISELECT(3584,2388), "S1156C1");
    check_base_class_offset(lv, (S1156C10*), ABISELECT(160,108), "S1156C1");
    check_field_offset(lv, s1156c1f0, ABISELECT(704,476), "S1156C1.s1156c1f0");
    check_field_offset(lv, s1156c1f1, ABISELECT(3104,2072), "S1156C1.s1156c1f1");
    check_field_offset(lv, s1156c1f2, ABISELECT(3112,2076), "S1156C1.s1156c1f2");
    test_class_info(&lv, &cd_S1156C1);
    dp->~S1156C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1156C1(Test_S1156C1, "S1156C1", ABISELECT(3728,2464));

#else // __cplusplus

extern void _ZN7S1156C1C1Ev();
extern void _ZN7S1156C1D2Ev();
Name_Map name_map_S1156C1[] = {
  NSPAIR(_ZN7S1156C1C1Ev),
  NSPAIR(_ZN7S1156C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C8;
extern VTBL_ENTRY _ZTI7S1156C8[];
extern  VTBL_ENTRY _ZTV7S1156C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C8[];
extern Class_Descriptor cd_S1156C2;
extern VTBL_ENTRY _ZTI7S1156C2[];
extern  VTBL_ENTRY _ZTV7S1156C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C2[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C9;
extern VTBL_ENTRY _ZTI7S1156C9[];
extern  VTBL_ENTRY _ZTV7S1156C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C9[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C3;
extern VTBL_ENTRY _ZTI7S1156C3[];
extern  VTBL_ENTRY _ZTV7S1156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C3[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C7;
extern VTBL_ENTRY _ZTI7S1156C7[];
extern  VTBL_ENTRY _ZTV7S1156C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C7[];
extern Class_Descriptor cd_S1156C2;
extern VTBL_ENTRY _ZTI7S1156C2[];
extern  VTBL_ENTRY _ZTV7S1156C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C2[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C5;
extern VTBL_ENTRY _ZTI7S1156C5[];
extern  VTBL_ENTRY _ZTV7S1156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C5[];
extern Class_Descriptor cd_S1156C6;
extern VTBL_ENTRY _ZTI7S1156C6[];
extern  VTBL_ENTRY _ZTV7S1156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C6[];
extern Class_Descriptor cd_S1156C11;
extern VTBL_ENTRY _ZTI8S1156C11[];
extern  VTBL_ENTRY _ZTV8S1156C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1156C11[];
extern Class_Descriptor cd_S1156C10;
extern VTBL_ENTRY _ZTI8S1156C10[];
extern  VTBL_ENTRY _ZTV8S1156C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1156C10[];
static Base_Class bases_S1156C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3120,2084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1156C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1156C3,    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
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3160,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
    6, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(3160,2108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(3160,2108), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(3120,2084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(3120,2084), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S1156C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(32,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(72,48), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3176,2120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(3176,2120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3416,2276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(3400,2264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(3400,2264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(3400,2264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(3416,2276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(3416,2276), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(3456,2300), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(3400,2264), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(3184,2124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(3184,2124), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3224,2148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(3224,2148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(3224,2148), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1156C8,    ABISELECT(3176,2120), //bcp->offset
    66, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1156C2,    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
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1156C5,    ABISELECT(104,76), //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
    39, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(104,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1156C5,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S1156C9,    ABISELECT(144,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(3472,2312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(3472,2312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(3472,2312), //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
    19, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3504,2336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(3488,2324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1156C5,    ABISELECT(3488,2324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1156C3,    ABISELECT(3488,2324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(3504,2336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(3504,2336), //bcp->offset
    120, //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
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(3544,2360), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1156C7,    ABISELECT(3488,2324), //bcp->offset
    114, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S1156C2,    ABISELECT(3472,2312), //bcp->offset
    103, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S1156C5,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S1156C5,    ABISELECT(3584,2388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S1156C6,    ABISELECT(3584,2388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1156C11,    ABISELECT(3584,2388), //bcp->offset
    129, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S1156C10,    ABISELECT(160,108), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1156C1[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C1D1Ev();
extern void _ZN7S1156C1D0Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void ABISELECT(_ZThn160_N7S1156C1D1Ev,_ZThn108_N7S1156C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S1156C1D0Ev,_ZThn108_N7S1156C1D0Ev)();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY vtc_S1156C1[] = {
  ABISELECT(3584,2388),
  ABISELECT(3472,2312),
  ABISELECT(144,100),
  ABISELECT(3400,2264),
  ABISELECT(3176,2120),
  ABISELECT(3160,2108),
  ABISELECT(3120,2084),
  ABISELECT(3120,2084),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  (VTBL_ENTRY)&_ZN7S1156C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1156C1D0Ev,
  ABISELECT(3144,2096),
  ABISELECT(3104,2072),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(3128,2084),
  ABISELECT(3088,2060),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(3048,2036),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(3056,2032),
  ABISELECT(3016,2008),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(3016,2008),
  0,
  0,
  ABISELECT(2976,1984),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(3424,2280),
  ABISELECT(3240,2156),
  ABISELECT(3016,2012),
  ABISELECT(3000,2000),
  ABISELECT(2960,1976),
  ABISELECT(3312,2204),
  ABISELECT(2960,1976),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S1156C1D1Ev,_ZThn108_N7S1156C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S1156C1D0Ev,_ZThn108_N7S1156C1D0Ev),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-3120,-2084),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3160,-2108),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-3176,-2120),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-3184,-2124),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-104,-64),
  ABISELECT(-3224,-2148),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-3400,-2264),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-3416,-2276),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-336,-216),
  ABISELECT(-3456,-2300),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  0,
  ABISELECT(-72,-48),
  ABISELECT(-296,-192),
  ABISELECT(-312,-204),
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  ABISELECT(-3472,-2312),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  ABISELECT(-3488,-2324),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-3504,-2336),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  ABISELECT(-424,-276),
  ABISELECT(-3544,-2360),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  0,
  ABISELECT(-184,-124),
  ABISELECT(-408,-268),
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  ABISELECT(-3584,-2388),
  (VTBL_ENTRY)&(_ZTI7S1156C1[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S1156C1[];
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C2__A__7S1156C1[] = {
  ABISELECT(3400,2264),
  ABISELECT(3176,2120),
  ABISELECT(3160,2108),
  ABISELECT(3120,2084),
  ABISELECT(3120,2084),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C2__7S1156C1[] = {
  ABISELECT(3120,2084),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C2__7S1156C1[] = {
  ABISELECT(3120,2084),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C77S1156C2__7S1156C1[] = {
  ABISELECT(3144,2096),
  ABISELECT(3104,2072),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C77S1156C2__A2__7S1156C1[] = {
  ABISELECT(3104,2072),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C77S1156C2__A3__7S1156C1[] = {
  ABISELECT(3104,2072),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C77S1156C2__A1__7S1156C1[] = {
  ABISELECT(3128,2084),
  ABISELECT(3088,2060),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C77S1156C2__A4__7S1156C1[] = {
  ABISELECT(3088,2060),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C77S1156C2__A1__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3128,-2084),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C77S1156C2__A5__7S1156C1[] = {
  ABISELECT(3048,2036),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C77S1156C2__7S1156C1[] = {
  ABISELECT(3128,2084),
  ABISELECT(3088,2060),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C77S1156C2__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3144,-2096),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C77S1156C2__7S1156C1[] = {
  ABISELECT(3048,2036),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C2__A__7S1156C1[] = {
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-3120,-2084),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C2__A__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3160,-2108),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A__7S1156C2__A__7S1156C1[] = {
  ABISELECT(3144,2096),
  ABISELECT(3104,2072),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A1__7S1156C2__A__7S1156C1[] = {
  ABISELECT(3128,2084),
  ABISELECT(3088,2060),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A5__7S1156C2__A__7S1156C1[] = {
  ABISELECT(3048,2036),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__7S1156C2__A__7S1156C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-3176,-2120),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__7S1156C2__A__7S1156C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-3400,-2264),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__7S1156C2__A__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-3416,-2276),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__7S1156C2__A__7S1156C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-3456,-2300),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__7S1156C2__A__7S1156C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-3184,-2124),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__7S1156C2__A__7S1156C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-3224,-2148),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A__7S1156C1[] = {
  ABISELECT(3056,2032),
  ABISELECT(3016,2008),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A12__7S1156C1[] = {
  ABISELECT(3016,2008),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__A__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3056,-2032),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C9__7S1156C1[] = {
  ABISELECT(3016,2008),
  0,
  0,
  ABISELECT(2976,1984),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C9[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C9__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3016,-2008),
  (VTBL_ENTRY)&(_ZTI7S1156C9[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN8S1156C10D1Ev();
extern void _ZN8S1156C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1156C10__7S1156C1[] = {
  ABISELECT(3424,2280),
  ABISELECT(3240,2156),
  ABISELECT(3016,2012),
  ABISELECT(3000,2000),
  ABISELECT(2960,1976),
  ABISELECT(3312,2204),
  ABISELECT(2960,1976),
  0,
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN8S1156C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1156C10D0Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C58S1156C10__A18__7S1156C1[] = {
  ABISELECT(2960,1976),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C2__8S1156C10__7S1156C1[] = {
  0,
  0,
  ABISELECT(-72,-48),
  ABISELECT(-296,-192),
  ABISELECT(-312,-204),
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  ABISELECT(-3312,-2204),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__8S1156C10__7S1156C1[] = {
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-2960,-1976),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__8S1156C10__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3000,-2000),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C77S1156C2__8S1156C10__7S1156C1[] = {
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  ABISELECT(-3328,-2216),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C77S1156C2__A1__8S1156C10__7S1156C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-3344,-2228),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C77S1156C2__A5__8S1156C10__7S1156C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-3384,-2252),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__8S1156C10__7S1156C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-3016,-2012),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__8S1156C10__7S1156C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-3240,-2156),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__8S1156C10__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-3256,-2168),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__8S1156C10__7S1156C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-3296,-2192),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__8S1156C10__7S1156C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-3024,-2016),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__8S1156C10__7S1156C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-3064,-2040),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1156C11__8S1156C10__7S1156C1[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-408,-268),
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  ABISELECT(-3424,-2280),
  (VTBL_ENTRY)&(_ZTI8S1156C10[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C1[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C6__A2__7S1156C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C6__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C3__A1__7S1156C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__7S1156C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C8__A6__7S1156C1[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__7S1156C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C8__A10__7S1156C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C8__A3__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__7S1156C1[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C8__A11__7S1156C1[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__7S1156C8__7S1156C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__7S1156C8__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C8__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__7S1156C8__7S1156C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__A1__7S1156C8__7S1156C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A__7S1156C8__7S1156C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1156C8[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__7S1156C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C7__A3__7S1156C1[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C7__A7__7S1156C1[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C7__A8__7S1156C1[] = {
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C7__A2__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__7S1156C1[] = {
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C7__A1__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C7__A1__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C7__A1__7S1156C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A13__7S1156C1[] = {
  ABISELECT(2976,1984),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-296,-192),
  ABISELECT(-312,-204),
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C2__A5__7S1156C1[] = {
  ABISELECT(-352,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C2__A14__7S1156C1[] = {
  ABISELECT(-352,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C77S1156C2__A2__7S1156C1[] = {
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C77S1156C2__A6__7S1156C1[] = {
  ABISELECT(-368,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C3[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C37S1156C77S1156C2__A15__7S1156C1[] = {
  ABISELECT(-368,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C77S1156C2__A5__7S1156C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C67S1156C77S1156C2__A16__7S1156C1[] = {
  ABISELECT(-384,-252),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C67S1156C77S1156C2__A5__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(344,228),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C77S1156C2__A17__7S1156C1[] = {
  ABISELECT(-424,-276),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C77S1156C2__A2__7S1156C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C77S1156C2__A2__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(328,216),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C5__A3__7S1156C77S1156C2__A2__7S1156C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1156C7[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C6__7S1156C2__A1__7S1156C1[] = {
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(352,228),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__7S1156C2__A1__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A1__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A5__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(296,192),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__A1__7S1156C2__A1__7S1156C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__A2__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A9__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A3__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(288,188),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A4__7S1156C2__A1__7S1156C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI7S1156C2[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1156C11__7S1156C1[] = {
  ABISELECT(-184,-124),
  ABISELECT(-408,-268),
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C68S1156C11__A6__7S1156C1[] = {
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C68S1156C11__A19__7S1156C1[] = {
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S1156C5[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__7S1156C68S1156C11__A6__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(424,280),
  (VTBL_ENTRY)&(_ZTI7S1156C6[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C8__8S1156C11__7S1156C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(408,268),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C82v3Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C7__8S1156C11__7S1156C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C7__8S1156C11__7S1156C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C3__A1__8S1156C11__7S1156C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(424,280),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C57S1156C7__A4__8S1156C11__7S1156C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C67S1156C8__A1__8S1156C11__7S1156C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(400,264),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
};
extern void _ZN7S1156C52v1Ev();
extern void _ZN7S1156C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1156C37S1156C8__A2__8S1156C11__7S1156C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(360,240),
  (VTBL_ENTRY)&(_ZTI8S1156C11[0]),
  (VTBL_ENTRY)&_ZN7S1156C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1156C32v2Ev,
};
static  VTT_ENTRY vtt_S1156C1[] = {
  {&(_ZTV7S1156C1[10]),  10,137},
  {&(_tg__ZTV7S1156C2__A__7S1156C1[7]),  7,9},
  {&(_tg__ZTV7S1156C37S1156C2__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C2__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C77S1156C2__7S1156C1[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C77S1156C2__A2__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C77S1156C2__A3__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C77S1156C2__A1__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C77S1156C2__A4__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C77S1156C2__A1__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C77S1156C2__A5__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C77S1156C2__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C77S1156C2__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C77S1156C2__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C2__A__7S1156C1[5]),  5,6},
  {&(_tg__ZTV7S1156C3__A1__7S1156C2__A__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C7__A__7S1156C2__A__7S1156C1[4]),  4,6},
  {&(_tg__ZTV7S1156C67S1156C7__A1__7S1156C2__A__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A5__7S1156C2__A__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C8__7S1156C2__A__7S1156C1[8]),  8,10},
  {&(_tg__ZTV7S1156C7__A1__7S1156C2__A__7S1156C1[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__A2__7S1156C2__A__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A9__7S1156C2__A__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__7S1156C2__A__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C37S1156C8__A4__7S1156C2__A__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C6__A__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A12__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__A__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C9__7S1156C1[6]),  6,7},
  {&(_tg__ZTV7S1156C9__7S1156C1[6]),  6,7},
  {&(_tg__ZTV7S1156C3__7S1156C9__7S1156C1[5]),  5,7},
  {&(_tg__ZTV8S1156C10__7S1156C1[9]),  9,12},
  {&(_tg__ZTV7S1156C58S1156C10__A18__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C2__8S1156C10__7S1156C1[9]),  9,11},
  {&(_tg__ZTV7S1156C6__8S1156C10__7S1156C1[5]),  5,6},
  {&(_tg__ZTV7S1156C3__A1__8S1156C10__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C77S1156C2__8S1156C10__7S1156C1[4]),  4,6},
  {&(_tg__ZTV7S1156C67S1156C77S1156C2__A1__8S1156C10__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C77S1156C2__A5__8S1156C10__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C8__8S1156C10__7S1156C1[8]),  8,10},
  {&(_tg__ZTV7S1156C7__A1__8S1156C10__7S1156C1[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__A2__8S1156C10__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A9__8S1156C10__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__8S1156C10__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C37S1156C8__A4__8S1156C10__7S1156C1[3]),  3,5},
  {&(_tg__ZTV8S1156C11__8S1156C10__7S1156C1[7]),  7,8},
  {&(_ZTV7S1156C1[58]),  58,137},
  {&(_ZTV7S1156C1[64]),  64,137},
  {&(_ZTV7S1156C1[18]),  18,137},
  {&(_ZTV7S1156C1[24]),  24,137},
  {&(_ZTV7S1156C1[28]),  28,137},
  {&(_ZTV7S1156C1[74]),  74,137},
  {&(_ZTV7S1156C1[92]),  92,137},
  {&(_ZTV7S1156C1[98]),  98,137},
  {&(_ZTV7S1156C1[102]),  102,137},
  {&(_ZTV7S1156C1[80]),  80,137},
  {&(_ZTV7S1156C1[84]),  84,137},
  {&(_ZTV7S1156C1[33]),  33,137},
  {&(_ZTV7S1156C1[40]),  40,137},
  {&(_ZTV7S1156C1[40]),  40,137},
  {&(_ZTV7S1156C1[50]),  50,137},
  {&(_ZTV7S1156C1[112]),  112,137},
  {&(_ZTV7S1156C1[118]),  118,137},
  {&(_ZTV7S1156C1[124]),  124,137},
  {&(_ZTV7S1156C1[128]),  128,137},
  {&(_ZTV7S1156C1[136]),  136,137},
  {&(_tg__ZTV7S1156C6__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C6__A2__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C6__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C3__A1__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C3__A1__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C8__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C8__A6__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C8__A10__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C8__A3__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C37S1156C8__A4__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C8__A11__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C7__7S1156C8__7S1156C1[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__7S1156C8__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C8__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__7S1156C8__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C6__A1__7S1156C8__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A__7S1156C8__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C7__A1__7S1156C1[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C7__A3__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C7__A7__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C7__A2__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C7__A8__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C7__A2__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A9__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C7__A1__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C7__A1__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C7__A1__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C5__A13__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C2__A1__7S1156C1[7]),  7,9},
  {&(_tg__ZTV7S1156C37S1156C2__A5__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C2__A14__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C77S1156C2__A2__7S1156C1[4]),  4,6},
  {&(_tg__ZTV7S1156C37S1156C77S1156C2__A6__7S1156C1[3]),  3,5},
  {&(_tg__ZTV7S1156C57S1156C37S1156C77S1156C2__A15__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C77S1156C2__A5__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C67S1156C77S1156C2__A16__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C67S1156C77S1156C2__A5__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C77S1156C2__A17__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C77S1156C2__A2__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__7S1156C77S1156C2__A2__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C5__A3__7S1156C77S1156C2__A2__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C6__7S1156C2__A1__7S1156C1[5]),  5,6},
  {&(_tg__ZTV7S1156C3__A1__7S1156C2__A1__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C7__A__7S1156C2__A1__7S1156C1[4]),  4,6},
  {&(_tg__ZTV7S1156C67S1156C7__A1__7S1156C2__A1__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A5__7S1156C2__A1__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C8__7S1156C2__A1__7S1156C1[8]),  8,10},
  {&(_tg__ZTV7S1156C7__A1__7S1156C2__A1__7S1156C1[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__A2__7S1156C2__A1__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C7__A9__7S1156C2__A1__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A3__7S1156C2__A1__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C37S1156C8__A4__7S1156C2__A1__7S1156C1[3]),  3,5},
  {&(_tg__ZTV8S1156C11__7S1156C1[6]),  6,7},
  {&(_tg__ZTV7S1156C68S1156C11__A6__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C57S1156C68S1156C11__A19__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C3__7S1156C68S1156C11__A6__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C8__8S1156C11__7S1156C1[8]),  8,10},
  {&(_tg__ZTV7S1156C7__8S1156C11__7S1156C1[6]),  6,8},
  {&(_tg__ZTV7S1156C67S1156C7__8S1156C11__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C3__A1__8S1156C11__7S1156C1[5]),  5,7},
  {&(_tg__ZTV7S1156C57S1156C7__A4__8S1156C11__7S1156C1[3]),  3,4},
  {&(_tg__ZTV7S1156C67S1156C8__A1__8S1156C11__7S1156C1[4]),  4,5},
  {&(_tg__ZTV7S1156C37S1156C8__A2__8S1156C11__7S1156C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S1156C1[];
extern  VTBL_ENTRY _ZTV7S1156C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1156C1[];
Class_Descriptor cd_S1156C1 = {  "S1156C1", // class name
  bases_S1156C1, 55,
  &(vtc_S1156C1[0]), // expected_vtbl_contents
  &(vtt_S1156C1[0]), // expected_vtt_contents
  ABISELECT(3728,2464), // object size
  NSPAIRA(_ZTI7S1156C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1156C1),137, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1156C1),130, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1155C5  : virtual S19490C26 {
  virtual void  v1(); // _ZN7S1155C52v1Ev
  ~S1155C5(); // tgen
  S1155C5(); // tgen
};
//SIG(-1 S1155C5) C1{ VBC2{ m} v1}


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

static void Test_S1155C5()
{
  extern Class_Descriptor cd_S1155C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1155C5, buf);
    S1155C5 *dp, &lv = *(dp=new (buf) S1155C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1155C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C5)");
    check_base_class_offset(lv, (S19490C26*), 0, "S1155C5");
    test_class_info(&lv, &cd_S1155C5);
    dp->~S1155C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C5(Test_S1155C5, "S1155C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1155C5C1Ev();
extern void _ZN7S1155C5D1Ev();
Name_Map name_map_S1155C5[] = {
  NSPAIR(_ZN7S1155C5C1Ev),
  NSPAIR(_ZN7S1155C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S1155C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1155C5[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY vtc_S1155C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S1155C5[];
static  VTT_ENTRY vtt_S1155C5[] = {
  {&(_ZTV7S1155C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
Class_Descriptor cd_S1155C5 = {  "S1155C5", // class name
  bases_S1155C5, 1,
  &(vtc_S1155C5[0]), // expected_vtbl_contents
  &(vtt_S1155C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1155C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1155C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C5),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  S1155C3  : S19490C26 , S1155C5 {
  int s1155c3f0[2];
  virtual void  v2(); // _ZN7S1155C32v2Ev
  ~S1155C3(); // tgen
  S1155C3(); // tgen
};
//SIG(-1 S1155C3) C1{ BC2{ m} BC3{ VBC2 v2} v1 Fi[2]}


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

static void Test_S1155C3()
{
  extern Class_Descriptor cd_S1155C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1155C3, buf);
    S1155C3 *dp, &lv = *(dp=new (buf) S1155C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1155C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C3)");
    /*is_ambiguous_... S1155C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1155C3");
    check_base_class_offset(lv, (S19490C26*)(S1155C5*), ABISELECT(16,12), "S1155C3");
    check_base_class_offset(lv, (S1155C5*), 0, "S1155C3");
    check_field_offset(lv, s1155c3f0, ABISELECT(8,4), "S1155C3.s1155c3f0");
    test_class_info(&lv, &cd_S1155C3);
    dp->~S1155C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C3(Test_S1155C3, "S1155C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S1155C3C1Ev();
extern void _ZN7S1155C3D1Ev();
Name_Map name_map_S1155C3[] = {
  NSPAIR(_ZN7S1155C3C1Ev),
  NSPAIR(_ZN7S1155C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
static Base_Class bases_S1155C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    2, //immediately_derived
  0, 1},
  {&cd_S1155C5,    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 _ZTI7S1155C3[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1155C3[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__7S1155C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C3[] = {
  {&(_ZTV7S1155C3[3]),  3,5},
  {&(_tg__ZTV7S1155C5__7S1155C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
Class_Descriptor cd_S1155C3 = {  "S1155C3", // class name
  bases_S1155C3, 3,
  &(vtc_S1155C3[0]), // expected_vtbl_contents
  &(vtt_S1155C3[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S1155C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1155C3),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C3),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  S1155C6  : virtual S19490C26 , virtual S1155C3 , S1155C5 {
  int s1155c6f0[2];
  void *s1155c6f1[3];
  ~S1155C6(); // tgen
  S1155C6(); // tgen
};
//SIG(-1 S1155C6) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC4 Fi[2] Fp[3]}


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

static void Test_S1155C6()
{
  extern Class_Descriptor cd_S1155C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S1155C6, buf);
    S1155C6 *dp, &lv = *(dp=new (buf) S1155C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S1155C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C6)");
    /*is_ambiguous_... S1155C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1155C6");
    check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), 0, "S1155C6");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), 0, "S1155C6");
    /*is_ambiguous_... S1155C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(40,24), "S1155C6");
    check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(40,24), "S1155C6");
    check_base_class_offset(lv, (S1155C3*), ABISELECT(40,24), "S1155C6");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*), 0, "S1155C6");
    check_field_offset(lv, s1155c6f0, ABISELECT(8,4), "S1155C6.s1155c6f0");
    check_field_offset(lv, s1155c6f1, ABISELECT(16,12), "S1155C6.s1155c6f1");
    test_class_info(&lv, &cd_S1155C6);
    dp->~S1155C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C6(Test_S1155C6, "S1155C6", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S1155C6C1Ev();
extern void _ZN7S1155C6D1Ev();
Name_Map name_map_S1155C6[] = {
  NSPAIR(_ZN7S1155C6C1Ev),
  NSPAIR(_ZN7S1155C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
static Base_Class bases_S1155C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(40,24), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(40,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1155C5,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1155C6[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C6[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1155C6[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A1__7S1155C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__7S1155C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C6[] = {
  {&(_ZTV7S1155C6[4]),  4,12},
  {&(_tg__ZTV7S1155C5__A1__7S1155C6[3]),  3,4},
  {&(_ZTV7S1155C6[10]),  10,12},
  {&(_tg__ZTV7S1155C3__7S1155C6[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__7S1155C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
Class_Descriptor cd_S1155C6 = {  "S1155C6", // class name
  bases_S1155C6, 5,
  &(vtc_S1155C6[0]), // expected_vtbl_contents
  &(vtt_S1155C6[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S1155C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1155C6),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C6),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1155C7  : S19490C26 , S1155C3 , S1155C6 , S1155C5 {
  int s1155c7f0[2];
  ~S1155C7(); // tgen
  S1155C7(); // tgen
};
//SIG(-1 S1155C7) C1{ BC2{ m} BC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC5{ VBC2 VBC3 BC4 Fi[2] Fp[3]} BC4 Fi[2]}


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

static void Test_S1155C7()
{
  extern Class_Descriptor cd_S1155C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S1155C7, buf);
    S1155C7 *dp, &lv = *(dp=new (buf) S1155C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S1155C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C7)");
    /*is_ambiguous_... S1155C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(16,12), "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), 0, "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(72,48), "S1155C7");
    /*is_ambiguous_... S1155C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), ABISELECT(72,48), "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(72,48), "S1155C7");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), ABISELECT(72,48), "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), ABISELECT(72,48), "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), 0, "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*), 0, "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(80,52), "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(80,52), "S1155C7");
    check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(80,52), "S1155C7");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), ABISELECT(16,12), "S1155C7");
    check_base_class_offset(lv, (S1155C6*), ABISELECT(16,12), "S1155C7");
    /*is_ambiguous_... S1155C7::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*), ABISELECT(56,36), "S1155C7");
    check_field_offset(lv, s1155c7f0, ABISELECT(64,40), "S1155C7.s1155c7f0");
    test_class_info(&lv, &cd_S1155C7);
    dp->~S1155C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C7(Test_S1155C7, "S1155C7", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S1155C7C1Ev();
extern void _ZN7S1155C7D1Ev();
Name_Map name_map_S1155C7[] = {
  NSPAIR(_ZN7S1155C7C1Ev),
  NSPAIR(_ZN7S1155C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
static Base_Class bases_S1155C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    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, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1155C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1155C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(80,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(16,12), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1155C5,    ABISELECT(56,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1155C7[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C7[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(16,12),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1155C7[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__7S1155C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A2__7S1155C7[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__7S1155C7[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A1__7S1155C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C7[] = {
  {&(_ZTV7S1155C7[4]),  4,22},
  {&(_tg__ZTV7S1155C3__A__7S1155C7[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__7S1155C7[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A2__7S1155C7[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__7S1155C7[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7[3]),  3,4},
  {&(_ZTV7S1155C7[10]),  10,22},
  {&(_ZTV7S1155C7[20]),  20,22},
  {&(_ZTV7S1155C7[14]),  14,22},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A1__7S1155C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
Class_Descriptor cd_S1155C7 = {  "S1155C7", // class name
  bases_S1155C7, 11,
  &(vtc_S1155C7[0]), // expected_vtbl_contents
  &(vtt_S1155C7[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S1155C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1155C7),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C7),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1155C8  : S19490C26 , S1155C5 , virtual S1155C7 , S1155C6 , S1155C3 {
  ::S1155C3 s1155c8f0;
  short s1155c8f1;
  int s1155c8f2[2];
  void *s1155c8f3[3];
  ::S1155C7 s1155c8f4;
  virtual void  v3(); // _ZN7S1155C82v3Ev
  ~S1155C8(); // tgen
  S1155C8(); // tgen
};
//SIG(-1 S1155C8) C1{ BC2{ m} BC3{ VBC2 v2} VBC4{ BC2 BC5{ BC2 BC3 v3 Fi[2]} BC6{ VBC2 VBC5 BC3 Fi[2] Fp[3]} BC3 Fi[2]} BC6 BC5 v1 FC5 Fs Fi[2] Fp[3] FC4}


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

static void Test_S1155C8()
{
  extern Class_Descriptor cd_S1155C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S1155C8, buf);
    S1155C8 *dp, &lv = *(dp=new (buf) S1155C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S1155C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C8)");
    /*is_ambiguous_... S1155C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C7::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(224,144), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*), 0, "S1155C8");
    /*is_ambiguous_... S1155C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*), ABISELECT(248,160), "S1155C8");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*), ABISELECT(232,148), "S1155C8");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(232,148), "S1155C8");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*), ABISELECT(232,148), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(304,196), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(304,196), "S1155C8");
    check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*), ABISELECT(304,196), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(304,196), "S1155C8");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(248,160), "S1155C8");
    check_base_class_offset(lv, (S1155C6*)(S1155C7*), ABISELECT(248,160), "S1155C8");
    /*is_ambiguous_... S1155C7::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*), ABISELECT(288,184), "S1155C8");
    check_base_class_offset(lv, (S1155C7*), ABISELECT(232,148), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), ABISELECT(8,4), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*), ABISELECT(8,4), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(48,28), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(48,28), "S1155C8");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*), ABISELECT(48,28), "S1155C8");
    check_field_offset(lv, s1155c8f0, ABISELECT(64,40), "S1155C8.s1155c8f0");
    check_field_offset(lv, s1155c8f1, ABISELECT(88,56), "S1155C8.s1155c8f1");
    check_field_offset(lv, s1155c8f2, ABISELECT(92,60), "S1155C8.s1155c8f2");
    check_field_offset(lv, s1155c8f3, ABISELECT(104,68), "S1155C8.s1155c8f3");
    check_field_offset(lv, s1155c8f4, ABISELECT(128,80), "S1155C8.s1155c8f4");
    test_class_info(&lv, &cd_S1155C8);
    dp->~S1155C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C8(Test_S1155C8, "S1155C8", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN7S1155C8C1Ev();
extern void _ZN7S1155C8D1Ev();
Name_Map name_map_S1155C8[] = {
  NSPAIR(_ZN7S1155C8C1Ev),
  NSPAIR(_ZN7S1155C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
static Base_Class bases_S1155C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1155C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(248,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(304,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(248,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(288,184), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(232,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1155C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1155C8[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C8[] = {
  ABISELECT(304,196),
  ABISELECT(232,148),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
  ABISELECT(296,192),
  ABISELECT(216,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(176,116),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1155C8[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__7S1155C8[] = {
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A1__7S1155C8[] = {
  ABISELECT(296,192),
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A5__7S1155C8[] = {
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__A1__7S1155C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C8[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A6__7S1155C8[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__7S1155C8[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C7__7S1155C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C7__A1__7S1155C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__7S1155C8[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C7__A3__7S1155C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C7__7S1155C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__7S1155C8[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7__7S1155C8[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7__7S1155C8[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7__7S1155C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C8[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A2__7S1155C8[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C8[] = {
  {&(_ZTV7S1155C8[5]),  5,41},
  {&(_tg__ZTV7S1155C5__7S1155C8[3]),  3,4},
  {&(_tg__ZTV7S1155C6__A1__7S1155C8[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A5__7S1155C8[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__A1__7S1155C8[5]),  5,7},
  {&(_tg__ZTV7S1155C3__A__7S1155C8[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A6__7S1155C8[3]),  3,4},
  {&(_ZTV7S1155C8[23]),  23,41},
  {&(_ZTV7S1155C8[29]),  29,41},
  {&(_ZTV7S1155C8[39]),  39,41},
  {&(_ZTV7S1155C8[33]),  33,41},
  {&(_ZTV7S1155C8[11]),  11,41},
  {&(_ZTV7S1155C8[15]),  15,41},
  {&(_tg__ZTV7S1155C7__7S1155C8[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C7__7S1155C8[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C7__A1__7S1155C8[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C7__7S1155C8[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C7__A3__7S1155C8[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C7__7S1155C8[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__7S1155C8[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7__7S1155C8[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7__7S1155C8[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7__7S1155C8[3]),  3,4},
  {&(_tg__ZTV7S1155C3__A1__7S1155C8[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A2__7S1155C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C8[];
extern  VTBL_ENTRY _ZTV7S1155C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C8[];
Class_Descriptor cd_S1155C8 = {  "S1155C8", // class name
  bases_S1155C8, 19,
  &(vtc_S1155C8[0]), // expected_vtbl_contents
  &(vtt_S1155C8[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI7S1155C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1155C8),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C8),25, //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  S1155C2  : S1155C3 , virtual S1155C6 , S1155C7 , virtual S1155C8 {
  char s1155c2f0;
  short s1155c2f1[7];
  ~S1155C2(); // tgen
  S1155C2(); // tgen
};
//SIG(-1 S1155C2) C1{ BC2{ BC3{ m} BC4{ VBC3 v1} v2 Fi[2]} VBC5{ VBC3 VBC2 BC4 Fi[2] Fp[3]} BC6{ BC3 BC2 BC5 BC4 Fi[2]} VBC7{ BC3 BC4 VBC6 BC5 BC2 v3 FC2 Fs Fi[2] Fp[3] FC6} Fc Fs[7]}


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

static void Test_S1155C2()
{
  extern Class_Descriptor cd_S1155C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(58,77)];
    init_test(&cd_S1155C2, buf);
    S1155C2 *dp, &lv = *(dp=new (buf) S1155C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(456,304), "sizeof(S1155C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C2)");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), 0, "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C8*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C8*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C8*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C8*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), 0, "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*), 0, "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(144,100), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(144,100), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(144,100), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*), ABISELECT(144,100), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*), ABISELECT(144,100), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C8*), ABISELECT(144,100), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*), ABISELECT(104,76), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*), ABISELECT(32,24), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*), ABISELECT(16,12), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(16,12), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*), ABISELECT(16,12), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(32,24), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*), ABISELECT(32,24), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*), ABISELECT(72,48), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C7*), ABISELECT(16,12), "S1155C2");
    /*is_ambiguous_... S1155C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C8*), ABISELECT(160,112), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C8*), ABISELECT(160,112), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*), ABISELECT(400,268), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*), ABISELECT(384,256), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(384,256), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*), ABISELECT(384,256), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(400,268), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*), ABISELECT(400,268), "S1155C2");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*), ABISELECT(440,292), "S1155C2");
    check_base_class_offset(lv, (S1155C7*)(S1155C8*), ABISELECT(384,256), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C8*), ABISELECT(168,116), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C8*), ABISELECT(168,116), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C8*), ABISELECT(208,140), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C8*), ABISELECT(208,140), "S1155C2");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C8*), ABISELECT(208,140), "S1155C2");
    check_base_class_offset(lv, (S1155C8*), ABISELECT(160,112), "S1155C2");
    check_field_offset(lv, s1155c2f0, ABISELECT(88,60), "S1155C2.s1155c2f0");
    check_field_offset(lv, s1155c2f1, ABISELECT(90,62), "S1155C2.s1155c2f1");
    test_class_info(&lv, &cd_S1155C2);
    dp->~S1155C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C2(Test_S1155C2, "S1155C2", ABISELECT(456,304));

#else // __cplusplus

extern void _ZN7S1155C2C1Ev();
extern void _ZN7S1155C2D1Ev();
Name_Map name_map_S1155C2[] = {
  NSPAIR(_ZN7S1155C2C1Ev),
  NSPAIR(_ZN7S1155C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C8;
extern VTBL_ENTRY _ZTI7S1155C8[];
extern  VTBL_ENTRY _ZTV7S1155C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C8[];
static Base_Class bases_S1155C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1155C5,    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
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1155C3,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(144,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, 0},
  {&cd_S1155C5,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(144,100), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(104,76), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S1155C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(16,12), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(32,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(72,48), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(400,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
    26, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    22, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(384,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(384,256), //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(400,268), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(400,268), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(440,292), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(384,256), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(168,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(168,116), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(208,140), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1155C8,    ABISELECT(160,112), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1155C2[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY vtc_S1155C2[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(128,88),
  ABISELECT(88,64),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(32,28),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-104,-64),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-336,-216),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S1155C2[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C2[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__7S1155C2[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A__7S1155C2[] = {
  ABISELECT(128,88),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C7__A2__7S1155C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C7__A3__7S1155C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A1__7S1155C2[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C7__A4__7S1155C2[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C7__A1__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A5__7S1155C2[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7__A__7S1155C2[] = {
  ABISELECT(112,76),
  ABISELECT(72,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7__A__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7__A__7S1155C2[] = {
  ABISELECT(32,28),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C2[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A2__7S1155C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A1__7S1155C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__7S1155C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C8__A6__7S1155C2[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__7S1155C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C8__A10__7S1155C2[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C8__A3__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__7S1155C2[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C8__A11__7S1155C2[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__7S1155C8__7S1155C2[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__7S1155C8__7S1155C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C8__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__7S1155C8__7S1155C2[] = {
  ABISELECT(-336,-216),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A1__7S1155C8__7S1155C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C8__7S1155C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__7S1155C2[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C7__A3__7S1155C2[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C7__A7__7S1155C2[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__7S1155C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C7__A8__7S1155C2[] = {
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C7__A2__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__7S1155C2[] = {
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7__A1__7S1155C2[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7__A1__7S1155C2[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7__A1__7S1155C2[] = {
  ABISELECT(-336,-216),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C2[] = {
  {&(_ZTV7S1155C2[7]),  7,74},
  {&(_tg__ZTV7S1155C3__A__7S1155C2[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C7__A__7S1155C2[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C7__A2__7S1155C2[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C7__A3__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C7__A1__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C7__A4__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C7__A1__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A5__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7__A__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7__A__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7__A__7S1155C2[3]),  3,4},
  {&(_ZTV7S1155C2[29]),  29,74},
  {&(_ZTV7S1155C2[35]),  35,74},
  {&(_ZTV7S1155C2[13]),  13,74},
  {&(_ZTV7S1155C2[19]),  19,74},
  {&(_ZTV7S1155C2[23]),  23,74},
  {&(_ZTV7S1155C2[45]),  45,74},
  {&(_ZTV7S1155C2[63]),  63,74},
  {&(_ZTV7S1155C2[69]),  69,74},
  {&(_ZTV7S1155C2[73]),  73,74},
  {&(_ZTV7S1155C2[51]),  51,74},
  {&(_ZTV7S1155C2[55]),  55,74},
  {&(_tg__ZTV7S1155C6__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A2__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C3__A1__7S1155C2[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A1__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C8__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C8__A6__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C8__A10__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C8__A3__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C37S1155C8__A4__7S1155C2[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C8__A11__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C7__7S1155C8__7S1155C2[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__7S1155C8__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C8__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__7S1155C8__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C6__A1__7S1155C8__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A__7S1155C8__7S1155C2[3]),  3,5},
  {&(_tg__ZTV7S1155C7__A1__7S1155C2[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C7__A3__7S1155C2[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C7__A7__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C7__A2__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C7__A8__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C7__A2__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A9__7S1155C2[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7__A1__7S1155C2[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7__A1__7S1155C2[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7__A1__7S1155C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C2[];
extern  VTBL_ENTRY _ZTV7S1155C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C2[];
Class_Descriptor cd_S1155C2 = {  "S1155C2", // class name
  bases_S1155C2, 33,
  &(vtc_S1155C2[0]), // expected_vtbl_contents
  &(vtt_S1155C2[0]), // expected_vtt_contents
  ABISELECT(456,304), // object size
  NSPAIRA(_ZTI7S1155C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1155C2),74, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C2),52, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1155C9  : virtual S1155C5 , virtual S1155C3 {
  int s1155c9f0;
  ~S1155C9(); // tgen
  S1155C9(); // tgen
};
//SIG(-1 S1155C9) C1{ VBC2{ VBC3{ m} v1} VBC4{ BC3 BC2 v2 Fi[2]} Fi}


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

static void Test_S1155C9()
{
  extern Class_Descriptor cd_S1155C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1155C9, buf);
    S1155C9 *dp, &lv = *(dp=new (buf) S1155C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1155C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1155C9)");
    /*is_ambiguous_... S1155C9::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), 0, "S1155C9");
    check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), 0, "S1155C9");
    /*is_ambiguous_... S1155C9::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*), 0, "S1155C9");
    /*is_ambiguous_... S1155C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(16,8), "S1155C9");
    check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(16,8), "S1155C9");
    check_base_class_offset(lv, (S1155C3*), ABISELECT(16,8), "S1155C9");
    check_field_offset(lv, s1155c9f0, ABISELECT(8,4), "S1155C9.s1155c9f0");
    test_class_info(&lv, &cd_S1155C9);
    dp->~S1155C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C9(Test_S1155C9, "S1155C9", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1155C9C1Ev();
extern void _ZN7S1155C9D1Ev();
Name_Map name_map_S1155C9[] = {
  NSPAIR(_ZN7S1155C9C1Ev),
  NSPAIR(_ZN7S1155C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
static Base_Class bases_S1155C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1155C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1155C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1155C9[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C9[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C9[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1155C9[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S1155C9[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__7S1155C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A1__7S1155C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C9[] = {
  {&(_ZTV7S1155C9[6]),  6,14},
  {&(_ZTV7S1155C9[6]),  6,14},
  {&(_ZTV7S1155C9[12]),  12,14},
  {&(_tg__ZTV7S1155C5__7S1155C9[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C9[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A1__7S1155C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1155C9[];
extern  VTBL_ENTRY _ZTV7S1155C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C9[];
Class_Descriptor cd_S1155C9 = {  "S1155C9", // class name
  bases_S1155C9, 5,
  &(vtc_S1155C9[0]), // expected_vtbl_contents
  &(vtt_S1155C9[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1155C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1155C9),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C9),6, //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  S1155C11  : virtual S19490C26 , virtual S1155C8 , S1155C6 {
  long double s1155c11f0;
  void *s1155c11f1[10];
  ~S1155C11(); // tgen
  S1155C11(); // tgen
};
//SIG(-1 S1155C11) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} VBC5{ BC2 BC6{ BC2 BC4 v2 Fi[2]} BC7{ VBC2 VBC6 BC4 Fi[2] Fp[3]} BC4 Fi[2]} BC7 BC6 v3 FC6 Fs Fi[2] Fp[3] FC5} BC7 FD Fp[10]}


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

static void Test_S1155C11()
{
  extern Class_Descriptor cd_S1155C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,71)];
    init_test(&cd_S1155C11, buf);
    S1155C11 *dp, &lv = *(dp=new (buf) S1155C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,280), "sizeof(S1155C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1155C11)");
    /*is_ambiguous_... S1155C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C8*), 0, "S1155C11");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*), 0, "S1155C11");
    /*is_ambiguous_... S1155C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*), 0, "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), 0, "S1155C11");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*), 0, "S1155C11");
    /*is_ambiguous_... S1155C7::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*), 0, "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C8*), 0, "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C8*), 0, "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C8*), 0, "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), 0, "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), 0, "S1155C11");
    /*is_ambiguous_... S1155C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C8*), ABISELECT(144,76), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C8*), ABISELECT(144,76), "S1155C11");
    /*is_ambiguous_... S1155C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*), ABISELECT(384,232), "S1155C11");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*), ABISELECT(368,220), "S1155C11");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(368,220), "S1155C11");
    /*is_ambiguous_... S1155C7::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*), ABISELECT(368,220), "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(440,268), "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(440,268), "S1155C11");
    check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*), ABISELECT(440,268), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C8*), ABISELECT(440,268), "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(440,268), "S1155C11");
    /*is_ambiguous_... S1155C6::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(384,232), "S1155C11");
    check_base_class_offset(lv, (S1155C6*)(S1155C7*), ABISELECT(384,232), "S1155C11");
    /*is_ambiguous_... S1155C7::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*), ABISELECT(424,256), "S1155C11");
    check_base_class_offset(lv, (S1155C7*)(S1155C8*), ABISELECT(368,220), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C8*), ABISELECT(152,80), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C8*), ABISELECT(152,80), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C8*), ABISELECT(192,104), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C8*), ABISELECT(192,104), "S1155C11");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C8*), ABISELECT(192,104), "S1155C11");
    check_base_class_offset(lv, (S1155C8*), ABISELECT(144,76), "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), 0, "S1155C11");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*), 0, "S1155C11");
    check_field_offset(lv, s1155c11f0, ABISELECT(48,24), "S1155C11.s1155c11f0");
    check_field_offset(lv, s1155c11f1, ABISELECT(64,36), "S1155C11.s1155c11f1");
    test_class_info(&lv, &cd_S1155C11);
    dp->~S1155C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C11(Test_S1155C11, "S1155C11", ABISELECT(464,280));

#else // __cplusplus

extern void _ZN8S1155C11C1Ev();
extern void _ZN8S1155C11D1Ev();
Name_Map name_map_S1155C11[] = {
  NSPAIR(_ZN8S1155C11C1Ev),
  NSPAIR(_ZN8S1155C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C8;
extern VTBL_ENTRY _ZTI7S1155C8[];
extern  VTBL_ENTRY _ZTV7S1155C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C8[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
static Base_Class bases_S1155C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    19, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(368,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
    6, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(368,220), //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(368,220), //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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(440,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
    9, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(440,268), //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
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(440,268), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(384,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(384,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(424,256), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(368,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(152,80), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    18, //immediately_derived
  0, 0},
  {&cd_S1155C5,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(192,104), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1155C8,    ABISELECT(144,76), //bcp->offset
    7, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1155C5,    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
    21, //immediately_derived
  0, 0},
  {&cd_S1155C6,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1155C11[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C11[] = {
  ABISELECT(368,220),
  ABISELECT(144,76),
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-424,-256),
  ABISELECT(-424,-256),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S1155C11[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A2__8S1155C11[] = {
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A7__8S1155C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__A2__8S1155C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__8S1155C11[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C8__8S1155C11[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A1__8S1155C11[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C8__A5__8S1155C11[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C8__A1__8S1155C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A2__8S1155C11[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C8__A6__8S1155C11[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__7S1155C8__8S1155C11[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__7S1155C8__8S1155C11[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C8__8S1155C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__7S1155C8__8S1155C11[] = {
  ABISELECT(-424,-256),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A1__7S1155C8__8S1155C11[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C8__8S1155C11[] = {
  ABISELECT(-192,-104),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__8S1155C11[] = {
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C7__8S1155C11[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C7__A1__8S1155C11[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__8S1155C11[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C7__A3__8S1155C11[] = {
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C7__8S1155C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__8S1155C11[] = {
  ABISELECT(-424,-256),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7__8S1155C11[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7__8S1155C11[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7__8S1155C11[] = {
  ABISELECT(-424,-256),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__8S1155C11[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A2__8S1155C11[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C11[] = {
  {&(_ZTV8S1155C11[6]),  6,51},
  {&(_tg__ZTV7S1155C6__A2__8S1155C11[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A7__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__A2__8S1155C11[5]),  5,7},
  {&(_ZTV8S1155C11[15]),  15,51},
  {&(_ZTV8S1155C11[33]),  33,51},
  {&(_ZTV8S1155C11[39]),  39,51},
  {&(_ZTV8S1155C11[49]),  49,51},
  {&(_ZTV8S1155C11[43]),  43,51},
  {&(_ZTV8S1155C11[21]),  21,51},
  {&(_ZTV8S1155C11[25]),  25,51},
  {&(_tg__ZTV7S1155C8__8S1155C11[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C8__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A1__8S1155C11[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C8__A5__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C8__A1__8S1155C11[5]),  5,7},
  {&(_tg__ZTV7S1155C37S1155C8__A2__8S1155C11[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C8__A6__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C7__7S1155C8__8S1155C11[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__7S1155C8__8S1155C11[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C8__8S1155C11[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__7S1155C8__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C6__A1__7S1155C8__8S1155C11[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A__7S1155C8__8S1155C11[3]),  3,5},
  {&(_tg__ZTV7S1155C7__8S1155C11[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C7__8S1155C11[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C7__A1__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C7__8S1155C11[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C7__A3__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C7__8S1155C11[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7__8S1155C11[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7__8S1155C11[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7__8S1155C11[3]),  3,4},
  {&(_tg__ZTV7S1155C3__A1__8S1155C11[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A2__8S1155C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1155C11[];
extern  VTBL_ENTRY _ZTV8S1155C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1155C11[];
Class_Descriptor cd_S1155C11 = {  "S1155C11", // class name
  bases_S1155C11, 22,
  &(vtc_S1155C11[0]), // expected_vtbl_contents
  &(vtt_S1155C11[0]), // expected_vtt_contents
  ABISELECT(464,280), // object size
  NSPAIRA(_ZTI8S1155C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1155C11),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1155C11),36, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1155C10  : virtual S19490C26 , virtual S1155C2 , S1155C5 , virtual S1155C11 {
  int s1155c10f0;
  long double s1155c10f1[12];
  int s1155c10f2;
  ::S1155C8 s1155c10f3;
  char s1155c10f4;
  virtual  ~S1155C10(); // _ZN8S1155C10D2Ev
  S1155C10(); // tgen
};
//SIG(-1 S1155C10) C1{ VBC2{ m} VBC3{ BC4{ BC2 BC5{ VBC2 v1} v2 Fi[2]} VBC6{ VBC2 VBC4 BC5 Fi[2] Fp[3]} BC7{ BC2 BC4 BC6 BC5 Fi[2]} VBC8{ BC2 BC5 VBC7 BC6 BC4 v3 FC4 Fs Fi[2] Fp[3] FC7} Fc Fs[7]} BC5 VBC9{ VBC2 VBC8 BC6 FD Fp[10]} vd Fi FD[12] Fi FC8 Fc}


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

static void Test_S1155C10()
{
  extern Class_Descriptor cd_S1155C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,188)];
    init_test(&cd_S1155C10, buf);
    S1155C10 *dp, &lv = *(dp=new (buf) S1155C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,748), "sizeof(S1155C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1155C10)");
    /*is_ambiguous_... S1155C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C2*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), 0, "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*)(S1155C2*), 0, "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*)(S1155C2*), 0, "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*)(S1155C2*), 0, "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*)(S1155C2*), 0, "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C8*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*), 0, "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C8*), 0, "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C8*), 0, "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C8*), 0, "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), 0, "S1155C10");
    /*is_ambiguous_... S1155C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C11*), 0, "S1155C10");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C11*), 0, "S1155C10");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C11*), 0, "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C2*), ABISELECT(544,368), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C2*), ABISELECT(544,368), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C2*), ABISELECT(544,368), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C8*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C11*), ABISELECT(688,468), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), ABISELECT(648,444), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C2*), ABISELECT(648,444), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*)(S1155C2*), ABISELECT(576,392), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(560,380), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(560,380), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(560,380), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(576,392), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(576,392), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*)(S1155C2*), ABISELECT(616,416), "S1155C10");
    /*is_ambiguous_... S1155C2::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C7*)(S1155C2*), ABISELECT(560,380), "S1155C10");
    /*is_ambiguous_... S1155C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C8*), ABISELECT(704,480), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C8*), ABISELECT(704,480), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*), ABISELECT(944,636), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*), ABISELECT(928,624), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(928,624), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*), ABISELECT(928,624), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(944,636), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*), ABISELECT(944,636), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*), ABISELECT(984,660), "S1155C10");
    check_base_class_offset(lv, (S1155C7*)(S1155C8*), ABISELECT(928,624), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C8*), ABISELECT(712,484), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C8*), ABISELECT(712,484), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C8*), ABISELECT(752,508), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C8*), ABISELECT(752,508), "S1155C10");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C8*), ABISELECT(752,508), "S1155C10");
    check_base_class_offset(lv, (S1155C8*)(S1155C2*), ABISELECT(704,480), "S1155C10");
    check_base_class_offset(lv, (S1155C8*)(S1155C11*), ABISELECT(704,480), "S1155C10");
    check_base_class_offset(lv, (S1155C2*), ABISELECT(544,368), "S1155C10");
    /*is_ambiguous_... S1155C10::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*), 0, "S1155C10");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C11*), ABISELECT(1008,672), "S1155C10");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C11*), ABISELECT(1008,672), "S1155C10");
    check_base_class_offset(lv, (S1155C11*), ABISELECT(1008,672), "S1155C10");
    check_field_offset(lv, s1155c10f0, ABISELECT(8,4), "S1155C10.s1155c10f0");
    check_field_offset(lv, s1155c10f1, ABISELECT(16,8), "S1155C10.s1155c10f1");
    check_field_offset(lv, s1155c10f2, ABISELECT(208,152), "S1155C10.s1155c10f2");
    check_field_offset(lv, s1155c10f3, ABISELECT(216,156), "S1155C10.s1155c10f3");
    check_field_offset(lv, s1155c10f4, ABISELECT(536,364), "S1155C10.s1155c10f4");
    test_class_info(&lv, &cd_S1155C10);
    dp->~S1155C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C10(Test_S1155C10, "S1155C10", ABISELECT(1152,748));

#else // __cplusplus

extern void _ZN8S1155C10C1Ev();
extern void _ZN8S1155C10D2Ev();
Name_Map name_map_S1155C10[] = {
  NSPAIR(_ZN8S1155C10C1Ev),
  NSPAIR(_ZN8S1155C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C8;
extern VTBL_ENTRY _ZTI7S1155C8[];
extern  VTBL_ENTRY _ZTV7S1155C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C8[];
extern Class_Descriptor cd_S1155C2;
extern VTBL_ENTRY _ZTI7S1155C2[];
extern  VTBL_ENTRY _ZTV7S1155C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C2[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C11;
extern VTBL_ENTRY _ZTI8S1155C11[];
extern  VTBL_ENTRY _ZTV8S1155C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1155C11[];
static Base_Class bases_S1155C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(544,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
    3, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(544,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(544,368), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(688,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(688,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(688,468), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(648,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    8, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(648,444), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(576,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(560,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
    12, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(560,380), //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
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(560,380), //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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(576,392), //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
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(576,392), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(616,416), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(560,380), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(704,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(704,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(944,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(928,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(944,636), //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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(944,636), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(984,660), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(928,624), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(712,484), //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
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(712,484), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(752,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(752,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(752,508), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1155C8,    ABISELECT(704,480), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1155C2,    ABISELECT(544,368), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1155C5,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1155C5,    ABISELECT(1008,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(1008,672), //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
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1155C11,    ABISELECT(1008,672), //bcp->offset
    88, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1155C10[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN8S1155C10D1Ev();
extern void _ZN8S1155C10D0Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY vtc_S1155C10[] = {
  ABISELECT(1008,672),
  ABISELECT(928,624),
  ABISELECT(704,480),
  ABISELECT(688,468),
  ABISELECT(648,444),
  ABISELECT(544,368),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN8S1155C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1155C10D0Ev,
  0,
  0,
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-544,-368),
  ABISELECT(-544,-368),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  ABISELECT(-560,-380),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-576,-392),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-616,-416),
  ABISELECT(-616,-416),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  ABISELECT(-648,-444),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-688,-468),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(-704,-480),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-712,-484),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-752,-508),
  ABISELECT(-752,-508),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-928,-624),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-944,-636),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-984,-660),
  ABISELECT(-984,-660),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  ABISELECT(-1008,-672),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S1155C10[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A12__8S1155C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C2__8S1155C10[] = {
  ABISELECT(384,256),
  ABISELECT(160,112),
  ABISELECT(144,100),
  ABISELECT(104,76),
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C2__8S1155C10[] = {
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C2__8S1155C10[] = {
  ABISELECT(-544,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C77S1155C2__8S1155C10[] = {
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C77S1155C2__A2__8S1155C10[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C77S1155C2__A3__8S1155C10[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C77S1155C2__A1__8S1155C10[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C77S1155C2__A4__8S1155C10[] = {
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C77S1155C2__A1__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C77S1155C2__A5__8S1155C10[] = {
  ABISELECT(-616,-416),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C77S1155C2__8S1155C10[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C77S1155C2__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C77S1155C2__8S1155C10[] = {
  ABISELECT(-616,-416),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C2__8S1155C10[] = {
  0,
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C2__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A__7S1155C2__8S1155C10[] = {
  ABISELECT(128,88),
  ABISELECT(-560,-380),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A1__7S1155C2__8S1155C10[] = {
  ABISELECT(112,76),
  ABISELECT(-576,-392),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A5__7S1155C2__8S1155C10[] = {
  ABISELECT(-616,-416),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__7S1155C2__8S1155C10[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__7S1155C2__8S1155C10[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__7S1155C2__8S1155C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__7S1155C2__8S1155C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__7S1155C2__8S1155C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__7S1155C2__8S1155C10[] = {
  ABISELECT(-752,-508),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__8S1155C10[] = {
  ABISELECT(40,24),
  ABISELECT(-648,-444),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A2__8S1155C10[] = {
  ABISELECT(-648,-444),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__8S1155C10[] = {
  ABISELECT(-688,-468),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A1__8S1155C10[] = {
  ABISELECT(-688,-468),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__8S1155C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C8__A6__8S1155C10[] = {
  ABISELECT(-704,-480),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__8S1155C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C8__A10__8S1155C10[] = {
  ABISELECT(-712,-484),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C8__A3__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__8S1155C10[] = {
  ABISELECT(-752,-508),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C8__A11__8S1155C10[] = {
  ABISELECT(-752,-508),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__7S1155C8__8S1155C10[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__7S1155C8__8S1155C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C8__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__7S1155C8__8S1155C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A1__7S1155C8__8S1155C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C8__8S1155C10[] = {
  ABISELECT(-752,-508),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__8S1155C10[] = {
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C7__A3__8S1155C10[] = {
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C7__A7__8S1155C10[] = {
  ABISELECT(-928,-624),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__8S1155C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C7__A8__8S1155C10[] = {
  ABISELECT(-944,-636),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C7__A2__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__8S1155C10[] = {
  ABISELECT(-984,-660),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7__A1__8S1155C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7__A1__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7__A1__8S1155C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1155C11__8S1155C10[] = {
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C68S1155C11__A4__8S1155C10[] = {
  ABISELECT(-320,-204),
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C68S1155C11__A13__8S1155C10[] = {
  ABISELECT(-1008,-672),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C68S1155C11__A4__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__8S1155C11__8S1155C10[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-704,-480),
  ABISELECT(304,192),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__8S1155C11__8S1155C10[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-928,-624),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__8S1155C11__8S1155C10[] = {
  ABISELECT(-256,-168),
  ABISELECT(-944,-636),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__8S1155C11__8S1155C10[] = {
  0,
  0,
  ABISELECT(-688,-468),
  ABISELECT(320,204),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__8S1155C11__8S1155C10[] = {
  ABISELECT(-984,-660),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A1__8S1155C11__8S1155C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-712,-484),
  ABISELECT(296,188),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A2__8S1155C11__8S1155C10[] = {
  ABISELECT(-752,-508),
  ABISELECT(256,164),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
static  VTT_ENTRY vtt_S1155C10[] = {
  {&(_ZTV8S1155C10[9]),  9,96},
  {&(_tg__ZTV7S1155C5__A12__8S1155C10[3]),  3,4},
  {&(_ZTV8S1155C10[21]),  21,96},
  {&(_ZTV8S1155C10[43]),  43,96},
  {&(_ZTV8S1155C10[49]),  49,96},
  {&(_ZTV8S1155C10[27]),  27,96},
  {&(_ZTV8S1155C10[33]),  33,96},
  {&(_ZTV8S1155C10[37]),  37,96},
  {&(_ZTV8S1155C10[59]),  59,96},
  {&(_ZTV8S1155C10[77]),  77,96},
  {&(_ZTV8S1155C10[83]),  83,96},
  {&(_ZTV8S1155C10[87]),  87,96},
  {&(_ZTV8S1155C10[65]),  65,96},
  {&(_ZTV8S1155C10[69]),  69,96},
  {&(_ZTV8S1155C10[95]),  95,96},
  {&(_tg__ZTV7S1155C2__8S1155C10[7]),  7,9},
  {&(_tg__ZTV7S1155C37S1155C2__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C2__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C77S1155C2__8S1155C10[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C77S1155C2__A2__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C77S1155C2__A3__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C77S1155C2__A1__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C77S1155C2__A4__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C77S1155C2__A1__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C77S1155C2__A5__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C77S1155C2__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C77S1155C2__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C77S1155C2__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C2__8S1155C10[5]),  5,6},
  {&(_tg__ZTV7S1155C3__A1__7S1155C2__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C7__A__7S1155C2__8S1155C10[4]),  4,6},
  {&(_tg__ZTV7S1155C67S1155C7__A1__7S1155C2__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A5__7S1155C2__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C8__7S1155C2__8S1155C10[8]),  8,10},
  {&(_tg__ZTV7S1155C7__A1__7S1155C2__8S1155C10[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__A2__7S1155C2__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A9__7S1155C2__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__7S1155C2__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C37S1155C8__A4__7S1155C2__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C6__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A2__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C3__A1__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A1__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C8__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C8__A6__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C8__A10__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C8__A3__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C37S1155C8__A4__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C8__A11__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C7__7S1155C8__8S1155C10[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__7S1155C8__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C8__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__7S1155C8__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C6__A1__7S1155C8__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A__7S1155C8__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C7__A1__8S1155C10[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C7__A3__8S1155C10[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C7__A7__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C7__A2__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C7__A8__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C7__A2__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A9__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7__A1__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7__A1__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7__A1__8S1155C10[3]),  3,4},
  {&(_tg__ZTV8S1155C11__8S1155C10[6]),  6,7},
  {&(_tg__ZTV7S1155C68S1155C11__A4__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C68S1155C11__A13__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C68S1155C11__A4__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C8__8S1155C11__8S1155C10[8]),  8,10},
  {&(_tg__ZTV7S1155C7__8S1155C11__8S1155C10[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__8S1155C11__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__8S1155C11__8S1155C10[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__8S1155C11__8S1155C10[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A1__8S1155C11__8S1155C10[4]),  4,5},
  {&(_tg__ZTV7S1155C37S1155C8__A2__8S1155C11__8S1155C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S1155C10[];
extern  VTBL_ENTRY _ZTV8S1155C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1155C10[];
Class_Descriptor cd_S1155C10 = {  "S1155C10", // class name
  bases_S1155C10, 38,
  &(vtc_S1155C10[0]), // expected_vtbl_contents
  &(vtt_S1155C10[0]), // expected_vtt_contents
  ABISELECT(1152,748), // object size
  NSPAIRA(_ZTI8S1155C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1155C10),96, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1155C10),78, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1155C12  : S5719C14 , S1155C9 {
  short s1155c12f0;
  int s1155c12f1;
  ::S1155C2 s1155c12f2[5];
  long s1155c12f3;
  long double s1155c12f4;
  virtual  ~S1155C12(); // _ZN8S1155C12D2Ev
  virtual void  v4(); // _ZN8S1155C122v4Ev
  S1155C12(); // tgen
};
//SIG(-1 S1155C12) C1{ BC2{ m FC3{ m FD Fi FC4{}} Fi[2]} BC5{ VBC6{ VBC7{ m} v2} VBC8{ BC7 BC6 v3 Fi[2]} Fi} vd v1 Fs Fi FC9{ BC8 VBC10{ VBC7 VBC8 BC6 Fi[2] Fp[3]} BC11{ BC7 BC8 BC10 BC6 Fi[2]} VBC12{ BC7 BC6 VBC11 BC10 BC8 v4 FC8 Fs Fi[2] Fp[3] FC11} Fc Fs[7]}[5] Fl FD}


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

static void Test_S1155C12()
{
  extern Class_Descriptor cd_S1155C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(151,399)];
    init_test(&cd_S1155C12, buf);
    S1155C12 *dp, &lv = *(dp=new (buf) S1155C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2400,1592), "sizeof(S1155C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1155C12)");
    check_base_class_offset(lv, (S5719C14*), ABISELECT(16,8), "S1155C12");
    /*is_ambiguous_... S1155C12::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), 0, "S1155C12");
    check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), 0, "S1155C12");
    /*is_ambiguous_... S1155C9::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C9*), 0, "S1155C12");
    /*is_ambiguous_... S1155C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(2384,1580), "S1155C12");
    check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(2384,1580), "S1155C12");
    check_base_class_offset(lv, (S1155C3*)(S1155C9*), ABISELECT(2384,1580), "S1155C12");
    check_base_class_offset(lv, (S1155C9*), 0, "S1155C12");
    check_field_offset(lv, s1155c12f0, ABISELECT(64,36), "S1155C12.s1155c12f0");
    check_field_offset(lv, s1155c12f1, ABISELECT(68,40), "S1155C12.s1155c12f1");
    check_field_offset(lv, s1155c12f2, ABISELECT(72,44), "S1155C12.s1155c12f2");
    check_field_offset(lv, s1155c12f3, ABISELECT(2352,1564), "S1155C12.s1155c12f3");
    check_field_offset(lv, s1155c12f4, ABISELECT(2368,1568), "S1155C12.s1155c12f4");
    test_class_info(&lv, &cd_S1155C12);
    dp->~S1155C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C12(Test_S1155C12, "S1155C12", ABISELECT(2400,1592));

#else // __cplusplus

extern void _ZN8S1155C12C1Ev();
extern void _ZN8S1155C12D2Ev();
Name_Map name_map_S1155C12[] = {
  NSPAIR(_ZN8S1155C12C1Ev),
  NSPAIR(_ZN8S1155C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5719C14;
extern VTBL_ENTRY _ZTI8S5719C14[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C9;
extern VTBL_ENTRY _ZTI7S1155C9[];
extern  VTBL_ENTRY _ZTV7S1155C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C9[];
static Base_Class bases_S1155C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5719C14,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1155C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(2384,1580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1155C5,    ABISELECT(2384,1580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(2384,1580), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1155C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1155C12[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN8S1155C12D1Ev();
extern void _ZN8S1155C12D0Ev();
extern void _ZN8S1155C122v4Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY vtc_S1155C12[] = {
  ABISELECT(2384,1580),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1155C12[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN8S1155C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1155C12D0Ev,
  (VTBL_ENTRY)&_ZN8S1155C122v4Ev,
  0,
  0,
  ABISELECT(-2384,-1580),
  ABISELECT(-2384,-1580),
  (VTBL_ENTRY)&(_ZTI8S1155C12[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S1155C12[];
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C9__8S1155C12[] = {
  ABISELECT(2384,1580),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C9[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C9__8S1155C12[] = {
  0,
  0,
  ABISELECT(-2384,-1580),
  ABISELECT(-2384,-1580),
  (VTBL_ENTRY)&(_ZTI7S1155C9[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__8S1155C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__8S1155C12[] = {
  ABISELECT(-2384,-1580),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A1__8S1155C12[] = {
  ABISELECT(-2384,-1580),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
static  VTT_ENTRY vtt_S1155C12[] = {
  {&(_ZTV8S1155C12[6]),  6,17},
  {&(_tg__ZTV7S1155C9__8S1155C12[6]),  6,7},
  {&(_tg__ZTV7S1155C9__8S1155C12[6]),  6,7},
  {&(_tg__ZTV7S1155C3__7S1155C9__8S1155C12[5]),  5,7},
  {&(_ZTV8S1155C12[6]),  6,17},
  {&(_ZTV8S1155C12[15]),  15,17},
  {&(_tg__ZTV7S1155C5__8S1155C12[3]),  3,4},
  {&(_tg__ZTV7S1155C3__8S1155C12[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A1__8S1155C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1155C12[];
extern  VTBL_ENTRY _ZTV8S1155C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1155C12[];
Class_Descriptor cd_S1155C12 = {  "S1155C12", // class name
  bases_S1155C12, 7,
  &(vtc_S1155C12[0]), // expected_vtbl_contents
  &(vtt_S1155C12[0]), // expected_vtt_contents
  ABISELECT(2400,1592), // object size
  NSPAIRA(_ZTI8S1155C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1155C12),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1155C12),9, //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  S1155C1  : S1155C2 , S1155C6 , S1155C9 , S1155C10 {
  ::S1155C12 s1155c1f0;
  void *s1155c1f1;
  int s1155c1f2[2];
  virtual  ~S1155C1(); // _ZN7S1155C1D2Ev
  S1155C1(); // tgen
};
//SIG(1 S1155C1) C1{ BC2{ BC3{ BC4{ m} BC5{ VBC4 v1} v2 Fi[2]} VBC6{ VBC4 VBC3 BC5 Fi[2] Fp[3]} BC7{ BC4 BC3 BC6 BC5 Fi[2]} VBC8{ BC4 BC5 VBC7 BC6 BC3 v3 FC3 Fs Fi[2] Fp[3] FC7} Fc Fs[7]} BC6 BC9{ VBC5 VBC3 Fi} BC10{ VBC4 VBC2 BC5 VBC11{ VBC4 VBC8 BC6 FD Fp[10]} vd Fi FD[12] Fi FC8 Fc} vd FC12{ BC13{ m FC14{ m FD Fi FC15{}} Fi[2]} BC9 vd v4 Fs Fi FC2[5] Fl FD} Fp Fi[2]}


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

static void Test_S1155C1()
{
  extern Class_Descriptor cd_S1155C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(234,616)];
    init_test(&cd_S1155C1, buf);
    S1155C1 *dp, &lv = *(dp=new (buf) S1155C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3728,2460), "sizeof(S1155C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1155C1)");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C2*), 0, "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C8*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C8*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C8*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C8*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C10*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C7*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C10::S1155C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C10*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C11*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C6*)(S1155C11*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C5*)(S1155C6*)(S1155C11*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C2*), 0, "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C2*), 0, "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C8*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*), ABISELECT(3160,2104), "S1155C1");
    check_base_class_offset(lv, (S1155C3*)(S1155C9*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C6*)(S1155C11*), ABISELECT(3160,2104), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C2*), ABISELECT(3120,2080), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*)(S1155C2*), ABISELECT(32,24), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(16,12), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(16,12), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(16,12), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(32,24), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(32,24), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*)(S1155C2*), ABISELECT(72,48), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C7*)(S1155C2*), ABISELECT(16,12), "S1155C1");
    /*is_ambiguous_... S1155C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C8*), ABISELECT(3176,2116), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C8*), ABISELECT(3176,2116), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*), ABISELECT(3416,2272), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*), ABISELECT(3400,2260), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*), ABISELECT(3400,2260), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*), ABISELECT(3400,2260), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*), ABISELECT(3416,2272), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*), ABISELECT(3416,2272), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C7 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*), ABISELECT(3456,2296), "S1155C1");
    check_base_class_offset(lv, (S1155C7*)(S1155C8*), ABISELECT(3400,2260), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C8*), ABISELECT(3184,2120), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C8*), ABISELECT(3184,2120), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C8*), ABISELECT(3224,2144), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C8*), ABISELECT(3224,2144), "S1155C1");
    /*is_ambiguous_... S1155C8::S1155C3 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C8*), ABISELECT(3224,2144), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C8*)(S1155C2*), ABISELECT(3176,2116), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C8*)(S1155C2*), ABISELECT(3176,2116), "S1155C1");
    check_base_class_offset(lv, (S1155C8*)(S1155C11*), ABISELECT(3176,2116), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C2*), 0, "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*), ABISELECT(104,76), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*), ABISELECT(104,76), "S1155C1");
    /*is_ambiguous_... S1155C9::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C9*), ABISELECT(144,100), "S1155C1");
    check_base_class_offset(lv, (S1155C9*), ABISELECT(144,100), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C2*), ABISELECT(3472,2308), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C2*), ABISELECT(3472,2308), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C2*), ABISELECT(3472,2308), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C7*)(S1155C2*), ABISELECT(3504,2332), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(3488,2320), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(3488,2320), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C3*)(S1155C7*)(S1155C2*), ABISELECT(3488,2320), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3504,2332), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C7*)(S1155C2*), ABISELECT(3504,2332), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C7*)(S1155C2*), ABISELECT(3544,2356), "S1155C1");
    /*is_ambiguous_... S1155C1::S1155C2 */ AMB_check_base_class_offset(lv, (S1155C7*)(S1155C2*), ABISELECT(3488,2320), "S1155C1");
    check_base_class_offset(lv, (S1155C2*)(S1155C10*), ABISELECT(3472,2308), "S1155C1");
    /*is_ambiguous_... S1155C10::S1155C5 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C10*), ABISELECT(160,108), "S1155C1");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C5*)(S1155C6*)(S1155C11*), ABISELECT(3584,2384), "S1155C1");
    /*is_ambiguous_... S1155C11::S1155C6 */ AMB_check_base_class_offset(lv, (S1155C6*)(S1155C11*), ABISELECT(3584,2384), "S1155C1");
    check_base_class_offset(lv, (S1155C11*)(S1155C10*), ABISELECT(3584,2384), "S1155C1");
    check_base_class_offset(lv, (S1155C10*), ABISELECT(160,108), "S1155C1");
    check_field_offset(lv, s1155c1f0, ABISELECT(704,476), "S1155C1.s1155c1f0");
    check_field_offset(lv, s1155c1f1, ABISELECT(3104,2068), "S1155C1.s1155c1f1");
    check_field_offset(lv, s1155c1f2, ABISELECT(3112,2072), "S1155C1.s1155c1f2");
    test_class_info(&lv, &cd_S1155C1);
    dp->~S1155C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1155C1(Test_S1155C1, "S1155C1", ABISELECT(3728,2460));

#else // __cplusplus

extern void _ZN7S1155C1C1Ev();
extern void _ZN7S1155C1D2Ev();
Name_Map name_map_S1155C1[] = {
  NSPAIR(_ZN7S1155C1C1Ev),
  NSPAIR(_ZN7S1155C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C8;
extern VTBL_ENTRY _ZTI7S1155C8[];
extern  VTBL_ENTRY _ZTV7S1155C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C8[];
extern Class_Descriptor cd_S1155C2;
extern VTBL_ENTRY _ZTI7S1155C2[];
extern  VTBL_ENTRY _ZTV7S1155C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C2[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C9;
extern VTBL_ENTRY _ZTI7S1155C9[];
extern  VTBL_ENTRY _ZTV7S1155C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C9[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C3;
extern VTBL_ENTRY _ZTI7S1155C3[];
extern  VTBL_ENTRY _ZTV7S1155C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C3[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C7;
extern VTBL_ENTRY _ZTI7S1155C7[];
extern  VTBL_ENTRY _ZTV7S1155C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C7[];
extern Class_Descriptor cd_S1155C2;
extern VTBL_ENTRY _ZTI7S1155C2[];
extern  VTBL_ENTRY _ZTV7S1155C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C2[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C5;
extern VTBL_ENTRY _ZTI7S1155C5[];
extern  VTBL_ENTRY _ZTV7S1155C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C5[];
extern Class_Descriptor cd_S1155C6;
extern VTBL_ENTRY _ZTI7S1155C6[];
extern  VTBL_ENTRY _ZTV7S1155C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C6[];
extern Class_Descriptor cd_S1155C11;
extern VTBL_ENTRY _ZTI8S1155C11[];
extern  VTBL_ENTRY _ZTV8S1155C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1155C11[];
extern Class_Descriptor cd_S1155C10;
extern VTBL_ENTRY _ZTI8S1155C10[];
extern  VTBL_ENTRY _ZTV8S1155C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1155C10[];
static Base_Class bases_S1155C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3120,2080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1155C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1155C3,    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
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3160,2104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(3160,2104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(3160,2104), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(3120,2080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(3120,2080), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S1155C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(32,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(72,48), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3176,2116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(3176,2116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3416,2272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(3400,2260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(3400,2260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(3400,2260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(3416,2272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(3416,2272), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(3456,2296), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(3400,2260), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(3184,2120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(3184,2120), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3224,2144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(3224,2144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(3224,2144), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1155C8,    ABISELECT(3176,2116), //bcp->offset
    66, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1155C2,    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
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1155C5,    ABISELECT(104,76), //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
    39, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(104,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1155C5,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S1155C9,    ABISELECT(144,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(3472,2308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(3472,2308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(3472,2308), //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
    19, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(3504,2332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(3488,2320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1155C5,    ABISELECT(3488,2320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1155C3,    ABISELECT(3488,2320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(3504,2332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(3504,2332), //bcp->offset
    120, //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
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(3544,2356), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1155C7,    ABISELECT(3488,2320), //bcp->offset
    114, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S1155C2,    ABISELECT(3472,2308), //bcp->offset
    103, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S1155C5,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S1155C5,    ABISELECT(3584,2384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S1155C6,    ABISELECT(3584,2384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1155C11,    ABISELECT(3584,2384), //bcp->offset
    129, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S1155C10,    ABISELECT(160,108), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1155C1[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C1D1Ev();
extern void _ZN7S1155C1D0Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void ABISELECT(_ZThn160_N7S1155C1D1Ev,_ZThn108_N7S1155C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S1155C1D0Ev,_ZThn108_N7S1155C1D0Ev)();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY vtc_S1155C1[] = {
  ABISELECT(3584,2384),
  ABISELECT(3472,2308),
  ABISELECT(144,100),
  ABISELECT(3400,2260),
  ABISELECT(3176,2116),
  ABISELECT(3160,2104),
  ABISELECT(3120,2080),
  ABISELECT(3120,2080),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  (VTBL_ENTRY)&_ZN7S1155C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1155C1D0Ev,
  ABISELECT(3144,2092),
  ABISELECT(3104,2068),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(3128,2080),
  ABISELECT(3088,2056),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(3048,2032),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(3056,2028),
  ABISELECT(3016,2004),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(3016,2004),
  0,
  0,
  ABISELECT(2976,1980),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(3424,2276),
  ABISELECT(3240,2152),
  ABISELECT(3016,2008),
  ABISELECT(3000,1996),
  ABISELECT(2960,1972),
  ABISELECT(3312,2200),
  ABISELECT(2960,1972),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S1155C1D1Ev,_ZThn108_N7S1155C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S1155C1D0Ev,_ZThn108_N7S1155C1D0Ev),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-3120,-2080),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3160,-2104),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-3176,-2116),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-3184,-2120),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-104,-64),
  ABISELECT(-3224,-2144),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-3400,-2260),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-3416,-2272),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-336,-216),
  ABISELECT(-3456,-2296),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  0,
  ABISELECT(-72,-48),
  ABISELECT(-296,-192),
  ABISELECT(-312,-204),
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  ABISELECT(-3472,-2308),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  ABISELECT(-3488,-2320),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-3504,-2332),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  ABISELECT(-424,-276),
  ABISELECT(-3544,-2356),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  0,
  ABISELECT(-184,-124),
  ABISELECT(-408,-268),
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  ABISELECT(-3584,-2384),
  (VTBL_ENTRY)&(_ZTI7S1155C1[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S1155C1[];
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C2__A__7S1155C1[] = {
  ABISELECT(3400,2260),
  ABISELECT(3176,2116),
  ABISELECT(3160,2104),
  ABISELECT(3120,2080),
  ABISELECT(3120,2080),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C2__7S1155C1[] = {
  ABISELECT(3120,2080),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C2__7S1155C1[] = {
  ABISELECT(3120,2080),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C77S1155C2__7S1155C1[] = {
  ABISELECT(3144,2092),
  ABISELECT(3104,2068),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C77S1155C2__A2__7S1155C1[] = {
  ABISELECT(3104,2068),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C77S1155C2__A3__7S1155C1[] = {
  ABISELECT(3104,2068),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C77S1155C2__A1__7S1155C1[] = {
  ABISELECT(3128,2080),
  ABISELECT(3088,2056),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C77S1155C2__A4__7S1155C1[] = {
  ABISELECT(3088,2056),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C77S1155C2__A1__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3128,-2080),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C77S1155C2__A5__7S1155C1[] = {
  ABISELECT(3048,2032),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C77S1155C2__7S1155C1[] = {
  ABISELECT(3128,2080),
  ABISELECT(3088,2056),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C77S1155C2__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3144,-2092),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C77S1155C2__7S1155C1[] = {
  ABISELECT(3048,2032),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C2__A__7S1155C1[] = {
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-3120,-2080),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C2__A__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3160,-2104),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A__7S1155C2__A__7S1155C1[] = {
  ABISELECT(3144,2092),
  ABISELECT(3104,2068),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A1__7S1155C2__A__7S1155C1[] = {
  ABISELECT(3128,2080),
  ABISELECT(3088,2056),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A5__7S1155C2__A__7S1155C1[] = {
  ABISELECT(3048,2032),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__7S1155C2__A__7S1155C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-3176,-2116),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__7S1155C2__A__7S1155C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-3400,-2260),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__7S1155C2__A__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-3416,-2272),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__7S1155C2__A__7S1155C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-3456,-2296),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__7S1155C2__A__7S1155C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-3184,-2120),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__7S1155C2__A__7S1155C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-3224,-2144),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A__7S1155C1[] = {
  ABISELECT(3056,2028),
  ABISELECT(3016,2004),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A12__7S1155C1[] = {
  ABISELECT(3016,2004),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__A__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3056,-2028),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C9__7S1155C1[] = {
  ABISELECT(3016,2004),
  0,
  0,
  ABISELECT(2976,1980),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C9[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C9__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3016,-2004),
  (VTBL_ENTRY)&(_ZTI7S1155C9[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN8S1155C10D1Ev();
extern void _ZN8S1155C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1155C10__7S1155C1[] = {
  ABISELECT(3424,2276),
  ABISELECT(3240,2152),
  ABISELECT(3016,2008),
  ABISELECT(3000,1996),
  ABISELECT(2960,1972),
  ABISELECT(3312,2200),
  ABISELECT(2960,1972),
  0,
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN8S1155C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1155C10D0Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C58S1155C10__A18__7S1155C1[] = {
  ABISELECT(2960,1972),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C2__8S1155C10__7S1155C1[] = {
  0,
  0,
  ABISELECT(-72,-48),
  ABISELECT(-296,-192),
  ABISELECT(-312,-204),
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  ABISELECT(-3312,-2200),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__8S1155C10__7S1155C1[] = {
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(-2960,-1972),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__8S1155C10__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-3000,-1996),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C77S1155C2__8S1155C10__7S1155C1[] = {
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  ABISELECT(-3328,-2212),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C77S1155C2__A1__8S1155C10__7S1155C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-3344,-2224),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C77S1155C2__A5__8S1155C10__7S1155C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-3384,-2248),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__8S1155C10__7S1155C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(-3016,-2008),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__8S1155C10__7S1155C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-3240,-2152),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__8S1155C10__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-3256,-2164),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__8S1155C10__7S1155C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-3296,-2188),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__8S1155C10__7S1155C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-3024,-2012),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__8S1155C10__7S1155C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-3064,-2036),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1155C11__8S1155C10__7S1155C1[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-408,-268),
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  ABISELECT(-3424,-2276),
  (VTBL_ENTRY)&(_ZTI8S1155C10[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C1[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C6__A2__7S1155C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C6__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C3__A1__7S1155C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__7S1155C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C8__A6__7S1155C1[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__7S1155C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C8__A10__7S1155C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C8__A3__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__7S1155C1[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C8__A11__7S1155C1[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__7S1155C8__7S1155C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__7S1155C8__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C8__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__7S1155C8__7S1155C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__A1__7S1155C8__7S1155C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A__7S1155C8__7S1155C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1155C8[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__7S1155C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C7__A3__7S1155C1[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C7__A7__7S1155C1[] = {
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C7__A8__7S1155C1[] = {
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C7__A2__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__7S1155C1[] = {
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C7__A1__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C7__A1__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C7__A1__7S1155C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A13__7S1155C1[] = {
  ABISELECT(2976,1980),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-296,-192),
  ABISELECT(-312,-204),
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C2__A5__7S1155C1[] = {
  ABISELECT(-352,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C2__A14__7S1155C1[] = {
  ABISELECT(-352,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C77S1155C2__A2__7S1155C1[] = {
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C77S1155C2__A6__7S1155C1[] = {
  ABISELECT(-368,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C3[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C37S1155C77S1155C2__A15__7S1155C1[] = {
  ABISELECT(-368,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C77S1155C2__A5__7S1155C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C67S1155C77S1155C2__A16__7S1155C1[] = {
  ABISELECT(-384,-252),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C67S1155C77S1155C2__A5__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(344,228),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C77S1155C2__A17__7S1155C1[] = {
  ABISELECT(-424,-276),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C77S1155C2__A2__7S1155C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C77S1155C2__A2__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(328,216),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C5__A3__7S1155C77S1155C2__A2__7S1155C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1155C7[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C6__7S1155C2__A1__7S1155C1[] = {
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(352,228),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__7S1155C2__A1__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-328,-216),
  ABISELECT(-368,-240),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A1__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-344,-228),
  ABISELECT(-384,-252),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A5__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(296,192),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__A1__7S1155C2__A1__7S1155C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__A2__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A9__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A3__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(288,188),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A4__7S1155C2__A1__7S1155C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI7S1155C2[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1155C11__7S1155C1[] = {
  ABISELECT(-184,-124),
  ABISELECT(-408,-268),
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C68S1155C11__A6__7S1155C1[] = {
  ABISELECT(-424,-280),
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C68S1155C11__A19__7S1155C1[] = {
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S1155C5[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__7S1155C68S1155C11__A6__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(424,280),
  (VTBL_ENTRY)&(_ZTI7S1155C6[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C82v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C8__8S1155C11__7S1155C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(224,144),
  ABISELECT(-56,-36),
  ABISELECT(408,268),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C82v3Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C7__8S1155C11__7S1155C1[] = {
  0,
  0,
  ABISELECT(-240,-156),
  ABISELECT(-280,-180),
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C7__8S1155C11__7S1155C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-296,-192),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C3__A1__8S1155C11__7S1155C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(424,280),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C57S1155C7__A4__8S1155C11__7S1155C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C67S1155C8__A1__8S1155C11__7S1155C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(400,264),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
};
extern void _ZN7S1155C52v1Ev();
extern void _ZN7S1155C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S1155C37S1155C8__A2__8S1155C11__7S1155C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(360,240),
  (VTBL_ENTRY)&(_ZTI8S1155C11[0]),
  (VTBL_ENTRY)&_ZN7S1155C52v1Ev,
  (VTBL_ENTRY)&_ZN7S1155C32v2Ev,
};
static  VTT_ENTRY vtt_S1155C1[] = {
  {&(_ZTV7S1155C1[10]),  10,137},
  {&(_tg__ZTV7S1155C2__A__7S1155C1[7]),  7,9},
  {&(_tg__ZTV7S1155C37S1155C2__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C2__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C77S1155C2__7S1155C1[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C77S1155C2__A2__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C77S1155C2__A3__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C77S1155C2__A1__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C77S1155C2__A4__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C77S1155C2__A1__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C77S1155C2__A5__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C77S1155C2__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C77S1155C2__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C77S1155C2__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C2__A__7S1155C1[5]),  5,6},
  {&(_tg__ZTV7S1155C3__A1__7S1155C2__A__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C7__A__7S1155C2__A__7S1155C1[4]),  4,6},
  {&(_tg__ZTV7S1155C67S1155C7__A1__7S1155C2__A__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A5__7S1155C2__A__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C8__7S1155C2__A__7S1155C1[8]),  8,10},
  {&(_tg__ZTV7S1155C7__A1__7S1155C2__A__7S1155C1[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__A2__7S1155C2__A__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A9__7S1155C2__A__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__7S1155C2__A__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C37S1155C8__A4__7S1155C2__A__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C6__A__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A12__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__A__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C9__7S1155C1[6]),  6,7},
  {&(_tg__ZTV7S1155C9__7S1155C1[6]),  6,7},
  {&(_tg__ZTV7S1155C3__7S1155C9__7S1155C1[5]),  5,7},
  {&(_tg__ZTV8S1155C10__7S1155C1[9]),  9,12},
  {&(_tg__ZTV7S1155C58S1155C10__A18__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C2__8S1155C10__7S1155C1[9]),  9,11},
  {&(_tg__ZTV7S1155C6__8S1155C10__7S1155C1[5]),  5,6},
  {&(_tg__ZTV7S1155C3__A1__8S1155C10__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C77S1155C2__8S1155C10__7S1155C1[4]),  4,6},
  {&(_tg__ZTV7S1155C67S1155C77S1155C2__A1__8S1155C10__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C77S1155C2__A5__8S1155C10__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C8__8S1155C10__7S1155C1[8]),  8,10},
  {&(_tg__ZTV7S1155C7__A1__8S1155C10__7S1155C1[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__A2__8S1155C10__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A9__8S1155C10__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__8S1155C10__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C37S1155C8__A4__8S1155C10__7S1155C1[3]),  3,5},
  {&(_tg__ZTV8S1155C11__8S1155C10__7S1155C1[7]),  7,8},
  {&(_ZTV7S1155C1[58]),  58,137},
  {&(_ZTV7S1155C1[64]),  64,137},
  {&(_ZTV7S1155C1[18]),  18,137},
  {&(_ZTV7S1155C1[24]),  24,137},
  {&(_ZTV7S1155C1[28]),  28,137},
  {&(_ZTV7S1155C1[74]),  74,137},
  {&(_ZTV7S1155C1[92]),  92,137},
  {&(_ZTV7S1155C1[98]),  98,137},
  {&(_ZTV7S1155C1[102]),  102,137},
  {&(_ZTV7S1155C1[80]),  80,137},
  {&(_ZTV7S1155C1[84]),  84,137},
  {&(_ZTV7S1155C1[33]),  33,137},
  {&(_ZTV7S1155C1[40]),  40,137},
  {&(_ZTV7S1155C1[40]),  40,137},
  {&(_ZTV7S1155C1[50]),  50,137},
  {&(_ZTV7S1155C1[112]),  112,137},
  {&(_ZTV7S1155C1[118]),  118,137},
  {&(_ZTV7S1155C1[124]),  124,137},
  {&(_ZTV7S1155C1[128]),  128,137},
  {&(_ZTV7S1155C1[136]),  136,137},
  {&(_tg__ZTV7S1155C6__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C6__A2__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C6__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C3__A1__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C3__A1__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C8__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C8__A6__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C8__A10__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C8__A3__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C37S1155C8__A4__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C8__A11__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C7__7S1155C8__7S1155C1[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__7S1155C8__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C8__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__7S1155C8__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C6__A1__7S1155C8__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A__7S1155C8__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C7__A1__7S1155C1[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C7__A3__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C7__A7__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C7__A2__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C7__A8__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C7__A2__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A9__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C7__A1__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C7__A1__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C7__A1__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C5__A13__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C2__A1__7S1155C1[7]),  7,9},
  {&(_tg__ZTV7S1155C37S1155C2__A5__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C2__A14__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C77S1155C2__A2__7S1155C1[4]),  4,6},
  {&(_tg__ZTV7S1155C37S1155C77S1155C2__A6__7S1155C1[3]),  3,5},
  {&(_tg__ZTV7S1155C57S1155C37S1155C77S1155C2__A15__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C77S1155C2__A5__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C67S1155C77S1155C2__A16__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C67S1155C77S1155C2__A5__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C77S1155C2__A17__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C77S1155C2__A2__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__7S1155C77S1155C2__A2__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C5__A3__7S1155C77S1155C2__A2__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C6__7S1155C2__A1__7S1155C1[5]),  5,6},
  {&(_tg__ZTV7S1155C3__A1__7S1155C2__A1__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C7__A__7S1155C2__A1__7S1155C1[4]),  4,6},
  {&(_tg__ZTV7S1155C67S1155C7__A1__7S1155C2__A1__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A5__7S1155C2__A1__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C8__7S1155C2__A1__7S1155C1[8]),  8,10},
  {&(_tg__ZTV7S1155C7__A1__7S1155C2__A1__7S1155C1[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__A2__7S1155C2__A1__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C7__A9__7S1155C2__A1__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A3__7S1155C2__A1__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C37S1155C8__A4__7S1155C2__A1__7S1155C1[3]),  3,5},
  {&(_tg__ZTV8S1155C11__7S1155C1[6]),  6,7},
  {&(_tg__ZTV7S1155C68S1155C11__A6__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C57S1155C68S1155C11__A19__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C3__7S1155C68S1155C11__A6__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C8__8S1155C11__7S1155C1[8]),  8,10},
  {&(_tg__ZTV7S1155C7__8S1155C11__7S1155C1[6]),  6,8},
  {&(_tg__ZTV7S1155C67S1155C7__8S1155C11__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C3__A1__8S1155C11__7S1155C1[5]),  5,7},
  {&(_tg__ZTV7S1155C57S1155C7__A4__8S1155C11__7S1155C1[3]),  3,4},
  {&(_tg__ZTV7S1155C67S1155C8__A1__8S1155C11__7S1155C1[4]),  4,5},
  {&(_tg__ZTV7S1155C37S1155C8__A2__8S1155C11__7S1155C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S1155C1[];
extern  VTBL_ENTRY _ZTV7S1155C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1155C1[];
Class_Descriptor cd_S1155C1 = {  "S1155C1", // class name
  bases_S1155C1, 55,
  &(vtc_S1155C1[0]), // expected_vtbl_contents
  &(vtt_S1155C1[0]), // expected_vtt_contents
  ABISELECT(3728,2460), // object size
  NSPAIRA(_ZTI7S1155C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1155C1),137, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1155C1),130, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19729C5  {
  __tsi64 s19729c5f0[9];
  void *s19729c5f1;
  long double s19729c5f2;
  void *s19729c5f3;
  char s19729c5f4;
  short s19729c5f5[6];
  void *s19729c5f6;
  char s19729c5f7:4;
  void *s19729c5f8;
  virtual void  v1(); // _ZN8S19729C52v1Ev
  virtual void  v2(); // _ZN8S19729C52v2Ev
  ~S19729C5(); // tgen
  S19729C5(); // tgen
};
//SIG(-1 S19729C5) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S19729C5 ::v1(){vfunc_called(this, "_ZN8S19729C52v1Ev");}
void  S19729C5 ::v2(){vfunc_called(this, "_ZN8S19729C52v2Ev");}
S19729C5 ::~S19729C5(){ note_dtor("S19729C5", this);} // tgen
S19729C5 ::S19729C5(){ note_ctor("S19729C5", this);} // tgen

static void Test_S19729C5()
{
  extern Class_Descriptor cd_S19729C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S19729C5, buf);
    S19729C5 *dp, &lv = *(dp=new (buf) S19729C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S19729C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C5)");
    check_field_offset(lv, s19729c5f0, ABISELECT(8,4), "S19729C5.s19729c5f0");
    check_field_offset(lv, s19729c5f1, ABISELECT(80,76), "S19729C5.s19729c5f1");
    check_field_offset(lv, s19729c5f2, ABISELECT(96,80), "S19729C5.s19729c5f2");
    check_field_offset(lv, s19729c5f3, ABISELECT(112,92), "S19729C5.s19729c5f3");
    check_field_offset(lv, s19729c5f4, ABISELECT(120,96), "S19729C5.s19729c5f4");
    check_field_offset(lv, s19729c5f5, ABISELECT(122,98), "S19729C5.s19729c5f5");
    check_field_offset(lv, s19729c5f6, ABISELECT(136,112), "S19729C5.s19729c5f6");
    set_bf_and_test(lv, s19729c5f7, ABISELECT(144,116), 0, 4, 1, "S19729C5");
    set_bf_and_test(lv, s19729c5f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S19729C5");
    check_field_offset(lv, s19729c5f8, ABISELECT(152,120), "S19729C5.s19729c5f8");
    test_class_info(&lv, &cd_S19729C5);
    dp->~S19729C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C5(Test_S19729C5, "S19729C5", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S19729C5C1Ev();
extern void _ZN8S19729C5D1Ev();
Name_Map name_map_S19729C5[] = {
  NSPAIR(_ZN8S19729C5C1Ev),
  NSPAIR(_ZN8S19729C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19729C5[];
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY vtc_S19729C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C5[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
Class_Descriptor cd_S19729C5 = {  "S19729C5", // class name
  0,0,//no base classes
  &(vtc_S19729C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S19729C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19729C5),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  S19729C7  : virtual S1538C9_nt , S19729C5 {
  int s19729c7f0;
  short s19729c7f1[2];
  __tsi64 s19729c7f2;
  ~S19729C7(); // tgen
  S19729C7(); // tgen
};
//SIG(-1 S19729C7) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S19729C7()
{
  extern Class_Descriptor cd_S19729C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S19729C7, buf);
    S19729C7 *dp, &lv = *(dp=new (buf) S19729C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S19729C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S19729C7");
    check_base_class_offset(lv, (S19729C5*), 0, "S19729C7");
    check_field_offset(lv, s19729c7f0, ABISELECT(160,124), "S19729C7.s19729c7f0");
    check_field_offset(lv, s19729c7f1, ABISELECT(164,128), "S19729C7.s19729c7f1");
    check_field_offset(lv, s19729c7f2, ABISELECT(168,132), "S19729C7.s19729c7f2");
    test_class_info(&lv, &cd_S19729C7);
    dp->~S19729C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C7(Test_S19729C7, "S19729C7", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN8S19729C7C1Ev();
extern void _ZN8S19729C7D1Ev();
Name_Map name_map_S19729C7[] = {
  NSPAIR(_ZN8S19729C7C1Ev),
  NSPAIR(_ZN8S19729C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
static Base_Class bases_S19729C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19729C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19729C7[];
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY vtc_S19729C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19729C7[];
static  VTT_ENTRY vtt_S19729C7[] = {
  {&(_ZTV8S19729C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
Class_Descriptor cd_S19729C7 = {  "S19729C7", // class name
  bases_S19729C7, 2,
  &(vtc_S19729C7[0]), // expected_vtbl_contents
  &(vtt_S19729C7[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI8S19729C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19729C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19729C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19729C8  : virtual S1538C9_nt , virtual S19729C7 , virtual S19729C5 {
  __tsi64 s19729c8f0[8];
  void *s19729c8f1[7];
  short s19729c8f2;
  virtual void  v3(); // _ZN8S19729C82v3Ev
  ~S19729C8(); // tgen
  S19729C8(); // tgen
};
//SIG(-1 S19729C8) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S19729C8()
{
  extern Class_Descriptor cd_S19729C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S19729C8, buf);
    S19729C8 *dp, &lv = *(dp=new (buf) S19729C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S19729C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C8)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19729C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C7*), ABISELECT(132,100), "S19729C8");
    check_base_class_offset(lv, (S19729C5*)(S19729C7*), ABISELECT(144,104), "S19729C8");
    check_base_class_offset(lv, (S19729C7*), ABISELECT(144,104), "S19729C8");
    /*is_ambiguous_... S19729C8::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*), ABISELECT(320,244), "S19729C8");
    check_field_offset(lv, s19729c8f0, ABISELECT(8,4), "S19729C8.s19729c8f0");
    check_field_offset(lv, s19729c8f1, ABISELECT(72,68), "S19729C8.s19729c8f1");
    check_field_offset(lv, s19729c8f2, ABISELECT(128,96), "S19729C8.s19729c8f2");
    test_class_info(&lv, &cd_S19729C8);
    dp->~S19729C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C8(Test_S19729C8, "S19729C8", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN8S19729C8C1Ev();
extern void _ZN8S19729C8D1Ev();
Name_Map name_map_S19729C8[] = {
  NSPAIR(_ZN8S19729C8C1Ev),
  NSPAIR(_ZN8S19729C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C7;
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
static Base_Class bases_S19729C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19729C5,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19729C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19729C5,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19729C8[];
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY vtc_S19729C8[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19729C8[];
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
static  VTT_ENTRY vtt_S19729C8[] = {
  {&(_ZTV8S19729C8[5]),  5,19},
  {&(_ZTV8S19729C8[11]),  11,19},
  {&(_ZTV8S19729C8[17]),  17,19},
  {&(_tg__ZTV8S19729C7__8S19729C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
Class_Descriptor cd_S19729C8 = {  "S19729C8", // class name
  bases_S19729C8, 4,
  &(vtc_S19729C8[0]), // expected_vtbl_contents
  &(vtt_S19729C8[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI8S19729C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19729C8),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19729C8),4, //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  S19729C6  : S1538C9_nt , virtual S19729C5 , virtual S19729C7 , S19729C8 {
  ::S7223C13 s19729c6f0;
  __tsi64 s19729c6f1:10;
  int s19729c6f2[9];
  int s19729c6f3;
  virtual void  v4(); // _ZN8S19729C62v4Ev
  virtual void  v5(); // _ZN8S19729C62v5Ev
  ~S19729C6(); // tgen
  S19729C6(); // tgen
};
//SIG(-1 S19729C6) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi}


void  S19729C6 ::v4(){vfunc_called(this, "_ZN8S19729C62v4Ev");}
void  S19729C6 ::v5(){vfunc_called(this, "_ZN8S19729C62v5Ev");}
S19729C6 ::~S19729C6(){ note_dtor("S19729C6", this);} // tgen
S19729C6 ::S19729C6(){ note_ctor("S19729C6", this);} // tgen

static void Test_S19729C6()
{
  extern Class_Descriptor cd_S19729C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S19729C6, buf);
    S19729C6 *dp, &lv = *(dp=new (buf) S19729C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S19729C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C6)");
    /*is_ambiguous_... S19729C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19729C6");
    /*is_ambiguous_... S19729C6::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*), ABISELECT(256,184), "S19729C6");
    /*is_ambiguous_... S19729C8::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*), ABISELECT(256,184), "S19729C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C7*), ABISELECT(592,448), "S19729C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*), ABISELECT(592,448), "S19729C6");
    check_base_class_offset(lv, (S19729C5*)(S19729C7*), ABISELECT(416,308), "S19729C6");
    check_base_class_offset(lv, (S19729C7*), ABISELECT(416,308), "S19729C6");
    check_base_class_offset(lv, (S19729C7*)(S19729C8*), ABISELECT(416,308), "S19729C6");
    check_base_class_offset(lv, (S19729C8*), 0, "S19729C6");
    check_field_offset(lv, s19729c6f0, ABISELECT(136,104), "S19729C6.s19729c6f0");
    set_bf_and_test(lv, s19729c6f1, ABISELECT(208,140), 0, 10, 1, "S19729C6");
    set_bf_and_test(lv, s19729c6f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S19729C6");
    check_field_offset(lv, s19729c6f2, ABISELECT(212,144), "S19729C6.s19729c6f2");
    check_field_offset(lv, s19729c6f3, ABISELECT(248,180), "S19729C6.s19729c6f3");
    test_class_info(&lv, &cd_S19729C6);
    dp->~S19729C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C6(Test_S19729C6, "S19729C6", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S19729C6C1Ev();
extern void _ZN8S19729C6D1Ev();
Name_Map name_map_S19729C6[] = {
  NSPAIR(_ZN8S19729C6C1Ev),
  NSPAIR(_ZN8S19729C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C7;
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
static Base_Class bases_S19729C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19729C5,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S19729C5,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19729C7,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19729C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19729C6[];
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY vtc_S19729C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19729C6[];
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C8__8S19729C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C8__8S19729C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C8__8S19729C6[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C6[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
static  VTT_ENTRY vtt_S19729C6[] = {
  {&(_ZTV8S19729C6[5]),  5,21},
  {&(_tg__ZTV8S19729C8__8S19729C6[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C8__8S19729C6[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C8__8S19729C6[4]),  4,6},
  {&(_ZTV8S19729C6[12]),  12,21},
  {&(_ZTV8S19729C6[19]),  19,21},
  {&(_tg__ZTV8S19729C7__8S19729C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
Class_Descriptor cd_S19729C6 = {  "S19729C6", // class name
  bases_S19729C6, 6,
  &(vtc_S19729C6[0]), // expected_vtbl_contents
  &(vtt_S19729C6[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S19729C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19729C6),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19729C6),7, //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  S19729C10  : virtual S19729C7 , virtual S19729C6 , S19729C8 {
  void *s19729c10f0;
  short s19729c10f1[2];
  long double s19729c10f2[2];
  char s19729c10f3;
  ::S19729C7 s19729c10f4;
  long double s19729c10f5;
  ::S19729C8 s19729c10f6;
  virtual void  v6(); // _ZN9S19729C102v6Ev
  ~S19729C10(); // tgen
  S19729C10(); // tgen
};
//SIG(-1 S19729C10) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S19729C10()
{
  extern Class_Descriptor cd_S19729C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S19729C10, buf);
    S19729C10 *dp, &lv = *(dp=new (buf) S19729C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S19729C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C10)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C7*), ABISELECT(1072,800), "S19729C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*), ABISELECT(1072,800), "S19729C10");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*), ABISELECT(1072,800), "S19729C10");
    check_base_class_offset(lv, (S19729C5*)(S19729C7*), ABISELECT(896,660), "S19729C10");
    check_base_class_offset(lv, (S19729C7*), ABISELECT(896,660), "S19729C10");
    check_base_class_offset(lv, (S19729C7*)(S19729C6*), ABISELECT(896,660), "S19729C10");
    check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*), ABISELECT(896,660), "S19729C10");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*), ABISELECT(896,660), "S19729C10");
    /*is_ambiguous_... S19729C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*), ABISELECT(1212,904), "S19729C10");
    /*is_ambiguous_... S19729C6::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*), ABISELECT(1344,988), "S19729C10");
    /*is_ambiguous_... S19729C8::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*), ABISELECT(1344,988), "S19729C10");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*), ABISELECT(1344,988), "S19729C10");
    check_base_class_offset(lv, (S19729C8*)(S19729C6*), ABISELECT(1080,804), "S19729C10");
    check_base_class_offset(lv, (S19729C6*), ABISELECT(1080,804), "S19729C10");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C8*), 0, "S19729C10");
    check_field_offset(lv, s19729c10f0, ABISELECT(136,100), "S19729C10.s19729c10f0");
    check_field_offset(lv, s19729c10f1, ABISELECT(144,104), "S19729C10.s19729c10f1");
    check_field_offset(lv, s19729c10f2, ABISELECT(160,108), "S19729C10.s19729c10f2");
    check_field_offset(lv, s19729c10f3, ABISELECT(192,132), "S19729C10.s19729c10f3");
    check_field_offset(lv, s19729c10f4, ABISELECT(208,136), "S19729C10.s19729c10f4");
    check_field_offset(lv, s19729c10f5, ABISELECT(400,280), "S19729C10.s19729c10f5");
    check_field_offset(lv, s19729c10f6, ABISELECT(416,292), "S19729C10.s19729c10f6");
    test_class_info(&lv, &cd_S19729C10);
    dp->~S19729C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C10(Test_S19729C10, "S19729C10", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN9S19729C10C1Ev();
extern void _ZN9S19729C10D1Ev();
Name_Map name_map_S19729C10[] = {
  NSPAIR(_ZN9S19729C10C1Ev),
  NSPAIR(_ZN9S19729C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C7;
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
static Base_Class bases_S19729C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19729C5,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19729C7,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19729C5,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19729C8,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19729C6,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19729C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19729C10[];
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY vtc_S19729C10[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern VTBL_ENTRY _ZTV9S19729C10[];
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C8__A1__9S19729C10[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C8__A1__9S19729C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C8__A1__9S19729C10[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__9S19729C10[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__9S19729C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C6__9S19729C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C6__9S19729C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C6__9S19729C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C6__9S19729C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C6__9S19729C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
static  VTT_ENTRY vtt_S19729C10[] = {
  {&(_ZTV9S19729C10[6]),  6,32},
  {&(_tg__ZTV8S19729C8__A1__9S19729C10[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C8__A1__9S19729C10[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C8__A1__9S19729C10[4]),  4,6},
  {&(_ZTV9S19729C10[13]),  13,32},
  {&(_ZTV9S19729C10[23]),  23,32},
  {&(_ZTV9S19729C10[30]),  30,32},
  {&(_tg__ZTV8S19729C7__9S19729C10[3]),  3,5},
  {&(_tg__ZTV8S19729C6__9S19729C10[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C6__9S19729C10[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C6__9S19729C10[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C6__9S19729C10[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C6__9S19729C10[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C6__9S19729C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19729C10[];
extern  VTBL_ENTRY _ZTV9S19729C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19729C10[];
Class_Descriptor cd_S19729C10 = {  "S19729C10", // class name
  bases_S19729C10, 8,
  &(vtc_S19729C10[0]), // expected_vtbl_contents
  &(vtt_S19729C10[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI9S19729C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19729C10),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19729C10),14, //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  S19729C4  : virtual S19729C5 , S19729C6 , virtual S19729C10 {
  int s19729c4f0;
  char s19729c4f1;
  unsigned char s19729c4f2:1;
  virtual void  v7(); // _ZN8S19729C42v7Ev
  ~S19729C4(); // tgen
  S19729C4(); // tgen
};
//SIG(-1 S19729C4) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S19729C4()
{
  extern Class_Descriptor cd_S19729C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S19729C4, buf);
    S19729C4 *dp, &lv = *(dp=new (buf) S19729C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S19729C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C4)");
    /*is_ambiguous_... S19729C4::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*), ABISELECT(272,192), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*), ABISELECT(272,192), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*), ABISELECT(272,192), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*), ABISELECT(272,192), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*), ABISELECT(272,192), "S19729C4");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C10*), ABISELECT(272,192), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*), ABISELECT(132,100), "S19729C4");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C7*), ABISELECT(608,456), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*), ABISELECT(608,456), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*), ABISELECT(608,456), "S19729C4");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C10*), ABISELECT(608,456), "S19729C4");
    check_base_class_offset(lv, (S19729C5*)(S19729C7*), ABISELECT(432,316), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C6*), ABISELECT(432,316), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*), ABISELECT(432,316), "S19729C4");
    check_base_class_offset(lv, (S19729C7*)(S19729C10*), ABISELECT(432,316), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C6*), ABISELECT(432,316), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*), ABISELECT(432,316), "S19729C4");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C10*), ABISELECT(432,316), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C6*), 0, "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C6*), 0, "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*), ABISELECT(1652,1220), "S19729C4");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C6*), ABISELECT(1520,1120), "S19729C4");
    check_base_class_offset(lv, (S19729C6*)(S19729C10*), ABISELECT(1520,1120), "S19729C4");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C10*), ABISELECT(624,460), "S19729C4");
    check_base_class_offset(lv, (S19729C10*), ABISELECT(624,460), "S19729C4");
    check_field_offset(lv, s19729c4f0, ABISELECT(252,184), "S19729C4.s19729c4f0");
    check_field_offset(lv, s19729c4f1, ABISELECT(256,188), "S19729C4.s19729c4f1");
    set_bf_and_test(lv, s19729c4f2, ABISELECT(257,189), 0, 1, 1, "S19729C4");
    test_class_info(&lv, &cd_S19729C4);
    dp->~S19729C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C4(Test_S19729C4, "S19729C4", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN8S19729C4C1Ev();
extern void _ZN8S19729C4D1Ev();
Name_Map name_map_S19729C4[] = {
  NSPAIR(_ZN8S19729C4C1Ev),
  NSPAIR(_ZN8S19729C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C7;
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C10;
extern VTBL_ENTRY _ZTI9S19729C10[];
extern  VTBL_ENTRY _ZTV9S19729C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19729C10[];
static Base_Class bases_S19729C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19729C5,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19729C5,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19729C7,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19729C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19729C6,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19729C8,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19729C6,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19729C8,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19729C10,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19729C4[];
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C42v7Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY vtc_S19729C4[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19729C42v7Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19729C4[];
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A__8S19729C4[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C6__8S19729C4[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C6__8S19729C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C6__8S19729C4[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C6__A__8S19729C4[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C6__A__8S19729C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C4[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19729C10__8S19729C4[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C89S19729C10__A2__8S19729C4[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C89S19729C10__A2__8S19729C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C89S19729C10__A2__8S19729C4[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__9S19729C10__8S19729C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__9S19729C10__8S19729C4[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__9S19729C10__8S19729C4[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A1__8S19729C4[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C6__A1__8S19729C4[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C6__A1__8S19729C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C6__A1__8S19729C4[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C6__A1__8S19729C4[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C6__A1__8S19729C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
static  VTT_ENTRY vtt_S19729C4[] = {
  {&(_ZTV8S19729C4[7]),  7,45},
  {&(_tg__ZTV8S19729C6__A__8S19729C4[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C6__8S19729C4[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C6__8S19729C4[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C6__8S19729C4[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C6__A__8S19729C4[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C6__A__8S19729C4[5]),  5,7},
  {&(_ZTV8S19729C4[15]),  15,45},
  {&(_ZTV8S19729C4[22]),  22,45},
  {&(_ZTV8S19729C4[32]),  32,45},
  {&(_ZTV8S19729C4[42]),  42,45},
  {&(_tg__ZTV8S19729C7__8S19729C4[3]),  3,5},
  {&(_tg__ZTV9S19729C10__8S19729C4[6]),  6,8},
  {&(_tg__ZTV8S19729C89S19729C10__A2__8S19729C4[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C89S19729C10__A2__8S19729C4[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C89S19729C10__A2__8S19729C4[4]),  4,6},
  {&(_tg__ZTV8S19729C7__9S19729C10__8S19729C4[5]),  5,7},
  {&(_tg__ZTV8S19729C6__9S19729C10__8S19729C4[8]),  8,11},
  {&(_tg__ZTV8S19729C5__A1__9S19729C10__8S19729C4[4]),  4,6},
  {&(_tg__ZTV8S19729C6__A1__8S19729C4[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C6__A1__8S19729C4[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C6__A1__8S19729C4[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C6__A1__8S19729C4[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C6__A1__8S19729C4[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C6__A1__8S19729C4[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19729C4[];
extern  VTBL_ENTRY _ZTV8S19729C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C4[];
Class_Descriptor cd_S19729C4 = {  "S19729C4", // class name
  bases_S19729C4, 12,
  &(vtc_S19729C4[0]), // expected_vtbl_contents
  &(vtt_S19729C4[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI8S19729C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19729C4),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19729C4),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19729C3  : virtual S19729C4 {
  ::S19729C4 s19729c3f0;
  short s19729c3f1:5;
  long s19729c3f2;
  virtual  ~S19729C3(); // _ZN8S19729C3D2Ev
  S19729C3(); // tgen
};
//SIG(-1 S19729C3) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S19729C3()
{
  extern Class_Descriptor cd_S19729C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S19729C3, buf);
    S19729C3 *dp, &lv = *(dp=new (buf) S19729C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S19729C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C3)");
    /*is_ambiguous_... S19729C4::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C4*), ABISELECT(2080,1508), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*)(S19729C4*), ABISELECT(2080,1508), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(2080,1508), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*), ABISELECT(2080,1508), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*), ABISELECT(2080,1508), "S19729C3");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C10*), ABISELECT(2080,1508), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*)(S19729C4*), ABISELECT(1940,1416), "S19729C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C7*), ABISELECT(2416,1772), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(2416,1772), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*), ABISELECT(2416,1772), "S19729C3");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C10*), ABISELECT(2416,1772), "S19729C3");
    check_base_class_offset(lv, (S19729C5*)(S19729C7*), ABISELECT(2240,1632), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C6*)(S19729C4*), ABISELECT(2240,1632), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(2240,1632), "S19729C3");
    check_base_class_offset(lv, (S19729C7*)(S19729C10*), ABISELECT(2240,1632), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C6*), ABISELECT(2240,1632), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*), ABISELECT(2240,1632), "S19729C3");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C10*), ABISELECT(2240,1632), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(1808,1316), "S19729C3");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C6*)(S19729C4*), ABISELECT(1808,1316), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*), ABISELECT(3460,2536), "S19729C3");
    /*is_ambiguous_... S19729C3::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C6*), ABISELECT(3328,2436), "S19729C3");
    check_base_class_offset(lv, (S19729C6*)(S19729C10*), ABISELECT(3328,2436), "S19729C3");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C10*), ABISELECT(2432,1776), "S19729C3");
    check_base_class_offset(lv, (S19729C10*)(S19729C4*), ABISELECT(2432,1776), "S19729C3");
    check_base_class_offset(lv, (S19729C4*), ABISELECT(1808,1316), "S19729C3");
    check_field_offset(lv, s19729c3f0, ABISELECT(16,4), "S19729C3.s19729c3f0");
    set_bf_and_test(lv, s19729c3f1, ABISELECT(1792,1308), 0, 5, 1, "S19729C3");
    set_bf_and_test(lv, s19729c3f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S19729C3");
    check_field_offset(lv, s19729c3f2, ABISELECT(1800,1312), "S19729C3.s19729c3f2");
    test_class_info(&lv, &cd_S19729C3);
    dp->~S19729C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C3(Test_S19729C3, "S19729C3", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN8S19729C3C1Ev();
extern void _ZN8S19729C3D2Ev();
Name_Map name_map_S19729C3[] = {
  NSPAIR(_ZN8S19729C3C1Ev),
  NSPAIR(_ZN8S19729C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C7;
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C10;
extern VTBL_ENTRY _ZTI9S19729C10[];
extern  VTBL_ENTRY _ZTV9S19729C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19729C10[];
extern Class_Descriptor cd_S19729C4;
extern VTBL_ENTRY _ZTI8S19729C4[];
extern  VTBL_ENTRY _ZTV8S19729C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C4[];
static Base_Class bases_S19729C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19729C5,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19729C5,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19729C7,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19729C8,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19729C6,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19729C8,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19729C6,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19729C8,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19729C10,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19729C4,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19729C3[];
extern void _ZN8S19729C3D1Ev();
extern void _ZN8S19729C3D0Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C42v7Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY vtc_S19729C3[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19729C3D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19729C42v7Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19729C3[];
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C4__8S19729C3[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19729C42v7Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C68S19729C4__8S19729C3[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C68S19729C4__8S19729C3[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C68S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C68S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C68S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C68S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19729C10__8S19729C4__8S19729C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A1__8S19729C4__8S19729C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C3[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19729C10__8S19729C3[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C89S19729C10__A2__8S19729C3[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C89S19729C10__A2__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C89S19729C10__A2__8S19729C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__9S19729C10__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__9S19729C10__8S19729C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__9S19729C10__8S19729C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A1__8S19729C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C6__A1__8S19729C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C6__A1__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C6__A1__8S19729C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C6__A1__8S19729C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C6__A1__8S19729C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
static  VTT_ENTRY vtt_S19729C3[] = {
  {&(_ZTV8S19729C3[8]),  8,59},
  {&(_ZTV8S19729C3[21]),  21,59},
  {&(_ZTV8S19729C3[29]),  29,59},
  {&(_ZTV8S19729C3[36]),  36,59},
  {&(_ZTV8S19729C3[46]),  46,59},
  {&(_ZTV8S19729C3[56]),  56,59},
  {&(_tg__ZTV8S19729C4__8S19729C3[7]),  7,11},
  {&(_tg__ZTV8S19729C68S19729C4__8S19729C3[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C68S19729C4__8S19729C3[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C68S19729C4__8S19729C3[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C68S19729C4__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C68S19729C4__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C68S19729C4__8S19729C3[5]),  5,7},
  {&(_tg__ZTV8S19729C5__8S19729C4__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C4__8S19729C3[5]),  5,7},
  {&(_tg__ZTV9S19729C10__8S19729C4__8S19729C3[8]),  8,10},
  {&(_tg__ZTV8S19729C6__A1__8S19729C4__8S19729C3[8]),  8,11},
  {&(_tg__ZTV8S19729C7__8S19729C3[3]),  3,5},
  {&(_tg__ZTV9S19729C10__8S19729C3[6]),  6,8},
  {&(_tg__ZTV8S19729C89S19729C10__A2__8S19729C3[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C89S19729C10__A2__8S19729C3[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C89S19729C10__A2__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C7__9S19729C10__8S19729C3[5]),  5,7},
  {&(_tg__ZTV8S19729C6__9S19729C10__8S19729C3[8]),  8,11},
  {&(_tg__ZTV8S19729C5__A1__9S19729C10__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C6__A1__8S19729C3[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C6__A1__8S19729C3[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C6__A1__8S19729C3[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C6__A1__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C6__A1__8S19729C3[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C6__A1__8S19729C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19729C3[];
extern  VTBL_ENTRY _ZTV8S19729C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C3[];
Class_Descriptor cd_S19729C3 = {  "S19729C3", // class name
  bases_S19729C3, 13,
  &(vtc_S19729C3[0]), // expected_vtbl_contents
  &(vtt_S19729C3[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI8S19729C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19729C3),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19729C3),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19729C1  : virtual S1538C9_nt , virtual S19729C3 {
  long double s19729c1f0;
  char s19729c1f1;
  virtual  ~S19729C1(); // _ZN8S19729C1D2Ev
  S19729C1(); // tgen
};
//SIG(1 S19729C1) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC6{ BC2 VBC5 VBC7{ VBC2 BC5 Fi Fs[2] FL} BC8{ VBC2 VBC7 VBC5 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} FL:10 Fi[9] Fi} VBC10{ VBC7 VBC6 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} vd FC4 Fs:5 Fl} vd FD Fc}


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

static void Test_S19729C1()
{
  extern Class_Descriptor cd_S19729C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(227,661)];
    init_test(&cd_S19729C1, buf);
    S19729C1 *dp, &lv = *(dp=new (buf) S19729C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3616,2640), "sizeof(S19729C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19729C1)");
    /*is_ambiguous_... S19729C1::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(36,20), "S19729C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S19729C7*), ABISELECT(36,20), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(36,20), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C6*), ABISELECT(36,20), "S19729C1");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C8*)(S19729C10*), ABISELECT(36,20), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C5 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C4*), ABISELECT(2128,1532), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*)(S19729C4*), ABISELECT(2128,1532), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(2128,1532), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C6*), ABISELECT(2128,1532), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C6*), ABISELECT(2128,1532), "S19729C1");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C5*)(S19729C8*)(S19729C10*), ABISELECT(2128,1532), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*)(S19729C4*), ABISELECT(1988,1440), "S19729C1");
    check_base_class_offset(lv, (S19729C5*)(S19729C7*), ABISELECT(2288,1656), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C6*)(S19729C4*), ABISELECT(2288,1656), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(2288,1656), "S19729C1");
    check_base_class_offset(lv, (S19729C7*)(S19729C10*), ABISELECT(2288,1656), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C6*), ABISELECT(2288,1656), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C6*), ABISELECT(2288,1656), "S19729C1");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C7*)(S19729C8*)(S19729C10*), ABISELECT(2288,1656), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C6*)(S19729C4*), ABISELECT(1856,1340), "S19729C1");
    /*is_ambiguous_... S19729C4::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C6*)(S19729C4*), ABISELECT(1856,1340), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19729C6*), ABISELECT(3492,2556), "S19729C1");
    /*is_ambiguous_... S19729C1::S19729C6 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C6*), ABISELECT(3360,2456), "S19729C1");
    check_base_class_offset(lv, (S19729C6*)(S19729C10*), ABISELECT(3360,2456), "S19729C1");
    /*is_ambiguous_... S19729C10::S19729C8 */ AMB_check_base_class_offset(lv, (S19729C8*)(S19729C10*), ABISELECT(2464,1796), "S19729C1");
    check_base_class_offset(lv, (S19729C10*)(S19729C4*), ABISELECT(2464,1796), "S19729C1");
    check_base_class_offset(lv, (S19729C4*)(S19729C3*), ABISELECT(1856,1340), "S19729C1");
    check_base_class_offset(lv, (S19729C3*), ABISELECT(48,24), "S19729C1");
    check_field_offset(lv, s19729c1f0, ABISELECT(16,4), "S19729C1.s19729c1f0");
    check_field_offset(lv, s19729c1f1, ABISELECT(32,16), "S19729C1.s19729c1f1");
    test_class_info(&lv, &cd_S19729C1);
    dp->~S19729C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19729C1(Test_S19729C1, "S19729C1", ABISELECT(3616,2640));

#else // __cplusplus

extern void _ZN8S19729C1C1Ev();
extern void _ZN8S19729C1D2Ev();
Name_Map name_map_S19729C1[] = {
  NSPAIR(_ZN8S19729C1C1Ev),
  NSPAIR(_ZN8S19729C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C5;
extern VTBL_ENTRY _ZTI8S19729C5[];
extern  VTBL_ENTRY _ZTV8S19729C5[];
extern Class_Descriptor cd_S19729C7;
extern VTBL_ENTRY _ZTI8S19729C7[];
extern  VTBL_ENTRY _ZTV8S19729C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C7[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C6;
extern VTBL_ENTRY _ZTI8S19729C6[];
extern  VTBL_ENTRY _ZTV8S19729C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C6[];
extern Class_Descriptor cd_S19729C8;
extern VTBL_ENTRY _ZTI8S19729C8[];
extern  VTBL_ENTRY _ZTV8S19729C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C8[];
extern Class_Descriptor cd_S19729C10;
extern VTBL_ENTRY _ZTI9S19729C10[];
extern  VTBL_ENTRY _ZTV9S19729C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19729C10[];
extern Class_Descriptor cd_S19729C4;
extern VTBL_ENTRY _ZTI8S19729C4[];
extern  VTBL_ENTRY _ZTV8S19729C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C4[];
extern Class_Descriptor cd_S19729C3;
extern VTBL_ENTRY _ZTI8S19729C3[];
extern  VTBL_ENTRY _ZTV8S19729C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C3[];
static Base_Class bases_S19729C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S19729C5,    ABISELECT(2128,1532), //bcp->offset
    37, //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_S1538C9_nt,    ABISELECT(1988,1440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19729C5,    ABISELECT(2288,1656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19729C7,    ABISELECT(2288,1656), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19729C8,    ABISELECT(1856,1340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19729C6,    ABISELECT(1856,1340), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3492,2556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19729C8,    ABISELECT(3360,2456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19729C6,    ABISELECT(3360,2456), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19729C8,    ABISELECT(2464,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19729C10,    ABISELECT(2464,1796), //bcp->offset
    50, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19729C4,    ABISELECT(1856,1340), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19729C3,    ABISELECT(48,24), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19729C1[];
extern void _ZN8S19729C1D1Ev();
extern void _ZN8S19729C1D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S19729C1D1Ev,_ZTv0_n36_N8S19729C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19729C1D1Ev,_ZThn24_N8S19729C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19729C1D0Ev,_ZTv0_n36_N8S19729C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19729C1D0Ev,_ZThn24_N8S19729C1D0Ev)() __attribute__((weak));
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C42v7Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY vtc_S19729C1[] = {
  ABISELECT(3360,2456),
  ABISELECT(2464,1796),
  ABISELECT(2288,1656),
  ABISELECT(2128,1532),
  ABISELECT(1856,1340),
  ABISELECT(48,24),
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&_ZN8S19729C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19729C1D0Ev,
  ABISELECT(-48,-24),
  ABISELECT(3312,2432),
  ABISELECT(2416,1772),
  ABISELECT(-12,-4),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19729C1D1Ev,_ZTv0_n36_N8S19729C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19729C1D0Ev,_ZTv0_n36_N8S19729C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1504,1116),
  ABISELECT(608,456),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  ABISELECT(-1856,-1340),
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19729C42v7Ev,
  0,
  0,
  ABISELECT(-2128,-1532),
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-2288,-1656),
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  ABISELECT(-2464,-1796),
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-3360,-2456),
  (VTBL_ENTRY)&(_ZTI8S19729C1[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19729C1[];
extern void _ZN8S19729C3D1Ev();
extern void _ZN8S19729C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C3__8S19729C1[] = {
  ABISELECT(3312,2432),
  ABISELECT(2416,1772),
  ABISELECT(-12,-4),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19729C3D0Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C4__8S19729C3__8S19729C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1504,1116),
  ABISELECT(608,456),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19729C42v7Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C3__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C3__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19729C10__8S19729C3__8S19729C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  ABISELECT(-2416,-1772),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A1__8S19729C3__8S19729C1[] = {
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-3312,-2432),
  (VTBL_ENTRY)&(_ZTI8S19729C3[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
extern void _ZN8S19729C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C4__8S19729C1[] = {
  ABISELECT(1504,1116),
  ABISELECT(608,456),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19729C42v7Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C68S19729C4__8S19729C1[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C68S19729C4__8S19729C1[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C68S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C68S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C68S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C68S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19729C10__8S19729C4__8S19729C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  ABISELECT(-608,-456),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A1__8S19729C4__8S19729C1[] = {
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-1504,-1116),
  (VTBL_ENTRY)&(_ZTI8S19729C4[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C1[] = {
  ABISELECT(-2252,-1636),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C7[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN9S19729C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19729C10__8S19729C1[] = {
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19729C102v6Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C89S19729C10__A2__8S19729C1[] = {
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C89S19729C10__A2__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C89S19729C10__A2__8S19729C1[] = {
  0,
  0,
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__9S19729C10__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__9S19729C10__8S19729C1[] = {
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__9S19729C10__8S19729C1[] = {
  0,
  0,
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI9S19729C10[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C82v3Ev();
extern void _ZN8S19729C62v4Ev();
extern void _ZN8S19729C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C6__A1__8S19729C1[] = {
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19729C62v5Ev,
};
extern void _ZN8S19729C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C88S19729C6__A1__8S19729C1[] = {
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C82v3Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C88S19729C6__A1__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(1072,800),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__A1__8S19729C88S19729C6__A1__8S19729C1[] = {
  0,
  0,
  ABISELECT(1232,924),
  (VTBL_ENTRY)&(_ZTI8S19729C8[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C5__8S19729C6__A1__8S19729C1[] = {
  0,
  0,
  ABISELECT(1232,924),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
extern void _ZN8S19729C52v1Ev();
extern void _ZN8S19729C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19729C7__8S19729C6__A1__8S19729C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(1072,800),
  (VTBL_ENTRY)&(_ZTI8S19729C6[0]),
  (VTBL_ENTRY)&_ZN8S19729C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19729C52v2Ev,
};
static  VTT_ENTRY vtt_S19729C1[] = {
  {&(_ZTV8S19729C1[9]),  9,71},
  {&(_ZTV8S19729C1[20]),  20,71},
  {&(_ZTV8S19729C1[33]),  33,71},
  {&(_ZTV8S19729C1[41]),  41,71},
  {&(_ZTV8S19729C1[48]),  48,71},
  {&(_ZTV8S19729C1[58]),  58,71},
  {&(_ZTV8S19729C1[68]),  68,71},
  {&(_tg__ZTV8S19729C3__8S19729C1[8]),  8,10},
  {&(_tg__ZTV8S19729C4__8S19729C3__8S19729C1[11]),  11,15},
  {&(_tg__ZTV8S19729C5__8S19729C3__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C3__8S19729C1[5]),  5,7},
  {&(_tg__ZTV9S19729C10__8S19729C3__8S19729C1[8]),  8,10},
  {&(_tg__ZTV8S19729C6__A1__8S19729C3__8S19729C1[8]),  8,11},
  {&(_tg__ZTV8S19729C4__8S19729C1[7]),  7,11},
  {&(_tg__ZTV8S19729C68S19729C4__8S19729C1[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C68S19729C4__8S19729C1[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C68S19729C4__8S19729C1[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C68S19729C4__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C68S19729C4__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C68S19729C4__8S19729C1[5]),  5,7},
  {&(_tg__ZTV8S19729C5__8S19729C4__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C4__8S19729C1[5]),  5,7},
  {&(_tg__ZTV9S19729C10__8S19729C4__8S19729C1[8]),  8,10},
  {&(_tg__ZTV8S19729C6__A1__8S19729C4__8S19729C1[8]),  8,11},
  {&(_tg__ZTV8S19729C7__8S19729C1[3]),  3,5},
  {&(_tg__ZTV9S19729C10__8S19729C1[6]),  6,8},
  {&(_tg__ZTV8S19729C89S19729C10__A2__8S19729C1[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C89S19729C10__A2__8S19729C1[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C89S19729C10__A2__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C7__9S19729C10__8S19729C1[5]),  5,7},
  {&(_tg__ZTV8S19729C6__9S19729C10__8S19729C1[8]),  8,11},
  {&(_tg__ZTV8S19729C5__A1__9S19729C10__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C6__A1__8S19729C1[5]),  5,8},
  {&(_tg__ZTV8S19729C88S19729C6__A1__8S19729C1[5]),  5,6},
  {&(_tg__ZTV8S19729C7__8S19729C88S19729C6__A1__8S19729C1[5]),  5,7},
  {&(_tg__ZTV8S19729C5__A1__8S19729C88S19729C6__A1__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C5__8S19729C6__A1__8S19729C1[4]),  4,6},
  {&(_tg__ZTV8S19729C7__8S19729C6__A1__8S19729C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19729C1[];
extern  VTBL_ENTRY _ZTV8S19729C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19729C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19729C1D0Ev,_ZTv0_n36_N8S19729C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19729C1D0Ev,_ZThn24_N8S19729C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19729C1D1Ev,_ZTv0_n36_N8S19729C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19729C1D1Ev,_ZThn24_N8S19729C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19729C1 = {  "S19729C1", // class name
  bases_S19729C1, 14,
  &(vtc_S19729C1[0]), // expected_vtbl_contents
  &(vtt_S19729C1[0]), // expected_vtt_contents
  ABISELECT(3616,2640), // object size
  NSPAIRA(_ZTI8S19729C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19729C1),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19729C1),38, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19728C5  {
  __tsi64 s19728c5f0[9];
  void *s19728c5f1;
  long double s19728c5f2;
  void *s19728c5f3;
  char s19728c5f4;
  short s19728c5f5[6];
  void *s19728c5f6;
  char s19728c5f7:4;
  void *s19728c5f8;
  virtual void  v1(); // _ZN8S19728C52v1Ev
  virtual void  v2(); // _ZN8S19728C52v2Ev
  ~S19728C5(); // tgen
  S19728C5(); // tgen
};
//SIG(-1 S19728C5) C1{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp}


void  S19728C5 ::v1(){vfunc_called(this, "_ZN8S19728C52v1Ev");}
void  S19728C5 ::v2(){vfunc_called(this, "_ZN8S19728C52v2Ev");}
S19728C5 ::~S19728C5(){ note_dtor("S19728C5", this);} // tgen
S19728C5 ::S19728C5(){ note_ctor("S19728C5", this);} // tgen

static void Test_S19728C5()
{
  extern Class_Descriptor cd_S19728C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,32)];
    init_test(&cd_S19728C5, buf);
    S19728C5 *dp, &lv = *(dp=new (buf) S19728C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S19728C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C5)");
    check_field_offset(lv, s19728c5f0, ABISELECT(8,4), "S19728C5.s19728c5f0");
    check_field_offset(lv, s19728c5f1, ABISELECT(80,76), "S19728C5.s19728c5f1");
    check_field_offset(lv, s19728c5f2, ABISELECT(96,80), "S19728C5.s19728c5f2");
    check_field_offset(lv, s19728c5f3, ABISELECT(112,92), "S19728C5.s19728c5f3");
    check_field_offset(lv, s19728c5f4, ABISELECT(120,96), "S19728C5.s19728c5f4");
    check_field_offset(lv, s19728c5f5, ABISELECT(122,98), "S19728C5.s19728c5f5");
    check_field_offset(lv, s19728c5f6, ABISELECT(136,112), "S19728C5.s19728c5f6");
    set_bf_and_test(lv, s19728c5f7, ABISELECT(144,116), 0, 4, 1, "S19728C5");
    set_bf_and_test(lv, s19728c5f7, ABISELECT(144,116), 0, 4, hide_sll(1LL<<3), "S19728C5");
    check_field_offset(lv, s19728c5f8, ABISELECT(152,120), "S19728C5.s19728c5f8");
    test_class_info(&lv, &cd_S19728C5);
    dp->~S19728C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C5(Test_S19728C5, "S19728C5", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S19728C5C1Ev();
extern void _ZN8S19728C5D1Ev();
Name_Map name_map_S19728C5[] = {
  NSPAIR(_ZN8S19728C5C1Ev),
  NSPAIR(_ZN8S19728C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19728C5[];
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY vtc_S19728C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C5[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
Class_Descriptor cd_S19728C5 = {  "S19728C5", // class name
  0,0,//no base classes
  &(vtc_S19728C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S19728C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19728C5),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  S19728C7  : virtual S1538C9_nt , S19728C5 {
  int s19728c7f0;
  short s19728c7f1[2];
  __tsi64 s19728c7f2;
  ~S19728C7(); // tgen
  S19728C7(); // tgen
};
//SIG(-1 S19728C7) C1{ VBC2{ m Fi} BC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL}


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

static void Test_S19728C7()
{
  extern Class_Descriptor cd_S19728C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,37)];
    init_test(&cd_S19728C7, buf);
    S19728C7 *dp, &lv = *(dp=new (buf) S19728C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S19728C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(176,140), "S19728C7");
    check_base_class_offset(lv, (S19728C5*), 0, "S19728C7");
    check_field_offset(lv, s19728c7f0, ABISELECT(160,124), "S19728C7.s19728c7f0");
    check_field_offset(lv, s19728c7f1, ABISELECT(164,128), "S19728C7.s19728c7f1");
    check_field_offset(lv, s19728c7f2, ABISELECT(168,132), "S19728C7.s19728c7f2");
    test_class_info(&lv, &cd_S19728C7);
    dp->~S19728C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C7(Test_S19728C7, "S19728C7", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN8S19728C7C1Ev();
extern void _ZN8S19728C7D1Ev();
Name_Map name_map_S19728C7[] = {
  NSPAIR(_ZN8S19728C7C1Ev),
  NSPAIR(_ZN8S19728C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
static Base_Class bases_S19728C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(176,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19728C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19728C7[];
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY vtc_S19728C7[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19728C7[];
static  VTT_ENTRY vtt_S19728C7[] = {
  {&(_ZTV8S19728C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
Class_Descriptor cd_S19728C7 = {  "S19728C7", // class name
  bases_S19728C7, 2,
  &(vtc_S19728C7[0]), // expected_vtbl_contents
  &(vtt_S19728C7[0]), // expected_vtt_contents
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI8S19728C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19728C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19728C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19728C8  : virtual S1538C9_nt , virtual S19728C7 , virtual S19728C5 {
  __tsi64 s19728c8f0[8];
  void *s19728c8f1[7];
  short s19728c8f2;
  virtual void  v3(); // _ZN8S19728C82v3Ev
  ~S19728C8(); // tgen
  S19728C8(); // tgen
};
//SIG(-1 S19728C8) C1{ VBC2{ m Fi} VBC3{ VBC2 BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC4 v1 FL[8] Fp[7] Fs}


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

static void Test_S19728C8()
{
  extern Class_Descriptor cd_S19728C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,93)];
    init_test(&cd_S19728C8, buf);
    S19728C8 *dp, &lv = *(dp=new (buf) S19728C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,368), "sizeof(S19728C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C8)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19728C8");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C7*), ABISELECT(132,100), "S19728C8");
    check_base_class_offset(lv, (S19728C5*)(S19728C7*), ABISELECT(144,104), "S19728C8");
    check_base_class_offset(lv, (S19728C7*), ABISELECT(144,104), "S19728C8");
    /*is_ambiguous_... S19728C8::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*), ABISELECT(320,244), "S19728C8");
    check_field_offset(lv, s19728c8f0, ABISELECT(8,4), "S19728C8.s19728c8f0");
    check_field_offset(lv, s19728c8f1, ABISELECT(72,68), "S19728C8.s19728c8f1");
    check_field_offset(lv, s19728c8f2, ABISELECT(128,96), "S19728C8.s19728c8f2");
    test_class_info(&lv, &cd_S19728C8);
    dp->~S19728C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C8(Test_S19728C8, "S19728C8", ABISELECT(480,368));

#else // __cplusplus

extern void _ZN8S19728C8C1Ev();
extern void _ZN8S19728C8D1Ev();
Name_Map name_map_S19728C8[] = {
  NSPAIR(_ZN8S19728C8C1Ev),
  NSPAIR(_ZN8S19728C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C7;
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
static Base_Class bases_S19728C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 1},
  {&cd_S19728C5,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19728C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19728C5,    ABISELECT(320,244), //bcp->offset
    13, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19728C8[];
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY vtc_S19728C8[] = {
  ABISELECT(320,244),
  ABISELECT(144,104),
  ABISELECT(132,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  0,
  0,
  ABISELECT(-12,-4),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19728C8[];
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
static  VTT_ENTRY vtt_S19728C8[] = {
  {&(_ZTV8S19728C8[5]),  5,19},
  {&(_ZTV8S19728C8[11]),  11,19},
  {&(_ZTV8S19728C8[17]),  17,19},
  {&(_tg__ZTV8S19728C7__8S19728C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
Class_Descriptor cd_S19728C8 = {  "S19728C8", // class name
  bases_S19728C8, 4,
  &(vtc_S19728C8[0]), // expected_vtbl_contents
  &(vtt_S19728C8[0]), // expected_vtt_contents
  ABISELECT(480,368), // object size
  NSPAIRA(_ZTI8S19728C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19728C8),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19728C8),4, //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  S19728C6  : S1538C9_nt , virtual S19728C5 , virtual S19728C7 , S19728C8 {
  ::S7223C13 s19728c6f0;
  int s19728c6f1:10;
  int s19728c6f2[9];
  int s19728c6f3;
  virtual void  v4(); // _ZN8S19728C62v4Ev
  virtual void  v5(); // _ZN8S19728C62v5Ev
  ~S19728C6(); // tgen
  S19728C6(); // tgen
};
//SIG(-1 S19728C6) C1{ BC2{ m Fi} VBC3{ v3 v4 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} VBC4{ VBC2 BC3 Fi Fs[2] FL} BC5{ VBC2 VBC4 VBC3 v5 FL[8] Fp[7] Fs} v1 v2 FU6{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi}


void  S19728C6 ::v4(){vfunc_called(this, "_ZN8S19728C62v4Ev");}
void  S19728C6 ::v5(){vfunc_called(this, "_ZN8S19728C62v5Ev");}
S19728C6 ::~S19728C6(){ note_dtor("S19728C6", this);} // tgen
S19728C6 ::S19728C6(){ note_ctor("S19728C6", this);} // tgen

static void Test_S19728C6()
{
  extern Class_Descriptor cd_S19728C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,114)];
    init_test(&cd_S19728C6, buf);
    S19728C6 *dp, &lv = *(dp=new (buf) S19728C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,452), "sizeof(S19728C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C6)");
    /*is_ambiguous_... S19728C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(132,100), "S19728C6");
    /*is_ambiguous_... S19728C6::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*), ABISELECT(256,184), "S19728C6");
    /*is_ambiguous_... S19728C8::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*), ABISELECT(256,184), "S19728C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C7*), ABISELECT(592,448), "S19728C6");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*), ABISELECT(592,448), "S19728C6");
    check_base_class_offset(lv, (S19728C5*)(S19728C7*), ABISELECT(416,308), "S19728C6");
    check_base_class_offset(lv, (S19728C7*), ABISELECT(416,308), "S19728C6");
    check_base_class_offset(lv, (S19728C7*)(S19728C8*), ABISELECT(416,308), "S19728C6");
    check_base_class_offset(lv, (S19728C8*), 0, "S19728C6");
    check_field_offset(lv, s19728c6f0, ABISELECT(136,104), "S19728C6.s19728c6f0");
    set_bf_and_test(lv, s19728c6f1, ABISELECT(208,140), 0, 10, 1, "S19728C6");
    set_bf_and_test(lv, s19728c6f1, ABISELECT(208,140), 0, 10, hide_sll(1LL<<9), "S19728C6");
    check_field_offset(lv, s19728c6f2, ABISELECT(212,144), "S19728C6.s19728c6f2");
    check_field_offset(lv, s19728c6f3, ABISELECT(248,180), "S19728C6.s19728c6f3");
    test_class_info(&lv, &cd_S19728C6);
    dp->~S19728C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C6(Test_S19728C6, "S19728C6", ABISELECT(608,452));

#else // __cplusplus

extern void _ZN8S19728C6C1Ev();
extern void _ZN8S19728C6D1Ev();
Name_Map name_map_S19728C6[] = {
  NSPAIR(_ZN8S19728C6C1Ev),
  NSPAIR(_ZN8S19728C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C7;
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
static Base_Class bases_S19728C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(132,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19728C5,    ABISELECT(256,184), //bcp->offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(592,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
    4, //immediately_derived
  0, 1},
  {&cd_S19728C5,    ABISELECT(416,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19728C7,    ABISELECT(416,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19728C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19728C6[];
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY vtc_S19728C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19728C6[];
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C8__8S19728C6[] = {
  ABISELECT(256,184),
  ABISELECT(416,308),
  ABISELECT(592,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C8__8S19728C6[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-416,-308),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C8__8S19728C6[] = {
  0,
  0,
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C6[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
static  VTT_ENTRY vtt_S19728C6[] = {
  {&(_ZTV8S19728C6[5]),  5,21},
  {&(_tg__ZTV8S19728C8__8S19728C6[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C8__8S19728C6[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C8__8S19728C6[4]),  4,6},
  {&(_ZTV8S19728C6[12]),  12,21},
  {&(_ZTV8S19728C6[19]),  19,21},
  {&(_tg__ZTV8S19728C7__8S19728C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
Class_Descriptor cd_S19728C6 = {  "S19728C6", // class name
  bases_S19728C6, 6,
  &(vtc_S19728C6[0]), // expected_vtbl_contents
  &(vtt_S19728C6[0]), // expected_vtt_contents
  ABISELECT(608,452), // object size
  NSPAIRA(_ZTI8S19728C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19728C6),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19728C6),7, //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  S19728C10  : virtual S19728C7 , virtual S19728C6 , S19728C8 {
  void *s19728c10f0;
  short s19728c10f1[2];
  long double s19728c10f2[2];
  char s19728c10f3;
  ::S19728C7 s19728c10f4;
  long double s19728c10f5;
  ::S19728C8 s19728c10f6;
  virtual void  v6(); // _ZN9S19728C102v6Ev
  ~S19728C10(); // tgen
  S19728C10(); // tgen
};
//SIG(-1 S19728C10) C1{ VBC2{ VBC3{ m Fi} BC4{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} Fi Fs[2] FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC3 VBC2 VBC4 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} BC6 v1 Fp Fs[2] FD[2] Fc FC2 FD FC6}


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

static void Test_S19728C10()
{
  extern Class_Descriptor cd_S19728C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,279)];
    init_test(&cd_S19728C10, buf);
    S19728C10 *dp, &lv = *(dp=new (buf) S19728C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,1112), "sizeof(S19728C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C10)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C7*), ABISELECT(1072,800), "S19728C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*), ABISELECT(1072,800), "S19728C10");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*), ABISELECT(1072,800), "S19728C10");
    check_base_class_offset(lv, (S19728C5*)(S19728C7*), ABISELECT(896,660), "S19728C10");
    check_base_class_offset(lv, (S19728C7*), ABISELECT(896,660), "S19728C10");
    check_base_class_offset(lv, (S19728C7*)(S19728C6*), ABISELECT(896,660), "S19728C10");
    check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*), ABISELECT(896,660), "S19728C10");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*), ABISELECT(896,660), "S19728C10");
    /*is_ambiguous_... S19728C6::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*), ABISELECT(1212,904), "S19728C10");
    /*is_ambiguous_... S19728C6::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*), ABISELECT(1344,988), "S19728C10");
    /*is_ambiguous_... S19728C8::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*), ABISELECT(1344,988), "S19728C10");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*), ABISELECT(1344,988), "S19728C10");
    check_base_class_offset(lv, (S19728C8*)(S19728C6*), ABISELECT(1080,804), "S19728C10");
    check_base_class_offset(lv, (S19728C6*), ABISELECT(1080,804), "S19728C10");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C8*), 0, "S19728C10");
    check_field_offset(lv, s19728c10f0, ABISELECT(136,100), "S19728C10.s19728c10f0");
    check_field_offset(lv, s19728c10f1, ABISELECT(144,104), "S19728C10.s19728c10f1");
    check_field_offset(lv, s19728c10f2, ABISELECT(160,108), "S19728C10.s19728c10f2");
    check_field_offset(lv, s19728c10f3, ABISELECT(192,132), "S19728C10.s19728c10f3");
    check_field_offset(lv, s19728c10f4, ABISELECT(208,136), "S19728C10.s19728c10f4");
    check_field_offset(lv, s19728c10f5, ABISELECT(400,280), "S19728C10.s19728c10f5");
    check_field_offset(lv, s19728c10f6, ABISELECT(416,292), "S19728C10.s19728c10f6");
    test_class_info(&lv, &cd_S19728C10);
    dp->~S19728C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C10(Test_S19728C10, "S19728C10", ABISELECT(1504,1112));

#else // __cplusplus

extern void _ZN9S19728C10C1Ev();
extern void _ZN9S19728C10D1Ev();
Name_Map name_map_S19728C10[] = {
  NSPAIR(_ZN9S19728C10C1Ev),
  NSPAIR(_ZN9S19728C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C7;
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
static Base_Class bases_S19728C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(1072,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
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19728C5,    ABISELECT(896,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
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19728C7,    ABISELECT(896,660), //bcp->offset
    8, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(1212,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19728C5,    ABISELECT(1344,988), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19728C8,    ABISELECT(1080,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19728C6,    ABISELECT(1080,804), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19728C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19728C10[];
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY vtc_S19728C10[] = {
  ABISELECT(1080,804),
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  0,
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  ABISELECT(-1080,-804),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern VTBL_ENTRY _ZTV9S19728C10[];
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C8__A1__9S19728C10[] = {
  ABISELECT(1344,988),
  ABISELECT(896,660),
  ABISELECT(1072,800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C8__A1__9S19728C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C8__A1__9S19728C10[] = {
  0,
  0,
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__9S19728C10[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__9S19728C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C6__9S19728C10[] = {
  ABISELECT(264,184),
  ABISELECT(-184,-144),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C6__9S19728C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C6__9S19728C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C6__9S19728C10[] = {
  0,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C6__9S19728C10[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(184,144),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
static  VTT_ENTRY vtt_S19728C10[] = {
  {&(_ZTV9S19728C10[6]),  6,32},
  {&(_tg__ZTV8S19728C8__A1__9S19728C10[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C8__A1__9S19728C10[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C8__A1__9S19728C10[4]),  4,6},
  {&(_ZTV9S19728C10[13]),  13,32},
  {&(_ZTV9S19728C10[23]),  23,32},
  {&(_ZTV9S19728C10[30]),  30,32},
  {&(_tg__ZTV8S19728C7__9S19728C10[3]),  3,5},
  {&(_tg__ZTV8S19728C6__9S19728C10[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C6__9S19728C10[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C6__9S19728C10[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C6__9S19728C10[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C6__9S19728C10[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C6__9S19728C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19728C10[];
extern  VTBL_ENTRY _ZTV9S19728C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19728C10[];
Class_Descriptor cd_S19728C10 = {  "S19728C10", // class name
  bases_S19728C10, 8,
  &(vtc_S19728C10[0]), // expected_vtbl_contents
  &(vtt_S19728C10[0]), // expected_vtt_contents
  ABISELECT(1504,1112), // object size
  NSPAIRA(_ZTI9S19728C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19728C10),32, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19728C10),14, //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  S19728C4  : virtual S19728C5 , S19728C6 , virtual S19728C10 {
  int s19728c4f0;
  char s19728c4f1;
  unsigned char s19728c4f2:1;
  virtual void  v7(); // _ZN8S19728C42v7Ev
  ~S19728C4(); // tgen
  S19728C4(); // tgen
};
//SIG(-1 S19728C4) C1{ VBC2{ v2 v3 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC3{ BC4{ m Fi} VBC2 VBC5{ VBC4 BC2 Fi Fs[2] FL} BC6{ VBC4 VBC5 VBC2 v4 FL[8] Fp[7] Fs} v5 v6 FU7{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC8{ VBC5 VBC3 BC6 v7 Fp Fs[2] FD[2] Fc FC5 FD FC6} v1 Fi Fc Fc:1}


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

static void Test_S19728C4()
{
  extern Class_Descriptor cd_S19728C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(112,327)];
    init_test(&cd_S19728C4, buf);
    S19728C4 *dp, &lv = *(dp=new (buf) S19728C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1304), "sizeof(S19728C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C4)");
    /*is_ambiguous_... S19728C4::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*), ABISELECT(272,192), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*), ABISELECT(272,192), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*), ABISELECT(272,192), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*), ABISELECT(272,192), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*), ABISELECT(272,192), "S19728C4");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C10*), ABISELECT(272,192), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*), ABISELECT(132,100), "S19728C4");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C7*), ABISELECT(608,456), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*), ABISELECT(608,456), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*), ABISELECT(608,456), "S19728C4");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C10*), ABISELECT(608,456), "S19728C4");
    check_base_class_offset(lv, (S19728C5*)(S19728C7*), ABISELECT(432,316), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C6*), ABISELECT(432,316), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*), ABISELECT(432,316), "S19728C4");
    check_base_class_offset(lv, (S19728C7*)(S19728C10*), ABISELECT(432,316), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C6*), ABISELECT(432,316), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*), ABISELECT(432,316), "S19728C4");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C10*), ABISELECT(432,316), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C6*), 0, "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C6*), 0, "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*), ABISELECT(1652,1220), "S19728C4");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C6*), ABISELECT(1520,1120), "S19728C4");
    check_base_class_offset(lv, (S19728C6*)(S19728C10*), ABISELECT(1520,1120), "S19728C4");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C10*), ABISELECT(624,460), "S19728C4");
    check_base_class_offset(lv, (S19728C10*), ABISELECT(624,460), "S19728C4");
    check_field_offset(lv, s19728c4f0, ABISELECT(252,184), "S19728C4.s19728c4f0");
    check_field_offset(lv, s19728c4f1, ABISELECT(256,188), "S19728C4.s19728c4f1");
    set_bf_and_test(lv, s19728c4f2, ABISELECT(257,189), 0, 1, 1, "S19728C4");
    test_class_info(&lv, &cd_S19728C4);
    dp->~S19728C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C4(Test_S19728C4, "S19728C4", ABISELECT(1776,1304));

#else // __cplusplus

extern void _ZN8S19728C4C1Ev();
extern void _ZN8S19728C4D1Ev();
Name_Map name_map_S19728C4[] = {
  NSPAIR(_ZN8S19728C4C1Ev),
  NSPAIR(_ZN8S19728C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C7;
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C10;
extern VTBL_ENTRY _ZTI9S19728C10[];
extern  VTBL_ENTRY _ZTV9S19728C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19728C10[];
static Base_Class bases_S19728C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19728C5,    ABISELECT(272,192), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(132,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, 0},
  {&cd_S1538C9_nt,    ABISELECT(608,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
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19728C5,    ABISELECT(432,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19728C7,    ABISELECT(432,316), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19728C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19728C6,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(1652,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19728C8,    ABISELECT(1520,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19728C6,    ABISELECT(1520,1120), //bcp->offset
    34, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19728C8,    ABISELECT(624,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19728C10,    ABISELECT(624,460), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19728C4[];
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C42v7Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY vtc_S19728C4[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19728C42v7Ev,
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19728C4[];
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A__8S19728C4[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C6__8S19728C4[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C6__8S19728C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C6__8S19728C4[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C6__A__8S19728C4[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C6__A__8S19728C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C4[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19728C10__8S19728C4[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C89S19728C10__A2__8S19728C4[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C89S19728C10__A2__8S19728C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C89S19728C10__A2__8S19728C4[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__9S19728C10__8S19728C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__9S19728C10__8S19728C4[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__9S19728C10__8S19728C4[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A1__8S19728C4[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C6__A1__8S19728C4[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C6__A1__8S19728C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C6__A1__8S19728C4[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C6__A1__8S19728C4[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C6__A1__8S19728C4[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
static  VTT_ENTRY vtt_S19728C4[] = {
  {&(_ZTV8S19728C4[7]),  7,45},
  {&(_tg__ZTV8S19728C6__A__8S19728C4[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C6__8S19728C4[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C6__8S19728C4[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C6__8S19728C4[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C6__A__8S19728C4[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C6__A__8S19728C4[5]),  5,7},
  {&(_ZTV8S19728C4[15]),  15,45},
  {&(_ZTV8S19728C4[22]),  22,45},
  {&(_ZTV8S19728C4[32]),  32,45},
  {&(_ZTV8S19728C4[42]),  42,45},
  {&(_tg__ZTV8S19728C7__8S19728C4[3]),  3,5},
  {&(_tg__ZTV9S19728C10__8S19728C4[6]),  6,8},
  {&(_tg__ZTV8S19728C89S19728C10__A2__8S19728C4[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C89S19728C10__A2__8S19728C4[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C89S19728C10__A2__8S19728C4[4]),  4,6},
  {&(_tg__ZTV8S19728C7__9S19728C10__8S19728C4[5]),  5,7},
  {&(_tg__ZTV8S19728C6__9S19728C10__8S19728C4[8]),  8,11},
  {&(_tg__ZTV8S19728C5__A1__9S19728C10__8S19728C4[4]),  4,6},
  {&(_tg__ZTV8S19728C6__A1__8S19728C4[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C6__A1__8S19728C4[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C6__A1__8S19728C4[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C6__A1__8S19728C4[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C6__A1__8S19728C4[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C6__A1__8S19728C4[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19728C4[];
extern  VTBL_ENTRY _ZTV8S19728C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C4[];
Class_Descriptor cd_S19728C4 = {  "S19728C4", // class name
  bases_S19728C4, 12,
  &(vtc_S19728C4[0]), // expected_vtbl_contents
  &(vtt_S19728C4[0]), // expected_vtt_contents
  ABISELECT(1776,1304), // object size
  NSPAIRA(_ZTI8S19728C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19728C4),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19728C4),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19728C3  : virtual S19728C4 {
  ::S19728C4 s19728c3f0;
  short s19728c3f1:5;
  long s19728c3f2;
  virtual  ~S19728C3(); // _ZN8S19728C3D2Ev
  S19728C3(); // tgen
};
//SIG(-1 S19728C3) C1{ VBC2{ VBC3{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC4{ BC5{ m Fi} VBC3 VBC6{ VBC5 BC3 Fi Fs[2] FL} BC7{ VBC5 VBC6 VBC3 v3 FL[8] Fp[7] Fs} v4 v5 FU8{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC9{ VBC6 VBC4 BC7 v6 Fp Fs[2] FD[2] Fc FC6 FD FC7} v7 Fi Fc Fc:1} vd FC2 Fs:5 Fl}


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

static void Test_S19728C3()
{
  extern Class_Descriptor cd_S19728C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(225,656)];
    init_test(&cd_S19728C3, buf);
    S19728C3 *dp, &lv = *(dp=new (buf) S19728C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3584,2620), "sizeof(S19728C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C3)");
    /*is_ambiguous_... S19728C4::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C4*), ABISELECT(2080,1508), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*)(S19728C4*), ABISELECT(2080,1508), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(2080,1508), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*), ABISELECT(2080,1508), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*), ABISELECT(2080,1508), "S19728C3");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C10*), ABISELECT(2080,1508), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*)(S19728C4*), ABISELECT(1940,1416), "S19728C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C7*), ABISELECT(2416,1772), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(2416,1772), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*), ABISELECT(2416,1772), "S19728C3");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C10*), ABISELECT(2416,1772), "S19728C3");
    check_base_class_offset(lv, (S19728C5*)(S19728C7*), ABISELECT(2240,1632), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C6*)(S19728C4*), ABISELECT(2240,1632), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(2240,1632), "S19728C3");
    check_base_class_offset(lv, (S19728C7*)(S19728C10*), ABISELECT(2240,1632), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C6*), ABISELECT(2240,1632), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*), ABISELECT(2240,1632), "S19728C3");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C10*), ABISELECT(2240,1632), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(1808,1316), "S19728C3");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C6*)(S19728C4*), ABISELECT(1808,1316), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*), ABISELECT(3460,2536), "S19728C3");
    /*is_ambiguous_... S19728C3::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C6*), ABISELECT(3328,2436), "S19728C3");
    check_base_class_offset(lv, (S19728C6*)(S19728C10*), ABISELECT(3328,2436), "S19728C3");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C10*), ABISELECT(2432,1776), "S19728C3");
    check_base_class_offset(lv, (S19728C10*)(S19728C4*), ABISELECT(2432,1776), "S19728C3");
    check_base_class_offset(lv, (S19728C4*), ABISELECT(1808,1316), "S19728C3");
    check_field_offset(lv, s19728c3f0, ABISELECT(16,4), "S19728C3.s19728c3f0");
    set_bf_and_test(lv, s19728c3f1, ABISELECT(1792,1308), 0, 5, 1, "S19728C3");
    set_bf_and_test(lv, s19728c3f1, ABISELECT(1792,1308), 0, 5, hide_sll(1LL<<4), "S19728C3");
    check_field_offset(lv, s19728c3f2, ABISELECT(1800,1312), "S19728C3.s19728c3f2");
    test_class_info(&lv, &cd_S19728C3);
    dp->~S19728C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C3(Test_S19728C3, "S19728C3", ABISELECT(3584,2620));

#else // __cplusplus

extern void _ZN8S19728C3C1Ev();
extern void _ZN8S19728C3D2Ev();
Name_Map name_map_S19728C3[] = {
  NSPAIR(_ZN8S19728C3C1Ev),
  NSPAIR(_ZN8S19728C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C7;
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C10;
extern VTBL_ENTRY _ZTI9S19728C10[];
extern  VTBL_ENTRY _ZTV9S19728C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19728C10[];
extern Class_Descriptor cd_S19728C4;
extern VTBL_ENTRY _ZTI8S19728C4[];
extern  VTBL_ENTRY _ZTV8S19728C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C4[];
static Base_Class bases_S19728C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19728C5,    ABISELECT(2080,1508), //bcp->offset
    25, //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_S1538C9_nt,    ABISELECT(1940,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(2416,1772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19728C5,    ABISELECT(2240,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19728C7,    ABISELECT(2240,1632), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19728C8,    ABISELECT(1808,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19728C6,    ABISELECT(1808,1316), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3460,2536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19728C8,    ABISELECT(3328,2436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19728C6,    ABISELECT(3328,2436), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19728C8,    ABISELECT(2432,1776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19728C10,    ABISELECT(2432,1776), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19728C4,    ABISELECT(1808,1316), //bcp->offset
    10, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19728C3[];
extern void _ZN8S19728C3D1Ev();
extern void _ZN8S19728C3D0Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C42v7Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY vtc_S19728C3[] = {
  ABISELECT(3328,2436),
  ABISELECT(2432,1776),
  ABISELECT(2416,1772),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19728C3D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19728C42v7Ev,
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-2432,-1776),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-3328,-2436),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19728C3[];
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C4__8S19728C3[] = {
  ABISELECT(1520,1120),
  ABISELECT(624,460),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19728C42v7Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C68S19728C4__8S19728C3[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C68S19728C4__8S19728C3[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(608,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C68S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C68S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C68S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C68S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19728C10__8S19728C4__8S19728C3[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  ABISELECT(-624,-460),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A1__8S19728C4__8S19728C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-1520,-1120),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C3[] = {
  ABISELECT(176,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19728C10__8S19728C3[] = {
  ABISELECT(896,660),
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C89S19728C10__A2__8S19728C3[] = {
  ABISELECT(-352,-268),
  ABISELECT(-192,-144),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C89S19728C10__A2__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C89S19728C10__A2__8S19728C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__9S19728C10__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(192,144),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__9S19728C10__8S19728C3[] = {
  0,
  0,
  0,
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__9S19728C10__8S19728C3[] = {
  0,
  0,
  ABISELECT(352,268),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A1__8S19728C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C6__A1__8S19728C3[] = {
  ABISELECT(-1248,-928),
  ABISELECT(-1088,-804),
  ABISELECT(-912,-664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C6__A1__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C6__A1__8S19728C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C6__A1__8S19728C3[] = {
  0,
  0,
  ABISELECT(1248,928),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C6__A1__8S19728C3[] = {
  0,
  0,
  ABISELECT(176,140),
  ABISELECT(1088,804),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
static  VTT_ENTRY vtt_S19728C3[] = {
  {&(_ZTV8S19728C3[8]),  8,59},
  {&(_ZTV8S19728C3[21]),  21,59},
  {&(_ZTV8S19728C3[29]),  29,59},
  {&(_ZTV8S19728C3[36]),  36,59},
  {&(_ZTV8S19728C3[46]),  46,59},
  {&(_ZTV8S19728C3[56]),  56,59},
  {&(_tg__ZTV8S19728C4__8S19728C3[7]),  7,11},
  {&(_tg__ZTV8S19728C68S19728C4__8S19728C3[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C68S19728C4__8S19728C3[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C68S19728C4__8S19728C3[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C68S19728C4__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C68S19728C4__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C68S19728C4__8S19728C3[5]),  5,7},
  {&(_tg__ZTV8S19728C5__8S19728C4__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C4__8S19728C3[5]),  5,7},
  {&(_tg__ZTV9S19728C10__8S19728C4__8S19728C3[8]),  8,10},
  {&(_tg__ZTV8S19728C6__A1__8S19728C4__8S19728C3[8]),  8,11},
  {&(_tg__ZTV8S19728C7__8S19728C3[3]),  3,5},
  {&(_tg__ZTV9S19728C10__8S19728C3[6]),  6,8},
  {&(_tg__ZTV8S19728C89S19728C10__A2__8S19728C3[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C89S19728C10__A2__8S19728C3[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C89S19728C10__A2__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C7__9S19728C10__8S19728C3[5]),  5,7},
  {&(_tg__ZTV8S19728C6__9S19728C10__8S19728C3[8]),  8,11},
  {&(_tg__ZTV8S19728C5__A1__9S19728C10__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C6__A1__8S19728C3[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C6__A1__8S19728C3[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C6__A1__8S19728C3[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C6__A1__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C6__A1__8S19728C3[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C6__A1__8S19728C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19728C3[];
extern  VTBL_ENTRY _ZTV8S19728C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C3[];
Class_Descriptor cd_S19728C3 = {  "S19728C3", // class name
  bases_S19728C3, 13,
  &(vtc_S19728C3[0]), // expected_vtbl_contents
  &(vtt_S19728C3[0]), // expected_vtt_contents
  ABISELECT(3584,2620), // object size
  NSPAIRA(_ZTI8S19728C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19728C3),59, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19728C3),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19728C1  : virtual S1538C9_nt , virtual S19728C3 {
  long double s19728c1f0;
  char s19728c1f1;
  virtual  ~S19728C1(); // _ZN8S19728C1D2Ev
  S19728C1(); // tgen
};
//SIG(1 S19728C1) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ v1 v2 FL[9] Fp FD Fp Fc Fs[6] Fp Fc:4 Fp} BC6{ BC2 VBC5 VBC7{ VBC2 BC5 Fi Fs[2] FL} BC8{ VBC2 VBC7 VBC5 v3 FL[8] Fp[7] Fs} v4 v5 FU9{ m Fp[9] Fp Fp[7] FL FL Fc Fi Fc Fp FL} Fi:10 Fi[9] Fi} VBC10{ VBC7 VBC6 BC8 v6 Fp Fs[2] FD[2] Fc FC7 FD FC8} v7 Fi Fc Fc:1} vd FC4 Fs:5 Fl} vd FD Fc}


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

static void Test_S19728C1()
{
  extern Class_Descriptor cd_S19728C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(227,661)];
    init_test(&cd_S19728C1, buf);
    S19728C1 *dp, &lv = *(dp=new (buf) S19728C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3616,2640), "sizeof(S19728C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19728C1)");
    /*is_ambiguous_... S19728C1::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(36,20), "S19728C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S19728C7*), ABISELECT(36,20), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(36,20), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C6*), ABISELECT(36,20), "S19728C1");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C8*)(S19728C10*), ABISELECT(36,20), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C5 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C4*), ABISELECT(2128,1532), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*)(S19728C4*), ABISELECT(2128,1532), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(2128,1532), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C6*), ABISELECT(2128,1532), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C6*), ABISELECT(2128,1532), "S19728C1");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C5*)(S19728C8*)(S19728C10*), ABISELECT(2128,1532), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*)(S19728C4*), ABISELECT(1988,1440), "S19728C1");
    check_base_class_offset(lv, (S19728C5*)(S19728C7*), ABISELECT(2288,1656), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C6*)(S19728C4*), ABISELECT(2288,1656), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(2288,1656), "S19728C1");
    check_base_class_offset(lv, (S19728C7*)(S19728C10*), ABISELECT(2288,1656), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C6*), ABISELECT(2288,1656), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C6*), ABISELECT(2288,1656), "S19728C1");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C7*)(S19728C8*)(S19728C10*), ABISELECT(2288,1656), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C6*)(S19728C4*), ABISELECT(1856,1340), "S19728C1");
    /*is_ambiguous_... S19728C4::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C6*)(S19728C4*), ABISELECT(1856,1340), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19728C6*), ABISELECT(3492,2556), "S19728C1");
    /*is_ambiguous_... S19728C1::S19728C6 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C6*), ABISELECT(3360,2456), "S19728C1");
    check_base_class_offset(lv, (S19728C6*)(S19728C10*), ABISELECT(3360,2456), "S19728C1");
    /*is_ambiguous_... S19728C10::S19728C8 */ AMB_check_base_class_offset(lv, (S19728C8*)(S19728C10*), ABISELECT(2464,1796), "S19728C1");
    check_base_class_offset(lv, (S19728C10*)(S19728C4*), ABISELECT(2464,1796), "S19728C1");
    check_base_class_offset(lv, (S19728C4*)(S19728C3*), ABISELECT(1856,1340), "S19728C1");
    check_base_class_offset(lv, (S19728C3*), ABISELECT(48,24), "S19728C1");
    check_field_offset(lv, s19728c1f0, ABISELECT(16,4), "S19728C1.s19728c1f0");
    check_field_offset(lv, s19728c1f1, ABISELECT(32,16), "S19728C1.s19728c1f1");
    test_class_info(&lv, &cd_S19728C1);
    dp->~S19728C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19728C1(Test_S19728C1, "S19728C1", ABISELECT(3616,2640));

#else // __cplusplus

extern void _ZN8S19728C1C1Ev();
extern void _ZN8S19728C1D2Ev();
Name_Map name_map_S19728C1[] = {
  NSPAIR(_ZN8S19728C1C1Ev),
  NSPAIR(_ZN8S19728C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C5;
extern VTBL_ENTRY _ZTI8S19728C5[];
extern  VTBL_ENTRY _ZTV8S19728C5[];
extern Class_Descriptor cd_S19728C7;
extern VTBL_ENTRY _ZTI8S19728C7[];
extern  VTBL_ENTRY _ZTV8S19728C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C7[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C6;
extern VTBL_ENTRY _ZTI8S19728C6[];
extern  VTBL_ENTRY _ZTV8S19728C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C6[];
extern Class_Descriptor cd_S19728C8;
extern VTBL_ENTRY _ZTI8S19728C8[];
extern  VTBL_ENTRY _ZTV8S19728C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C8[];
extern Class_Descriptor cd_S19728C10;
extern VTBL_ENTRY _ZTI9S19728C10[];
extern  VTBL_ENTRY _ZTV9S19728C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19728C10[];
extern Class_Descriptor cd_S19728C4;
extern VTBL_ENTRY _ZTI8S19728C4[];
extern  VTBL_ENTRY _ZTV8S19728C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C4[];
extern Class_Descriptor cd_S19728C3;
extern VTBL_ENTRY _ZTI8S19728C3[];
extern  VTBL_ENTRY _ZTV8S19728C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C3[];
static Base_Class bases_S19728C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S19728C5,    ABISELECT(2128,1532), //bcp->offset
    37, //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_S1538C9_nt,    ABISELECT(1988,1440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19728C5,    ABISELECT(2288,1656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19728C7,    ABISELECT(2288,1656), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19728C8,    ABISELECT(1856,1340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19728C6,    ABISELECT(1856,1340), //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(3492,2556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19728C8,    ABISELECT(3360,2456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19728C6,    ABISELECT(3360,2456), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19728C8,    ABISELECT(2464,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19728C10,    ABISELECT(2464,1796), //bcp->offset
    50, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19728C4,    ABISELECT(1856,1340), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19728C3,    ABISELECT(48,24), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19728C1[];
extern void _ZN8S19728C1D1Ev();
extern void _ZN8S19728C1D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S19728C1D1Ev,_ZTv0_n36_N8S19728C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19728C1D1Ev,_ZThn24_N8S19728C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19728C1D0Ev,_ZTv0_n36_N8S19728C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19728C1D0Ev,_ZThn24_N8S19728C1D0Ev)() __attribute__((weak));
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C42v7Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY vtc_S19728C1[] = {
  ABISELECT(3360,2456),
  ABISELECT(2464,1796),
  ABISELECT(2288,1656),
  ABISELECT(2128,1532),
  ABISELECT(1856,1340),
  ABISELECT(48,24),
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&_ZN8S19728C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19728C1D0Ev,
  ABISELECT(-48,-24),
  ABISELECT(3312,2432),
  ABISELECT(2416,1772),
  ABISELECT(-12,-4),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19728C1D1Ev,_ZTv0_n36_N8S19728C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19728C1D0Ev,_ZTv0_n36_N8S19728C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(1504,1116),
  ABISELECT(608,456),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  ABISELECT(-1856,-1340),
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19728C42v7Ev,
  0,
  0,
  ABISELECT(-2128,-1532),
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-2288,-1656),
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  ABISELECT(-2464,-1796),
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-3360,-2456),
  (VTBL_ENTRY)&(_ZTI8S19728C1[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19728C1[];
extern void _ZN8S19728C3D1Ev();
extern void _ZN8S19728C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C3__8S19728C1[] = {
  ABISELECT(3312,2432),
  ABISELECT(2416,1772),
  ABISELECT(-12,-4),
  ABISELECT(2240,1632),
  ABISELECT(2080,1508),
  ABISELECT(1808,1316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19728C3D0Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C4__8S19728C3__8S19728C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1504,1116),
  ABISELECT(608,456),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  ABISELECT(-1808,-1316),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19728C42v7Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C3__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2080,-1508),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C3__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-2240,-1632),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19728C10__8S19728C3__8S19728C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  ABISELECT(-2416,-1772),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A1__8S19728C3__8S19728C1[] = {
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-3312,-2432),
  (VTBL_ENTRY)&(_ZTI8S19728C3[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
extern void _ZN8S19728C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C4__8S19728C1[] = {
  ABISELECT(1504,1116),
  ABISELECT(608,456),
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19728C42v7Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C68S19728C4__8S19728C1[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C68S19728C4__8S19728C1[] = {
  ABISELECT(272,192),
  ABISELECT(432,316),
  ABISELECT(-1820,-1320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C68S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C68S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C68S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C68S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19728C10__8S19728C4__8S19728C1[] = {
  0,
  0,
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  ABISELECT(-608,-456),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A1__8S19728C4__8S19728C1[] = {
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-1504,-1116),
  (VTBL_ENTRY)&(_ZTI8S19728C4[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C1[] = {
  ABISELECT(-2252,-1636),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C7[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN9S19728C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19728C10__8S19728C1[] = {
  ABISELECT(896,660),
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN9S19728C102v6Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C89S19728C10__A2__8S19728C1[] = {
  ABISELECT(-336,-264),
  ABISELECT(-176,-140),
  ABISELECT(-2428,-1776),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C89S19728C10__A2__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C89S19728C10__A2__8S19728C1[] = {
  0,
  0,
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__9S19728C10__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__9S19728C10__8S19728C1[] = {
  0,
  0,
  0,
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  ABISELECT(-896,-660),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__9S19728C10__8S19728C1[] = {
  0,
  0,
  ABISELECT(336,264),
  (VTBL_ENTRY)&(_ZTI9S19728C10[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C82v3Ev();
extern void _ZN8S19728C62v4Ev();
extern void _ZN8S19728C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C6__A1__8S19728C1[] = {
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19728C62v5Ev,
};
extern void _ZN8S19728C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C88S19728C6__A1__8S19728C1[] = {
  ABISELECT(-1232,-924),
  ABISELECT(-1072,-800),
  ABISELECT(-3324,-2436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C82v3Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C88S19728C6__A1__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(1072,800),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__A1__8S19728C88S19728C6__A1__8S19728C1[] = {
  0,
  0,
  ABISELECT(1232,924),
  (VTBL_ENTRY)&(_ZTI8S19728C8[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C5__8S19728C6__A1__8S19728C1[] = {
  0,
  0,
  ABISELECT(1232,924),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
extern void _ZN8S19728C52v1Ev();
extern void _ZN8S19728C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19728C7__8S19728C6__A1__8S19728C1[] = {
  0,
  0,
  ABISELECT(-2252,-1636),
  ABISELECT(1072,800),
  (VTBL_ENTRY)&(_ZTI8S19728C6[0]),
  (VTBL_ENTRY)&_ZN8S19728C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19728C52v2Ev,
};
static  VTT_ENTRY vtt_S19728C1[] = {
  {&(_ZTV8S19728C1[9]),  9,71},
  {&(_ZTV8S19728C1[20]),  20,71},
  {&(_ZTV8S19728C1[33]),  33,71},
  {&(_ZTV8S19728C1[41]),  41,71},
  {&(_ZTV8S19728C1[48]),  48,71},
  {&(_ZTV8S19728C1[58]),  58,71},
  {&(_ZTV8S19728C1[68]),  68,71},
  {&(_tg__ZTV8S19728C3__8S19728C1[8]),  8,10},
  {&(_tg__ZTV8S19728C4__8S19728C3__8S19728C1[11]),  11,15},
  {&(_tg__ZTV8S19728C5__8S19728C3__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C3__8S19728C1[5]),  5,7},
  {&(_tg__ZTV9S19728C10__8S19728C3__8S19728C1[8]),  8,10},
  {&(_tg__ZTV8S19728C6__A1__8S19728C3__8S19728C1[8]),  8,11},
  {&(_tg__ZTV8S19728C4__8S19728C1[7]),  7,11},
  {&(_tg__ZTV8S19728C68S19728C4__8S19728C1[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C68S19728C4__8S19728C1[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C68S19728C4__8S19728C1[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C68S19728C4__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C68S19728C4__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C68S19728C4__8S19728C1[5]),  5,7},
  {&(_tg__ZTV8S19728C5__8S19728C4__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C4__8S19728C1[5]),  5,7},
  {&(_tg__ZTV9S19728C10__8S19728C4__8S19728C1[8]),  8,10},
  {&(_tg__ZTV8S19728C6__A1__8S19728C4__8S19728C1[8]),  8,11},
  {&(_tg__ZTV8S19728C7__8S19728C1[3]),  3,5},
  {&(_tg__ZTV9S19728C10__8S19728C1[6]),  6,8},
  {&(_tg__ZTV8S19728C89S19728C10__A2__8S19728C1[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C89S19728C10__A2__8S19728C1[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C89S19728C10__A2__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C7__9S19728C10__8S19728C1[5]),  5,7},
  {&(_tg__ZTV8S19728C6__9S19728C10__8S19728C1[8]),  8,11},
  {&(_tg__ZTV8S19728C5__A1__9S19728C10__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C6__A1__8S19728C1[5]),  5,8},
  {&(_tg__ZTV8S19728C88S19728C6__A1__8S19728C1[5]),  5,6},
  {&(_tg__ZTV8S19728C7__8S19728C88S19728C6__A1__8S19728C1[5]),  5,7},
  {&(_tg__ZTV8S19728C5__A1__8S19728C88S19728C6__A1__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C5__8S19728C6__A1__8S19728C1[4]),  4,6},
  {&(_tg__ZTV8S19728C7__8S19728C6__A1__8S19728C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19728C1[];
extern  VTBL_ENTRY _ZTV8S19728C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19728C1[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19728C1D0Ev,_ZTv0_n36_N8S19728C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19728C1D0Ev,_ZThn24_N8S19728C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19728C1D1Ev,_ZTv0_n36_N8S19728C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19728C1D1Ev,_ZThn24_N8S19728C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19728C1 = {  "S19728C1", // class name
  bases_S19728C1, 14,
  &(vtc_S19728C1[0]), // expected_vtbl_contents
  &(vtt_S19728C1[0]), // expected_vtt_contents
  ABISELECT(3616,2640), // object size
  NSPAIRA(_ZTI8S19728C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19728C1),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19728C1),38, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19427C6  {
  long double s19427c6f0;
  long s19427c6f1;
  virtual void  v8(); // _ZN8S19427C62v8Ev
  virtual void  v9(); // _ZN8S19427C62v9Ev
  virtual void  v10(); // _ZN8S19427C63v10Ev
  virtual void  v11(); // _ZN8S19427C63v11Ev
  virtual void  v12(); // _ZN8S19427C63v12Ev
  virtual void  v13(); // _ZN8S19427C63v13Ev
  ~S19427C6(); // tgen
  S19427C6(); // tgen
};
//SIG(-1 S19427C6) C1{ v1 v2 v3 v4 v5 v6 FD Fl}


void  S19427C6 ::v8(){vfunc_called(this, "_ZN8S19427C62v8Ev");}
void  S19427C6 ::v9(){vfunc_called(this, "_ZN8S19427C62v9Ev");}
void  S19427C6 ::v10(){vfunc_called(this, "_ZN8S19427C63v10Ev");}
void  S19427C6 ::v11(){vfunc_called(this, "_ZN8S19427C63v11Ev");}
void  S19427C6 ::v12(){vfunc_called(this, "_ZN8S19427C63v12Ev");}
void  S19427C6 ::v13(){vfunc_called(this, "_ZN8S19427C63v13Ev");}
S19427C6 ::~S19427C6(){ note_dtor("S19427C6", this);} // tgen
S19427C6 ::S19427C6(){ note_ctor("S19427C6", this);} // tgen

static void Test_S19427C6()
{
  extern Class_Descriptor cd_S19427C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19427C6, buf);
    S19427C6 *dp, &lv = *(dp=new (buf) S19427C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19427C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C6)");
    check_field_offset(lv, s19427c6f0, ABISELECT(16,4), "S19427C6.s19427c6f0");
    check_field_offset(lv, s19427c6f1, ABISELECT(32,16), "S19427C6.s19427c6f1");
    test_class_info(&lv, &cd_S19427C6);
    dp->~S19427C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C6(Test_S19427C6, "S19427C6", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19427C6C1Ev();
extern void _ZN8S19427C6D1Ev();
Name_Map name_map_S19427C6[] = {
  NSPAIR(_ZN8S19427C6C1Ev),
  NSPAIR(_ZN8S19427C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19427C6[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
static  VTBL_ENTRY vtc_S19427C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C6[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
};
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
Class_Descriptor cd_S19427C6 = {  "S19427C6", // class name
  0,0,//no base classes
  &(vtc_S19427C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19427C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19427C6),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  S19427C5  : S19427C6 {
  int s19427c5f0;
  virtual void  v14(); // _ZN8S19427C53v14Ev
  virtual void  v15(); // _ZN8S19427C53v15Ev
  virtual void  v16(); // _ZN8S19427C53v16Ev
  virtual void  v17(); // _ZN8S19427C53v17Ev
  virtual void  v18(); // _ZN8S19427C53v18Ev
  virtual void  v19(); // _ZN8S19427C53v19Ev
  virtual void  v20(); // _ZN8S19427C53v20Ev
  ~S19427C5(); // tgen
  S19427C5(); // tgen
};
//SIG(-1 S19427C5) C1{ BC2{ v8 v9 v10 v11 v12 v13 FD Fl} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S19427C5 ::v14(){vfunc_called(this, "_ZN8S19427C53v14Ev");}
void  S19427C5 ::v15(){vfunc_called(this, "_ZN8S19427C53v15Ev");}
void  S19427C5 ::v16(){vfunc_called(this, "_ZN8S19427C53v16Ev");}
void  S19427C5 ::v17(){vfunc_called(this, "_ZN8S19427C53v17Ev");}
void  S19427C5 ::v18(){vfunc_called(this, "_ZN8S19427C53v18Ev");}
void  S19427C5 ::v19(){vfunc_called(this, "_ZN8S19427C53v19Ev");}
void  S19427C5 ::v20(){vfunc_called(this, "_ZN8S19427C53v20Ev");}
S19427C5 ::~S19427C5(){ note_dtor("S19427C5", this);} // tgen
S19427C5 ::S19427C5(){ note_ctor("S19427C5", this);} // tgen

static void Test_S19427C5()
{
  extern Class_Descriptor cd_S19427C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19427C5, buf);
    S19427C5 *dp, &lv = *(dp=new (buf) S19427C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19427C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C5)");
    check_base_class_offset(lv, (S19427C6*), 0, "S19427C5");
    check_field_offset(lv, s19427c5f0, ABISELECT(40,20), "S19427C5.s19427c5f0");
    test_class_info(&lv, &cd_S19427C5);
    dp->~S19427C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C5(Test_S19427C5, "S19427C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19427C5C1Ev();
extern void _ZN8S19427C5D1Ev();
Name_Map name_map_S19427C5[] = {
  NSPAIR(_ZN8S19427C5C1Ev),
  NSPAIR(_ZN8S19427C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
static Base_Class bases_S19427C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19427C5[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY vtc_S19427C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C5[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
Class_Descriptor cd_S19427C5 = {  "S19427C5", // class name
  bases_S19427C5, 1,
  &(vtc_S19427C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19427C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19427C5),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  S19427C4  : S19427C5 {
  __tsi64 s19427c4f0[2];
  ::S19427C6 s19427c4f1;
  virtual  ~S19427C4(); // _ZN8S19427C4D1Ev
  virtual void  v28(); // _ZN8S19427C43v28Ev
  virtual void  v29(); // _ZN8S19427C43v29Ev
  virtual void  v30(); // _ZN8S19427C43v30Ev
  virtual void  v31(); // _ZN8S19427C43v31Ev
  S19427C4(); // tgen
};
//SIG(-1 S19427C4) C1{ BC2{ BC3{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v1 v2 v3 v4 FL[2] FC3}


 S19427C4 ::~S19427C4(){ note_dtor("S19427C4", this);}
void  S19427C4 ::v28(){vfunc_called(this, "_ZN8S19427C43v28Ev");}
void  S19427C4 ::v29(){vfunc_called(this, "_ZN8S19427C43v29Ev");}
void  S19427C4 ::v30(){vfunc_called(this, "_ZN8S19427C43v30Ev");}
void  S19427C4 ::v31(){vfunc_called(this, "_ZN8S19427C43v31Ev");}
S19427C4 ::S19427C4(){ note_ctor("S19427C4", this);} // tgen

static void Test_S19427C4()
{
  extern Class_Descriptor cd_S19427C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S19427C4, buf);
    S19427C4 *dp, &lv = *(dp=new (buf) S19427C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19427C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C4)");
    check_base_class_offset(lv, (S19427C6*)(S19427C5*), 0, "S19427C4");
    check_base_class_offset(lv, (S19427C5*), 0, "S19427C4");
    check_field_offset(lv, s19427c4f0, ABISELECT(48,24), "S19427C4.s19427c4f0");
    check_field_offset(lv, s19427c4f1, ABISELECT(64,40), "S19427C4.s19427c4f1");
    test_class_info(&lv, &cd_S19427C4);
    dp->~S19427C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C4(Test_S19427C4, "S19427C4", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S19427C4C1Ev();
extern void _ZN8S19427C4D1Ev();
Name_Map name_map_S19427C4[] = {
  NSPAIR(_ZN8S19427C4C1Ev),
  NSPAIR(_ZN8S19427C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
static Base_Class bases_S19427C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19427C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI8S19427C4[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void _ZN8S19427C4D1Ev();
extern void _ZN8S19427C4D0Ev();
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY vtc_S19427C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C4[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19427C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
extern VTBL_ENTRY _ZTI8S19427C4[];
extern  VTBL_ENTRY _ZTV8S19427C4[];
Class_Descriptor cd_S19427C4 = {  "S19427C4", // class name
  bases_S19427C4, 2,
  &(vtc_S19427C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S19427C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19427C4),21, //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  S19427C8  : virtual S19427C5 , S19427C6 {
  virtual void  v21(); // _ZN8S19427C83v21Ev
  virtual void  v22(); // _ZN8S19427C83v22Ev
  virtual void  v23(); // _ZN8S19427C83v23Ev
  virtual void  v24(); // _ZN8S19427C83v24Ev
  virtual void  v25(); // _ZN8S19427C83v25Ev
  virtual void  v26(); // _ZN8S19427C83v26Ev
  virtual void  v27(); // _ZN8S19427C83v27Ev
  ~S19427C8(); // tgen
  S19427C8(); // tgen
};
//SIG(-1 S19427C8) C1{ VBC2{ BC3{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} BC3 v1 v2 v3 v4 v5 v6 v7}


void  S19427C8 ::v21(){vfunc_called(this, "_ZN8S19427C83v21Ev");}
void  S19427C8 ::v22(){vfunc_called(this, "_ZN8S19427C83v22Ev");}
void  S19427C8 ::v23(){vfunc_called(this, "_ZN8S19427C83v23Ev");}
void  S19427C8 ::v24(){vfunc_called(this, "_ZN8S19427C83v24Ev");}
void  S19427C8 ::v25(){vfunc_called(this, "_ZN8S19427C83v25Ev");}
void  S19427C8 ::v26(){vfunc_called(this, "_ZN8S19427C83v26Ev");}
void  S19427C8 ::v27(){vfunc_called(this, "_ZN8S19427C83v27Ev");}
S19427C8 ::~S19427C8(){ note_dtor("S19427C8", this);} // tgen
S19427C8 ::S19427C8(){ note_ctor("S19427C8", this);} // tgen

static void Test_S19427C8()
{
  extern Class_Descriptor cd_S19427C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19427C8, buf);
    S19427C8 *dp, &lv = *(dp=new (buf) S19427C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S19427C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C8)");
    check_base_class_offset(lv, (S19427C6*)(S19427C5*), ABISELECT(48,20), "S19427C8");
    check_base_class_offset(lv, (S19427C5*), ABISELECT(48,20), "S19427C8");
    /*is_ambiguous_... S19427C8::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*), 0, "S19427C8");
    test_class_info(&lv, &cd_S19427C8);
    dp->~S19427C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C8(Test_S19427C8, "S19427C8", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN8S19427C8C1Ev();
extern void _ZN8S19427C8D1Ev();
Name_Map name_map_S19427C8[] = {
  NSPAIR(_ZN8S19427C8C1Ev),
  NSPAIR(_ZN8S19427C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
static Base_Class bases_S19427C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(48,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19427C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S19427C8[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY vtc_S19427C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern VTBL_ENTRY _ZTV8S19427C8[];
static  VTT_ENTRY vtt_S19427C8[] = {
  {&(_ZTV8S19427C8[3]),  3,44},
  {&(_ZTV8S19427C8[31]),  31,44},
};
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
Class_Descriptor cd_S19427C8 = {  "S19427C8", // class name
  bases_S19427C8, 3,
  &(vtc_S19427C8[0]), // expected_vtbl_contents
  &(vtt_S19427C8[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI8S19427C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19427C8),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19427C8),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  S19427C7  : S19427C6 , virtual S19427C5 , S19427C8 , virtual S19427C4 {
  virtual void  v32(); // _ZN8S19427C73v32Ev
  ~S19427C7(); // tgen
  S19427C7(); // tgen
};
//SIG(-1 S19427C7) C1{ BC2{ v2 v3 v4 v5 v6 v7 FD Fl} VBC3{ BC2 v8 v9 v10 v11 v12 v13 v14 Fi} BC4{ VBC3 BC2 v15 v16 v17 v18 v19 v20 v21} VBC5{ BC3 vd v22 v23 v24 v25 FL[2] FC2} v1}


void  S19427C7 ::v32(){vfunc_called(this, "_ZN8S19427C73v32Ev");}
S19427C7 ::~S19427C7(){ note_dtor("S19427C7", this);} // tgen
S19427C7 ::S19427C7(){ note_ctor("S19427C7", this);} // tgen

static void Test_S19427C7()
{
  extern Class_Descriptor cd_S19427C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,32)];
    init_test(&cd_S19427C7, buf);
    S19427C7 *dp, &lv = *(dp=new (buf) S19427C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,124), "sizeof(S19427C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C7)");
    /*is_ambiguous_... S19427C7::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*), 0, "S19427C7");
    /*is_ambiguous_... S19427C7::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C5*), ABISELECT(96,40), "S19427C7");
    /*is_ambiguous_... S19427C7::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C5*), ABISELECT(96,40), "S19427C7");
    check_base_class_offset(lv, (S19427C5*)(S19427C8*), ABISELECT(96,40), "S19427C7");
    /*is_ambiguous_... S19427C8::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*), ABISELECT(48,20), "S19427C7");
    check_base_class_offset(lv, (S19427C8*), ABISELECT(48,20), "S19427C7");
    check_base_class_offset(lv, (S19427C6*)(S19427C5*)(S19427C4*), ABISELECT(144,64), "S19427C7");
    check_base_class_offset(lv, (S19427C5*)(S19427C4*), ABISELECT(144,64), "S19427C7");
    check_base_class_offset(lv, (S19427C4*), ABISELECT(144,64), "S19427C7");
    test_class_info(&lv, &cd_S19427C7);
    dp->~S19427C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C7(Test_S19427C7, "S19427C7", ABISELECT(256,124));

#else // __cplusplus

extern void _ZN8S19427C7C1Ev();
extern void _ZN8S19427C7D1Ev();
Name_Map name_map_S19427C7[] = {
  NSPAIR(_ZN8S19427C7C1Ev),
  NSPAIR(_ZN8S19427C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C4;
extern VTBL_ENTRY _ZTI8S19427C4[];
extern  VTBL_ENTRY _ZTV8S19427C4[];
static Base_Class bases_S19427C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19427C6,    ABISELECT(96,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
    2, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(96,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    15, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19427C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19427C8,    ABISELECT(48,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19427C6,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(144,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19427C4,    ABISELECT(144,64), //bcp->offset
    57, //bcp->virtual_function_table_offset
    20, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19427C7[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void _ZN8S19427C7D1Ev();
extern void _ZN8S19427C7D0Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev)();
extern void ABISELECT(_ZThn144_N8S19427C7D1Ev,_ZThn64_N8S19427C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev)();
extern void ABISELECT(_ZThn144_N8S19427C7D0Ev,_ZThn64_N8S19427C7D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY vtc_S19427C7[] = {
  ABISELECT(144,64),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D0Ev,
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
extern VTBL_ENTRY _ZTV8S19427C7[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C8__8S19427C7[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C8__8S19427C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
static  VTT_ENTRY vtt_S19427C7[] = {
  {&(_ZTV8S19427C7[4]),  4,96},
  {&(_tg__ZTV8S19427C8__8S19427C7[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C8__8S19427C7[15]),  15,28},
  {&(_ZTV8S19427C7[44]),  44,96},
  {&(_ZTV8S19427C7[16]),  16,96},
  {&(_ZTV8S19427C7[77]),  77,96},
};
extern VTBL_ENTRY _ZTI8S19427C7[];
extern  VTBL_ENTRY _ZTV8S19427C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C7[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19427C7D0Ev,_ZThn64_N8S19427C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19427C7D1Ev,_ZThn64_N8S19427C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19427C7 = {  "S19427C7", // class name
  bases_S19427C7, 8,
  &(vtc_S19427C7[0]), // expected_vtbl_contents
  &(vtt_S19427C7[0]), // expected_vtt_contents
  ABISELECT(256,124), // object size
  NSPAIRA(_ZTI8S19427C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19427C7),96, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19427C7),6, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19427C3  : virtual S19427C4 , virtual S19427C7 , S19427C8 , S19427C6 {
  ::S19427C6 s19427c3f0;
  void *s19427c3f1;
  virtual void  v33(); // _ZN8S19427C33v33Ev
  virtual void  v34(); // _ZN8S19427C33v34Ev
  virtual void  v35(); // _ZN8S19427C33v35Ev
  virtual void  v36(); // _ZN8S19427C33v36Ev
  virtual void  v37(); // _ZN8S19427C33v37Ev
  virtual void  v38(); // _ZN8S19427C33v38Ev
  virtual void  v39(); // _ZN8S19427C33v39Ev
  ~S19427C3(); // tgen
  S19427C3(); // tgen
};
//SIG(-1 S19427C3) C1{ VBC2{ BC3{ BC4{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} vd v21 v22 v23 v24 FL[2] FC4} VBC5{ BC4 VBC3 BC6{ VBC3 BC4 v25 v26 v27 v28 v29 v30 v31} VBC2 v32} BC6 BC4 v1 v2 v3 v4 v5 v6 v7 FC4 Fp}


void  S19427C3 ::v33(){vfunc_called(this, "_ZN8S19427C33v33Ev");}
void  S19427C3 ::v34(){vfunc_called(this, "_ZN8S19427C33v34Ev");}
void  S19427C3 ::v35(){vfunc_called(this, "_ZN8S19427C33v35Ev");}
void  S19427C3 ::v36(){vfunc_called(this, "_ZN8S19427C33v36Ev");}
void  S19427C3 ::v37(){vfunc_called(this, "_ZN8S19427C33v37Ev");}
void  S19427C3 ::v38(){vfunc_called(this, "_ZN8S19427C33v38Ev");}
void  S19427C3 ::v39(){vfunc_called(this, "_ZN8S19427C33v39Ev");}
S19427C3 ::~S19427C3(){ note_dtor("S19427C3", this);} // tgen
S19427C3 ::S19427C3(){ note_ctor("S19427C3", this);} // tgen

static void Test_S19427C3()
{
  extern Class_Descriptor cd_S19427C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,48)];
    init_test(&cd_S19427C3, buf);
    S19427C3 *dp, &lv = *(dp=new (buf) S19427C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,188), "sizeof(S19427C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C3)");
    check_base_class_offset(lv, (S19427C6*)(S19427C5*)(S19427C4*), ABISELECT(160,64), "S19427C3");
    check_base_class_offset(lv, (S19427C5*)(S19427C4*), ABISELECT(160,64), "S19427C3");
    check_base_class_offset(lv, (S19427C4*), ABISELECT(160,64), "S19427C3");
    check_base_class_offset(lv, (S19427C4*)(S19427C7*), ABISELECT(160,64), "S19427C3");
    /*is_ambiguous_... S19427C7::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C7*), ABISELECT(272,124), "S19427C3");
    /*is_ambiguous_... S19427C3::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C5*), ABISELECT(368,164), "S19427C3");
    /*is_ambiguous_... S19427C7::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C5*)(S19427C7*), ABISELECT(368,164), "S19427C3");
    check_base_class_offset(lv, (S19427C5*)(S19427C8*)(S19427C7*), ABISELECT(368,164), "S19427C3");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C5*)(S19427C8*), ABISELECT(368,164), "S19427C3");
    /*is_ambiguous_... S19427C8::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*)(S19427C7*), ABISELECT(320,144), "S19427C3");
    check_base_class_offset(lv, (S19427C8*)(S19427C7*), ABISELECT(320,144), "S19427C3");
    check_base_class_offset(lv, (S19427C7*), ABISELECT(272,124), "S19427C3");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*), 0, "S19427C3");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C8*), 0, "S19427C3");
    /*is_ambiguous_... S19427C3::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*), ABISELECT(48,20), "S19427C3");
    check_field_offset(lv, s19427c3f0, ABISELECT(96,40), "S19427C3.s19427c3f0");
    check_field_offset(lv, s19427c3f1, ABISELECT(144,60), "S19427C3.s19427c3f1");
    test_class_info(&lv, &cd_S19427C3);
    dp->~S19427C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C3(Test_S19427C3, "S19427C3", ABISELECT(416,188));

#else // __cplusplus

extern void _ZN8S19427C3C1Ev();
extern void _ZN8S19427C3D1Ev();
Name_Map name_map_S19427C3[] = {
  NSPAIR(_ZN8S19427C3C1Ev),
  NSPAIR(_ZN8S19427C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C4;
extern VTBL_ENTRY _ZTI8S19427C4[];
extern  VTBL_ENTRY _ZTV8S19427C4[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C7;
extern VTBL_ENTRY _ZTI8S19427C7[];
extern  VTBL_ENTRY _ZTV8S19427C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C7[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
static Base_Class bases_S19427C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    ABISELECT(160,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(160,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19427C4,    ABISELECT(160,64), //bcp->offset
    35, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19427C6,    ABISELECT(272,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19427C6,    ABISELECT(368,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(368,164), //bcp->offset
    118, //bcp->virtual_function_table_offset
    15, //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, 1},
  {&cd_S19427C6,    ABISELECT(320,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19427C8,    ABISELECT(320,144), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19427C7,    ABISELECT(272,124), //bcp->offset
    74, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19427C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19427C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19427C6,    ABISELECT(48,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19427C3[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C33v33Ev();
extern void _ZN8S19427C33v34Ev();
extern void _ZN8S19427C33v35Ev();
extern void _ZN8S19427C33v36Ev();
extern void _ZN8S19427C33v37Ev();
extern void _ZN8S19427C33v38Ev();
extern void _ZN8S19427C33v39Ev();
extern void _ZN8S19427C3D1Ev();
extern void _ZN8S19427C3D0Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19427C3D1Ev,_ZThn64_N8S19427C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19427C3D0Ev,_ZThn64_N8S19427C3D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev)();
extern void ABISELECT(_ZThn272_N8S19427C3D1Ev,_ZThn124_N8S19427C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev)();
extern void ABISELECT(_ZThn272_N8S19427C3D0Ev,_ZThn124_N8S19427C3D0Ev)() __attribute__((weak));
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY vtc_S19427C3[] = {
  ABISELECT(272,124),
  ABISELECT(160,64),
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v35Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v36Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v37Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v38Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v39Ev,
  (VTBL_ENTRY)&_ZN8S19427C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C3D0Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-124),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev),
  ABISELECT(48,20),
  ABISELECT(-320,-144),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern VTBL_ENTRY _ZTV8S19427C3[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C8__A1__8S19427C3[] = {
  ABISELECT(368,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C8__A1__8S19427C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void _ZN8S19427C7D1Ev();
extern void _ZN8S19427C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C7__8S19427C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D0Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C7__8S19427C3[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C88S19427C7__8S19427C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C7__8S19427C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C8__8S19427C7__8S19427C3[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev)();
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C4__8S19427C7__8S19427C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
static  VTT_ENTRY vtt_S19427C3[] = {
  {&(_ZTV8S19427C3[5]),  5,146},
  {&(_tg__ZTV8S19427C8__A1__8S19427C3[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C8__A1__8S19427C3[15]),  15,28},
  {&(_ZTV8S19427C3[55]),  55,146},
  {&(_ZTV8S19427C3[93]),  93,146},
  {&(_ZTV8S19427C3[133]),  133,146},
  {&(_ZTV8S19427C3[105]),  105,146},
  {&(_tg__ZTV8S19427C7__8S19427C3[4]),  4,13},
  {&(_tg__ZTV8S19427C88S19427C7__8S19427C3[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C88S19427C7__8S19427C3[15]),  15,28},
  {&(_tg__ZTV8S19427C5__8S19427C7__8S19427C3[15]),  15,28},
  {&(_tg__ZTV8S19427C8__8S19427C7__8S19427C3[3]),  3,16},
  {&(_tg__ZTV8S19427C4__8S19427C7__8S19427C3[20]),  20,39},
};
extern VTBL_ENTRY _ZTI8S19427C3[];
extern  VTBL_ENTRY _ZTV8S19427C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C3[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C3D0Ev,_ZThn124_N8S19427C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C3D1Ev,_ZThn124_N8S19427C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C3D0Ev,_ZThn64_N8S19427C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C3D1Ev,_ZThn64_N8S19427C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19427C3 = {  "S19427C3", // class name
  bases_S19427C3, 12,
  &(vtc_S19427C3[0]), // expected_vtbl_contents
  &(vtt_S19427C3[0]), // expected_vtt_contents
  ABISELECT(416,188), // object size
  NSPAIRA(_ZTI8S19427C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19427C3),146, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19427C3),13, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19427C2  : S19427C3 {
  int s19427c2f0;
  ::S7223C9_nt s19427c2f1;
  virtual void  v40(); // _ZN8S19427C23v40Ev
  virtual void  v41(); // _ZN8S19427C23v41Ev
  virtual void  v42(); // _ZN8S19427C23v42Ev
  virtual void  v43(); // _ZN8S19427C23v43Ev
  ~S19427C2(); // tgen
  S19427C2(); // tgen
};
//SIG(-1 S19427C2) C1{ BC2{ VBC3{ BC4{ BC5{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v18 v19 v20 v21 FL[2] FC5} VBC6{ BC5 VBC4 BC7{ VBC4 BC5 v22 v23 v24 v25 v26 v27 v28} VBC3 v29} BC7 BC5 v30 v31 v32 v33 v34 v35 v36 FC5 Fp} v1 v2 v3 v4 Fi FC8{}}


void  S19427C2 ::v40(){vfunc_called(this, "_ZN8S19427C23v40Ev");}
void  S19427C2 ::v41(){vfunc_called(this, "_ZN8S19427C23v41Ev");}
void  S19427C2 ::v42(){vfunc_called(this, "_ZN8S19427C23v42Ev");}
void  S19427C2 ::v43(){vfunc_called(this, "_ZN8S19427C23v43Ev");}
S19427C2 ::~S19427C2(){ note_dtor("S19427C2", this);} // tgen
S19427C2 ::S19427C2(){ note_ctor("S19427C2", this);} // tgen

static void Test_S19427C2()
{
  extern Class_Descriptor cd_S19427C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,50)];
    init_test(&cd_S19427C2, buf);
    S19427C2 *dp, &lv = *(dp=new (buf) S19427C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,196), "sizeof(S19427C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C2)");
    check_base_class_offset(lv, (S19427C6*)(S19427C5*)(S19427C4*), ABISELECT(160,72), "S19427C2");
    check_base_class_offset(lv, (S19427C5*)(S19427C4*), ABISELECT(160,72), "S19427C2");
    check_base_class_offset(lv, (S19427C4*)(S19427C3*), ABISELECT(160,72), "S19427C2");
    check_base_class_offset(lv, (S19427C4*)(S19427C7*), ABISELECT(160,72), "S19427C2");
    /*is_ambiguous_... S19427C7::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C7*), ABISELECT(272,132), "S19427C2");
    /*is_ambiguous_... S19427C2::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C5*), ABISELECT(368,172), "S19427C2");
    /*is_ambiguous_... S19427C7::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C5*)(S19427C7*), ABISELECT(368,172), "S19427C2");
    check_base_class_offset(lv, (S19427C5*)(S19427C8*)(S19427C7*), ABISELECT(368,172), "S19427C2");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C5*)(S19427C8*)(S19427C3*), ABISELECT(368,172), "S19427C2");
    /*is_ambiguous_... S19427C8::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*)(S19427C7*), ABISELECT(320,152), "S19427C2");
    check_base_class_offset(lv, (S19427C8*)(S19427C7*), ABISELECT(320,152), "S19427C2");
    check_base_class_offset(lv, (S19427C7*)(S19427C3*), ABISELECT(272,132), "S19427C2");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*)(S19427C3*), 0, "S19427C2");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C8*)(S19427C3*), 0, "S19427C2");
    /*is_ambiguous_... S19427C3::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C3*), ABISELECT(48,20), "S19427C2");
    check_base_class_offset(lv, (S19427C3*), 0, "S19427C2");
    check_field_offset(lv, s19427c2f0, ABISELECT(152,64), "S19427C2.s19427c2f0");
    check_field_offset(lv, s19427c2f1, ABISELECT(156,68), "S19427C2.s19427c2f1");
    test_class_info(&lv, &cd_S19427C2);
    dp->~S19427C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C2(Test_S19427C2, "S19427C2", ABISELECT(416,196));

#else // __cplusplus

extern void _ZN8S19427C2C1Ev();
extern void _ZN8S19427C2D1Ev();
Name_Map name_map_S19427C2[] = {
  NSPAIR(_ZN8S19427C2C1Ev),
  NSPAIR(_ZN8S19427C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C4;
extern VTBL_ENTRY _ZTI8S19427C4[];
extern  VTBL_ENTRY _ZTV8S19427C4[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C7;
extern VTBL_ENTRY _ZTI8S19427C7[];
extern  VTBL_ENTRY _ZTV8S19427C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C7[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C3;
extern VTBL_ENTRY _ZTI8S19427C3[];
extern  VTBL_ENTRY _ZTV8S19427C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C3[];
static Base_Class bases_S19427C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    ABISELECT(160,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(160,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19427C4,    ABISELECT(160,72), //bcp->offset
    39, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19427C6,    ABISELECT(272,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19427C6,    ABISELECT(368,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(368,172), //bcp->offset
    122, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19427C6,    ABISELECT(320,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19427C8,    ABISELECT(320,152), //bcp->offset
    106, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19427C7,    ABISELECT(272,132), //bcp->offset
    78, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19427C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19427C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19427C6,    ABISELECT(48,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19427C3,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19427C2[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C33v33Ev();
extern void _ZN8S19427C33v34Ev();
extern void _ZN8S19427C33v35Ev();
extern void _ZN8S19427C33v36Ev();
extern void _ZN8S19427C33v37Ev();
extern void _ZN8S19427C33v38Ev();
extern void _ZN8S19427C33v39Ev();
extern void _ZN8S19427C2D1Ev();
extern void _ZN8S19427C2D0Ev();
extern void _ZN8S19427C23v40Ev();
extern void _ZN8S19427C23v41Ev();
extern void _ZN8S19427C23v42Ev();
extern void _ZN8S19427C23v43Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C2D1Ev,_ZTv0_n64_N8S19427C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19427C2D1Ev,_ZThn72_N8S19427C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C2D0Ev,_ZTv0_n64_N8S19427C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19427C2D0Ev,_ZThn72_N8S19427C2D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void ABISELECT(_ZTv0_n96_N8S19427C2D1Ev,_ZTv0_n48_N8S19427C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S19427C2D1Ev,_ZThn132_N8S19427C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19427C2D0Ev,_ZTv0_n48_N8S19427C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S19427C2D0Ev,_ZThn132_N8S19427C2D0Ev)() __attribute__((weak));
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY vtc_S19427C2[] = {
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v35Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v36Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v37Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v38Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v39Ev,
  (VTBL_ENTRY)&_ZN8S19427C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v40Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v41Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v42Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v43Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C2D1Ev,_ZTv0_n64_N8S19427C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C2D0Ev,_ZTv0_n64_N8S19427C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C2D1Ev,_ZTv0_n48_N8S19427C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C2D0Ev,_ZTv0_n48_N8S19427C2D0Ev),
  ABISELECT(48,20),
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern VTBL_ENTRY _ZTV8S19427C2[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C33v33Ev();
extern void _ZN8S19427C33v34Ev();
extern void _ZN8S19427C33v35Ev();
extern void _ZN8S19427C33v36Ev();
extern void _ZN8S19427C33v37Ev();
extern void _ZN8S19427C33v38Ev();
extern void _ZN8S19427C33v39Ev();
extern void _ZN8S19427C3D1Ev();
extern void _ZN8S19427C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C3__8S19427C2[] = {
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v35Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v36Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v37Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v38Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v39Ev,
  (VTBL_ENTRY)&_ZN8S19427C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C3D0Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C3__A1__8S19427C2[] = {
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C88S19427C3__A1__8S19427C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19427C3D1Ev,_ZThn72_N8S19427C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19427C3D0Ev,_ZThn72_N8S19427C3D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C4__8S19427C3__8S19427C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev)();
extern void ABISELECT(_ZThn272_N8S19427C3D1Ev,_ZThn132_N8S19427C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev)();
extern void ABISELECT(_ZThn272_N8S19427C3D0Ev,_ZThn132_N8S19427C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19427C7__8S19427C3__8S19427C2[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev),
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__A1__8S19427C3__8S19427C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C7__8S19427C3__8S19427C2[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void _ZN8S19427C7D1Ev();
extern void _ZN8S19427C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C7__8S19427C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D0Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C7__8S19427C2[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C88S19427C7__8S19427C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C7__8S19427C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C8__8S19427C7__8S19427C2[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev)();
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C4__8S19427C7__8S19427C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
static  VTT_ENTRY vtt_S19427C2[] = {
  {&(_ZTV8S19427C2[5]),  5,150},
  {&(_tg__ZTV8S19427C3__8S19427C2[5]),  5,27},
  {&(_tg__ZTV8S19427C88S19427C3__A1__8S19427C2[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C88S19427C3__A1__8S19427C2[15]),  15,28},
  {&(_tg__ZTV8S19427C4__8S19427C3__8S19427C2[20]),  20,39},
  {&(_tg__ZTV8S19427C7__8S19427C3__8S19427C2[19]),  19,28},
  {&(_tg__ZTV8S19427C5__A1__8S19427C3__8S19427C2[15]),  15,28},
  {&(_tg__ZTV8S19427C88S19427C7__8S19427C3__8S19427C2[3]),  3,16},
  {&(_ZTV8S19427C2[59]),  59,150},
  {&(_ZTV8S19427C2[97]),  97,150},
  {&(_ZTV8S19427C2[137]),  137,150},
  {&(_ZTV8S19427C2[109]),  109,150},
  {&(_tg__ZTV8S19427C7__8S19427C2[4]),  4,13},
  {&(_tg__ZTV8S19427C88S19427C7__8S19427C2[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C88S19427C7__8S19427C2[15]),  15,28},
  {&(_tg__ZTV8S19427C5__8S19427C7__8S19427C2[15]),  15,28},
  {&(_tg__ZTV8S19427C8__8S19427C7__8S19427C2[3]),  3,16},
  {&(_tg__ZTV8S19427C4__8S19427C7__8S19427C2[20]),  20,39},
};
extern VTBL_ENTRY _ZTI8S19427C2[];
extern  VTBL_ENTRY _ZTV8S19427C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C2[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C3D0Ev,_ZThn132_N8S19427C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C3D1Ev,_ZThn132_N8S19427C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C3D0Ev,_ZThn72_N8S19427C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C3D1Ev,_ZThn72_N8S19427C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C2D0Ev,_ZTv0_n48_N8S19427C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C2D0Ev,_ZThn132_N8S19427C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C2D1Ev,_ZTv0_n48_N8S19427C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C2D1Ev,_ZThn132_N8S19427C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C2D0Ev,_ZTv0_n64_N8S19427C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C2D0Ev,_ZThn72_N8S19427C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C2D1Ev,_ZTv0_n64_N8S19427C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C2D1Ev,_ZThn72_N8S19427C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19427C2 = {  "S19427C2", // class name
  bases_S19427C2, 13,
  &(vtc_S19427C2[0]), // expected_vtbl_contents
  &(vtt_S19427C2[0]), // expected_vtt_contents
  ABISELECT(416,196), // object size
  NSPAIRA(_ZTI8S19427C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19427C2),150, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19427C2),18, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19427C1  : virtual S19427C2 {
  char s19427c1f0;
  int s19427c1f1:32;
  ::S7223C9_nt s19427c1f2;
  virtual  ~S19427C1(); // _ZN8S19427C1D2Ev
  virtual void  v1(); // _ZN8S19427C12v1Ev
  virtual void  v2(); // _ZN8S19427C12v2Ev
  virtual void  v3(); // _ZN8S19427C12v3Ev
  virtual void  v4(); // _ZN8S19427C12v4Ev
  virtual void  v5(); // _ZN8S19427C12v5Ev
  virtual void  v6(); // _ZN8S19427C12v6Ev
  virtual void  v7(); // _ZN8S19427C12v7Ev
  S19427C1(); // tgen
};
//SIG(1 S19427C1) C1{ VBC2{ BC3{ VBC4{ BC5{ BC6{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} vd v21 v22 v23 v24 FL[2] FC6} VBC7{ BC6 VBC5 BC8{ VBC5 BC6 v25 v26 v27 v28 v29 v30 v31} VBC4 v32} BC8 BC6 v33 v34 v35 v36 v37 v38 v39 FC6 Fp} v40 v41 v42 v43 Fi FC9{}} vd v1 v2 v3 v4 v5 v6 v7 Fc Fi:32 FC9}


 S19427C1 ::~S19427C1(){ note_dtor("S19427C1", this);}
void  S19427C1 ::v1(){vfunc_called(this, "_ZN8S19427C12v1Ev");}
void  S19427C1 ::v2(){vfunc_called(this, "_ZN8S19427C12v2Ev");}
void  S19427C1 ::v3(){vfunc_called(this, "_ZN8S19427C12v3Ev");}
void  S19427C1 ::v4(){vfunc_called(this, "_ZN8S19427C12v4Ev");}
void  S19427C1 ::v5(){vfunc_called(this, "_ZN8S19427C12v5Ev");}
void  S19427C1 ::v6(){vfunc_called(this, "_ZN8S19427C12v6Ev");}
void  S19427C1 ::v7(){vfunc_called(this, "_ZN8S19427C12v7Ev");}
S19427C1 ::S19427C1(){ note_ctor("S19427C1", this);} // tgen

static void Test_S19427C1()
{
  extern Class_Descriptor cd_S19427C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,54)];
    init_test(&cd_S19427C1, buf);
    S19427C1 *dp, &lv = *(dp=new (buf) S19427C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,212), "sizeof(S19427C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19427C1)");
    check_base_class_offset(lv, (S19427C6*)(S19427C5*)(S19427C4*), ABISELECT(192,88), "S19427C1");
    check_base_class_offset(lv, (S19427C5*)(S19427C4*), ABISELECT(192,88), "S19427C1");
    check_base_class_offset(lv, (S19427C4*)(S19427C3*)(S19427C2*), ABISELECT(192,88), "S19427C1");
    check_base_class_offset(lv, (S19427C4*)(S19427C7*), ABISELECT(192,88), "S19427C1");
    /*is_ambiguous_... S19427C7::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C7*), ABISELECT(304,148), "S19427C1");
    /*is_ambiguous_... S19427C1::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C5*), ABISELECT(400,188), "S19427C1");
    /*is_ambiguous_... S19427C7::S19427C5 */ AMB_check_base_class_offset(lv, (S19427C5*)(S19427C7*), ABISELECT(400,188), "S19427C1");
    check_base_class_offset(lv, (S19427C5*)(S19427C8*)(S19427C7*), ABISELECT(400,188), "S19427C1");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C5*)(S19427C8*)(S19427C3*)(S19427C2*), ABISELECT(400,188), "S19427C1");
    /*is_ambiguous_... S19427C8::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*)(S19427C7*), ABISELECT(352,168), "S19427C1");
    check_base_class_offset(lv, (S19427C8*)(S19427C7*), ABISELECT(352,168), "S19427C1");
    check_base_class_offset(lv, (S19427C7*)(S19427C3*)(S19427C2*), ABISELECT(304,148), "S19427C1");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C8*)(S19427C3*)(S19427C2*), ABISELECT(32,16), "S19427C1");
    /*is_ambiguous_... S19427C3::S19427C8 */ AMB_check_base_class_offset(lv, (S19427C8*)(S19427C3*)(S19427C2*), ABISELECT(32,16), "S19427C1");
    /*is_ambiguous_... S19427C3::S19427C6 */ AMB_check_base_class_offset(lv, (S19427C6*)(S19427C3*)(S19427C2*), ABISELECT(80,36), "S19427C1");
    check_base_class_offset(lv, (S19427C3*)(S19427C2*), ABISELECT(32,16), "S19427C1");
    check_base_class_offset(lv, (S19427C2*), ABISELECT(32,16), "S19427C1");
    check_field_offset(lv, s19427c1f0, ABISELECT(8,4), "S19427C1.s19427c1f0");
    set_bf_and_test(lv, s19427c1f1, ABISELECT(12,8), 0, 32, 1, "S19427C1");
    set_bf_and_test(lv, s19427c1f1, ABISELECT(12,8), 0, 32, hide_sll(1LL<<31), "S19427C1");
    check_field_offset(lv, s19427c1f2, ABISELECT(16,12), "S19427C1.s19427c1f2");
    test_class_info(&lv, &cd_S19427C1);
    dp->~S19427C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19427C1(Test_S19427C1, "S19427C1", ABISELECT(448,212));

#else // __cplusplus

extern void _ZN8S19427C1C1Ev();
extern void _ZN8S19427C1D2Ev();
Name_Map name_map_S19427C1[] = {
  NSPAIR(_ZN8S19427C1C1Ev),
  NSPAIR(_ZN8S19427C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C4;
extern VTBL_ENTRY _ZTI8S19427C4[];
extern  VTBL_ENTRY _ZTV8S19427C4[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C5;
extern VTBL_ENTRY _ZTI8S19427C5[];
extern  VTBL_ENTRY _ZTV8S19427C5[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C7;
extern VTBL_ENTRY _ZTI8S19427C7[];
extern  VTBL_ENTRY _ZTV8S19427C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C7[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C8;
extern VTBL_ENTRY _ZTI8S19427C8[];
extern  VTBL_ENTRY _ZTV8S19427C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C8[];
extern Class_Descriptor cd_S19427C6;
extern VTBL_ENTRY _ZTI8S19427C6[];
extern  VTBL_ENTRY _ZTV8S19427C6[];
extern Class_Descriptor cd_S19427C3;
extern VTBL_ENTRY _ZTI8S19427C3[];
extern  VTBL_ENTRY _ZTV8S19427C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C3[];
extern Class_Descriptor cd_S19427C2;
extern VTBL_ENTRY _ZTI8S19427C2[];
extern  VTBL_ENTRY _ZTV8S19427C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C2[];
static Base_Class bases_S19427C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19427C6,    ABISELECT(192,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(192,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19427C4,    ABISELECT(192,88), //bcp->offset
    79, //bcp->virtual_function_table_offset
    20, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19427C6,    ABISELECT(304,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19427C6,    ABISELECT(400,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19427C5,    ABISELECT(400,188), //bcp->offset
    162, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19427C6,    ABISELECT(352,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19427C8,    ABISELECT(352,168), //bcp->offset
    146, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19427C7,    ABISELECT(304,148), //bcp->offset
    118, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19427C6,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19427C8,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19427C6,    ABISELECT(80,36), //bcp->offset
    71, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19427C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19427C2,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19427C1[];
extern void _ZN8S19427C1D1Ev();
extern void _ZN8S19427C1D0Ev();
extern void _ZN8S19427C12v1Ev();
extern void _ZN8S19427C12v2Ev();
extern void _ZN8S19427C12v3Ev();
extern void _ZN8S19427C12v4Ev();
extern void _ZN8S19427C12v5Ev();
extern void _ZN8S19427C12v6Ev();
extern void _ZN8S19427C12v7Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C33v33Ev();
extern void _ZN8S19427C33v34Ev();
extern void _ZN8S19427C33v35Ev();
extern void _ZN8S19427C33v36Ev();
extern void _ZN8S19427C33v37Ev();
extern void _ZN8S19427C33v38Ev();
extern void _ZN8S19427C33v39Ev();
extern void ABISELECT(_ZTv0_n208_N8S19427C1D1Ev,_ZTv0_n104_N8S19427C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19427C1D1Ev,_ZThn16_N8S19427C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n208_N8S19427C1D0Ev,_ZTv0_n104_N8S19427C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19427C1D0Ev,_ZThn16_N8S19427C1D0Ev)() __attribute__((weak));
extern void _ZN8S19427C23v40Ev();
extern void _ZN8S19427C23v41Ev();
extern void _ZN8S19427C23v42Ev();
extern void _ZN8S19427C23v43Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C1D1Ev,_ZTv0_n64_N8S19427C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19427C1D1Ev,_ZThn88_N8S19427C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C1D0Ev,_ZTv0_n64_N8S19427C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19427C1D0Ev,_ZThn88_N8S19427C1D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void ABISELECT(_ZTv0_n96_N8S19427C1D1Ev,_ZTv0_n48_N8S19427C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19427C1D1Ev,_ZThn148_N8S19427C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19427C1D0Ev,_ZTv0_n48_N8S19427C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19427C1D0Ev,_ZThn148_N8S19427C1D0Ev)() __attribute__((weak));
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY vtc_S19427C1[] = {
  ABISELECT(400,188),
  ABISELECT(304,148),
  ABISELECT(192,88),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19427C12v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v35Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v36Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v37Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v38Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v39Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S19427C1D1Ev,_ZTv0_n104_N8S19427C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n208_N8S19427C1D0Ev,_ZTv0_n104_N8S19427C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C23v40Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v41Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v42Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v43Ev,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-88),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-88),
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C1D1Ev,_ZTv0_n64_N8S19427C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C1D0Ev,_ZTv0_n64_N8S19427C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-304,-148),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-304,-148),
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C1D1Ev,_ZTv0_n48_N8S19427C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C1D0Ev,_ZTv0_n48_N8S19427C1D0Ev),
  ABISELECT(48,20),
  ABISELECT(-352,-168),
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-188),
  (VTBL_ENTRY)&(_ZTI8S19427C1[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern VTBL_ENTRY _ZTV8S19427C1[];
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C33v33Ev();
extern void _ZN8S19427C33v34Ev();
extern void _ZN8S19427C33v35Ev();
extern void _ZN8S19427C33v36Ev();
extern void _ZN8S19427C33v37Ev();
extern void _ZN8S19427C33v38Ev();
extern void _ZN8S19427C33v39Ev();
extern void _ZN8S19427C2D1Ev();
extern void _ZN8S19427C2D0Ev();
extern void _ZN8S19427C23v40Ev();
extern void _ZN8S19427C23v41Ev();
extern void _ZN8S19427C23v42Ev();
extern void _ZN8S19427C23v43Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C2__8S19427C1[] = {
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v35Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v36Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v37Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v38Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v39Ev,
  (VTBL_ENTRY)&_ZN8S19427C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v40Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v41Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v42Ev,
  (VTBL_ENTRY)&_ZN8S19427C23v43Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
extern void _ZN8S19427C33v33Ev();
extern void _ZN8S19427C33v34Ev();
extern void _ZN8S19427C33v35Ev();
extern void _ZN8S19427C33v36Ev();
extern void _ZN8S19427C33v37Ev();
extern void _ZN8S19427C33v38Ev();
extern void _ZN8S19427C33v39Ev();
extern void _ZN8S19427C3D1Ev();
extern void _ZN8S19427C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C38S19427C2__8S19427C1[] = {
  ABISELECT(272,132),
  ABISELECT(160,72),
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v35Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v36Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v37Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v38Ev,
  (VTBL_ENTRY)&_ZN8S19427C33v39Ev,
  (VTBL_ENTRY)&_ZN8S19427C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C3D0Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C38S19427C2__A1__8S19427C1[] = {
  ABISELECT(368,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C88S19427C38S19427C2__A1__8S19427C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19427C3D1Ev,_ZThn72_N8S19427C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19427C3D0Ev,_ZThn72_N8S19427C3D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C4__8S19427C38S19427C2__8S19427C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev)();
extern void ABISELECT(_ZThn272_N8S19427C3D1Ev,_ZThn132_N8S19427C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev)();
extern void ABISELECT(_ZThn272_N8S19427C3D0Ev,_ZThn132_N8S19427C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19427C7__8S19427C38S19427C2__8S19427C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev),
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__A1__8S19427C38S19427C2__8S19427C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C7__8S19427C38S19427C2__8S19427C1[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S19427C3[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C2D1Ev,_ZTv0_n64_N8S19427C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19427C2D1Ev,_ZThn72_N8S19427C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19427C2D0Ev,_ZTv0_n64_N8S19427C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19427C2D0Ev,_ZThn72_N8S19427C2D0Ev)() __attribute__((weak));
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C4__8S19427C2__8S19427C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C2D1Ev,_ZTv0_n64_N8S19427C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C2D0Ev,_ZTv0_n64_N8S19427C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void ABISELECT(_ZTv0_n96_N8S19427C2D1Ev,_ZTv0_n48_N8S19427C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S19427C2D1Ev,_ZThn132_N8S19427C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19427C2D0Ev,_ZTv0_n48_N8S19427C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S19427C2D0Ev,_ZThn132_N8S19427C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19427C7__8S19427C2__8S19427C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(-272,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C2D1Ev,_ZTv0_n48_N8S19427C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19427C2D0Ev,_ZTv0_n48_N8S19427C2D0Ev),
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__A1__8S19427C2__8S19427C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-172),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C7__8S19427C2__8S19427C1[] = {
  ABISELECT(48,20),
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S19427C2[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C73v32Ev();
extern void _ZN8S19427C7D1Ev();
extern void _ZN8S19427C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C7__8S19427C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C73v32Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19427C7D0Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C88S19427C7__8S19427C1[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C88S19427C7__8S19427C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C8[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C5__8S19427C7__8S19427C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C83v21Ev();
extern void _ZN8S19427C83v22Ev();
extern void _ZN8S19427C83v23Ev();
extern void _ZN8S19427C83v24Ev();
extern void _ZN8S19427C83v25Ev();
extern void _ZN8S19427C83v26Ev();
extern void _ZN8S19427C83v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C8__8S19427C7__8S19427C1[] = {
  ABISELECT(48,20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19427C83v27Ev,
};
extern void _ZN8S19427C62v8Ev();
extern void _ZN8S19427C62v9Ev();
extern void _ZN8S19427C63v10Ev();
extern void _ZN8S19427C63v11Ev();
extern void _ZN8S19427C63v12Ev();
extern void _ZN8S19427C63v13Ev();
extern void _ZN8S19427C53v14Ev();
extern void _ZN8S19427C53v15Ev();
extern void _ZN8S19427C53v16Ev();
extern void _ZN8S19427C53v17Ev();
extern void _ZN8S19427C53v18Ev();
extern void _ZN8S19427C53v19Ev();
extern void _ZN8S19427C53v20Ev();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev)();
extern void _ZN8S19427C43v28Ev();
extern void _ZN8S19427C43v29Ev();
extern void _ZN8S19427C43v30Ev();
extern void _ZN8S19427C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19427C4__8S19427C7__8S19427C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19427C7[0]),
  (VTBL_ENTRY)&_ZN8S19427C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19427C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19427C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v16Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v17Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19427C53v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D1Ev,_ZTv0_n64_N8S19427C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19427C7D0Ev,_ZTv0_n64_N8S19427C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19427C43v28Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v29Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v30Ev,
  (VTBL_ENTRY)&_ZN8S19427C43v31Ev,
};
static  VTT_ENTRY vtt_S19427C1[] = {
  {&(_ZTV8S19427C1[6]),  6,190},
  {&(_ZTV8S19427C1[45]),  45,190},
  {&(_ZTV8S19427C1[99]),  99,190},
  {&(_ZTV8S19427C1[137]),  137,190},
  {&(_ZTV8S19427C1[177]),  177,190},
  {&(_ZTV8S19427C1[149]),  149,190},
  {&(_ZTV8S19427C1[73]),  73,190},
  {&(_tg__ZTV8S19427C2__8S19427C1[5]),  5,31},
  {&(_tg__ZTV8S19427C38S19427C2__8S19427C1[5]),  5,27},
  {&(_tg__ZTV8S19427C88S19427C38S19427C2__A1__8S19427C1[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C88S19427C38S19427C2__A1__8S19427C1[15]),  15,28},
  {&(_tg__ZTV8S19427C4__8S19427C38S19427C2__8S19427C1[20]),  20,39},
  {&(_tg__ZTV8S19427C7__8S19427C38S19427C2__8S19427C1[19]),  19,28},
  {&(_tg__ZTV8S19427C5__A1__8S19427C38S19427C2__8S19427C1[15]),  15,28},
  {&(_tg__ZTV8S19427C88S19427C7__8S19427C38S19427C2__8S19427C1[3]),  3,16},
  {&(_tg__ZTV8S19427C4__8S19427C2__8S19427C1[20]),  20,39},
  {&(_tg__ZTV8S19427C7__8S19427C2__8S19427C1[19]),  19,28},
  {&(_tg__ZTV8S19427C5__A1__8S19427C2__8S19427C1[15]),  15,28},
  {&(_tg__ZTV8S19427C88S19427C7__8S19427C2__8S19427C1[3]),  3,16},
  {&(_tg__ZTV8S19427C7__8S19427C1[4]),  4,13},
  {&(_tg__ZTV8S19427C88S19427C7__8S19427C1[3]),  3,16},
  {&(_tg__ZTV8S19427C5__8S19427C88S19427C7__8S19427C1[15]),  15,28},
  {&(_tg__ZTV8S19427C5__8S19427C7__8S19427C1[15]),  15,28},
  {&(_tg__ZTV8S19427C8__8S19427C7__8S19427C1[3]),  3,16},
  {&(_tg__ZTV8S19427C4__8S19427C7__8S19427C1[20]),  20,39},
};
extern VTBL_ENTRY _ZTI8S19427C1[];
extern  VTBL_ENTRY _ZTV8S19427C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19427C1[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C2D0Ev,_ZTv0_n48_N8S19427C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C2D0Ev,_ZThn132_N8S19427C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C2D1Ev,_ZTv0_n48_N8S19427C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C2D1Ev,_ZThn132_N8S19427C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C2D0Ev,_ZTv0_n64_N8S19427C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C2D0Ev,_ZThn72_N8S19427C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C2D1Ev,_ZTv0_n64_N8S19427C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C2D1Ev,_ZThn72_N8S19427C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C3D0Ev,_ZTv0_n48_N8S19427C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C3D0Ev,_ZThn132_N8S19427C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C3D1Ev,_ZTv0_n48_N8S19427C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19427C3D1Ev,_ZThn132_N8S19427C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C3D0Ev,_ZTv0_n64_N8S19427C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C3D0Ev,_ZThn72_N8S19427C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C3D1Ev,_ZTv0_n64_N8S19427C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19427C3D1Ev,_ZThn72_N8S19427C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C1D0Ev,_ZTv0_n48_N8S19427C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19427C1D0Ev,_ZThn148_N8S19427C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19427C1D1Ev,_ZTv0_n48_N8S19427C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19427C1D1Ev,_ZThn148_N8S19427C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C1D0Ev,_ZTv0_n64_N8S19427C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19427C1D0Ev,_ZThn88_N8S19427C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19427C1D1Ev,_ZTv0_n64_N8S19427C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19427C1D1Ev,_ZThn88_N8S19427C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S19427C1D0Ev,_ZTv0_n104_N8S19427C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19427C1D0Ev,_ZThn16_N8S19427C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n208_N8S19427C1D1Ev,_ZTv0_n104_N8S19427C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19427C1D1Ev,_ZThn16_N8S19427C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19427C1 = {  "S19427C1", // class name
  bases_S19427C1, 14,
  &(vtc_S19427C1[0]), // expected_vtbl_contents
  &(vtt_S19427C1[0]), // expected_vtt_contents
  ABISELECT(448,212), // object size
  NSPAIRA(_ZTI8S19427C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19427C1),190, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19427C1),25, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19832C5  : virtual S19490C26 {
  virtual void  v2(); // _ZN8S19832C52v2Ev
  ~S19832C5(); // tgen
  S19832C5(); // tgen
};
//SIG(-1 S19832C5) C1{ VBC2{ m} v1}


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

static void Test_S19832C5()
{
  extern Class_Descriptor cd_S19832C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19832C5, buf);
    S19832C5 *dp, &lv = *(dp=new (buf) S19832C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19832C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19832C5)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19832C5");
    test_class_info(&lv, &cd_S19832C5);
    dp->~S19832C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C5(Test_S19832C5, "S19832C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19832C5C1Ev();
extern void _ZN8S19832C5D1Ev();
Name_Map name_map_S19832C5[] = {
  NSPAIR(_ZN8S19832C5C1Ev),
  NSPAIR(_ZN8S19832C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19832C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19832C5[];
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY vtc_S19832C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S19832C5[];
static  VTT_ENTRY vtt_S19832C5[] = {
  {&(_ZTV8S19832C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
Class_Descriptor cd_S19832C5 = {  "S19832C5", // class name
  bases_S19832C5, 1,
  &(vtc_S19832C5[0]), // expected_vtbl_contents
  &(vtt_S19832C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19832C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19832C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C5),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  S19832C7  : S19490C26 , S19832C5 {
  int s19832c7f0[2];
  virtual void  v3(); // _ZN8S19832C72v3Ev
  ~S19832C7(); // tgen
  S19832C7(); // tgen
};
//SIG(-1 S19832C7) C1{ BC2{ m} BC3{ VBC2 v2} v1 Fi[2]}


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

static void Test_S19832C7()
{
  extern Class_Descriptor cd_S19832C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19832C7, buf);
    S19832C7 *dp, &lv = *(dp=new (buf) S19832C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19832C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19832C7)");
    /*is_ambiguous_... S19832C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19832C7");
    check_base_class_offset(lv, (S19490C26*)(S19832C5*), ABISELECT(16,12), "S19832C7");
    check_base_class_offset(lv, (S19832C5*), 0, "S19832C7");
    check_field_offset(lv, s19832c7f0, ABISELECT(8,4), "S19832C7.s19832c7f0");
    test_class_info(&lv, &cd_S19832C7);
    dp->~S19832C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C7(Test_S19832C7, "S19832C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19832C7C1Ev();
extern void _ZN8S19832C7D1Ev();
Name_Map name_map_S19832C7[] = {
  NSPAIR(_ZN8S19832C7C1Ev),
  NSPAIR(_ZN8S19832C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
static Base_Class bases_S19832C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19832C5,    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 _ZTI8S19832C7[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY vtc_S19832C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19832C7[];
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__8S19832C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
static  VTT_ENTRY vtt_S19832C7[] = {
  {&(_ZTV8S19832C7[3]),  3,5},
  {&(_tg__ZTV8S19832C5__8S19832C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
Class_Descriptor cd_S19832C7 = {  "S19832C7", // class name
  bases_S19832C7, 3,
  &(vtc_S19832C7[0]), // expected_vtbl_contents
  &(vtt_S19832C7[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19832C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19832C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C7),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  S19832C8  : virtual S19490C26 , virtual S19832C7 , S19832C5 {
  int s19832c8f0[2];
  void *s19832c8f1[3];
  ~S19832C8(); // tgen
  S19832C8(); // tgen
};
//SIG(-1 S19832C8) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC4 Fi[2] Fp[3]}


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

static void Test_S19832C8()
{
  extern Class_Descriptor cd_S19832C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S19832C8, buf);
    S19832C8 *dp, &lv = *(dp=new (buf) S19832C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S19832C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19832C8)");
    /*is_ambiguous_... S19832C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19832C8");
    check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), 0, "S19832C8");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*), 0, "S19832C8");
    /*is_ambiguous_... S19832C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), ABISELECT(40,24), "S19832C8");
    check_base_class_offset(lv, (S19832C5*)(S19832C7*), ABISELECT(40,24), "S19832C8");
    check_base_class_offset(lv, (S19832C7*), ABISELECT(40,24), "S19832C8");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*), 0, "S19832C8");
    check_field_offset(lv, s19832c8f0, ABISELECT(8,4), "S19832C8.s19832c8f0");
    check_field_offset(lv, s19832c8f1, ABISELECT(16,12), "S19832C8.s19832c8f1");
    test_class_info(&lv, &cd_S19832C8);
    dp->~S19832C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C8(Test_S19832C8, "S19832C8", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S19832C8C1Ev();
extern void _ZN8S19832C8D1Ev();
Name_Map name_map_S19832C8[] = {
  NSPAIR(_ZN8S19832C8C1Ev),
  NSPAIR(_ZN8S19832C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
static Base_Class bases_S19832C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(40,24), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(40,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19832C5,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19832C8[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY vtc_S19832C8[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19832C8[];
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__A1__8S19832C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C8[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__8S19832C8[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
static  VTT_ENTRY vtt_S19832C8[] = {
  {&(_ZTV8S19832C8[4]),  4,12},
  {&(_tg__ZTV8S19832C5__A1__8S19832C8[3]),  3,4},
  {&(_ZTV8S19832C8[10]),  10,12},
  {&(_tg__ZTV8S19832C7__8S19832C8[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__8S19832C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
Class_Descriptor cd_S19832C8 = {  "S19832C8", // class name
  bases_S19832C8, 5,
  &(vtc_S19832C8[0]), // expected_vtbl_contents
  &(vtt_S19832C8[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S19832C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19832C8),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C8),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19832C6  : S19490C26 , S19832C7 , S19832C8 , S19832C5 {
  int s19832c6f0[2];
  ~S19832C6(); // tgen
  S19832C6(); // tgen
};
//SIG(-1 S19832C6) C1{ BC2{ m} BC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC5{ VBC2 VBC3 BC4 Fi[2] Fp[3]} BC4 Fi[2]}


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

static void Test_S19832C6()
{
  extern Class_Descriptor cd_S19832C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S19832C6, buf);
    S19832C6 *dp, &lv = *(dp=new (buf) S19832C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S19832C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19832C6)");
    /*is_ambiguous_... S19832C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(16,12), "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), 0, "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), ABISELECT(72,48), "S19832C6");
    /*is_ambiguous_... S19832C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*), ABISELECT(72,48), "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), ABISELECT(72,48), "S19832C6");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*), ABISELECT(72,48), "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*), ABISELECT(72,48), "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*), 0, "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*), 0, "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), ABISELECT(80,52), "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*), ABISELECT(80,52), "S19832C6");
    check_base_class_offset(lv, (S19832C7*)(S19832C8*), ABISELECT(80,52), "S19832C6");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*), ABISELECT(16,12), "S19832C6");
    check_base_class_offset(lv, (S19832C8*), ABISELECT(16,12), "S19832C6");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*), ABISELECT(56,36), "S19832C6");
    check_field_offset(lv, s19832c6f0, ABISELECT(64,40), "S19832C6.s19832c6f0");
    test_class_info(&lv, &cd_S19832C6);
    dp->~S19832C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C6(Test_S19832C6, "S19832C6", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S19832C6C1Ev();
extern void _ZN8S19832C6D1Ev();
Name_Map name_map_S19832C6[] = {
  NSPAIR(_ZN8S19832C6C1Ev),
  NSPAIR(_ZN8S19832C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
static Base_Class bases_S19832C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    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, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19832C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19832C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(80,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S19832C5,    ABISELECT(16,12), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19832C5,    ABISELECT(56,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19832C6[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY vtc_S19832C6[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(16,12),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19832C6[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A__8S19832C6[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__8S19832C6[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__8S19832C6[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C8__A2__8S19832C6[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C8__8S19832C6[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__A3__8S19832C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__A1__8S19832C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
static  VTT_ENTRY vtt_S19832C6[] = {
  {&(_ZTV8S19832C6[4]),  4,22},
  {&(_tg__ZTV8S19832C7__A__8S19832C6[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__8S19832C6[3]),  3,4},
  {&(_tg__ZTV8S19832C8__8S19832C6[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C8__A2__8S19832C6[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C8__8S19832C6[5]),  5,7},
  {&(_tg__ZTV8S19832C5__A3__8S19832C6[3]),  3,4},
  {&(_ZTV8S19832C6[10]),  10,22},
  {&(_ZTV8S19832C6[20]),  20,22},
  {&(_ZTV8S19832C6[14]),  14,22},
  {&(_tg__ZTV8S19832C7__A1__8S19832C6[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__A1__8S19832C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C6[];
extern  VTBL_ENTRY _ZTV8S19832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C6[];
Class_Descriptor cd_S19832C6 = {  "S19832C6", // class name
  bases_S19832C6, 11,
  &(vtc_S19832C6[0]), // expected_vtbl_contents
  &(vtt_S19832C6[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S19832C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19832C6),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C6),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19832C4  : S19490C26 , S19832C5 , virtual S19832C6 , S19832C8 , S19832C7 {
  ::S19832C7 s19832c4f0;
  short s19832c4f1;
  int s19832c4f2[2];
  void *s19832c4f3[3];
  ::S19832C6 s19832c4f4;
  virtual void  v4(); // _ZN8S19832C42v4Ev
  ~S19832C4(); // tgen
  S19832C4(); // tgen
};
//SIG(-1 S19832C4) C1{ BC2{ m} BC3{ VBC2 v2} VBC4{ BC2 BC5{ BC2 BC3 v3 Fi[2]} BC6{ VBC2 VBC5 BC3 Fi[2] Fp[3]} BC3 Fi[2]} BC6 BC5 v1 FC5 Fs Fi[2] Fp[3] FC4}


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

static void Test_S19832C4()
{
  extern Class_Descriptor cd_S19832C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S19832C4, buf);
    S19832C4 *dp, &lv = *(dp=new (buf) S19832C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S19832C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19832C4)");
    /*is_ambiguous_... S19832C4::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*)(S19832C6*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*)(S19832C6*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*)(S19832C6*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C6*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), ABISELECT(224,144), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*), 0, "S19832C4");
    /*is_ambiguous_... S19832C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C6*), ABISELECT(248,160), "S19832C4");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*)(S19832C6*), ABISELECT(232,148), "S19832C4");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*)(S19832C6*), ABISELECT(232,148), "S19832C4");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C6*), ABISELECT(232,148), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), ABISELECT(304,196), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*), ABISELECT(304,196), "S19832C4");
    check_base_class_offset(lv, (S19832C7*)(S19832C8*)(S19832C6*), ABISELECT(304,196), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C8*), ABISELECT(304,196), "S19832C4");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*)(S19832C6*), ABISELECT(248,160), "S19832C4");
    check_base_class_offset(lv, (S19832C8*)(S19832C6*), ABISELECT(248,160), "S19832C4");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C6*), ABISELECT(288,184), "S19832C4");
    check_base_class_offset(lv, (S19832C6*), ABISELECT(232,148), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*), ABISELECT(8,4), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C8*), ABISELECT(8,4), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), ABISELECT(48,28), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*), ABISELECT(48,28), "S19832C4");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*), ABISELECT(48,28), "S19832C4");
    check_field_offset(lv, s19832c4f0, ABISELECT(64,40), "S19832C4.s19832c4f0");
    check_field_offset(lv, s19832c4f1, ABISELECT(88,56), "S19832C4.s19832c4f1");
    check_field_offset(lv, s19832c4f2, ABISELECT(92,60), "S19832C4.s19832c4f2");
    check_field_offset(lv, s19832c4f3, ABISELECT(104,68), "S19832C4.s19832c4f3");
    check_field_offset(lv, s19832c4f4, ABISELECT(128,80), "S19832C4.s19832c4f4");
    test_class_info(&lv, &cd_S19832C4);
    dp->~S19832C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C4(Test_S19832C4, "S19832C4", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN8S19832C4C1Ev();
extern void _ZN8S19832C4D1Ev();
Name_Map name_map_S19832C4[] = {
  NSPAIR(_ZN8S19832C4C1Ev),
  NSPAIR(_ZN8S19832C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C6;
extern VTBL_ENTRY _ZTI8S19832C6[];
extern  VTBL_ENTRY _ZTV8S19832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C6[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
static Base_Class bases_S19832C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19832C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(248,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(304,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19832C5,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(248,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(288,184), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19832C6,    ABISELECT(232,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19832C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19832C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19832C4[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C42v4Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY vtc_S19832C4[] = {
  ABISELECT(304,196),
  ABISELECT(232,148),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C42v4Ev,
  ABISELECT(296,192),
  ABISELECT(216,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(176,116),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(-64,-40),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19832C4[];
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__8S19832C4[] = {
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__A1__8S19832C4[] = {
  ABISELECT(296,192),
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C8__A5__8S19832C4[] = {
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C8__A1__8S19832C4[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A__8S19832C4[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__A6__8S19832C4[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C6__8S19832C4[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C78S19832C6__8S19832C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C78S19832C6__A1__8S19832C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C6__8S19832C4[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C88S19832C6__A3__8S19832C4[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C88S19832C6__8S19832C4[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C6__A4__8S19832C4[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__8S19832C6__8S19832C4[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C6__8S19832C4[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__A3__8S19832C6__8S19832C4[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C4[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__A2__8S19832C4[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
static  VTT_ENTRY vtt_S19832C4[] = {
  {&(_ZTV8S19832C4[5]),  5,41},
  {&(_tg__ZTV8S19832C5__8S19832C4[3]),  3,4},
  {&(_tg__ZTV8S19832C8__A1__8S19832C4[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C8__A5__8S19832C4[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C8__A1__8S19832C4[5]),  5,7},
  {&(_tg__ZTV8S19832C7__A__8S19832C4[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__A6__8S19832C4[3]),  3,4},
  {&(_ZTV8S19832C4[23]),  23,41},
  {&(_ZTV8S19832C4[29]),  29,41},
  {&(_ZTV8S19832C4[39]),  39,41},
  {&(_ZTV8S19832C4[33]),  33,41},
  {&(_ZTV8S19832C4[11]),  11,41},
  {&(_ZTV8S19832C4[15]),  15,41},
  {&(_tg__ZTV8S19832C6__8S19832C4[4]),  4,6},
  {&(_tg__ZTV8S19832C78S19832C6__8S19832C4[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C78S19832C6__A1__8S19832C4[3]),  3,4},
  {&(_tg__ZTV8S19832C88S19832C6__8S19832C4[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C88S19832C6__A3__8S19832C4[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C88S19832C6__8S19832C4[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C6__A4__8S19832C4[3]),  3,4},
  {&(_tg__ZTV8S19832C8__8S19832C6__8S19832C4[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A1__8S19832C6__8S19832C4[5]),  5,7},
  {&(_tg__ZTV8S19832C5__A3__8S19832C6__8S19832C4[3]),  3,4},
  {&(_tg__ZTV8S19832C7__A1__8S19832C4[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__A2__8S19832C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C4[];
extern  VTBL_ENTRY _ZTV8S19832C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C4[];
Class_Descriptor cd_S19832C4 = {  "S19832C4", // class name
  bases_S19832C4, 19,
  &(vtc_S19832C4[0]), // expected_vtbl_contents
  &(vtt_S19832C4[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI8S19832C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19832C4),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C4),25, //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  S19832C3  : virtual S19490C26 , virtual S19832C4 , S19832C8 {
  long double s19832c3f0;
  void *s19832c3f1[10];
  ~S19832C3(); // tgen
  S19832C3(); // tgen
};
//SIG(-1 S19832C3) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} VBC5{ BC2 BC6{ BC2 BC4 v2 Fi[2]} BC7{ VBC2 VBC6 BC4 Fi[2] Fp[3]} BC4 Fi[2]} BC7 BC6 v3 FC6 Fs Fi[2] Fp[3] FC5} BC7 FD Fp[10]}


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

static void Test_S19832C3()
{
  extern Class_Descriptor cd_S19832C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,71)];
    init_test(&cd_S19832C3, buf);
    S19832C3 *dp, &lv = *(dp=new (buf) S19832C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,280), "sizeof(S19832C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19832C3)");
    /*is_ambiguous_... S19832C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C4*), 0, "S19832C3");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*)(S19832C6*), 0, "S19832C3");
    /*is_ambiguous_... S19832C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*)(S19832C6*), 0, "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), 0, "S19832C3");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*)(S19832C6*), 0, "S19832C3");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C6*), 0, "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*)(S19832C4*), 0, "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*)(S19832C4*), 0, "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*)(S19832C4*), 0, "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*), 0, "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*), 0, "S19832C3");
    /*is_ambiguous_... S19832C4::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C4*), ABISELECT(144,76), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C4*), ABISELECT(144,76), "S19832C3");
    /*is_ambiguous_... S19832C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C6*), ABISELECT(384,232), "S19832C3");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*)(S19832C6*), ABISELECT(368,220), "S19832C3");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*)(S19832C6*), ABISELECT(368,220), "S19832C3");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C6*), ABISELECT(368,220), "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), ABISELECT(440,268), "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*), ABISELECT(440,268), "S19832C3");
    check_base_class_offset(lv, (S19832C7*)(S19832C8*)(S19832C6*), ABISELECT(440,268), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C8*)(S19832C4*), ABISELECT(440,268), "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C8*), ABISELECT(440,268), "S19832C3");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*)(S19832C6*), ABISELECT(384,232), "S19832C3");
    check_base_class_offset(lv, (S19832C8*)(S19832C6*), ABISELECT(384,232), "S19832C3");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C6*), ABISELECT(424,256), "S19832C3");
    check_base_class_offset(lv, (S19832C6*)(S19832C4*), ABISELECT(368,220), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*)(S19832C4*), ABISELECT(152,80), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C8*)(S19832C4*), ABISELECT(152,80), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*)(S19832C4*), ABISELECT(192,104), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*)(S19832C4*), ABISELECT(192,104), "S19832C3");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C4*), ABISELECT(192,104), "S19832C3");
    check_base_class_offset(lv, (S19832C4*), ABISELECT(144,76), "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*), 0, "S19832C3");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C8*), 0, "S19832C3");
    check_field_offset(lv, s19832c3f0, ABISELECT(48,24), "S19832C3.s19832c3f0");
    check_field_offset(lv, s19832c3f1, ABISELECT(64,36), "S19832C3.s19832c3f1");
    test_class_info(&lv, &cd_S19832C3);
    dp->~S19832C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C3(Test_S19832C3, "S19832C3", ABISELECT(464,280));

#else // __cplusplus

extern void _ZN8S19832C3C1Ev();
extern void _ZN8S19832C3D1Ev();
Name_Map name_map_S19832C3[] = {
  NSPAIR(_ZN8S19832C3C1Ev),
  NSPAIR(_ZN8S19832C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C6;
extern VTBL_ENTRY _ZTI8S19832C6[];
extern  VTBL_ENTRY _ZTV8S19832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C6[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C4;
extern VTBL_ENTRY _ZTI8S19832C4[];
extern  VTBL_ENTRY _ZTV8S19832C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C4[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
static Base_Class bases_S19832C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(384,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(368,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
    6, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(368,220), //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(368,220), //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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(440,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
    9, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(440,268), //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
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(440,268), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19832C5,    ABISELECT(384,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(384,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(424,256), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19832C6,    ABISELECT(368,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19832C5,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(152,80), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    18, //immediately_derived
  0, 0},
  {&cd_S19832C5,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(192,104), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19832C4,    ABISELECT(144,76), //bcp->offset
    7, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19832C5,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19832C8,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19832C3[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C42v4Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY vtc_S19832C3[] = {
  ABISELECT(368,220),
  ABISELECT(144,76),
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C42v4Ev,
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(-424,-256),
  ABISELECT(-424,-256),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19832C3[];
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__A2__8S19832C3[] = {
  ABISELECT(440,268),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C8__A7__8S19832C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C8__A2__8S19832C3[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C4__8S19832C3[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C42v4Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C4__8S19832C3[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C4__A1__8S19832C3[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C88S19832C4__A5__8S19832C3[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C88S19832C4__A1__8S19832C3[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C78S19832C4__A2__8S19832C3[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C78S19832C4__A6__8S19832C3[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C6__8S19832C4__8S19832C3[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C6__8S19832C4__8S19832C3[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C4__8S19832C3[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C6__A4__8S19832C4__8S19832C3[] = {
  ABISELECT(-424,-256),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__A1__8S19832C4__8S19832C3[] = {
  ABISELECT(288,188),
  ABISELECT(-152,-80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A__8S19832C4__8S19832C3[] = {
  ABISELECT(-192,-104),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C6__8S19832C3[] = {
  ABISELECT(72,48),
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C78S19832C6__8S19832C3[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C78S19832C6__A1__8S19832C3[] = {
  ABISELECT(-368,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C6__8S19832C3[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C88S19832C6__A3__8S19832C3[] = {
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C88S19832C6__8S19832C3[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C6__A4__8S19832C3[] = {
  ABISELECT(-424,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__8S19832C6__8S19832C3[] = {
  ABISELECT(56,36),
  ABISELECT(-384,-232),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C6__8S19832C3[] = {
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__A3__8S19832C6__8S19832C3[] = {
  ABISELECT(-424,-256),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C3[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__A2__8S19832C3[] = {
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
static  VTT_ENTRY vtt_S19832C3[] = {
  {&(_ZTV8S19832C3[6]),  6,51},
  {&(_tg__ZTV8S19832C8__A2__8S19832C3[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C8__A7__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C8__A2__8S19832C3[5]),  5,7},
  {&(_ZTV8S19832C3[15]),  15,51},
  {&(_ZTV8S19832C3[33]),  33,51},
  {&(_ZTV8S19832C3[39]),  39,51},
  {&(_ZTV8S19832C3[49]),  49,51},
  {&(_ZTV8S19832C3[43]),  43,51},
  {&(_ZTV8S19832C3[21]),  21,51},
  {&(_ZTV8S19832C3[25]),  25,51},
  {&(_tg__ZTV8S19832C4__8S19832C3[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C4__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C88S19832C4__A1__8S19832C3[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C88S19832C4__A5__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C88S19832C4__A1__8S19832C3[5]),  5,7},
  {&(_tg__ZTV8S19832C78S19832C4__A2__8S19832C3[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C78S19832C4__A6__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C6__8S19832C4__8S19832C3[6]),  6,8},
  {&(_tg__ZTV8S19832C88S19832C6__8S19832C4__8S19832C3[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A1__8S19832C4__8S19832C3[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C6__A4__8S19832C4__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C8__A1__8S19832C4__8S19832C3[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A__8S19832C4__8S19832C3[3]),  3,5},
  {&(_tg__ZTV8S19832C6__8S19832C3[4]),  4,6},
  {&(_tg__ZTV8S19832C78S19832C6__8S19832C3[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C78S19832C6__A1__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C88S19832C6__8S19832C3[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C88S19832C6__A3__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C88S19832C6__8S19832C3[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C6__A4__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C8__8S19832C6__8S19832C3[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A1__8S19832C6__8S19832C3[5]),  5,7},
  {&(_tg__ZTV8S19832C5__A3__8S19832C6__8S19832C3[3]),  3,4},
  {&(_tg__ZTV8S19832C7__A1__8S19832C3[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__A2__8S19832C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C3[];
extern  VTBL_ENTRY _ZTV8S19832C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C3[];
Class_Descriptor cd_S19832C3 = {  "S19832C3", // class name
  bases_S19832C3, 22,
  &(vtc_S19832C3[0]), // expected_vtbl_contents
  &(vtt_S19832C3[0]), // expected_vtt_contents
  ABISELECT(464,280), // object size
  NSPAIRA(_ZTI8S19832C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19832C3),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C3),36, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19832C9  {
  int s19832c9f0;
  long double s19832c9f1;
  ::S19832C6 s19832c9f2;
  int s19832c9f3;
  void *s19832c9f4;
  ::S5719C15 s19832c9f5;
  __tsi64 s19832c9f6[3];
  char s19832c9f7;
  int s19832c9f8;
  void  mf19832c9(); // _ZN8S19832C99mf19832c9Ev
};
//SIG(-1 S19832C9) C1{ m Fi FD FC2{ BC3{ m} BC4{ BC3 BC5{ VBC3 v1} v2 Fi[2]} BC6{ VBC3 VBC4 BC5 Fi[2] Fp[3]} BC5 Fi[2]} Fi Fp FC7{ m FL Fp FD FC8{ VBC9{ m} VBC10{ BC9 BC11{ VBC9 v3} v4 Fi[2]} BC11 Fi[2] Fp[3]} Fi[8]} FL[3] Fc Fi}


void  S19832C9 ::mf19832c9(){}

static void Test_S19832C9()
{
  {
    init_simple_test("S19832C9");
    S19832C9 lv;
    check2(sizeof(lv), ABISELECT(304,212), "sizeof(S19832C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19832C9)");
    check_field_offset(lv, s19832c9f0, 0, "S19832C9.s19832c9f0");
    check_field_offset(lv, s19832c9f1, ABISELECT(16,4), "S19832C9.s19832c9f1");
    check_field_offset(lv, s19832c9f2, ABISELECT(32,16), "S19832C9.s19832c9f2");
    check_field_offset(lv, s19832c9f3, ABISELECT(128,80), "S19832C9.s19832c9f3");
    check_field_offset(lv, s19832c9f4, ABISELECT(136,84), "S19832C9.s19832c9f4");
    check_field_offset(lv, s19832c9f5, ABISELECT(144,88), "S19832C9.s19832c9f5");
    check_field_offset(lv, s19832c9f6, ABISELECT(272,180), "S19832C9.s19832c9f6");
    check_field_offset(lv, s19832c9f7, ABISELECT(296,204), "S19832C9.s19832c9f7");
    check_field_offset(lv, s19832c9f8, ABISELECT(300,208), "S19832C9.s19832c9f8");
  }
}
static Arrange_To_Call_Me vS19832C9(Test_S19832C9, "S19832C9", ABISELECT(304,212));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19832C9[];
VTBL_ENTRY *P__ZTI8S19832C9 = _ZTI8S19832C9; 
Class_Descriptor cd_S19832C9 = {  "S19832C9", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(304,212), // object size
  NSPAIRA(_ZTI8S19832C9),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  S19832C1  : virtual S19490C26 , S19832C3 , virtual S19832C9 , virtual S5719C14 {
  ::S19832C8 s19832c1f0;
  short s19832c1f1;
  virtual void  v1(); // _ZN8S19832C12v1Ev
  ~S19832C1(); // tgen
  S19832C1(); // tgen
};
//SIG(1 S19832C1) C1{ VBC2{ m} BC3{ VBC2 VBC4{ BC2 BC5{ VBC2 v2} VBC6{ BC2 BC7{ BC2 BC5 v3 Fi[2]} BC8{ VBC2 VBC7 BC5 Fi[2] Fp[3]} BC5 Fi[2]} BC8 BC7 v4 FC7 Fs Fi[2] Fp[3] FC6} BC8 FD Fp[10]} VBC9{ m Fi FD FC6 Fi Fp FC10{ m FL Fp FD FC11{ VBC12{ m} VBC13{ BC12 BC14{ VBC12 v5} v6 Fi[2]} BC14 Fi[2] Fp[3]} Fi[8]} FL[3] Fc Fi} VBC15{ m FC16{ m FD Fi FC17{}} Fi[2]} v1 FC8 Fs}


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

static void Test_S19832C1()
{
  extern Class_Descriptor cd_S19832C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(56,141)];
    init_test(&cd_S19832C1, buf);
    S19832C1 *dp, &lv = *(dp=new (buf) S19832C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(880,560), "sizeof(S19832C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19832C1)");
    /*is_ambiguous_... S19832C1::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19832C1");
    /*is_ambiguous_... S19832C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C3*), 0, "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C4*), 0, "S19832C1");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*)(S19832C6*), 0, "S19832C1");
    /*is_ambiguous_... S19832C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*)(S19832C6*), 0, "S19832C1");
    /*is_ambiguous_... S19832C1::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*), 0, "S19832C1");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*)(S19832C6*), 0, "S19832C1");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C6*), 0, "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*)(S19832C4*), 0, "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*)(S19832C4*), 0, "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C7*)(S19832C4*), 0, "S19832C1");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C8*)(S19832C3*), 0, "S19832C1");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C5*)(S19832C8*)(S19832C3*), 0, "S19832C1");
    /*is_ambiguous_... S19832C4::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C4*), ABISELECT(208,116), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C4*), ABISELECT(208,116), "S19832C1");
    /*is_ambiguous_... S19832C6::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C6*), ABISELECT(448,272), "S19832C1");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*)(S19832C6*), ABISELECT(432,260), "S19832C1");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*)(S19832C6*), ABISELECT(432,260), "S19832C1");
    /*is_ambiguous_... S19832C6::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C6*), ABISELECT(432,260), "S19832C1");
    /*is_ambiguous_... S19832C1::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*), ABISELECT(504,308), "S19832C1");
    /*is_ambiguous_... S19832C1::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*), ABISELECT(504,308), "S19832C1");
    check_base_class_offset(lv, (S19832C7*)(S19832C8*)(S19832C6*), ABISELECT(504,308), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C8*)(S19832C4*), ABISELECT(504,308), "S19832C1");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C8*)(S19832C3*), ABISELECT(504,308), "S19832C1");
    /*is_ambiguous_... S19832C8::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*)(S19832C6*), ABISELECT(448,272), "S19832C1");
    check_base_class_offset(lv, (S19832C8*)(S19832C6*), ABISELECT(448,272), "S19832C1");
    /*is_ambiguous_... S19832C6::S19832C5 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C6*), ABISELECT(488,296), "S19832C1");
    check_base_class_offset(lv, (S19832C6*)(S19832C4*), ABISELECT(432,260), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*)(S19832C4*), ABISELECT(216,120), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C8*)(S19832C4*), ABISELECT(216,120), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19832C7*)(S19832C4*), ABISELECT(256,144), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C7*)(S19832C4*), ABISELECT(256,144), "S19832C1");
    /*is_ambiguous_... S19832C4::S19832C7 */ AMB_check_base_class_offset(lv, (S19832C7*)(S19832C4*), ABISELECT(256,144), "S19832C1");
    check_base_class_offset(lv, (S19832C4*)(S19832C3*), ABISELECT(208,116), "S19832C1");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C5*)(S19832C8*)(S19832C3*), 0, "S19832C1");
    /*is_ambiguous_... S19832C3::S19832C8 */ AMB_check_base_class_offset(lv, (S19832C8*)(S19832C3*), 0, "S19832C1");
    check_base_class_offset(lv, (S19832C3*), 0, "S19832C1");
    check_base_class_offset(lv, (S19832C9*), ABISELECT(528,320), "S19832C1");
    check_base_class_offset(lv, (S5719C14*), ABISELECT(832,532), "S19832C1");
    check_field_offset(lv, s19832c1f0, ABISELECT(144,76), "S19832C1.s19832c1f0");
    check_field_offset(lv, s19832c1f1, ABISELECT(200,112), "S19832C1.s19832c1f1");
    test_class_info(&lv, &cd_S19832C1);
    dp->~S19832C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19832C1(Test_S19832C1, "S19832C1", ABISELECT(880,560));

#else // __cplusplus

extern void _ZN8S19832C1C1Ev();
extern void _ZN8S19832C1D1Ev();
Name_Map name_map_S19832C1[] = {
  NSPAIR(_ZN8S19832C1C1Ev),
  NSPAIR(_ZN8S19832C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C6;
extern VTBL_ENTRY _ZTI8S19832C6[];
extern  VTBL_ENTRY _ZTV8S19832C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C6[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C7;
extern VTBL_ENTRY _ZTI8S19832C7[];
extern  VTBL_ENTRY _ZTV8S19832C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C7[];
extern Class_Descriptor cd_S19832C4;
extern VTBL_ENTRY _ZTI8S19832C4[];
extern  VTBL_ENTRY _ZTV8S19832C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C4[];
extern Class_Descriptor cd_S19832C5;
extern VTBL_ENTRY _ZTI8S19832C5[];
extern  VTBL_ENTRY _ZTV8S19832C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C5[];
extern Class_Descriptor cd_S19832C8;
extern VTBL_ENTRY _ZTI8S19832C8[];
extern  VTBL_ENTRY _ZTV8S19832C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C8[];
extern Class_Descriptor cd_S19832C3;
extern VTBL_ENTRY _ZTI8S19832C3[];
extern  VTBL_ENTRY _ZTV8S19832C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C3[];
extern Class_Descriptor cd_S19832C9;
extern VTBL_ENTRY _ZTI8S19832C9[];
extern Class_Descriptor cd_S5719C14;
extern VTBL_ENTRY _ZTI8S5719C14[];
static Base_Class bases_S19832C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(448,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(432,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
    6, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(432,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(432,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(504,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
    9, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(504,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(504,308), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19832C5,    ABISELECT(448,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(448,272), //bcp->offset
    38, //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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(488,296), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19832C6,    ABISELECT(432,260), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19832C5,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19832C8,    ABISELECT(216,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(256,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
    18, //immediately_derived
  0, 0},
  {&cd_S19832C5,    ABISELECT(256,144), //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
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19832C7,    ABISELECT(256,144), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19832C4,    ABISELECT(208,116), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19832C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19832C8,    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
    16, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19832C3,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19832C9,    ABISELECT(528,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5719C14,    ABISELECT(832,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19832C1[];
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C12v1Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C42v4Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY vtc_S19832C1[] = {
  ABISELECT(832,532),
  ABISELECT(528,320),
  ABISELECT(432,260),
  ABISELECT(208,116),
  ABISELECT(504,308),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C12v1Ev,
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C42v4Ev,
  ABISELECT(288,188),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(-256,-144),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-432,-260),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
  ABISELECT(56,36),
  ABISELECT(-448,-272),
  ABISELECT(-448,-272),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  ABISELECT(-488,-296),
  ABISELECT(-488,-296),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI8S19832C1[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19832C1[];
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C3__8S19832C1[] = {
  ABISELECT(432,260),
  ABISELECT(208,116),
  ABISELECT(504,308),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C3__A2__8S19832C1[] = {
  ABISELECT(504,308),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C88S19832C3__A7__8S19832C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C88S19832C3__A2__8S19832C1[] = {
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C4__8S19832C3__8S19832C1[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C42v4Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C6__8S19832C3__8S19832C1[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-432,-260),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C6__8S19832C3__8S19832C1[] = {
  ABISELECT(56,36),
  ABISELECT(-448,-272),
  ABISELECT(-448,-272),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C3__8S19832C1[] = {
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C6__A4__8S19832C3__8S19832C1[] = {
  ABISELECT(-488,-296),
  ABISELECT(-488,-296),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C4__A1__8S19832C3__8S19832C1[] = {
  ABISELECT(288,188),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C78S19832C4__A2__8S19832C3__8S19832C1[] = {
  ABISELECT(-256,-144),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI8S19832C3[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C4__8S19832C1[] = {
  ABISELECT(296,192),
  ABISELECT(224,144),
  ABISELECT(-208,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C42v4Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C4__8S19832C1[] = {
  ABISELECT(-208,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C4__A1__8S19832C1[] = {
  ABISELECT(288,188),
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C88S19832C4__A5__8S19832C1[] = {
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C88S19832C4__A1__8S19832C1[] = {
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C78S19832C4__A2__8S19832C1[] = {
  ABISELECT(-256,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C78S19832C4__A6__8S19832C1[] = {
  ABISELECT(-256,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C6__8S19832C4__8S19832C1[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-432,-260),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C6__8S19832C4__8S19832C1[] = {
  ABISELECT(56,36),
  ABISELECT(-448,-272),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C4__8S19832C1[] = {
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C6__A4__8S19832C4__8S19832C1[] = {
  ABISELECT(-488,-296),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__A1__8S19832C4__8S19832C1[] = {
  ABISELECT(288,188),
  ABISELECT(-216,-120),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A__8S19832C4__8S19832C1[] = {
  ABISELECT(-256,-144),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19832C4[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C6__8S19832C1[] = {
  ABISELECT(72,48),
  ABISELECT(-432,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C78S19832C6__8S19832C1[] = {
  ABISELECT(-432,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C78S19832C6__A1__8S19832C1[] = {
  ABISELECT(-432,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C88S19832C6__8S19832C1[] = {
  ABISELECT(56,36),
  ABISELECT(-448,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C88S19832C6__A3__8S19832C1[] = {
  ABISELECT(-448,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__8S19832C88S19832C6__8S19832C1[] = {
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C8[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C6__A4__8S19832C1[] = {
  ABISELECT(-488,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C8__8S19832C6__8S19832C1[] = {
  ABISELECT(56,36),
  ABISELECT(-448,-272),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C6__8S19832C1[] = {
  0,
  0,
  ABISELECT(-504,-308),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C5__A3__8S19832C6__8S19832C1[] = {
  ABISELECT(-488,-296),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19832C6[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
extern void _ZN8S19832C52v2Ev();
extern void _ZN8S19832C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C7__A1__8S19832C1[] = {
  ABISELECT(-504,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C7[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19832C72v3Ev,
};
extern void _ZN8S19832C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19832C58S19832C7__A2__8S19832C1[] = {
  ABISELECT(-504,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19832C5[0]),
  (VTBL_ENTRY)&_ZN8S19832C52v2Ev,
};
static  VTT_ENTRY vtt_S19832C1[] = {
  {&(_ZTV8S19832C1[8]),  8,54},
  {&(_tg__ZTV8S19832C3__8S19832C1[6]),  6,7},
  {&(_tg__ZTV8S19832C88S19832C3__A2__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C88S19832C3__A7__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C88S19832C3__A2__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C4__8S19832C3__8S19832C1[8]),  8,10},
  {&(_tg__ZTV8S19832C6__8S19832C3__8S19832C1[6]),  6,8},
  {&(_tg__ZTV8S19832C88S19832C6__8S19832C3__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A1__8S19832C3__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C6__A4__8S19832C3__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C88S19832C4__A1__8S19832C3__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C78S19832C4__A2__8S19832C3__8S19832C1[3]),  3,5},
  {&(_ZTV8S19832C1[18]),  18,54},
  {&(_ZTV8S19832C1[36]),  36,54},
  {&(_ZTV8S19832C1[42]),  42,54},
  {&(_ZTV8S19832C1[52]),  52,54},
  {&(_ZTV8S19832C1[46]),  46,54},
  {&(_ZTV8S19832C1[24]),  24,54},
  {&(_ZTV8S19832C1[28]),  28,54},
  {&(_tg__ZTV8S19832C4__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C4__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C88S19832C4__A1__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C88S19832C4__A5__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C88S19832C4__A1__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C78S19832C4__A2__8S19832C1[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C78S19832C4__A6__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C6__8S19832C4__8S19832C1[6]),  6,8},
  {&(_tg__ZTV8S19832C88S19832C6__8S19832C4__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A1__8S19832C4__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C6__A4__8S19832C4__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C8__A1__8S19832C4__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A__8S19832C4__8S19832C1[3]),  3,5},
  {&(_tg__ZTV8S19832C6__8S19832C1[4]),  4,6},
  {&(_tg__ZTV8S19832C78S19832C6__8S19832C1[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C78S19832C6__A1__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C88S19832C6__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C58S19832C88S19832C6__A3__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C7__8S19832C88S19832C6__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C58S19832C6__A4__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C8__8S19832C6__8S19832C1[4]),  4,5},
  {&(_tg__ZTV8S19832C7__A1__8S19832C6__8S19832C1[5]),  5,7},
  {&(_tg__ZTV8S19832C5__A3__8S19832C6__8S19832C1[3]),  3,4},
  {&(_tg__ZTV8S19832C7__A1__8S19832C1[3]),  3,5},
  {&(_tg__ZTV8S19832C58S19832C7__A2__8S19832C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19832C1[];
extern  VTBL_ENTRY _ZTV8S19832C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19832C1[];
Class_Descriptor cd_S19832C1 = {  "S19832C1", // class name
  bases_S19832C1, 25,
  &(vtc_S19832C1[0]), // expected_vtbl_contents
  &(vtt_S19832C1[0]), // expected_vtt_contents
  ABISELECT(880,560), // object size
  NSPAIRA(_ZTI8S19832C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19832C1),54, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19832C1),44, //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  S7283C5_nt  {
  void *s7283c5f0;
  int s7283c5f1;
  void  mf7283c5(); // _ZN10S7283C5_nt8mf7283c5Ev
};
//SIG(-1 S7283C5_nt) C1{ m Fp Fi}


void  S7283C5_nt ::mf7283c5(){}

//skip512 S7283C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S7283C5_nt[];
VTBL_ENTRY *P__ZTI10S7283C5_nt = _ZTI10S7283C5_nt; 
Class_Descriptor cd_S7283C5_nt = {  "S7283C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7283C5_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  S7283C7  : virtual S1538C9_nt , S7283C5_nt , S19490C26 {
  ::S7150C10_nt s7283c7f0;
  ~S7283C7(); // tgen
  S7283C7(); // tgen
};
//SIG(-1 S7283C7) C1{ VBC2{ m Fi} BC3{ m Fp Fi} BC4{ m} FU5{ m}}


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

static void Test_S7283C7()
{
  extern Class_Descriptor cd_S7283C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7283C7, buf);
    S7283C7 *dp, &lv = *(dp=new (buf) S7283C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7283C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C7)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(28,16), "S7283C7");
    check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S7283C7");
    check_base_class_offset(lv, (S19490C26*), 0, "S7283C7");
    check_field_offset(lv, s7283c7f0, ABISELECT(24,12), "S7283C7.s7283c7f0");
    test_class_info(&lv, &cd_S7283C7);
    dp->~S7283C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C7(Test_S7283C7, "S7283C7", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7283C7C1Ev();
extern void _ZN7S7283C7D1Ev();
Name_Map name_map_S7283C7[] = {
  NSPAIR(_ZN7S7283C7C1Ev),
  NSPAIR(_ZN7S7283C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S7283C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7283C7[];
static  VTBL_ENTRY vtc_S7283C7[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
extern VTBL_ENTRY _ZTV7S7283C7[];
static  VTT_ENTRY vtt_S7283C7[] = {
  {&(_ZTV7S7283C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
Class_Descriptor cd_S7283C7 = {  "S7283C7", // class name
  bases_S7283C7, 3,
  &(vtc_S7283C7[0]), // expected_vtbl_contents
  &(vtt_S7283C7[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7283C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7283C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7283C7),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  S7283C3  : S19490C26 , S7283C5_nt , S1538C9_nt , S7283C7 {
  ~S7283C3(); // tgen
  S7283C3(); // tgen
};
//SIG(-1 S7283C3) C1{ BC2{ m} BC3{ m Fp Fi} BC4{ m Fi} BC5{ VBC4 BC3 BC2 FU6{ m}}}


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

static void Test_S7283C3()
{
  extern Class_Descriptor cd_S7283C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7283C3, buf);
    S7283C3 *dp, &lv = *(dp=new (buf) S7283C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7283C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C3)");
    /*is_ambiguous_... S7283C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(25,13), "S7283C3");
    /*is_ambiguous_... S7283C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(32,16), "S7283C3");
    /*is_ambiguous_... S7283C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(48,24), "S7283C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(52,28), "S7283C3");
    check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(8,4), "S7283C3");
    check_base_class_offset(lv, (S19490C26*)(S7283C7*), 0, "S7283C3");
    check_base_class_offset(lv, (S7283C7*), 0, "S7283C3");
    test_class_info(&lv, &cd_S7283C3);
    dp->~S7283C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C3(Test_S7283C3, "S7283C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S7283C3C1Ev();
extern void _ZN7S7283C3D1Ev();
Name_Map name_map_S7283C3[] = {
  NSPAIR(_ZN7S7283C3C1Ev),
  NSPAIR(_ZN7S7283C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
static Base_Class bases_S7283C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7283C7,    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 _ZTI7S7283C3[];
static  VTBL_ENTRY vtc_S7283C3[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
extern VTBL_ENTRY _ZTV7S7283C3[];
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C3[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTT_ENTRY vtt_S7283C3[] = {
  {&(_ZTV7S7283C3[3]),  3,3},
  {&(_tg__ZTV7S7283C7__7S7283C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
Class_Descriptor cd_S7283C3 = {  "S7283C3", // class name
  bases_S7283C3, 7,
  &(vtc_S7283C3[0]), // expected_vtbl_contents
  &(vtt_S7283C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S7283C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7283C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7283C3),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  S7283C10  : virtual S7283C5_nt , virtual S7283C7 , virtual S19490C26 {
  ~S7283C10(); // tgen
  S7283C10(); // tgen
};
//SIG(-1 S7283C10) C1{ VBC2{ m Fp Fi} VBC3{ VBC4{ m Fi} BC2 BC5{ m} FU6{ m}} VBC5}


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

static void Test_S7283C10()
{
  extern Class_Descriptor cd_S7283C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7283C10, buf);
    S7283C10 *dp, &lv = *(dp=new (buf) S7283C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7283C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C10)");
    /*is_ambiguous_... S7283C10::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S7283C10");
    check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(52,28), "S7283C10");
    check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(32,16), "S7283C10");
    check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(24,12), "S7283C10");
    check_base_class_offset(lv, (S7283C7*), ABISELECT(24,12), "S7283C10");
    /*is_ambiguous_... S7283C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S7283C10");
    test_class_info(&lv, &cd_S7283C10);
    dp->~S7283C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C10(Test_S7283C10, "S7283C10", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7283C10C1Ev();
extern void _ZN8S7283C10D1Ev();
Name_Map name_map_S7283C10[] = {
  NSPAIR(_ZN8S7283C10C1Ev),
  NSPAIR(_ZN8S7283C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S7283C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_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},
  {&cd_S1538C9_nt,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    4, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S7283C7,    ABISELECT(24,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7283C10[];
static  VTBL_ENTRY vtc_S7283C10[] = {
  0,
  ABISELECT(52,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
  ABISELECT(28,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
extern VTBL_ENTRY _ZTV8S7283C10[];
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C10[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTT_ENTRY vtt_S7283C10[] = {
  {&(_ZTV8S7283C10[6]),  6,9},
  {&(_ZTV8S7283C10[9]),  9,9},
  {&(_tg__ZTV7S7283C7__8S7283C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
Class_Descriptor cd_S7283C10 = {  "S7283C10", // class name
  bases_S7283C10, 6,
  &(vtc_S7283C10[0]), // expected_vtbl_contents
  &(vtt_S7283C10[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7283C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7283C10),9, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7283C10),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  S7283C11  : virtual S19490C26 {
  ~S7283C11(); // tgen
  S7283C11(); // tgen
};
//SIG(-1 S7283C11) C1{ VBC2{ m}}


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

static void Test_S7283C11()
{
  extern Class_Descriptor cd_S7283C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7283C11, buf);
    S7283C11 *dp, &lv = *(dp=new (buf) S7283C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7283C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C11)");
    check_base_class_offset(lv, (S19490C26*), 0, "S7283C11");
    test_class_info(&lv, &cd_S7283C11);
    dp->~S7283C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C11(Test_S7283C11, "S7283C11", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7283C11C1Ev();
extern void _ZN8S7283C11D1Ev();
Name_Map name_map_S7283C11[] = {
  NSPAIR(_ZN8S7283C11C1Ev),
  NSPAIR(_ZN8S7283C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S7283C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7283C11[];
static  VTBL_ENTRY vtc_S7283C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C11[0]),
};
extern VTBL_ENTRY _ZTV8S7283C11[];
static  VTT_ENTRY vtt_S7283C11[] = {
  {&(_ZTV8S7283C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7283C11[];
extern  VTBL_ENTRY _ZTV8S7283C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C11[];
Class_Descriptor cd_S7283C11 = {  "S7283C11", // class name
  bases_S7283C11, 1,
  &(vtc_S7283C11[0]), // expected_vtbl_contents
  &(vtt_S7283C11[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7283C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7283C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7283C11),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  S7283C9  : virtual S7283C7 , S7283C10 , virtual S7283C11 , virtual S7283C3 {
  int s7283c9f0;
  virtual  ~S7283C9(); // _ZN7S7283C9D2Ev
  S7283C9(); // tgen
};
//SIG(-1 S7283C9) C1{ VBC2{ VBC3{ m Fi} BC4{ m Fp Fi} BC5{ m} FU6{ m}} BC7{ VBC4 VBC2 VBC5} VBC8{ VBC5} VBC9{ BC5 BC4 BC3 BC2} vd Fi}


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

static void Test_S7283C9()
{
  extern Class_Descriptor cd_S7283C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7283C9, buf);
    S7283C9 *dp, &lv = *(dp=new (buf) S7283C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7283C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C9)");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(44,24), "S7283C9");
    check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(44,24), "S7283C9");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(24,12), "S7283C9");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(16,8), "S7283C9");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*), ABISELECT(16,8), "S7283C9");
    check_base_class_offset(lv, (S7283C7*)(S7283C10*), ABISELECT(16,8), "S7283C9");
    /*is_ambiguous_... S7283C10::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C10*), ABISELECT(48,28), "S7283C9");
    /*is_ambiguous_... S7283C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C10*), 0, "S7283C9");
    check_base_class_offset(lv, (S19490C26*)(S7283C11*), 0, "S7283C9");
    check_base_class_offset(lv, (S7283C10*), 0, "S7283C9");
    check_base_class_offset(lv, (S7283C11*), ABISELECT(64,36), "S7283C9");
    /*is_ambiguous_... S7283C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(97,53), "S7283C9");
    /*is_ambiguous_... S7283C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(104,56), "S7283C9");
    /*is_ambiguous_... S7283C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(120,64), "S7283C9");
    check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(80,44), "S7283C9");
    check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(72,40), "S7283C9");
    check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(72,40), "S7283C9");
    check_base_class_offset(lv, (S7283C3*), ABISELECT(72,40), "S7283C9");
    check_field_offset(lv, s7283c9f0, ABISELECT(8,4), "S7283C9.s7283c9f0");
    test_class_info(&lv, &cd_S7283C9);
    dp->~S7283C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C9(Test_S7283C9, "S7283C9", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S7283C9C1Ev();
extern void _ZN7S7283C9D2Ev();
Name_Map name_map_S7283C9[] = {
  NSPAIR(_ZN7S7283C9C1Ev),
  NSPAIR(_ZN7S7283C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C10;
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
extern Class_Descriptor cd_S7283C11;
extern VTBL_ENTRY _ZTI8S7283C11[];
extern  VTBL_ENTRY _ZTV8S7283C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
static Base_Class bases_S7283C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    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_S7283C5_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7283C10,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C11,    ABISELECT(64,36), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(97,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(72,40), //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
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(72,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7283C9[];
extern void _ZN7S7283C9D1Ev();
extern void _ZN7S7283C9D0Ev();
static  VTBL_ENTRY vtc_S7283C9[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  (VTBL_ENTRY)&_ZN7S7283C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C9D0Ev,
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  ABISELECT(-28,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
extern VTBL_ENTRY _ZTV7S7283C9[];
static  VTBL_ENTRY _tg__ZTV8S7283C10__7S7283C9[] = {
  0,
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C10__7S7283C9[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C9[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C9[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C9[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__A1__7S7283C9[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTT_ENTRY vtt_S7283C9[] = {
  {&(_ZTV7S7283C9[8]),  8,19},
  {&(_tg__ZTV8S7283C10__7S7283C9[6]),  6,6},
  {&(_tg__ZTV7S7283C7__8S7283C10__7S7283C9[3]),  3,3},
  {&(_ZTV7S7283C9[13]),  13,19},
  {&(_ZTV7S7283C9[16]),  16,19},
  {&(_ZTV7S7283C9[19]),  19,19},
  {&(_tg__ZTV7S7283C7__7S7283C9[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C9[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C9[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__A1__7S7283C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7283C9[];
extern  VTBL_ENTRY _ZTV7S7283C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C9[];
Class_Descriptor cd_S7283C9 = {  "S7283C9", // class name
  bases_S7283C9, 15,
  &(vtc_S7283C9[0]), // expected_vtbl_contents
  &(vtt_S7283C9[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S7283C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7283C9),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7283C9),10, //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  S7283C12  : S19490C26 , S7283C5_nt , virtual S7283C3 {
  int s7283c12f0;
  ~S7283C12(); // tgen
  S7283C12(); // tgen
};
//SIG(-1 S7283C12) C1{ BC2{ m} BC3{ m Fp Fi} VBC4{ BC2 BC3 BC5{ m Fi} BC6{ VBC5 BC3 BC2 FU7{ m}}} Fi}


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

static void Test_S7283C12()
{
  extern Class_Descriptor cd_S7283C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S7283C12, buf);
    S7283C12 *dp, &lv = *(dp=new (buf) S7283C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S7283C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C12)");
    /*is_ambiguous_... S7283C12::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S7283C12");
    /*is_ambiguous_... S7283C12::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S7283C12");
    /*is_ambiguous_... S7283C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(57,29), "S7283C12");
    /*is_ambiguous_... S7283C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(64,32), "S7283C12");
    /*is_ambiguous_... S7283C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(80,40), "S7283C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(84,44), "S7283C12");
    check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(40,20), "S7283C12");
    check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(32,16), "S7283C12");
    check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(32,16), "S7283C12");
    check_base_class_offset(lv, (S7283C3*), ABISELECT(32,16), "S7283C12");
    check_field_offset(lv, s7283c12f0, ABISELECT(24,12), "S7283C12.s7283c12f0");
    test_class_info(&lv, &cd_S7283C12);
    dp->~S7283C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C12(Test_S7283C12, "S7283C12", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S7283C12C1Ev();
extern void _ZN8S7283C12D1Ev();
Name_Map name_map_S7283C12[] = {
  NSPAIR(_ZN8S7283C12C1Ev),
  NSPAIR(_ZN8S7283C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
static Base_Class bases_S7283C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_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_S19490C26,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    9, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    9, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7283C5_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_S19490C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7283C7,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(32,16), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7283C12[];
static  VTBL_ENTRY vtc_S7283C12[] = {
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C12[0]),
  ABISELECT(52,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7283C12[0]),
};
extern VTBL_ENTRY _ZTV8S7283C12[];
static  VTBL_ENTRY _tg__ZTV7S7283C3__8S7283C12[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__8S7283C12[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTT_ENTRY vtt_S7283C12[] = {
  {&(_ZTV8S7283C12[4]),  4,7},
  {&(_ZTV8S7283C12[7]),  7,7},
  {&(_tg__ZTV7S7283C3__8S7283C12[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__8S7283C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7283C12[];
extern  VTBL_ENTRY _ZTV8S7283C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C12[];
Class_Descriptor cd_S7283C12 = {  "S7283C12", // class name
  bases_S7283C12, 10,
  &(vtc_S7283C12[0]), // expected_vtbl_contents
  &(vtt_S7283C12[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S7283C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7283C12),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7283C12),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  S7283C2  : virtual S7283C3 , virtual S7283C9 , S7283C12 , S7283C7 {
  int s7283c2f0;
  virtual  ~S7283C2(); // _ZN7S7283C2D2Ev
  virtual void  v1(); // _ZN7S7283C22v1Ev
  S7283C2(); // tgen
};
//SIG(-1 S7283C2) C1{ VBC2{ BC3{ m} BC4{ m Fp Fi} BC5{ m Fi} BC6{ VBC5 BC4 BC3 FU7{ m}}} VBC8{ VBC6 BC9{ VBC4 VBC6 VBC3} VBC10{ VBC3} VBC2 vd Fi} BC11{ BC3 BC4 VBC2 Fi} BC6 vd v1 Fi}


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

static void Test_S7283C2()
{
  extern Class_Descriptor cd_S7283C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,27)];
    init_test(&cd_S7283C2, buf);
    S7283C2 *dp, &lv = *(dp=new (buf) S7283C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S7283C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C2)");
    /*is_ambiguous_... S7283C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(89,49), "S7283C2");
    /*is_ambiguous_... S7283C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(96,52), "S7283C2");
    /*is_ambiguous_... S7283C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(112,60), "S7283C2");
    check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(116,64), "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(116,64), "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(116,64), "S7283C2");
    check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(72,40), "S7283C2");
    check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(64,36), "S7283C2");
    check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(64,36), "S7283C2");
    check_base_class_offset(lv, (S7283C3*), ABISELECT(64,36), "S7283C2");
    check_base_class_offset(lv, (S7283C3*)(S7283C9*), ABISELECT(64,36), "S7283C2");
    check_base_class_offset(lv, (S7283C3*)(S7283C12*), ABISELECT(64,36), "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(144,80), "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(136,76), "S7283C2");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C9*), ABISELECT(136,76), "S7283C2");
    check_base_class_offset(lv, (S7283C7*)(S7283C10*)(S7283C9*), ABISELECT(136,76), "S7283C2");
    /*is_ambiguous_... S7283C10::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C10*)(S7283C9*), ABISELECT(168,92), "S7283C2");
    /*is_ambiguous_... S7283C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C10*)(S7283C9*), ABISELECT(184,100), "S7283C2");
    check_base_class_offset(lv, (S19490C26*)(S7283C11*), ABISELECT(184,100), "S7283C2");
    check_base_class_offset(lv, (S7283C10*)(S7283C9*), ABISELECT(120,68), "S7283C2");
    check_base_class_offset(lv, (S7283C11*)(S7283C9*), ABISELECT(184,100), "S7283C2");
    check_base_class_offset(lv, (S7283C9*), ABISELECT(120,68), "S7283C2");
    /*is_ambiguous_... S7283C12::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C12*), 0, "S7283C2");
    /*is_ambiguous_... S7283C12::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C12*), ABISELECT(8,4), "S7283C2");
    check_base_class_offset(lv, (S7283C12*), 0, "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(40,20), "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(32,16), "S7283C2");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*), ABISELECT(32,16), "S7283C2");
    check_field_offset(lv, s7283c2f0, ABISELECT(60,32), "S7283C2.s7283c2f0");
    test_class_info(&lv, &cd_S7283C2);
    dp->~S7283C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C2(Test_S7283C2, "S7283C2", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN7S7283C2C1Ev();
extern void _ZN7S7283C2D2Ev();
Name_Map name_map_S7283C2[] = {
  NSPAIR(_ZN7S7283C2C1Ev),
  NSPAIR(_ZN7S7283C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C10;
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
extern Class_Descriptor cd_S7283C11;
extern VTBL_ENTRY _ZTI8S7283C11[];
extern  VTBL_ENTRY _ZTV8S7283C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C11[];
extern Class_Descriptor cd_S7283C9;
extern VTBL_ENTRY _ZTI7S7283C9[];
extern  VTBL_ENTRY _ZTV7S7283C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C9[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S7283C12;
extern VTBL_ENTRY _ZTI8S7283C12[];
extern  VTBL_ENTRY _ZTV8S7283C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C12[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
static Base_Class bases_S7283C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(89,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
    7, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_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_S1538C9_nt,    ABISELECT(116,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7283C7,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(136,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    13, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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, 1},
  {&cd_S7283C10,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7283C11,    ABISELECT(184,100), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7283C9,    ABISELECT(120,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S7283C12,    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_S7283C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7283C2[];
extern void _ZN7S7283C2D1Ev();
extern void _ZN7S7283C2D0Ev();
extern void _ZN7S7283C22v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7283C2D1Ev,_ZTv0_n36_N7S7283C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7283C2D1Ev,_ZThn68_N7S7283C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7283C2D0Ev,_ZTv0_n36_N7S7283C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S7283C2D0Ev,_ZThn68_N7S7283C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7283C2[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(168,92),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(116,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  (VTBL_ENTRY)&_ZN7S7283C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7283C22v1Ev,
  ABISELECT(84,48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  ABISELECT(52,28),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  ABISELECT(-120,-68),
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7283C2D1Ev,_ZTv0_n36_N7S7283C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7283C2D0Ev,_ZTv0_n36_N7S7283C2D0Ev),
  ABISELECT(-20,-12),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
};
extern VTBL_ENTRY _ZTV7S7283C2[];
static  VTBL_ENTRY _tg__ZTV8S7283C12__7S7283C2[] = {
  ABISELECT(116,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__8S7283C12__7S7283C2[] = {
  ABISELECT(52,28),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7283C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A__7S7283C2[] = {
  ABISELECT(84,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C2[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__7S7283C2[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
extern void _ZN7S7283C9D1Ev();
extern void _ZN7S7283C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7283C9__7S7283C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  (VTBL_ENTRY)&_ZN7S7283C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7283C107S7283C9__7S7283C2[] = {
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C107S7283C9__7S7283C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C9__7S7283C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C9__7S7283C2[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C9__7S7283C2[] = {
  ABISELECT(52,28),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A1__7S7283C2[] = {
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C11[0]),
};
static  VTT_ENTRY vtt_S7283C2[] = {
  {&(_ZTV7S7283C2[9]),  9,35},
  {&(_tg__ZTV8S7283C12__7S7283C2[4]),  4,4},
  {&(_tg__ZTV7S7283C3__8S7283C12__7S7283C2[3]),  3,3},
  {&(_tg__ZTV7S7283C7__A__7S7283C2[3]),  3,3},
  {&(_ZTV7S7283C2[18]),  18,35},
  {&(_ZTV7S7283C2[27]),  27,35},
  {&(_ZTV7S7283C2[32]),  32,35},
  {&(_ZTV7S7283C2[35]),  35,35},
  {&(_ZTV7S7283C2[15]),  15,35},
  {&(_tg__ZTV7S7283C3__7S7283C2[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__7S7283C2[3]),  3,3},
  {&(_tg__ZTV7S7283C9__7S7283C2[8]),  8,10},
  {&(_tg__ZTV8S7283C107S7283C9__7S7283C2[6]),  6,6},
  {&(_tg__ZTV7S7283C7__8S7283C107S7283C9__7S7283C2[3]),  3,3},
  {&(_tg__ZTV7S7283C7__7S7283C9__7S7283C2[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C9__7S7283C2[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C9__7S7283C2[3]),  3,3},
  {&(_tg__ZTV7S7283C7__A1__7S7283C2[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7283C2[];
extern  VTBL_ENTRY _ZTV7S7283C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C2[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7283C2D0Ev,_ZTv0_n36_N7S7283C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7283C2D0Ev,_ZThn68_N7S7283C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7283C2D1Ev,_ZTv0_n36_N7S7283C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7283C2D1Ev,_ZThn68_N7S7283C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7283C2 = {  "S7283C2", // class name
  bases_S7283C2, 22,
  &(vtc_S7283C2[0]), // expected_vtbl_contents
  &(vtt_S7283C2[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI7S7283C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7283C2),35, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7283C2),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7283C15  : virtual S7283C5_nt , S7283C9 {
  virtual  ~S7283C15(); // _ZN8S7283C15D2Ev
  S7283C15(); // tgen
};
//SIG(-1 S7283C15) C1{ VBC2{ m Fp Fi} BC3{ VBC4{ VBC5{ m Fi} BC2 BC6{ m} FU7{ m}} BC8{ VBC2 VBC4 VBC6} VBC9{ VBC6} VBC10{ BC6 BC2 BC5 BC4} vd Fi} vd}


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

static void Test_S7283C15()
{
  extern Class_Descriptor cd_S7283C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7283C15, buf);
    S7283C15 *dp, &lv = *(dp=new (buf) S7283C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7283C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C15)");
    /*is_ambiguous_... S7283C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(16,8), "S7283C15");
    /*is_ambiguous_... S7283C10::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C10*)(S7283C9*), ABISELECT(16,8), "S7283C15");
    /*is_ambiguous_... S7283C15::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(60,32), "S7283C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(60,32), "S7283C15");
    /*is_ambiguous_... S7283C15::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(40,20), "S7283C15");
    /*is_ambiguous_... S7283C15::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(32,16), "S7283C15");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C9*), ABISELECT(32,16), "S7283C15");
    check_base_class_offset(lv, (S7283C7*)(S7283C10*)(S7283C9*), ABISELECT(32,16), "S7283C15");
    /*is_ambiguous_... S7283C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C10*)(S7283C9*), 0, "S7283C15");
    check_base_class_offset(lv, (S19490C26*)(S7283C11*), 0, "S7283C15");
    check_base_class_offset(lv, (S7283C10*)(S7283C9*), 0, "S7283C15");
    check_base_class_offset(lv, (S7283C11*)(S7283C9*), ABISELECT(64,36), "S7283C15");
    /*is_ambiguous_... S7283C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(97,53), "S7283C15");
    /*is_ambiguous_... S7283C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(104,56), "S7283C15");
    /*is_ambiguous_... S7283C3::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(120,64), "S7283C15");
    check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(80,44), "S7283C15");
    check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(72,40), "S7283C15");
    check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(72,40), "S7283C15");
    check_base_class_offset(lv, (S7283C3*)(S7283C9*), ABISELECT(72,40), "S7283C15");
    check_base_class_offset(lv, (S7283C9*), 0, "S7283C15");
    test_class_info(&lv, &cd_S7283C15);
    dp->~S7283C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C15(Test_S7283C15, "S7283C15", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S7283C15C1Ev();
extern void _ZN8S7283C15D2Ev();
Name_Map name_map_S7283C15[] = {
  NSPAIR(_ZN8S7283C15C1Ev),
  NSPAIR(_ZN8S7283C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C10;
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
extern Class_Descriptor cd_S7283C11;
extern VTBL_ENTRY _ZTI8S7283C11[];
extern  VTBL_ENTRY _ZTV8S7283C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
extern Class_Descriptor cd_S7283C9;
extern VTBL_ENTRY _ZTI7S7283C9[];
extern  VTBL_ENTRY _ZTV7S7283C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C9[];
static Base_Class bases_S7283C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    4, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S7283C7,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7283C10,    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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7283C11,    ABISELECT(64,36), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(97,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(72,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7283C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7283C15[];
extern void _ZN8S7283C15D1Ev();
extern void _ZN8S7283C15D0Ev();
static  VTBL_ENTRY vtc_S7283C15[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(60,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
  (VTBL_ENTRY)&_ZN8S7283C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7283C15D0Ev,
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
  ABISELECT(-12,-8),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
extern VTBL_ENTRY _ZTV8S7283C15[];
extern void _ZN7S7283C9D1Ev();
extern void _ZN7S7283C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7283C9__8S7283C15[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(60,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  (VTBL_ENTRY)&_ZN7S7283C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7283C107S7283C9__8S7283C15[] = {
  0,
  ABISELECT(60,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C107S7283C9__8S7283C15[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C9__8S7283C15[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C9__8S7283C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C9__8S7283C15[] = {
  ABISELECT(-12,-8),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C15[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__8S7283C15[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__8S7283C15[] = {
  ABISELECT(-12,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__A1__8S7283C15[] = {
  ABISELECT(-12,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTT_ENTRY vtt_S7283C15[] = {
  {&(_ZTV8S7283C15[8]),  8,19},
  {&(_tg__ZTV7S7283C9__8S7283C15[8]),  8,10},
  {&(_tg__ZTV8S7283C107S7283C9__8S7283C15[6]),  6,6},
  {&(_tg__ZTV7S7283C7__8S7283C107S7283C9__8S7283C15[3]),  3,3},
  {&(_tg__ZTV7S7283C7__7S7283C9__8S7283C15[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C9__8S7283C15[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C9__8S7283C15[3]),  3,3},
  {&(_ZTV8S7283C15[13]),  13,19},
  {&(_ZTV8S7283C15[16]),  16,19},
  {&(_ZTV8S7283C15[19]),  19,19},
  {&(_tg__ZTV7S7283C7__8S7283C15[3]),  3,3},
  {&(_tg__ZTV8S7283C11__8S7283C15[3]),  3,3},
  {&(_tg__ZTV7S7283C3__8S7283C15[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__A1__8S7283C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7283C15[];
extern  VTBL_ENTRY _ZTV8S7283C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C15[];
Class_Descriptor cd_S7283C15 = {  "S7283C15", // class name
  bases_S7283C15, 16,
  &(vtc_S7283C15[0]), // expected_vtbl_contents
  &(vtt_S7283C15[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S7283C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7283C15),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7283C15),14, //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  S7283C14  : S7283C3 , S19490C26 , virtual S7283C11 , S7283C15 , virtual S19490C18 {
  virtual  ~S7283C14(); // _ZN8S7283C14D2Ev
  S7283C14(); // tgen
};
//SIG(-1 S7283C14) C1{ BC2{ BC3{ m} BC4{ m Fp Fi} BC5{ m Fi} BC6{ VBC5 BC4 BC3 FU7{ m}}} BC3 VBC8{ VBC3} BC9{ VBC4 BC10{ VBC6 BC11{ VBC4 VBC6 VBC3} VBC8 VBC2 vd Fi} vd} VBC12{ m} vd}


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

static void Test_S7283C14()
{
  extern Class_Descriptor cd_S7283C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S7283C14, buf);
    S7283C14 *dp, &lv = *(dp=new (buf) S7283C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S7283C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C14)");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(25,13), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(32,16), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(48,24), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(68,36), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(68,36), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(68,36), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(8,4), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), 0, "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C3*), 0, "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C3*), 0, "S7283C14");
    /*is_ambiguous_... S7283C14::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(52,28), "S7283C14");
    check_base_class_offset(lv, (S19490C26*)(S7283C11*), ABISELECT(80,44), "S7283C14");
    /*is_ambiguous_... S7283C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C10*)(S7283C9*)(S7283C15*), ABISELECT(80,44), "S7283C14");
    check_base_class_offset(lv, (S7283C11*), ABISELECT(72,40), "S7283C14");
    check_base_class_offset(lv, (S7283C11*)(S7283C9*)(S7283C15*), ABISELECT(72,40), "S7283C14");
    /*is_ambiguous_... S7283C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C15*), ABISELECT(80,44), "S7283C14");
    /*is_ambiguous_... S7283C10::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C10*)(S7283C9*)(S7283C15*), ABISELECT(80,44), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(104,56), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(96,52), "S7283C14");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C9*)(S7283C15*), ABISELECT(96,52), "S7283C14");
    check_base_class_offset(lv, (S7283C7*)(S7283C10*)(S7283C9*)(S7283C15*), ABISELECT(96,52), "S7283C14");
    check_base_class_offset(lv, (S7283C10*)(S7283C9*)(S7283C15*), ABISELECT(56,28), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(153,81), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(160,84), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(176,92), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(136,72), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(128,68), "S7283C14");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(128,68), "S7283C14");
    check_base_class_offset(lv, (S7283C3*)(S7283C9*)(S7283C15*), ABISELECT(128,68), "S7283C14");
    check_base_class_offset(lv, (S7283C9*)(S7283C15*), ABISELECT(56,28), "S7283C14");
    check_base_class_offset(lv, (S7283C15*), ABISELECT(56,28), "S7283C14");
    check_base_class_offset(lv, (S19490C18*), 0, "S7283C14");
    test_class_info(&lv, &cd_S7283C14);
    dp->~S7283C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C14(Test_S7283C14, "S7283C14", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S7283C14C1Ev();
extern void _ZN8S7283C14D2Ev();
Name_Map name_map_S7283C14[] = {
  NSPAIR(_ZN8S7283C14C1Ev),
  NSPAIR(_ZN8S7283C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C11;
extern VTBL_ENTRY _ZTI8S7283C11[];
extern  VTBL_ENTRY _ZTV8S7283C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C11[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C10;
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
extern Class_Descriptor cd_S7283C9;
extern VTBL_ENTRY _ZTI7S7283C9[];
extern  VTBL_ENTRY _ZTV7S7283C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C9[];
extern Class_Descriptor cd_S7283C15;
extern VTBL_ENTRY _ZTI8S7283C15[];
extern  VTBL_ENTRY _ZTV8S7283C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S7283C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_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_S1538C9_nt,    ABISELECT(68,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7283C7,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    10, //immediately_derived
  0, 1},
  {&cd_S7283C11,    ABISELECT(72,40), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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
    15, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(96,52), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7283C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(153,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
    22, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    22, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(128,68), //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
    3, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(128,68), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7283C9,    ABISELECT(56,28), //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
    8, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7283C15,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7283C14[];
extern void _ZN8S7283C14D1Ev();
extern void _ZN8S7283C14D0Ev();
extern void ABISELECT(_ZThn56_N8S7283C14D1Ev,_ZThn28_N8S7283C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7283C14D0Ev,_ZThn28_N8S7283C14D0Ev)();
static  VTBL_ENTRY vtc_S7283C14[] = {
  0,
  ABISELECT(128,68),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(72,40),
  ABISELECT(68,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
  (VTBL_ENTRY)&_ZN8S7283C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7283C14D0Ev,
  ABISELECT(72,40),
  ABISELECT(16,12),
  ABISELECT(24,16),
  ABISELECT(12,8),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7283C14D1Ev,_ZThn28_N8S7283C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7283C14D0Ev,_ZThn28_N8S7283C14D0Ev),
  ABISELECT(8,4),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
  ABISELECT(-28,-16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
  ABISELECT(-60,-32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
};
extern VTBL_ENTRY _ZTV8S7283C14[];
static  VTBL_ENTRY _tg__ZTV7S7283C3__A__8S7283C14[] = {
  ABISELECT(68,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__8S7283C14[] = {
  ABISELECT(68,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
extern void _ZN8S7283C15D1Ev();
extern void _ZN8S7283C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7283C15__8S7283C14[] = {
  ABISELECT(72,40),
  ABISELECT(16,12),
  ABISELECT(24,16),
  ABISELECT(12,8),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
  (VTBL_ENTRY)&_ZN8S7283C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7283C15D0Ev,
};
extern void _ZN7S7283C9D1Ev();
extern void _ZN7S7283C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7283C98S7283C15__8S7283C14[] = {
  ABISELECT(72,40),
  ABISELECT(16,12),
  ABISELECT(24,16),
  ABISELECT(12,8),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  (VTBL_ENTRY)&_ZN7S7283C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7283C107S7283C98S7283C15__8S7283C14[] = {
  ABISELECT(24,16),
  ABISELECT(12,8),
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C107S7283C98S7283C15__8S7283C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C98S7283C15__8S7283C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C98S7283C15__8S7283C14[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C98S7283C15__8S7283C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C15__8S7283C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__8S7283C15__8S7283C14[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__8S7283C15__8S7283C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__8S7283C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A1__8S7283C14[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__A1__8S7283C14[] = {
  ABISELECT(-60,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__A2__8S7283C14[] = {
  ABISELECT(-60,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTT_ENTRY vtt_S7283C14[] = {
  {&(_ZTV8S7283C14[9]),  9,30},
  {&(_tg__ZTV7S7283C3__A__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__8S7283C14[3]),  3,3},
  {&(_tg__ZTV8S7283C15__8S7283C14[8]),  8,10},
  {&(_tg__ZTV7S7283C98S7283C15__8S7283C14[8]),  8,10},
  {&(_tg__ZTV8S7283C107S7283C98S7283C15__8S7283C14[6]),  6,6},
  {&(_tg__ZTV7S7283C7__8S7283C107S7283C98S7283C15__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C7__7S7283C98S7283C15__8S7283C14[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C98S7283C15__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C98S7283C15__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C7__8S7283C15__8S7283C14[3]),  3,3},
  {&(_tg__ZTV8S7283C11__8S7283C15__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C3__8S7283C15__8S7283C14[3]),  3,3},
  {&(_ZTV8S7283C14[24]),  24,30},
  {&(_ZTV8S7283C14[19]),  19,30},
  {&(_ZTV8S7283C14[27]),  27,30},
  {&(_ZTV8S7283C14[30]),  30,30},
  {&(_tg__ZTV8S7283C11__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C7__A1__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C3__A1__8S7283C14[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__A2__8S7283C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7283C14[];
extern  VTBL_ENTRY _ZTV8S7283C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C14[];
Class_Descriptor cd_S7283C14 = {  "S7283C14", // class name
  bases_S7283C14, 26,
  &(vtc_S7283C14[0]), // expected_vtbl_contents
  &(vtt_S7283C14[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S7283C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7283C14),30, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7283C14),21, //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  S7283C1  : S7283C2 , S19490C18 , S7283C14 , S7283C3 {
  void *s7283c1f0;
  ::S7223C9_nt s7283c1f1;
  virtual  ~S7283C1(); // _ZN7S7283C1D2Ev
  S7283C1(); // tgen
};
//SIG(1 S7283C1) C1{ BC2{ VBC3{ BC4{ m} BC5{ m Fp Fi} BC6{ m Fi} BC7{ VBC6 BC5 BC4 FU8{ m}}} VBC9{ VBC7 BC10{ VBC5 VBC7 VBC4} VBC11{ VBC4} VBC3 vd Fi} BC12{ BC4 BC5 VBC3 Fi} BC7 vd v1 Fi} BC13{ m} BC14{ BC3 BC4 VBC11 BC15{ VBC5 BC9 vd} VBC13 vd} BC3 vd Fp FC16{}}


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

static void Test_S7283C1()
{
  extern Class_Descriptor cd_S7283C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,46)];
    init_test(&cd_S7283C1, buf);
    S7283C1 *dp, &lv = *(dp=new (buf) S7283C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,180), "sizeof(S7283C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7283C1)");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(233,121), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(240,124), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(256,132), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(260,136), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*), ABISELECT(260,136), "S7283C1");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C2*), ABISELECT(260,136), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*)(S7283C14*), ABISELECT(260,136), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C7*)(S7283C3*), ABISELECT(260,136), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(216,112), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(208,108), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(208,108), "S7283C1");
    check_base_class_offset(lv, (S7283C3*)(S7283C2*), ABISELECT(208,108), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S7283C3*)(S7283C9*), ABISELECT(208,108), "S7283C1");
    check_base_class_offset(lv, (S7283C3*)(S7283C12*)(S7283C2*), ABISELECT(208,108), "S7283C1");
    check_base_class_offset(lv, (S7283C3*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(208,108), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*), ABISELECT(288,152), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*), ABISELECT(280,148), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C9*), ABISELECT(280,148), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C10*)(S7283C9*), ABISELECT(280,148), "S7283C1");
    /*is_ambiguous_... S7283C9::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(280,148), "S7283C1");
    check_base_class_offset(lv, (S7283C7*)(S7283C10*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(280,148), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C10*)(S7283C9*), ABISELECT(312,164), "S7283C1");
    /*is_ambiguous_... S7283C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C15*)(S7283C14*), ABISELECT(312,164), "S7283C1");
    /*is_ambiguous_... S7283C10::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C10*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(312,164), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C10*)(S7283C9*), ABISELECT(328,172), "S7283C1");
    check_base_class_offset(lv, (S19490C26*)(S7283C11*), ABISELECT(328,172), "S7283C1");
    /*is_ambiguous_... S7283C10::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C10*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(328,172), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S7283C10*)(S7283C9*), ABISELECT(264,140), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C9 */ AMB_check_base_class_offset(lv, (S7283C11*)(S7283C9*), ABISELECT(328,172), "S7283C1");
    check_base_class_offset(lv, (S7283C11*)(S7283C14*), ABISELECT(328,172), "S7283C1");
    check_base_class_offset(lv, (S7283C11*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(328,172), "S7283C1");
    check_base_class_offset(lv, (S7283C9*)(S7283C2*), ABISELECT(264,140), "S7283C1");
    /*is_ambiguous_... S7283C12::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C12*)(S7283C2*), 0, "S7283C1");
    /*is_ambiguous_... S7283C12::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C12*)(S7283C2*), ABISELECT(8,4), "S7283C1");
    check_base_class_offset(lv, (S7283C12*)(S7283C2*), 0, "S7283C1");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C2*), ABISELECT(40,20), "S7283C1");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C2*), ABISELECT(32,16), "S7283C1");
    /*is_ambiguous_... S7283C2::S7283C7 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C2*), ABISELECT(32,16), "S7283C1");
    check_base_class_offset(lv, (S7283C2*), 0, "S7283C1");
    /*is_ambiguous_... S7283C1::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*)(S7283C14*), ABISELECT(89,49), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*)(S7283C14*), ABISELECT(96,52), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*)(S7283C14*), ABISELECT(112,60), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*)(S7283C14*), ABISELECT(72,40), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*)(S7283C14*), ABISELECT(64,36), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C3*)(S7283C14*), ABISELECT(64,36), "S7283C1");
    /*is_ambiguous_... S7283C14::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C3*)(S7283C14*), ABISELECT(64,36), "S7283C1");
    /*is_ambiguous_... S7283C14::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C14*), ABISELECT(116,64), "S7283C1");
    check_base_class_offset(lv, (S7283C10*)(S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(120,64), "S7283C1");
    check_base_class_offset(lv, (S7283C9*)(S7283C15*)(S7283C14*), ABISELECT(120,64), "S7283C1");
    check_base_class_offset(lv, (S7283C15*)(S7283C14*), ABISELECT(120,64), "S7283C1");
    check_base_class_offset(lv, (S19490C18*)(S7283C14*), ABISELECT(336,176), "S7283C1");
    check_base_class_offset(lv, (S7283C14*), ABISELECT(64,36), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C3*), ABISELECT(161,85), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C3*), ABISELECT(168,88), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S7283C3*), ABISELECT(184,96), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S7283C7*)(S7283C3*), ABISELECT(144,76), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7283C7*)(S7283C3*), ABISELECT(136,72), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C7*)(S7283C3*), ABISELECT(136,72), "S7283C1");
    /*is_ambiguous_... S7283C1::S7283C3 */ AMB_check_base_class_offset(lv, (S7283C3*), ABISELECT(136,72), "S7283C1");
    check_field_offset(lv, s7283c1f0, ABISELECT(192,100), "S7283C1.s7283c1f0");
    check_field_offset(lv, s7283c1f1, ABISELECT(200,104), "S7283C1.s7283c1f1");
    test_class_info(&lv, &cd_S7283C1);
    dp->~S7283C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7283C1(Test_S7283C1, "S7283C1", ABISELECT(344,180));

#else // __cplusplus

extern void _ZN7S7283C1C1Ev();
extern void _ZN7S7283C1D2Ev();
Name_Map name_map_S7283C1[] = {
  NSPAIR(_ZN7S7283C1C1Ev),
  NSPAIR(_ZN7S7283C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C10;
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
extern Class_Descriptor cd_S7283C11;
extern VTBL_ENTRY _ZTI8S7283C11[];
extern  VTBL_ENTRY _ZTV8S7283C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C11[];
extern Class_Descriptor cd_S7283C9;
extern VTBL_ENTRY _ZTI7S7283C9[];
extern  VTBL_ENTRY _ZTV7S7283C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C9[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S7283C12;
extern VTBL_ENTRY _ZTI8S7283C12[];
extern  VTBL_ENTRY _ZTV8S7283C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C12[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C2;
extern VTBL_ENTRY _ZTI7S7283C2[];
extern  VTBL_ENTRY _ZTV7S7283C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C2[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C10;
extern VTBL_ENTRY _ZTI8S7283C10[];
extern  VTBL_ENTRY _ZTV8S7283C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C10[];
extern Class_Descriptor cd_S7283C9;
extern VTBL_ENTRY _ZTI7S7283C9[];
extern  VTBL_ENTRY _ZTV7S7283C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C9[];
extern Class_Descriptor cd_S7283C15;
extern VTBL_ENTRY _ZTI8S7283C15[];
extern  VTBL_ENTRY _ZTV8S7283C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C15[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7283C14;
extern VTBL_ENTRY _ZTI8S7283C14[];
extern  VTBL_ENTRY _ZTV8S7283C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7283C14[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C7;
extern VTBL_ENTRY _ZTI7S7283C7[];
extern  VTBL_ENTRY _ZTV7S7283C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C7[];
extern Class_Descriptor cd_S7283C3;
extern VTBL_ENTRY _ZTI7S7283C3[];
extern  VTBL_ENTRY _ZTV7S7283C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C3[];
static Base_Class bases_S7283C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(233,121), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_nt,    ABISELECT(240,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
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(260,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_nt,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(208,108), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(280,148), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7283C5_nt,    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
    13, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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
    13, //immediately_derived
  0, 1},
  {&cd_S7283C10,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    15, //immediately_derived
  0, 0},
  {&cd_S7283C11,    ABISELECT(328,172), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7283C9,    ABISELECT(264,140), //bcp->offset
    43, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S7283C12,    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
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(32,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7283C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(89,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
    30, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    30, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    30, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    29, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    29, //immediately_derived
  0, 0},
  {&cd_S7283C7,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7283C3,    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
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(116,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7283C10,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7283C9,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7283C15,    ABISELECT(120,64), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    36, //immediately_derived
  0, 1},
  {&cd_S7283C14,    ABISELECT(64,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(161,85), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_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
    43, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    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
    43, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    42, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    42, //immediately_derived
  0, 0},
  {&cd_S7283C7,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7283C3,    ABISELECT(136,72), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7283C1[];
extern void _ZN7S7283C1D1Ev();
extern void _ZN7S7283C1D0Ev();
extern void _ZN7S7283C22v1Ev();
extern void ABISELECT(_ZThn64_N7S7283C1D1Ev,_ZThn36_N7S7283C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7283C1D0Ev,_ZThn36_N7S7283C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7283C1D1Ev,_ZThn64_N7S7283C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7283C1D0Ev,_ZThn64_N7S7283C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7283C1D1Ev,_ZTv0_n36_N7S7283C1D1Ev)();
extern void ABISELECT(_ZThn264_N7S7283C1D1Ev,_ZThn140_N7S7283C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7283C1D0Ev,_ZTv0_n36_N7S7283C1D0Ev)();
extern void ABISELECT(_ZThn264_N7S7283C1D0Ev,_ZThn140_N7S7283C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7283C1[] = {
  ABISELECT(336,176),
  ABISELECT(328,172),
  ABISELECT(328,172),
  ABISELECT(312,164),
  ABISELECT(280,148),
  ABISELECT(264,140),
  ABISELECT(260,136),
  ABISELECT(208,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  (VTBL_ENTRY)&_ZN7S7283C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7283C22v1Ev,
  ABISELECT(228,120),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  ABISELECT(272,140),
  ABISELECT(144,72),
  ABISELECT(216,112),
  ABISELECT(248,128),
  ABISELECT(264,136),
  ABISELECT(264,136),
  ABISELECT(196,100),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7283C1D1Ev,_ZThn36_N7S7283C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7283C1D0Ev,_ZThn36_N7S7283C1D0Ev),
  ABISELECT(88,44),
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(140,72),
  ABISELECT(160,84),
  ABISELECT(192,100),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7283C1D1Ev,_ZThn64_N7S7283C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7283C1D0Ev,_ZThn64_N7S7283C1D0Ev),
  ABISELECT(124,64),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  ABISELECT(52,28),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  ABISELECT(-264,-140),
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7283C1D1Ev,_ZTv0_n36_N7S7283C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7283C1D0Ev,_ZTv0_n36_N7S7283C1D0Ev),
  ABISELECT(-20,-12),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
  0,
  ABISELECT(-328,-172),
  (VTBL_ENTRY)&(_ZTI7S7283C1[0]),
};
extern VTBL_ENTRY _ZTV7S7283C1[];
extern void _ZN7S7283C2D1Ev();
extern void _ZN7S7283C2D0Ev();
extern void _ZN7S7283C22v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7283C2__7S7283C1[] = {
  ABISELECT(328,172),
  ABISELECT(328,172),
  ABISELECT(312,164),
  ABISELECT(280,148),
  ABISELECT(264,140),
  ABISELECT(260,136),
  ABISELECT(208,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  (VTBL_ENTRY)&_ZN7S7283C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7283C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7283C127S7283C2__7S7283C1[] = {
  ABISELECT(260,136),
  ABISELECT(208,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__8S7283C127S7283C2__7S7283C1[] = {
  ABISELECT(52,28),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7283C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C2__A2__7S7283C1[] = {
  ABISELECT(228,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C2__7S7283C1[] = {
  ABISELECT(52,28),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
};
extern void ABISELECT(_ZTv0_n72_N7S7283C2D1Ev,_ZTv0_n36_N7S7283C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7283C2D1Ev,_ZThn140_N7S7283C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7283C2D0Ev,_ZTv0_n36_N7S7283C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7283C2D0Ev,_ZThn140_N7S7283C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7283C9__7S7283C2__7S7283C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7283C2D1Ev,_ZTv0_n36_N7S7283C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7283C2D0Ev,_ZTv0_n36_N7S7283C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A1__7S7283C2__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C2__7S7283C1[] = {
  0,
  ABISELECT(-328,-172),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A__7S7283C2__7S7283C1[] = {
  ABISELECT(228,120),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7283C2[0]),
};
extern void _ZN8S7283C14D1Ev();
extern void _ZN8S7283C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7283C14__7S7283C1[] = {
  ABISELECT(272,140),
  ABISELECT(144,72),
  ABISELECT(216,112),
  ABISELECT(248,128),
  ABISELECT(264,136),
  ABISELECT(264,136),
  ABISELECT(196,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
  (VTBL_ENTRY)&_ZN8S7283C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7283C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7283C38S7283C14__A1__7S7283C1[] = {
  ABISELECT(196,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C38S7283C14__A3__7S7283C1[] = {
  ABISELECT(196,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
extern void _ZN8S7283C15D1Ev();
extern void _ZN8S7283C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7283C158S7283C14__7S7283C1[] = {
  ABISELECT(88,44),
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(140,72),
  ABISELECT(160,84),
  ABISELECT(192,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
  (VTBL_ENTRY)&_ZN8S7283C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7283C15D0Ev,
};
extern void _ZN7S7283C9D1Ev();
extern void _ZN7S7283C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7283C98S7283C158S7283C14__A1__7S7283C1[] = {
  ABISELECT(88,44),
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(140,72),
  ABISELECT(160,84),
  ABISELECT(192,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  (VTBL_ENTRY)&_ZN7S7283C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7283C107S7283C98S7283C158S7283C14__A1__7S7283C1[] = {
  ABISELECT(208,108),
  ABISELECT(140,72),
  ABISELECT(160,84),
  ABISELECT(192,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C107S7283C98S7283C158S7283C14__A1__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C98S7283C158S7283C14__A1__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C98S7283C158S7283C14__A1__7S7283C1[] = {
  0,
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C98S7283C158S7283C14__A1__7S7283C1[] = {
  ABISELECT(52,28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C158S7283C14__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__8S7283C158S7283C14__7S7283C1[] = {
  0,
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__8S7283C158S7283C14__7S7283C1[] = {
  ABISELECT(52,28),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7283C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__8S7283C14__7S7283C1[] = {
  0,
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
};
extern void ABISELECT(_ZThn56_N8S7283C14D1Ev,_ZThn28_N8S7283C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7283C14D0Ev,_ZThn28_N8S7283C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7283C15__8S7283C14__7S7283C1[] = {
  ABISELECT(88,44),
  ABISELECT(208,108),
  ABISELECT(208,108),
  ABISELECT(140,72),
  ABISELECT(160,84),
  ABISELECT(192,100),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7283C14D1Ev,_ZThn28_N8S7283C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7283C14D0Ev,_ZThn28_N8S7283C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A1__8S7283C14__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__A1__8S7283C14__7S7283C1[] = {
  ABISELECT(52,28),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7283C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__A__7S7283C1[] = {
  ABISELECT(124,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__A4__7S7283C1[] = {
  ABISELECT(124,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C1[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C77S7283C3__7S7283C1[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
extern void _ZN7S7283C9D1Ev();
extern void _ZN7S7283C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7283C9__7S7283C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
  (VTBL_ENTRY)&_ZN7S7283C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7283C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7283C107S7283C9__7S7283C1[] = {
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__8S7283C107S7283C9__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7283C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__7S7283C9__7S7283C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C9__7S7283C1[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C3__7S7283C9__7S7283C1[] = {
  ABISELECT(52,28),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7283C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7283C7__A1__7S7283C1[] = {
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7283C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7283C11__7S7283C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7283C11[0]),
};
static  VTT_ENTRY vtt_S7283C1[] = {
  {&(_ZTV7S7283C1[10]),  10,60},
  {&(_tg__ZTV7S7283C2__7S7283C1[9]),  9,12},
  {&(_tg__ZTV8S7283C127S7283C2__7S7283C1[4]),  4,4},
  {&(_tg__ZTV7S7283C3__8S7283C127S7283C2__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C2__A2__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C2__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C9__7S7283C2__7S7283C1[9]),  9,11},
  {&(_tg__ZTV7S7283C7__A1__7S7283C2__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C2__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C7__A__7S7283C2__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C14__7S7283C1[9]),  9,11},
  {&(_tg__ZTV7S7283C38S7283C14__A1__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C38S7283C14__A3__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C158S7283C14__7S7283C1[8]),  8,10},
  {&(_tg__ZTV7S7283C98S7283C158S7283C14__A1__7S7283C1[8]),  8,10},
  {&(_tg__ZTV8S7283C107S7283C98S7283C158S7283C14__A1__7S7283C1[6]),  6,6},
  {&(_tg__ZTV7S7283C7__8S7283C107S7283C98S7283C158S7283C14__A1__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C7__7S7283C98S7283C158S7283C14__A1__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C98S7283C158S7283C14__A1__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C98S7283C158S7283C14__A1__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C7__8S7283C158S7283C14__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C11__8S7283C158S7283C14__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C3__8S7283C158S7283C14__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C11__8S7283C14__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C15__8S7283C14__7S7283C1[8]),  8,10},
  {&(_tg__ZTV7S7283C7__A1__8S7283C14__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C3__A1__8S7283C14__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C3__A__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__A4__7S7283C1[3]),  3,3},
  {&(_ZTV7S7283C1[43]),  43,60},
  {&(_ZTV7S7283C1[52]),  52,60},
  {&(_ZTV7S7283C1[57]),  57,60},
  {&(_ZTV7S7283C1[60]),  60,60},
  {&(_ZTV7S7283C1[16]),  16,60},
  {&(_ZTV7S7283C1[25]),  25,60},
  {&(_ZTV7S7283C1[35]),  35,60},
  {&(_ZTV7S7283C1[40]),  40,60},
  {&(_tg__ZTV7S7283C3__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C77S7283C3__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C9__7S7283C1[8]),  8,10},
  {&(_tg__ZTV8S7283C107S7283C9__7S7283C1[6]),  6,6},
  {&(_tg__ZTV7S7283C7__8S7283C107S7283C9__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C7__7S7283C9__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C9__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C3__7S7283C9__7S7283C1[3]),  3,3},
  {&(_tg__ZTV7S7283C7__A1__7S7283C1[3]),  3,3},
  {&(_tg__ZTV8S7283C11__7S7283C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7283C1[];
extern  VTBL_ENTRY _ZTV7S7283C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7283C1[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7283C2D0Ev,_ZTv0_n36_N7S7283C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7283C2D0Ev,_ZThn140_N7S7283C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7283C2D1Ev,_ZTv0_n36_N7S7283C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7283C2D1Ev,_ZThn140_N7S7283C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7283C1D0Ev,_ZTv0_n36_N7S7283C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7283C1D0Ev,_ZThn140_N7S7283C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7283C1D1Ev,_ZTv0_n36_N7S7283C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7283C1D1Ev,_ZThn140_N7S7283C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7283C1 = {  "S7283C1", // class name
  bases_S7283C1, 44,
  &(vtc_S7283C1[0]), // expected_vtbl_contents
  &(vtt_S7283C1[0]), // expected_vtt_contents
  ABISELECT(344,180), // object size
  NSPAIRA(_ZTI7S7283C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7283C1),60, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7283C1),47, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19765C5  : virtual S1538C9_nt , S7283C5_nt , S19490C26 {
  ::S7150C10_nt s19765c5f0;
  ~S19765C5(); // tgen
  S19765C5(); // tgen
};
//SIG(-1 S19765C5) C1{ VBC2{ m Fi} BC3{ m Fp Fi} BC4{ m} FU5{ m}}


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

static void Test_S19765C5()
{
  extern Class_Descriptor cd_S19765C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19765C5, buf);
    S19765C5 *dp, &lv = *(dp=new (buf) S19765C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19765C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C5)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(28,16), "S19765C5");
    check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S19765C5");
    check_base_class_offset(lv, (S19490C26*), 0, "S19765C5");
    check_field_offset(lv, s19765c5f0, ABISELECT(24,12), "S19765C5.s19765c5f0");
    test_class_info(&lv, &cd_S19765C5);
    dp->~S19765C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C5(Test_S19765C5, "S19765C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19765C5C1Ev();
extern void _ZN8S19765C5D1Ev();
Name_Map name_map_S19765C5[] = {
  NSPAIR(_ZN8S19765C5C1Ev),
  NSPAIR(_ZN8S19765C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19765C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19765C5[];
static  VTBL_ENTRY vtc_S19765C5[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
extern VTBL_ENTRY _ZTV8S19765C5[];
static  VTT_ENTRY vtt_S19765C5[] = {
  {&(_ZTV8S19765C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
Class_Descriptor cd_S19765C5 = {  "S19765C5", // class name
  bases_S19765C5, 3,
  &(vtc_S19765C5[0]), // expected_vtbl_contents
  &(vtt_S19765C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19765C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19765C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19765C5),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  S19765C9  : virtual S7283C5_nt , virtual S19765C5 , virtual S19490C26 {
  ~S19765C9(); // tgen
  S19765C9(); // tgen
};
//SIG(-1 S19765C9) C1{ VBC2{ m Fp Fi} VBC3{ VBC4{ m Fi} BC2 BC5{ m} FU6{ m}} VBC5}


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

static void Test_S19765C9()
{
  extern Class_Descriptor cd_S19765C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19765C9, buf);
    S19765C9 *dp, &lv = *(dp=new (buf) S19765C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19765C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C9)");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S19765C9");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(52,28), "S19765C9");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(32,16), "S19765C9");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(24,12), "S19765C9");
    check_base_class_offset(lv, (S19765C5*), ABISELECT(24,12), "S19765C9");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19765C9");
    test_class_info(&lv, &cd_S19765C9);
    dp->~S19765C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C9(Test_S19765C9, "S19765C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19765C9C1Ev();
extern void _ZN8S19765C9D1Ev();
Name_Map name_map_S19765C9[] = {
  NSPAIR(_ZN8S19765C9C1Ev),
  NSPAIR(_ZN8S19765C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19765C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_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},
  {&cd_S1538C9_nt,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    4, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S19765C5,    ABISELECT(24,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19765C9[];
static  VTBL_ENTRY vtc_S19765C9[] = {
  0,
  ABISELECT(52,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
  ABISELECT(28,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
extern VTBL_ENTRY _ZTV8S19765C9[];
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C9[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C9[] = {
  {&(_ZTV8S19765C9[6]),  6,9},
  {&(_ZTV8S19765C9[9]),  9,9},
  {&(_tg__ZTV8S19765C5__8S19765C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
Class_Descriptor cd_S19765C9 = {  "S19765C9", // class name
  bases_S19765C9, 6,
  &(vtc_S19765C9[0]), // expected_vtbl_contents
  &(vtt_S19765C9[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19765C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19765C9),9, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19765C9),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  S19765C10  : virtual S19490C26 {
  ~S19765C10(); // tgen
  S19765C10(); // tgen
};
//SIG(-1 S19765C10) C1{ VBC2{ m}}


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

static void Test_S19765C10()
{
  extern Class_Descriptor cd_S19765C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19765C10, buf);
    S19765C10 *dp, &lv = *(dp=new (buf) S19765C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19765C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C10)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19765C10");
    test_class_info(&lv, &cd_S19765C10);
    dp->~S19765C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C10(Test_S19765C10, "S19765C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19765C10C1Ev();
extern void _ZN9S19765C10D1Ev();
Name_Map name_map_S19765C10[] = {
  NSPAIR(_ZN9S19765C10C1Ev),
  NSPAIR(_ZN9S19765C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19765C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19765C10[];
static  VTBL_ENTRY vtc_S19765C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
extern VTBL_ENTRY _ZTV9S19765C10[];
static  VTT_ENTRY vtt_S19765C10[] = {
  {&(_ZTV9S19765C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
Class_Descriptor cd_S19765C10 = {  "S19765C10", // class name
  bases_S19765C10, 1,
  &(vtc_S19765C10[0]), // expected_vtbl_contents
  &(vtt_S19765C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19765C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19765C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C10),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  S19765C11  : S19490C26 , S7283C5_nt , S1538C9_nt , S19765C5 {
  ~S19765C11(); // tgen
  S19765C11(); // tgen
};
//SIG(-1 S19765C11) C1{ BC2{ m} BC3{ m Fp Fi} BC4{ m Fi} BC5{ VBC4 BC3 BC2 FU6{ m}}}


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

static void Test_S19765C11()
{
  extern Class_Descriptor cd_S19765C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19765C11, buf);
    S19765C11 *dp, &lv = *(dp=new (buf) S19765C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19765C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C11)");
    /*is_ambiguous_... S19765C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(25,13), "S19765C11");
    /*is_ambiguous_... S19765C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(32,16), "S19765C11");
    /*is_ambiguous_... S19765C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(48,24), "S19765C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(52,28), "S19765C11");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(8,4), "S19765C11");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*), 0, "S19765C11");
    check_base_class_offset(lv, (S19765C5*), 0, "S19765C11");
    test_class_info(&lv, &cd_S19765C11);
    dp->~S19765C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C11(Test_S19765C11, "S19765C11", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19765C11C1Ev();
extern void _ZN9S19765C11D1Ev();
Name_Map name_map_S19765C11[] = {
  NSPAIR(_ZN9S19765C11C1Ev),
  NSPAIR(_ZN9S19765C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
static Base_Class bases_S19765C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19765C5,    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 _ZTI9S19765C11[];
static  VTBL_ENTRY vtc_S19765C11[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
extern VTBL_ENTRY _ZTV9S19765C11[];
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C11[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C11[] = {
  {&(_ZTV9S19765C11[3]),  3,3},
  {&(_tg__ZTV8S19765C5__9S19765C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
Class_Descriptor cd_S19765C11 = {  "S19765C11", // class name
  bases_S19765C11, 7,
  &(vtc_S19765C11[0]), // expected_vtbl_contents
  &(vtt_S19765C11[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19765C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19765C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C11),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  S19765C4  : virtual S19765C5 , S19765C9 , virtual S19765C10 , virtual S19765C11 {
  int s19765c4f0;
  virtual  ~S19765C4(); // _ZN8S19765C4D2Ev
  S19765C4(); // tgen
};
//SIG(-1 S19765C4) C1{ VBC2{ VBC3{ m Fi} BC4{ m Fp Fi} BC5{ m} FU6{ m}} BC7{ VBC4 VBC2 VBC5} VBC8{ VBC5} VBC9{ BC5 BC4 BC3 BC2} vd Fi}


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

static void Test_S19765C4()
{
  extern Class_Descriptor cd_S19765C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S19765C4, buf);
    S19765C4 *dp, &lv = *(dp=new (buf) S19765C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S19765C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C4)");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(44,24), "S19765C4");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(44,24), "S19765C4");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(24,12), "S19765C4");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(16,8), "S19765C4");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*), ABISELECT(16,8), "S19765C4");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*), ABISELECT(16,8), "S19765C4");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*), ABISELECT(48,28), "S19765C4");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*), 0, "S19765C4");
    check_base_class_offset(lv, (S19490C26*)(S19765C10*), 0, "S19765C4");
    check_base_class_offset(lv, (S19765C9*), 0, "S19765C4");
    check_base_class_offset(lv, (S19765C10*), ABISELECT(64,36), "S19765C4");
    /*is_ambiguous_... S19765C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(97,53), "S19765C4");
    /*is_ambiguous_... S19765C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(104,56), "S19765C4");
    /*is_ambiguous_... S19765C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(120,64), "S19765C4");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(80,44), "S19765C4");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(72,40), "S19765C4");
    check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(72,40), "S19765C4");
    check_base_class_offset(lv, (S19765C11*), ABISELECT(72,40), "S19765C4");
    check_field_offset(lv, s19765c4f0, ABISELECT(8,4), "S19765C4.s19765c4f0");
    test_class_info(&lv, &cd_S19765C4);
    dp->~S19765C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C4(Test_S19765C4, "S19765C4", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S19765C4C1Ev();
extern void _ZN8S19765C4D2Ev();
Name_Map name_map_S19765C4[] = {
  NSPAIR(_ZN8S19765C4C1Ev),
  NSPAIR(_ZN8S19765C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C10;
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
static Base_Class bases_S19765C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    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_S7283C5_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19765C9,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19765C10,    ABISELECT(64,36), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(97,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(72,40), //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
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(72,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19765C4[];
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY vtc_S19765C4[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  ABISELECT(-28,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
extern VTBL_ENTRY _ZTV8S19765C4[];
static  VTBL_ENTRY _tg__ZTV8S19765C9__8S19765C4[] = {
  0,
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C9__8S19765C4[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C4[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C4[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C4[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A1__8S19765C4[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C4[] = {
  {&(_ZTV8S19765C4[8]),  8,19},
  {&(_tg__ZTV8S19765C9__8S19765C4[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C9__8S19765C4[3]),  3,3},
  {&(_ZTV8S19765C4[13]),  13,19},
  {&(_ZTV8S19765C4[16]),  16,19},
  {&(_ZTV8S19765C4[19]),  19,19},
  {&(_tg__ZTV8S19765C5__8S19765C4[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C4[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C4[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A1__8S19765C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
Class_Descriptor cd_S19765C4 = {  "S19765C4", // class name
  bases_S19765C4, 15,
  &(vtc_S19765C4[0]), // expected_vtbl_contents
  &(vtt_S19765C4[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S19765C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19765C4),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19765C4),10, //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  S19765C3  : virtual S7283C5_nt , S19765C4 {
  virtual  ~S19765C3(); // _ZN8S19765C3D2Ev
  S19765C3(); // tgen
};
//SIG(-1 S19765C3) C1{ VBC2{ m Fp Fi} BC3{ VBC4{ VBC5{ m Fi} BC2 BC6{ m} FU7{ m}} BC8{ VBC2 VBC4 VBC6} VBC9{ VBC6} VBC10{ BC6 BC2 BC5 BC4} vd Fi} vd}


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

static void Test_S19765C3()
{
  extern Class_Descriptor cd_S19765C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S19765C3, buf);
    S19765C3 *dp, &lv = *(dp=new (buf) S19765C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S19765C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C3)");
    /*is_ambiguous_... S19765C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(16,8), "S19765C3");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C4*), ABISELECT(16,8), "S19765C3");
    /*is_ambiguous_... S19765C3::S19765C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(60,32), "S19765C3");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(60,32), "S19765C3");
    /*is_ambiguous_... S19765C3::S19765C5 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(40,20), "S19765C3");
    /*is_ambiguous_... S19765C3::S19765C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(32,16), "S19765C3");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C4*), ABISELECT(32,16), "S19765C3");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C4*), ABISELECT(32,16), "S19765C3");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C4*), 0, "S19765C3");
    check_base_class_offset(lv, (S19490C26*)(S19765C10*), 0, "S19765C3");
    check_base_class_offset(lv, (S19765C9*)(S19765C4*), 0, "S19765C3");
    check_base_class_offset(lv, (S19765C10*)(S19765C4*), ABISELECT(64,36), "S19765C3");
    /*is_ambiguous_... S19765C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(97,53), "S19765C3");
    /*is_ambiguous_... S19765C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(104,56), "S19765C3");
    /*is_ambiguous_... S19765C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(120,64), "S19765C3");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(80,44), "S19765C3");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(72,40), "S19765C3");
    check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(72,40), "S19765C3");
    check_base_class_offset(lv, (S19765C11*)(S19765C4*), ABISELECT(72,40), "S19765C3");
    check_base_class_offset(lv, (S19765C4*), 0, "S19765C3");
    test_class_info(&lv, &cd_S19765C3);
    dp->~S19765C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C3(Test_S19765C3, "S19765C3", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S19765C3C1Ev();
extern void _ZN8S19765C3D2Ev();
Name_Map name_map_S19765C3[] = {
  NSPAIR(_ZN8S19765C3C1Ev),
  NSPAIR(_ZN8S19765C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C10;
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19765C4;
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
static Base_Class bases_S19765C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    4, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S19765C5,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19765C9,    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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19765C10,    ABISELECT(64,36), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(97,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(72,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19765C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19765C3[];
extern void _ZN8S19765C3D1Ev();
extern void _ZN8S19765C3D0Ev();
static  VTBL_ENTRY vtc_S19765C3[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(60,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
  (VTBL_ENTRY)&_ZN8S19765C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C3D0Ev,
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
  ABISELECT(-12,-8),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
};
extern VTBL_ENTRY _ZTV8S19765C3[];
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C4__8S19765C3[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(60,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C98S19765C4__8S19765C3[] = {
  0,
  ABISELECT(60,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C98S19765C4__8S19765C3[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C4__8S19765C3[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C4__8S19765C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C4__8S19765C3[] = {
  ABISELECT(-12,-8),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C3[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C3[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C3[] = {
  ABISELECT(-12,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A1__8S19765C3[] = {
  ABISELECT(-12,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C3[] = {
  {&(_ZTV8S19765C3[8]),  8,19},
  {&(_tg__ZTV8S19765C4__8S19765C3[8]),  8,10},
  {&(_tg__ZTV8S19765C98S19765C4__8S19765C3[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C98S19765C4__8S19765C3[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C4__8S19765C3[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C4__8S19765C3[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C4__8S19765C3[3]),  3,3},
  {&(_ZTV8S19765C3[13]),  13,19},
  {&(_ZTV8S19765C3[16]),  16,19},
  {&(_ZTV8S19765C3[19]),  19,19},
  {&(_tg__ZTV8S19765C5__8S19765C3[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C3[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C3[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A1__8S19765C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19765C3[];
extern  VTBL_ENTRY _ZTV8S19765C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C3[];
Class_Descriptor cd_S19765C3 = {  "S19765C3", // class name
  bases_S19765C3, 16,
  &(vtc_S19765C3[0]), // expected_vtbl_contents
  &(vtt_S19765C3[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S19765C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19765C3),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19765C3),14, //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  S19765C15  : S19490C26 , S7283C5_nt , virtual S19765C11 {
  int s19765c15f0;
  ~S19765C15(); // tgen
  S19765C15(); // tgen
};
//SIG(-1 S19765C15) C1{ BC2{ m} BC3{ m Fp Fi} VBC4{ BC2 BC3 BC5{ m Fi} BC6{ VBC5 BC3 BC2 FU7{ m}}} Fi}


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

static void Test_S19765C15()
{
  extern Class_Descriptor cd_S19765C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S19765C15, buf);
    S19765C15 *dp, &lv = *(dp=new (buf) S19765C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S19765C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C15)");
    /*is_ambiguous_... S19765C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19765C15");
    /*is_ambiguous_... S19765C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S19765C15");
    /*is_ambiguous_... S19765C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(57,29), "S19765C15");
    /*is_ambiguous_... S19765C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(64,32), "S19765C15");
    /*is_ambiguous_... S19765C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(80,40), "S19765C15");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(84,44), "S19765C15");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(40,20), "S19765C15");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(32,16), "S19765C15");
    check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(32,16), "S19765C15");
    check_base_class_offset(lv, (S19765C11*), ABISELECT(32,16), "S19765C15");
    check_field_offset(lv, s19765c15f0, ABISELECT(24,12), "S19765C15.s19765c15f0");
    test_class_info(&lv, &cd_S19765C15);
    dp->~S19765C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C15(Test_S19765C15, "S19765C15", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN9S19765C15C1Ev();
extern void _ZN9S19765C15D1Ev();
Name_Map name_map_S19765C15[] = {
  NSPAIR(_ZN9S19765C15C1Ev),
  NSPAIR(_ZN9S19765C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
static Base_Class bases_S19765C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_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_S19490C26,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    9, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    9, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7283C5_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_S19490C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19765C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(32,16), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19765C15[];
static  VTBL_ENTRY vtc_S19765C15[] = {
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
  ABISELECT(52,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
extern VTBL_ENTRY _ZTV9S19765C15[];
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C15[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__9S19765C15[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C15[] = {
  {&(_ZTV9S19765C15[4]),  4,7},
  {&(_ZTV9S19765C15[7]),  7,7},
  {&(_tg__ZTV9S19765C11__9S19765C15[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__9S19765C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C15[];
extern  VTBL_ENTRY _ZTV9S19765C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C15[];
Class_Descriptor cd_S19765C15 = {  "S19765C15", // class name
  bases_S19765C15, 10,
  &(vtc_S19765C15[0]), // expected_vtbl_contents
  &(vtt_S19765C15[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI9S19765C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19765C15),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C15),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  S19765C14  : S19765C4 , S19765C15 {
  virtual  ~S19765C14(); // _ZN9S19765C14D2Ev
  S19765C14(); // tgen
};
//SIG(-1 S19765C14) C1{ BC2{ VBC3{ VBC4{ m Fi} BC5{ m Fp Fi} BC6{ m} FU7{ m}} BC8{ VBC5 VBC3 VBC6} VBC9{ VBC6} VBC10{ BC6 BC5 BC4 BC3} vd Fi} BC11{ BC6 BC5 VBC10 Fi} vd}


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

static void Test_S19765C14()
{
  extern Class_Descriptor cd_S19765C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,22)];
    init_test(&cd_S19765C14, buf);
    S19765C14 *dp, &lv = *(dp=new (buf) S19765C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S19765C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C14)");
    /*is_ambiguous_... S19765C14::S19765C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(76,40), "S19765C14");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(76,40), "S19765C14");
    /*is_ambiguous_... S19765C14::S19765C5 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(56,28), "S19765C14");
    /*is_ambiguous_... S19765C14::S19765C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(48,24), "S19765C14");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C4*), ABISELECT(48,24), "S19765C14");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C4*), ABISELECT(48,24), "S19765C14");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C4*), ABISELECT(80,44), "S19765C14");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C4*), 0, "S19765C14");
    check_base_class_offset(lv, (S19490C26*)(S19765C10*), 0, "S19765C14");
    check_base_class_offset(lv, (S19765C9*)(S19765C4*), 0, "S19765C14");
    check_base_class_offset(lv, (S19765C10*)(S19765C4*), ABISELECT(96,52), "S19765C14");
    /*is_ambiguous_... S19765C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(129,69), "S19765C14");
    /*is_ambiguous_... S19765C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(136,72), "S19765C14");
    /*is_ambiguous_... S19765C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(152,80), "S19765C14");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(112,60), "S19765C14");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(104,56), "S19765C14");
    check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(104,56), "S19765C14");
    check_base_class_offset(lv, (S19765C11*)(S19765C4*), ABISELECT(104,56), "S19765C14");
    check_base_class_offset(lv, (S19765C11*)(S19765C15*), ABISELECT(104,56), "S19765C14");
    check_base_class_offset(lv, (S19765C4*), 0, "S19765C14");
    /*is_ambiguous_... S19765C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C15*), ABISELECT(16,8), "S19765C14");
    /*is_ambiguous_... S19765C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C15*), ABISELECT(24,12), "S19765C14");
    check_base_class_offset(lv, (S19765C15*), ABISELECT(16,8), "S19765C14");
    test_class_info(&lv, &cd_S19765C14);
    dp->~S19765C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C14(Test_S19765C14, "S19765C14", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN9S19765C14C1Ev();
extern void _ZN9S19765C14D2Ev();
Name_Map name_map_S19765C14[] = {
  NSPAIR(_ZN9S19765C14C1Ev),
  NSPAIR(_ZN9S19765C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C10;
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19765C4;
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19765C15;
extern VTBL_ENTRY _ZTI9S19765C15[];
extern  VTBL_ENTRY _ZTV9S19765C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C15[];
static Base_Class bases_S19765C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(76,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(48,24), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19765C9,    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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19765C10,    ABISELECT(96,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(129,69), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19765C5,    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
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(104,56), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19765C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S19765C15,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19765C14[];
extern void _ZN9S19765C14D1Ev();
extern void _ZN9S19765C14D0Ev();
static  VTBL_ENTRY vtc_S19765C14[] = {
  ABISELECT(104,56),
  ABISELECT(96,52),
  0,
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  (VTBL_ENTRY)&_ZN9S19765C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C14D0Ev,
  ABISELECT(60,32),
  ABISELECT(88,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  ABISELECT(-28,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
extern VTBL_ENTRY _ZTV9S19765C14[];
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C4__9S19765C14[] = {
  ABISELECT(104,56),
  ABISELECT(96,52),
  0,
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C98S19765C4__9S19765C14[] = {
  0,
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C98S19765C4__9S19765C14[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C4__9S19765C14[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C4__9S19765C14[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C4__9S19765C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C15__9S19765C14[] = {
  ABISELECT(60,32),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C15__9S19765C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C14[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__9S19765C14[] = {
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C14[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A1__9S19765C14[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C14[] = {
  {&(_ZTV9S19765C14[8]),  8,23},
  {&(_tg__ZTV8S19765C4__9S19765C14[8]),  8,10},
  {&(_tg__ZTV8S19765C98S19765C4__9S19765C14[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C98S19765C4__9S19765C14[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C4__9S19765C14[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C4__9S19765C14[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C4__9S19765C14[3]),  3,3},
  {&(_tg__ZTV9S19765C15__9S19765C14[4]),  4,4},
  {&(_tg__ZTV9S19765C11__9S19765C15__9S19765C14[3]),  3,3},
  {&(_ZTV9S19765C14[17]),  17,23},
  {&(_ZTV9S19765C14[20]),  20,23},
  {&(_ZTV9S19765C14[23]),  23,23},
  {&(_ZTV9S19765C14[14]),  14,23},
  {&(_tg__ZTV8S19765C5__9S19765C14[3]),  3,3},
  {&(_tg__ZTV9S19765C10__9S19765C14[3]),  3,3},
  {&(_tg__ZTV9S19765C11__9S19765C14[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A1__9S19765C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C14[];
extern  VTBL_ENTRY _ZTV9S19765C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C14[];
Class_Descriptor cd_S19765C14 = {  "S19765C14", // class name
  bases_S19765C14, 19,
  &(vtc_S19765C14[0]), // expected_vtbl_contents
  &(vtt_S19765C14[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI9S19765C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19765C14),23, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C14),17, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19765C13  : virtual S19765C14 , S19490C26 {
  virtual  ~S19765C13(); // _ZN9S19765C13D2Ev
  S19765C13(); // tgen
};
//SIG(-1 S19765C13) C1{ VBC2{ BC3{ VBC4{ VBC5{ m Fi} BC6{ m Fp Fi} BC7{ m} FU8{ m}} BC9{ VBC6 VBC4 VBC7} VBC10{ VBC7} VBC11{ BC7 BC6 BC5 BC4} vd Fi} BC12{ BC7 BC6 VBC11 Fi} vd} BC7 vd}


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

static void Test_S19765C13()
{
  extern Class_Descriptor cd_S19765C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,23)];
    init_test(&cd_S19765C13, buf);
    S19765C13 *dp, &lv = *(dp=new (buf) S19765C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,88), "sizeof(S19765C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C13)");
    /*is_ambiguous_... S19765C13::S19765C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(84,44), "S19765C13");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(84,44), "S19765C13");
    /*is_ambiguous_... S19765C13::S19765C5 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(64,32), "S19765C13");
    /*is_ambiguous_... S19765C13::S19765C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(56,28), "S19765C13");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C4*)(S19765C14*), ABISELECT(56,28), "S19765C13");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(56,28), "S19765C13");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(88,48), "S19765C13");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(104,56), "S19765C13");
    check_base_class_offset(lv, (S19490C26*)(S19765C10*), ABISELECT(104,56), "S19765C13");
    check_base_class_offset(lv, (S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(8,4), "S19765C13");
    check_base_class_offset(lv, (S19765C10*)(S19765C4*)(S19765C14*), 0, "S19765C13");
    /*is_ambiguous_... S19765C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(137,73), "S19765C13");
    /*is_ambiguous_... S19765C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(144,76), "S19765C13");
    /*is_ambiguous_... S19765C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(160,84), "S19765C13");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(120,64), "S19765C13");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(112,60), "S19765C13");
    check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(112,60), "S19765C13");
    check_base_class_offset(lv, (S19765C11*)(S19765C4*)(S19765C14*), ABISELECT(112,60), "S19765C13");
    check_base_class_offset(lv, (S19765C11*)(S19765C15*)(S19765C14*), ABISELECT(112,60), "S19765C13");
    check_base_class_offset(lv, (S19765C4*)(S19765C14*), ABISELECT(8,4), "S19765C13");
    /*is_ambiguous_... S19765C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C15*)(S19765C14*), ABISELECT(24,12), "S19765C13");
    /*is_ambiguous_... S19765C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C15*)(S19765C14*), ABISELECT(32,16), "S19765C13");
    check_base_class_offset(lv, (S19765C15*)(S19765C14*), ABISELECT(24,12), "S19765C13");
    check_base_class_offset(lv, (S19765C14*), ABISELECT(8,4), "S19765C13");
    /*is_ambiguous_... S19765C13::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19765C13");
    test_class_info(&lv, &cd_S19765C13);
    dp->~S19765C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C13(Test_S19765C13, "S19765C13", ABISELECT(168,88));

#else // __cplusplus

extern void _ZN9S19765C13C1Ev();
extern void _ZN9S19765C13D2Ev();
Name_Map name_map_S19765C13[] = {
  NSPAIR(_ZN9S19765C13C1Ev),
  NSPAIR(_ZN9S19765C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C10;
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19765C4;
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19765C15;
extern VTBL_ENTRY _ZTI9S19765C15[];
extern  VTBL_ENTRY _ZTV9S19765C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C15[];
extern Class_Descriptor cd_S19765C14;
extern VTBL_ENTRY _ZTI9S19765C14[];
extern  VTBL_ENTRY _ZTV9S19765C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C14[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19765C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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, 1},
  {&cd_S19765C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19765C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(137,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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S19765C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(112,60), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19765C4,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S19765C15,    ABISELECT(24,12), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19765C14,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19765C13[];
extern void _ZN9S19765C13D1Ev();
extern void _ZN9S19765C13D0Ev();
extern void ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19765C13D1Ev,_ZThn4_N9S19765C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev)();
extern void ABISELECT(_ZThn8_N9S19765C13D0Ev,_ZThn4_N9S19765C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19765C13[] = {
  ABISELECT(112,60),
  0,
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(56,28),
  ABISELECT(8,4),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  (VTBL_ENTRY)&_ZN9S19765C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C13D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev),
  ABISELECT(60,32),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  ABISELECT(28,16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  ABISELECT(-28,-16),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
extern VTBL_ENTRY _ZTV9S19765C13[];
extern void _ZN9S19765C14D1Ev();
extern void _ZN9S19765C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19765C14__9S19765C13[] = {
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  (VTBL_ENTRY)&_ZN9S19765C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C14D0Ev,
};
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C49S19765C14__9S19765C13[] = {
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C98S19765C49S19765C14__9S19765C13[] = {
  ABISELECT(96,52),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C98S19765C49S19765C14__9S19765C13[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C49S19765C14__9S19765C13[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C49S19765C14__9S19765C13[] = {
  ABISELECT(104,56),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C49S19765C14__9S19765C13[] = {
  ABISELECT(-28,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C159S19765C14__9S19765C13[] = {
  ABISELECT(60,32),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C159S19765C14__9S19765C13[] = {
  ABISELECT(-28,-16),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C14__9S19765C13[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__9S19765C14__9S19765C13[] = {
  ABISELECT(104,56),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C14__9S19765C13[] = {
  ABISELECT(-28,-16),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C15__9S19765C14__9S19765C13[] = {
  ABISELECT(60,32),
  ABISELECT(88,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C13[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__9S19765C13[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C13[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A1__9S19765C13[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C13[] = {
  {&(_ZTV9S19765C13[9]),  9,32},
  {&(_ZTV9S19765C13[20]),  20,32},
  {&(_ZTV9S19765C13[29]),  29,32},
  {&(_ZTV9S19765C13[9]),  9,32},
  {&(_ZTV9S19765C13[32]),  32,32},
  {&(_ZTV9S19765C13[26]),  26,32},
  {&(_tg__ZTV9S19765C14__9S19765C13[8]),  8,10},
  {&(_tg__ZTV8S19765C49S19765C14__9S19765C13[8]),  8,10},
  {&(_tg__ZTV8S19765C98S19765C49S19765C14__9S19765C13[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C98S19765C49S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C49S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C49S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C49S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C159S19765C14__9S19765C13[4]),  4,4},
  {&(_tg__ZTV9S19765C11__9S19765C159S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV8S19765C5__9S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C10__9S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C11__9S19765C14__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C15__9S19765C14__9S19765C13[4]),  4,4},
  {&(_tg__ZTV8S19765C5__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C10__9S19765C13[3]),  3,3},
  {&(_tg__ZTV9S19765C11__9S19765C13[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A1__9S19765C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C13[];
extern  VTBL_ENTRY _ZTV9S19765C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C13[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19765C13D0Ev,_ZThn4_N9S19765C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19765C13D1Ev,_ZThn4_N9S19765C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19765C13 = {  "S19765C13", // class name
  bases_S19765C13, 21,
  &(vtc_S19765C13[0]), // expected_vtbl_contents
  &(vtt_S19765C13[0]), // expected_vtt_contents
  ABISELECT(168,88), // object size
  NSPAIRA(_ZTI9S19765C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19765C13),32, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C13),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19765C16  : virtual S19765C5 , S19490C26 , virtual S7283C5_nt , S1538C9_nt {
  ~S19765C16(); // tgen
  S19765C16(); // tgen
};
//SIG(-1 S19765C16) C1{ VBC2{ VBC3{ m Fi} BC4{ m Fp Fi} BC5{ m} FU6{ m}} BC5 VBC4 BC3}


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

static void Test_S19765C16()
{
  extern Class_Descriptor cd_S19765C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19765C16, buf);
    S19765C16 *dp, &lv = *(dp=new (buf) S19765C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19765C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C16)");
    check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(44,24), "S19765C16");
    check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(24,12), "S19765C16");
    check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(16,8), "S19765C16");
    check_base_class_offset(lv, (S19765C5*), ABISELECT(16,8), "S19765C16");
    /*is_ambiguous_... S19765C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S19765C16");
    /*is_ambiguous_... S19765C16::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(48,28), "S19765C16");
    /*is_ambiguous_... S19765C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(8,4), "S19765C16");
    test_class_info(&lv, &cd_S19765C16);
    dp->~S19765C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C16(Test_S19765C16, "S19765C16", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S19765C16C1Ev();
extern void _ZN9S19765C16D1Ev();
Name_Map name_map_S19765C16[] = {
  NSPAIR(_ZN9S19765C16C1Ev),
  NSPAIR(_ZN9S19765C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
static Base_Class bases_S19765C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    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_S7283C5_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_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 _ZTI9S19765C16[];
static  VTBL_ENTRY vtc_S19765C16[] = {
  ABISELECT(48,28),
  ABISELECT(44,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C16[0]),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19765C16[0]),
};
extern VTBL_ENTRY _ZTV9S19765C16[];
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C16[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C16[] = {
  {&(_ZTV9S19765C16[5]),  5,8},
  {&(_ZTV9S19765C16[8]),  8,8},
  {&(_tg__ZTV8S19765C5__9S19765C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C16[];
extern  VTBL_ENTRY _ZTV9S19765C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C16[];
Class_Descriptor cd_S19765C16 = {  "S19765C16", // class name
  bases_S19765C16, 7,
  &(vtc_S19765C16[0]), // expected_vtbl_contents
  &(vtt_S19765C16[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S19765C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19765C16),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C16),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  S19765C12  : virtual S19765C13 , S19765C9 , S19765C11 , S19765C16 {
  ~S19765C12(); // tgen
  S19765C12(); // tgen
};
//SIG(-1 S19765C12) C1{ VBC2{ VBC3{ BC4{ VBC5{ VBC6{ m Fi} BC7{ m Fp Fi} BC8{ m} FU9{ m}} BC10{ VBC7 VBC5 VBC8} VBC11{ VBC8} VBC12{ BC8 BC7 BC6 BC5} vd Fi} BC13{ BC8 BC7 VBC12 Fi} vd} BC8 vd} BC10 BC12 BC14{ VBC5 BC8 VBC7 BC6}}


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

static void Test_S19765C12()
{
  extern Class_Descriptor cd_S19765C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,32)];
    init_test(&cd_S19765C12, buf);
    S19765C12 *dp, &lv = *(dp=new (buf) S19765C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,124), "sizeof(S19765C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C12)");
    /*is_ambiguous_... S19765C12::S19765C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(164,84), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(164,84), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(164,84), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C5 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(144,72), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(136,68), "S19765C12");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C4*)(S19765C14*), ABISELECT(136,68), "S19765C12");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(136,68), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C9*), ABISELECT(136,68), "S19765C12");
    check_base_class_offset(lv, (S19765C5*)(S19765C16*), ABISELECT(136,68), "S19765C12");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(168,88), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*), ABISELECT(168,88), "S19765C12");
    /*is_ambiguous_... S19765C16::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C16*), ABISELECT(168,88), "S19765C12");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C4*)(S19765C14*), 0, "S19765C12");
    check_base_class_offset(lv, (S19490C26*)(S19765C10*), 0, "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*), 0, "S19765C12");
    check_base_class_offset(lv, (S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(88,44), "S19765C12");
    check_base_class_offset(lv, (S19765C10*)(S19765C4*)(S19765C14*), ABISELECT(80,40), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(209,109), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(216,112), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(232,120), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(192,100), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(184,96), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(184,96), "S19765C12");
    check_base_class_offset(lv, (S19765C11*)(S19765C4*)(S19765C14*), ABISELECT(184,96), "S19765C12");
    check_base_class_offset(lv, (S19765C11*)(S19765C15*)(S19765C14*), ABISELECT(184,96), "S19765C12");
    check_base_class_offset(lv, (S19765C4*)(S19765C14*), ABISELECT(88,44), "S19765C12");
    /*is_ambiguous_... S19765C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C15*)(S19765C14*), ABISELECT(104,52), "S19765C12");
    /*is_ambiguous_... S19765C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C15*)(S19765C14*), ABISELECT(112,56), "S19765C12");
    check_base_class_offset(lv, (S19765C15*)(S19765C14*), ABISELECT(104,52), "S19765C12");
    check_base_class_offset(lv, (S19765C14*)(S19765C13*), ABISELECT(88,44), "S19765C12");
    /*is_ambiguous_... S19765C13::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C13*), ABISELECT(80,40), "S19765C12");
    check_base_class_offset(lv, (S19765C13*), ABISELECT(80,40), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S19765C9*), 0, "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(33,17), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(40,20), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(56,28), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(16,8), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(8,4), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(8,4), "S19765C12");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19765C11*), ABISELECT(8,4), "S19765C12");
    /*is_ambiguous_... S19765C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C16*), ABISELECT(64,32), "S19765C12");
    /*is_ambiguous_... S19765C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C16*), ABISELECT(72,36), "S19765C12");
    check_base_class_offset(lv, (S19765C16*), ABISELECT(64,32), "S19765C12");
    test_class_info(&lv, &cd_S19765C12);
    dp->~S19765C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C12(Test_S19765C12, "S19765C12", ABISELECT(240,124));

#else // __cplusplus

extern void _ZN9S19765C12C1Ev();
extern void _ZN9S19765C12D1Ev();
Name_Map name_map_S19765C12[] = {
  NSPAIR(_ZN9S19765C12C1Ev),
  NSPAIR(_ZN9S19765C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C10;
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19765C4;
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19765C15;
extern VTBL_ENTRY _ZTI9S19765C15[];
extern  VTBL_ENTRY _ZTV9S19765C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C15[];
extern Class_Descriptor cd_S19765C14;
extern VTBL_ENTRY _ZTI9S19765C14[];
extern  VTBL_ENTRY _ZTV9S19765C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C14[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C13;
extern VTBL_ENTRY _ZTI9S19765C13[];
extern  VTBL_ENTRY _ZTV9S19765C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C13[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19765C16;
extern VTBL_ENTRY _ZTI9S19765C16[];
extern  VTBL_ENTRY _ZTV9S19765C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C16[];
static Base_Class bases_S19765C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(164,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
    3, //immediately_derived
  0, 1},
  {&cd_S7283C5_nt,    ABISELECT(144,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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(136,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19765C9,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19765C10,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(209,109), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_nt,    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_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(184,96), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19765C4,    ABISELECT(88,44), //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
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7283C5_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S19765C15,    ABISELECT(104,52), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19765C14,    ABISELECT(88,44), //bcp->offset
    32, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19765C13,    ABISELECT(80,40), //bcp->offset
    20, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19765C9,    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_S19490C26,    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
    29, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    29, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    29, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    28, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19765C5,    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
    11, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    32, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S19765C16,    ABISELECT(64,32), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19765C12[];
extern void _ZN9S19765C12D1Ev();
extern void _ZN9S19765C12D0Ev();
extern void ABISELECT(_ZTv0_n80_N9S19765C12D1Ev,_ZTv0_n40_N9S19765C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19765C12D1Ev,_ZThn40_N9S19765C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19765C12D0Ev,_ZTv0_n40_N9S19765C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19765C12D0Ev,_ZThn40_N9S19765C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19765C12D1Ev,_ZTv0_n36_N9S19765C12D1Ev)();
extern void ABISELECT(_ZThn88_N9S19765C12D1Ev,_ZThn44_N9S19765C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19765C12D0Ev,_ZTv0_n36_N9S19765C12D0Ev)();
extern void ABISELECT(_ZThn88_N9S19765C12D0Ev,_ZThn44_N9S19765C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19765C12[] = {
  ABISELECT(184,96),
  ABISELECT(80,40),
  ABISELECT(88,44),
  ABISELECT(80,40),
  0,
  ABISELECT(164,84),
  ABISELECT(136,68),
  ABISELECT(168,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  (VTBL_ENTRY)&_ZN9S19765C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C12D0Ev,
  ABISELECT(156,80),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  ABISELECT(104,56),
  ABISELECT(100,52),
  ABISELECT(72,36),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  ABISELECT(-80,-40),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(56,28),
  ABISELECT(8,4),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19765C12D1Ev,_ZTv0_n40_N9S19765C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19765C12D0Ev,_ZTv0_n40_N9S19765C12D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(-88,-44),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C12D1Ev,_ZTv0_n36_N9S19765C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C12D0Ev,_ZTv0_n36_N9S19765C12D0Ev),
  ABISELECT(60,32),
  ABISELECT(80,44),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  ABISELECT(28,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  ABISELECT(-20,-12),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
};
extern VTBL_ENTRY _ZTV9S19765C12[];
static  VTBL_ENTRY _tg__ZTV8S19765C9__A1__9S19765C12[] = {
  0,
  ABISELECT(164,84),
  ABISELECT(136,68),
  ABISELECT(168,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C9__A1__9S19765C12[] = {
  ABISELECT(28,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__A__9S19765C12[] = {
  ABISELECT(156,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A2__9S19765C12[] = {
  ABISELECT(156,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C16__9S19765C12[] = {
  ABISELECT(104,56),
  ABISELECT(100,52),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C16__9S19765C12[] = {
  ABISELECT(28,16),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19765C16[0]),
};
extern void _ZN9S19765C13D1Ev();
extern void _ZN9S19765C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19765C13__9S19765C12[] = {
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(56,28),
  ABISELECT(8,4),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  (VTBL_ENTRY)&_ZN9S19765C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C13D0Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19765C13D1Ev,_ZThn4_N9S19765C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev)();
extern void ABISELECT(_ZThn8_N9S19765C13D0Ev,_ZThn4_N9S19765C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19765C14__9S19765C13__9S19765C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(-88,-44),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C13__9S19765C12[] = {
  ABISELECT(28,16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C13__9S19765C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C159S19765C14__9S19765C13__9S19765C12[] = {
  ABISELECT(60,32),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
extern void _ZN9S19765C14D1Ev();
extern void _ZN9S19765C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19765C14__9S19765C12[] = {
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(-88,-44),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  (VTBL_ENTRY)&_ZN9S19765C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C14D0Ev,
};
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C49S19765C14__9S19765C12[] = {
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(-88,-44),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C98S19765C49S19765C14__9S19765C12[] = {
  ABISELECT(-88,-44),
  ABISELECT(76,40),
  ABISELECT(48,24),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C98S19765C49S19765C14__9S19765C12[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C49S19765C14__9S19765C12[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C49S19765C14__9S19765C12[] = {
  ABISELECT(-80,-40),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C49S19765C14__9S19765C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C159S19765C14__9S19765C12[] = {
  ABISELECT(60,32),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C159S19765C14__9S19765C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C14__9S19765C12[] = {
  ABISELECT(28,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__9S19765C14__9S19765C12[] = {
  ABISELECT(-80,-40),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C14__9S19765C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C15__9S19765C14__9S19765C12[] = {
  ABISELECT(60,32),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C12[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__9S19765C12[] = {
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C12[] = {
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A1__9S19765C12[] = {
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTT_ENTRY vtt_S19765C12[] = {
  {&(_ZTV9S19765C12[10]),  10,53},
  {&(_tg__ZTV8S19765C9__A1__9S19765C12[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C9__A1__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C11__A__9S19765C12[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A2__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C16__9S19765C12[5]),  5,5},
  {&(_tg__ZTV8S19765C5__9S19765C16__9S19765C12[3]),  3,3},
  {&(_ZTV9S19765C12[30]),  30,53},
  {&(_ZTV9S19765C12[41]),  41,53},
  {&(_ZTV9S19765C12[50]),  50,53},
  {&(_ZTV9S19765C12[30]),  30,53},
  {&(_ZTV9S19765C12[53]),  53,53},
  {&(_ZTV9S19765C12[47]),  47,53},
  {&(_ZTV9S19765C12[15]),  15,53},
  {&(_ZTV9S19765C12[20]),  20,53},
  {&(_tg__ZTV9S19765C13__9S19765C12[9]),  9,11},
  {&(_tg__ZTV9S19765C14__9S19765C13__9S19765C12[9]),  9,11},
  {&(_tg__ZTV8S19765C5__9S19765C13__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C13__9S19765C12[9]),  9,11},
  {&(_tg__ZTV9S19765C11__9S19765C13__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C159S19765C14__9S19765C13__9S19765C12[4]),  4,4},
  {&(_tg__ZTV9S19765C14__9S19765C12[8]),  8,10},
  {&(_tg__ZTV8S19765C49S19765C14__9S19765C12[8]),  8,10},
  {&(_tg__ZTV8S19765C98S19765C49S19765C14__9S19765C12[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C98S19765C49S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C49S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C49S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C49S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C159S19765C14__9S19765C12[4]),  4,4},
  {&(_tg__ZTV9S19765C11__9S19765C159S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV8S19765C5__9S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C10__9S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C11__9S19765C14__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C15__9S19765C14__9S19765C12[4]),  4,4},
  {&(_tg__ZTV8S19765C5__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C10__9S19765C12[3]),  3,3},
  {&(_tg__ZTV9S19765C11__9S19765C12[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A1__9S19765C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19765C12[];
extern  VTBL_ENTRY _ZTV9S19765C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C12[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19765C13D0Ev,_ZThn4_N9S19765C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19765C13D1Ev,_ZThn4_N9S19765C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C12D0Ev,_ZTv0_n36_N9S19765C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19765C12D0Ev,_ZThn44_N9S19765C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C12D1Ev,_ZTv0_n36_N9S19765C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19765C12D1Ev,_ZThn44_N9S19765C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19765C12D0Ev,_ZTv0_n40_N9S19765C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19765C12D0Ev,_ZThn40_N9S19765C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19765C12D1Ev,_ZTv0_n40_N9S19765C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19765C12D1Ev,_ZThn40_N9S19765C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19765C12 = {  "S19765C12", // class name
  bases_S19765C12, 33,
  &(vtc_S19765C12[0]), // expected_vtbl_contents
  &(vtt_S19765C12[0]), // expected_vtt_contents
  ABISELECT(240,124), // object size
  NSPAIRA(_ZTI9S19765C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19765C12),53, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19765C12),38, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19765C1  : virtual S7283C5_nt , S19765C3 , S19765C12 , S1538C9_nt {
  virtual  ~S19765C1(); // _ZN8S19765C1D2Ev
  S19765C1(); // tgen
};
//SIG(1 S19765C1) C1{ VBC2{ m Fp Fi} BC3{ VBC2 BC4{ VBC5{ VBC6{ m Fi} BC2 BC7{ m} FU8{ m}} BC9{ VBC2 VBC5 VBC7} VBC10{ VBC7} VBC11{ BC7 BC2 BC6 BC5} vd Fi} vd} BC12{ VBC13{ VBC14{ BC4 BC15{ BC7 BC2 VBC11 Fi} vd} BC7 vd} BC9 BC11 BC16{ VBC5 BC7 VBC2 BC6}} BC6 vd}


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

static void Test_S19765C1()
{
  extern Class_Descriptor cd_S19765C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,35)];
    init_test(&cd_S19765C1, buf);
    S19765C1 *dp, &lv = *(dp=new (buf) S19765C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,136), "sizeof(S19765C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19765C1)");
    /*is_ambiguous_... S19765C1::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(96,52), "S19765C1");
    /*is_ambiguous_... S19765C3::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C3*), ABISELECT(96,52), "S19765C1");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C4*)(S19765C3*), ABISELECT(96,52), "S19765C1");
    /*is_ambiguous_... S19765C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(96,52), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C9*)(S19765C12*), ABISELECT(96,52), "S19765C1");
    /*is_ambiguous_... S19765C16::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C16*)(S19765C12*), ABISELECT(96,52), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C5 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*), ABISELECT(140,76), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*), ABISELECT(140,76), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C5*)(S19765C11*)(S19765C12*), ABISELECT(140,76), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C5 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*), ABISELECT(120,64), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*), ABISELECT(112,60), "S19765C1");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C4*)(S19765C3*), ABISELECT(112,60), "S19765C1");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C4*)(S19765C3*), ABISELECT(112,60), "S19765C1");
    /*is_ambiguous_... S19765C4::S19765C5 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C4*)(S19765C14*), ABISELECT(112,60), "S19765C1");
    check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(112,60), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C9*)(S19765C12*), ABISELECT(112,60), "S19765C1");
    check_base_class_offset(lv, (S19765C5*)(S19765C16*)(S19765C12*), ABISELECT(112,60), "S19765C1");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C4*)(S19765C3*), 0, "S19765C1");
    check_base_class_offset(lv, (S19490C26*)(S19765C10*), 0, "S19765C1");
    /*is_ambiguous_... S19765C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C4*)(S19765C14*), 0, "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C9*)(S19765C12*), 0, "S19765C1");
    check_base_class_offset(lv, (S19765C9*)(S19765C4*)(S19765C3*), 0, "S19765C1");
    check_base_class_offset(lv, (S19765C10*)(S19765C4*)(S19765C3*), ABISELECT(200,108), "S19765C1");
    check_base_class_offset(lv, (S19765C10*)(S19765C4*)(S19765C14*), ABISELECT(200,108), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*), ABISELECT(169,93), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*), ABISELECT(176,96), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*), ABISELECT(192,104), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*), ABISELECT(152,84), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*), ABISELECT(144,80), "S19765C1");
    /*is_ambiguous_... S19765C1::S19765C11 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C11*), ABISELECT(144,80), "S19765C1");
    check_base_class_offset(lv, (S19765C11*)(S19765C4*)(S19765C3*), ABISELECT(144,80), "S19765C1");
    check_base_class_offset(lv, (S19765C11*)(S19765C4*)(S19765C14*), ABISELECT(144,80), "S19765C1");
    check_base_class_offset(lv, (S19765C11*)(S19765C15*)(S19765C14*), ABISELECT(144,80), "S19765C1");
    check_base_class_offset(lv, (S19765C4*)(S19765C3*), 0, "S19765C1");
    check_base_class_offset(lv, (S19765C3*), 0, "S19765C1");
    check_base_class_offset(lv, (S19765C9*)(S19765C4*)(S19765C14*), ABISELECT(208,112), "S19765C1");
    check_base_class_offset(lv, (S19765C4*)(S19765C14*), ABISELECT(208,112), "S19765C1");
    /*is_ambiguous_... S19765C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C15*)(S19765C14*), ABISELECT(224,120), "S19765C1");
    /*is_ambiguous_... S19765C15::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C15*)(S19765C14*), ABISELECT(232,124), "S19765C1");
    check_base_class_offset(lv, (S19765C15*)(S19765C14*), ABISELECT(224,120), "S19765C1");
    check_base_class_offset(lv, (S19765C14*)(S19765C13*), ABISELECT(208,112), "S19765C1");
    /*is_ambiguous_... S19765C13::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C13*), ABISELECT(200,108), "S19765C1");
    check_base_class_offset(lv, (S19765C13*)(S19765C12*), ABISELECT(200,108), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C9 */ AMB_check_base_class_offset(lv, (S19765C9*)(S19765C12*), ABISELECT(16,8), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C11*)(S19765C12*), ABISELECT(49,25), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C11*)(S19765C12*), ABISELECT(56,28), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C11*)(S19765C12*), ABISELECT(72,36), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S19765C5*)(S19765C11*)(S19765C12*), ABISELECT(32,16), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C5*)(S19765C11*)(S19765C12*), ABISELECT(24,12), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19765C5*)(S19765C11*)(S19765C12*), ABISELECT(24,12), "S19765C1");
    /*is_ambiguous_... S19765C12::S19765C11 */ AMB_check_base_class_offset(lv, (S19765C11*)(S19765C12*), ABISELECT(24,12), "S19765C1");
    /*is_ambiguous_... S19765C16::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S19765C16*)(S19765C12*), ABISELECT(80,40), "S19765C1");
    /*is_ambiguous_... S19765C16::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S19765C16*)(S19765C12*), ABISELECT(88,44), "S19765C1");
    check_base_class_offset(lv, (S19765C16*)(S19765C12*), ABISELECT(80,40), "S19765C1");
    check_base_class_offset(lv, (S19765C12*), ABISELECT(16,8), "S19765C1");
    /*is_ambiguous_... S19765C1::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(92,48), "S19765C1");
    test_class_info(&lv, &cd_S19765C1);
    dp->~S19765C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19765C1(Test_S19765C1, "S19765C1", ABISELECT(256,136));

#else // __cplusplus

extern void _ZN8S19765C1C1Ev();
extern void _ZN8S19765C1D2Ev();
Name_Map name_map_S19765C1[] = {
  NSPAIR(_ZN8S19765C1C1Ev),
  NSPAIR(_ZN8S19765C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C10;
extern VTBL_ENTRY _ZTI9S19765C10[];
extern  VTBL_ENTRY _ZTV9S19765C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19765C4;
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
extern Class_Descriptor cd_S19765C3;
extern VTBL_ENTRY _ZTI8S19765C3[];
extern  VTBL_ENTRY _ZTV8S19765C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C3[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19765C4;
extern VTBL_ENTRY _ZTI8S19765C4[];
extern  VTBL_ENTRY _ZTV8S19765C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C4[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19765C15;
extern VTBL_ENTRY _ZTI9S19765C15[];
extern  VTBL_ENTRY _ZTV9S19765C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C15[];
extern Class_Descriptor cd_S19765C14;
extern VTBL_ENTRY _ZTI9S19765C14[];
extern  VTBL_ENTRY _ZTV9S19765C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C14[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C13;
extern VTBL_ENTRY _ZTI9S19765C13[];
extern  VTBL_ENTRY _ZTV9S19765C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C13[];
extern Class_Descriptor cd_S19765C9;
extern VTBL_ENTRY _ZTI8S19765C9[];
extern  VTBL_ENTRY _ZTV8S19765C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C9[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19765C5;
extern VTBL_ENTRY _ZTI8S19765C5[];
extern  VTBL_ENTRY _ZTV8S19765C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C5[];
extern Class_Descriptor cd_S19765C11;
extern VTBL_ENTRY _ZTI9S19765C11[];
extern  VTBL_ENTRY _ZTV9S19765C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19765C16;
extern VTBL_ENTRY _ZTI9S19765C16[];
extern  VTBL_ENTRY _ZTV9S19765C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C16[];
extern Class_Descriptor cd_S19765C12;
extern VTBL_ENTRY _ZTI9S19765C12[];
extern  VTBL_ENTRY _ZTV9S19765C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19765C12[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
static Base_Class bases_S19765C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_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
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_nt,    ABISELECT(140,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
    4, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    4, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    4, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(112,60), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19765C9,    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
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19765C10,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(169,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19765C5,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(144,80), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19765C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19765C3,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19765C9,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19765C4,    ABISELECT(208,112), //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
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S19765C15,    ABISELECT(224,120), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19765C14,    ABISELECT(208,112), //bcp->offset
    50, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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
    24, //immediately_derived
  0, 0},
  {&cd_S19765C13,    ABISELECT(200,108), //bcp->offset
    38, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19765C9,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(49,25), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    32, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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_S19765C5,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19765C11,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    35, //immediately_derived
  0, 0},
  {&cd_S19765C16,    ABISELECT(80,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19765C12,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(92,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19765C1[];
extern void _ZN8S19765C1D1Ev();
extern void _ZN8S19765C1D0Ev();
extern void ABISELECT(_ZThn16_N8S19765C1D1Ev,_ZThn8_N8S19765C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19765C1D0Ev,_ZThn8_N8S19765C1D0Ev)();
extern void ABISELECT(_ZTv0_n80_N8S19765C1D1Ev,_ZTv0_n40_N8S19765C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S19765C1D1Ev,_ZThn108_N8S19765C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19765C1D0Ev,_ZTv0_n40_N8S19765C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S19765C1D0Ev,_ZThn108_N8S19765C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19765C1D1Ev,_ZTv0_n36_N8S19765C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S19765C1D1Ev,_ZThn112_N8S19765C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19765C1D0Ev,_ZTv0_n36_N8S19765C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S19765C1D0Ev,_ZThn112_N8S19765C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19765C1[] = {
  ABISELECT(208,112),
  ABISELECT(200,108),
  ABISELECT(144,80),
  ABISELECT(200,108),
  0,
  ABISELECT(140,76),
  ABISELECT(112,60),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  (VTBL_ENTRY)&_ZN8S19765C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C1D0Ev,
  ABISELECT(128,72),
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(184,100),
  ABISELECT(-16,-8),
  ABISELECT(124,68),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19765C1D1Ev,_ZThn8_N8S19765C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19765C1D0Ev,_ZThn8_N8S19765C1D0Ev),
  ABISELECT(116,64),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  ABISELECT(16,12),
  ABISELECT(60,36),
  ABISELECT(32,20),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  ABISELECT(28,16),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  -4,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  ABISELECT(-200,-108),
  ABISELECT(-56,-28),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(8,4),
  ABISELECT(-200,-108),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19765C1D1Ev,_ZTv0_n40_N8S19765C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19765C1D0Ev,_ZTv0_n40_N8S19765C1D0Ev),
  ABISELECT(-208,-112),
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-208,-112),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19765C1D1Ev,_ZTv0_n36_N8S19765C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19765C1D0Ev,_ZTv0_n36_N8S19765C1D0Ev),
  ABISELECT(-84,-44),
  ABISELECT(-80,-40),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S19765C1[0]),
};
extern VTBL_ENTRY _ZTV8S19765C1[];
extern void _ZN8S19765C3D1Ev();
extern void _ZN8S19765C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C3__8S19765C1[] = {
  ABISELECT(144,80),
  ABISELECT(200,108),
  0,
  ABISELECT(140,76),
  ABISELECT(112,60),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
  (VTBL_ENTRY)&_ZN8S19765C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C3D0Ev,
};
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C48S19765C3__8S19765C1[] = {
  ABISELECT(144,80),
  ABISELECT(200,108),
  0,
  ABISELECT(140,76),
  ABISELECT(112,60),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C98S19765C48S19765C3__8S19765C1[] = {
  0,
  ABISELECT(140,76),
  ABISELECT(112,60),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C98S19765C48S19765C3__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C48S19765C3__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C48S19765C3__8S19765C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C48S19765C3__8S19765C1[] = {
  -4,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C3__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C3__8S19765C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C3__8S19765C1[] = {
  -4,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19765C3[0]),
};
extern void _ZN9S19765C12D1Ev();
extern void _ZN9S19765C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19765C12__8S19765C1[] = {
  ABISELECT(128,72),
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(184,100),
  ABISELECT(-16,-8),
  ABISELECT(124,68),
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  (VTBL_ENTRY)&_ZN9S19765C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C99S19765C12__A2__8S19765C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(124,68),
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C99S19765C12__A2__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C119S19765C12__A1__8S19765C1[] = {
  ABISELECT(116,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C119S19765C12__A2__8S19765C1[] = {
  ABISELECT(116,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C169S19765C12__8S19765C1[] = {
  ABISELECT(16,12),
  ABISELECT(60,36),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C169S19765C12__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19765C16[0]),
};
extern void ABISELECT(_ZTv0_n80_N9S19765C12D1Ev,_ZTv0_n40_N9S19765C12D1Ev)();
extern void ABISELECT(_ZThn184_N9S19765C12D1Ev,_ZThn100_N9S19765C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19765C12D0Ev,_ZTv0_n40_N9S19765C12D0Ev)();
extern void ABISELECT(_ZThn184_N9S19765C12D0Ev,_ZThn100_N9S19765C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19765C13__9S19765C12__8S19765C1[] = {
  ABISELECT(-184,-100),
  ABISELECT(-56,-28),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(8,4),
  ABISELECT(-200,-108),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19765C12D1Ev,_ZTv0_n40_N9S19765C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19765C12D0Ev,_ZTv0_n40_N9S19765C12D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N9S19765C12D1Ev,_ZTv0_n36_N9S19765C12D1Ev)();
extern void ABISELECT(_ZThn192_N9S19765C12D1Ev,_ZThn104_N9S19765C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19765C12D0Ev,_ZTv0_n36_N9S19765C12D0Ev)();
extern void ABISELECT(_ZThn192_N9S19765C12D0Ev,_ZThn104_N9S19765C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19765C14__9S19765C12__8S19765C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-208,-112),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C12D1Ev,_ZTv0_n36_N9S19765C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C12D0Ev,_ZTv0_n36_N9S19765C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C12__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C12__8S19765C1[] = {
  -4,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C159S19765C14__9S19765C12__8S19765C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-80,-40),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__A__9S19765C12__8S19765C1[] = {
  ABISELECT(116,64),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C16__9S19765C12__8S19765C1[] = {
  ABISELECT(16,12),
  ABISELECT(60,36),
  ABISELECT(32,20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19765C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C1[] = {
  ABISELECT(-200,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C1[] = {
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C59S19765C11__A1__8S19765C1[] = {
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C5[0]),
};
extern void _ZN9S19765C13D1Ev();
extern void _ZN9S19765C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19765C13__8S19765C1[] = {
  ABISELECT(-56,-28),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(8,4),
  ABISELECT(-200,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  (VTBL_ENTRY)&_ZN9S19765C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C13D0Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19765C13D1Ev,_ZThn4_N9S19765C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev)();
extern void ABISELECT(_ZThn8_N9S19765C13D0Ev,_ZThn4_N9S19765C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19765C14__9S19765C13__8S19765C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-208,-112),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C13__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C13__8S19765C1[] = {
  -4,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C159S19765C14__9S19765C13__8S19765C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-80,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19765C13[0]),
};
extern void _ZN9S19765C14D1Ev();
extern void _ZN9S19765C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19765C14__8S19765C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-208,-112),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
  (VTBL_ENTRY)&_ZN9S19765C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19765C14D0Ev,
};
extern void _ZN8S19765C4D1Ev();
extern void _ZN8S19765C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19765C49S19765C14__A1__8S19765C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-208,-112),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
  (VTBL_ENTRY)&_ZN8S19765C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19765C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19765C98S19765C49S19765C14__A1__8S19765C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C98S19765C49S19765C14__A1__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S19765C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__8S19765C49S19765C14__A1__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__8S19765C49S19765C14__A1__8S19765C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__8S19765C49S19765C14__A1__8S19765C1[] = {
  -4,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19765C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C159S19765C14__8S19765C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C159S19765C14__8S19765C1[] = {
  -4,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19765C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19765C5__9S19765C14__8S19765C1[] = {
  ABISELECT(28,16),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C10__9S19765C14__8S19765C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C11__9S19765C14__8S19765C1[] = {
  -4,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19765C15__9S19765C14__8S19765C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19765C14[0]),
};
static  VTT_ENTRY vtt_S19765C1[] = {
  {&(_ZTV8S19765C1[10]),  10,65},
  {&(_tg__ZTV8S19765C3__8S19765C1[8]),  8,10},
  {&(_tg__ZTV8S19765C48S19765C3__8S19765C1[8]),  8,10},
  {&(_tg__ZTV8S19765C98S19765C48S19765C3__8S19765C1[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C98S19765C48S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C48S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C48S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C48S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C3__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C12__8S19765C1[10]),  10,12},
  {&(_tg__ZTV8S19765C99S19765C12__A2__8S19765C1[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C99S19765C12__A2__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C119S19765C12__A1__8S19765C1[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C119S19765C12__A2__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C169S19765C12__8S19765C1[5]),  5,5},
  {&(_tg__ZTV8S19765C5__9S19765C169S19765C12__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C13__9S19765C12__8S19765C1[10]),  10,12},
  {&(_tg__ZTV9S19765C14__9S19765C12__8S19765C1[9]),  9,11},
  {&(_tg__ZTV8S19765C5__9S19765C12__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C13__9S19765C12__8S19765C1[10]),  10,12},
  {&(_tg__ZTV9S19765C11__9S19765C12__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C159S19765C14__9S19765C12__8S19765C1[4]),  4,4},
  {&(_tg__ZTV9S19765C11__A__9S19765C12__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C16__9S19765C12__8S19765C1[5]),  5,5},
  {&(_ZTV8S19765C1[35]),  35,65},
  {&(_ZTV8S19765C1[48]),  48,65},
  {&(_ZTV8S19765C1[38]),  38,65},
  {&(_ZTV8S19765C1[22]),  22,65},
  {&(_ZTV8S19765C1[48]),  48,65},
  {&(_ZTV8S19765C1[59]),  59,65},
  {&(_ZTV8S19765C1[65]),  65,65},
  {&(_ZTV8S19765C1[27]),  27,65},
  {&(_ZTV8S19765C1[32]),  32,65},
  {&(_tg__ZTV8S19765C5__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C1[3]),  3,3},
  {&(_tg__ZTV8S19765C59S19765C11__A1__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C13__8S19765C1[9]),  9,11},
  {&(_tg__ZTV9S19765C14__9S19765C13__8S19765C1[9]),  9,11},
  {&(_tg__ZTV8S19765C5__9S19765C13__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C13__8S19765C1[9]),  9,11},
  {&(_tg__ZTV9S19765C11__9S19765C13__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C159S19765C14__9S19765C13__8S19765C1[4]),  4,4},
  {&(_tg__ZTV9S19765C14__8S19765C1[8]),  8,10},
  {&(_tg__ZTV8S19765C49S19765C14__A1__8S19765C1[8]),  8,10},
  {&(_tg__ZTV8S19765C98S19765C49S19765C14__A1__8S19765C1[6]),  6,6},
  {&(_tg__ZTV8S19765C5__8S19765C98S19765C49S19765C14__A1__8S19765C1[3]),  3,3},
  {&(_tg__ZTV8S19765C5__8S19765C49S19765C14__A1__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C10__8S19765C49S19765C14__A1__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C11__8S19765C49S19765C14__A1__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C159S19765C14__8S19765C1[4]),  4,4},
  {&(_tg__ZTV9S19765C11__9S19765C159S19765C14__8S19765C1[3]),  3,3},
  {&(_tg__ZTV8S19765C5__9S19765C14__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C10__9S19765C14__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C11__9S19765C14__8S19765C1[3]),  3,3},
  {&(_tg__ZTV9S19765C15__9S19765C14__8S19765C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19765C1[];
extern  VTBL_ENTRY _ZTV8S19765C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19765C1[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C13D0Ev,_ZTv0_n36_N9S19765C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19765C13D0Ev,_ZThn4_N9S19765C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C13D1Ev,_ZTv0_n36_N9S19765C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19765C13D1Ev,_ZThn4_N9S19765C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C12D0Ev,_ZTv0_n36_N9S19765C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19765C12D0Ev,_ZThn104_N9S19765C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19765C12D1Ev,_ZTv0_n36_N9S19765C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19765C12D1Ev,_ZThn104_N9S19765C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19765C12D0Ev,_ZTv0_n40_N9S19765C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19765C12D0Ev,_ZThn100_N9S19765C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19765C12D1Ev,_ZTv0_n40_N9S19765C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19765C12D1Ev,_ZThn100_N9S19765C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19765C1D0Ev,_ZTv0_n36_N8S19765C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19765C1D0Ev,_ZThn112_N8S19765C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19765C1D1Ev,_ZTv0_n36_N8S19765C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19765C1D1Ev,_ZThn112_N8S19765C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19765C1D0Ev,_ZTv0_n40_N8S19765C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19765C1D0Ev,_ZThn108_N8S19765C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19765C1D1Ev,_ZTv0_n40_N8S19765C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19765C1D1Ev,_ZThn108_N8S19765C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19765C1 = {  "S19765C1", // class name
  bases_S19765C1, 38,
  &(vtc_S19765C1[0]), // expected_vtbl_contents
  &(vtt_S19765C1[0]), // expected_vtt_contents
  ABISELECT(256,136), // object size
  NSPAIRA(_ZTI8S19765C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19765C1),65, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19765C1),58, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5072C4_nt  {
  void *s5072c4f0;
  int s5072c4f1;
  ::S19490C26 s5072c4f2;
  void  mf5072c4(); // _ZN10S5072C4_nt8mf5072c4Ev
};
//SIG(-1 S5072C4_nt) C1{ m Fp Fi FC2{ m}}


void  S5072C4_nt ::mf5072c4(){}

//skip512 S5072C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5072C3_nt  {
  ::S5072C4_nt s5072c3f0;
  int s5072c3f1[2];
  char s5072c3f2;
  virtual  ~S5072C3_nt(); // _ZN10S5072C3_ntD1Ev
  virtual void  v4(); // _ZN10S5072C3_nt2v4Ev
  virtual void  v5(); // _ZN10S5072C3_nt2v5Ev
  virtual void  v6(); // _ZN10S5072C3_nt2v6Ev
  S5072C3_nt(); // tgen
};
//SIG(-1 S5072C3_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S5072C3_nt ::~S5072C3_nt(){ note_dtor("S5072C3_nt", this);}
void  S5072C3_nt ::v4(){vfunc_called(this, "_ZN10S5072C3_nt2v4Ev");}
void  S5072C3_nt ::v5(){vfunc_called(this, "_ZN10S5072C3_nt2v5Ev");}
void  S5072C3_nt ::v6(){vfunc_called(this, "_ZN10S5072C3_nt2v6Ev");}
S5072C3_nt ::S5072C3_nt(){ note_ctor("S5072C3_nt", this);} // tgen

//skip512 S5072C3_nt

#else // __cplusplus

extern void _ZN10S5072C3_ntC1Ev();
extern void _ZN10S5072C3_ntD1Ev();
Name_Map name_map_S5072C3_nt[] = {
  NSPAIR(_ZN10S5072C3_ntC1Ev),
  NSPAIR(_ZN10S5072C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5072C3_nt[];
extern void _ZN10S5072C3_ntD1Ev();
extern void _ZN10S5072C3_ntD0Ev();
extern void _ZN10S5072C3_nt2v4Ev();
extern void _ZN10S5072C3_nt2v5Ev();
extern void _ZN10S5072C3_nt2v6Ev();
static  VTBL_ENTRY vtc_S5072C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5072C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S5072C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S5072C3_nt[];
VTBL_ENTRY *P__ZTI10S5072C3_nt = _ZTI10S5072C3_nt; 
extern  VTBL_ENTRY _ZTV10S5072C3_nt[];
Class_Descriptor cd_S5072C3_nt = {  "S5072C3_nt", // class name
  0,0,//no base classes
  &(vtc_S5072C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S5072C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5072C3_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  S5072C2_nt  : S5072C3_nt {
  void *s5072c2f0;
  virtual void  v7(); // _ZN10S5072C2_nt2v7Ev
  virtual void  v8(); // _ZN10S5072C2_nt2v8Ev
  ~S5072C2_nt(); // tgen
  S5072C2_nt(); // tgen
};
//SIG(-1 S5072C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S5072C2_nt ::v7(){vfunc_called(this, "_ZN10S5072C2_nt2v7Ev");}
void  S5072C2_nt ::v8(){vfunc_called(this, "_ZN10S5072C2_nt2v8Ev");}
S5072C2_nt ::~S5072C2_nt(){ note_dtor("S5072C2_nt", this);} // tgen
S5072C2_nt ::S5072C2_nt(){ note_ctor("S5072C2_nt", this);} // tgen

//skip512 S5072C2_nt

#else // __cplusplus

extern void _ZN10S5072C2_ntC1Ev();
extern void _ZN10S5072C2_ntD1Ev();
Name_Map name_map_S5072C2_nt[] = {
  NSPAIR(_ZN10S5072C2_ntC1Ev),
  NSPAIR(_ZN10S5072C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5072C3_nt;
extern VTBL_ENTRY _ZTI10S5072C3_nt[];
extern  VTBL_ENTRY _ZTV10S5072C3_nt[];
static Base_Class bases_S5072C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5072C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S5072C2_nt[];
extern void _ZN10S5072C2_ntD1Ev();
extern void _ZN10S5072C2_ntD0Ev();
extern void _ZN10S5072C3_nt2v4Ev();
extern void _ZN10S5072C3_nt2v5Ev();
extern void _ZN10S5072C3_nt2v6Ev();
extern void _ZN10S5072C2_nt2v7Ev();
extern void _ZN10S5072C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S5072C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5072C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S5072C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5072C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5072C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5072C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S5072C2_nt[];
VTBL_ENTRY *P__ZTI10S5072C2_nt = _ZTI10S5072C2_nt; 
extern  VTBL_ENTRY _ZTV10S5072C2_nt[];
Class_Descriptor cd_S5072C2_nt = {  "S5072C2_nt", // class name
  bases_S5072C2_nt, 1,
  &(vtc_S5072C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S5072C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S5072C2_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  S5072C8_nt  {
  int s5072c8f0[4];
};
//SIG(-1 S5072C8_nt) C1{ Fi[4]}



//skip512 S5072C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5072C7_nt  {
  void *s5072c7f0;
  ::S5072C8_nt s5072c7f1;
  void  mf5072c7(); // _ZN10S5072C7_nt8mf5072c7Ev
};
//SIG(-1 S5072C7_nt) C1{ m Fp FC2{ Fi[4]}}


void  S5072C7_nt ::mf5072c7(){}

//skip512 S5072C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5072C11_nt  {
  void *s5072c11f0[3];
  ::S1538C5_nt s5072c11f1;
  ::S5072C4_nt s5072c11f2;
  __tsi64 s5072c11f3[2];
  char s5072c11f4;
  void  mf5072c11(); // _ZN11S5072C11_nt9mf5072c11Ev
};
//SIG(-1 S5072C11_nt) C1{ m Fp[3] FC2{ m Fi[2]} FC3{ m Fp Fi FC4{ m}} FL[2] Fc}


void  S5072C11_nt ::mf5072c11(){}

//skip512 S5072C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5072C13_nt  {
  __tsi64 s5072c13f0;
  void  mf5072c13(); // _ZN11S5072C13_nt9mf5072c13Ev
};
//SIG(-1 S5072C13_nt) C1{ m FL}


void  S5072C13_nt ::mf5072c13(){}

//skip512 S5072C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5072C1  : S5072C2_nt {
  int s5072c1f0;
  void *s5072c1f1;
  int s5072c1f2;
  ::S2295C7_nt s5072c1f3;
  ::S5072C7_nt s5072c1f4;
  ::S2293C5_nt s5072c1f5;
  ::S5072C11_nt s5072c1f6;
  void *s5072c1f7;
  char s5072c1f8;
  __tsi64 s5072c1f9;
  char s5072c1f10[4];
  ::S5072C13_nt s5072c1f11;
  char s5072c1f12[2];
  int s5072c1f13;
  virtual void  v1(); // _ZN7S5072C12v1Ev
  virtual void  v2(); // _ZN7S5072C12v2Ev
  virtual void  v3(); // _ZN7S5072C12v3Ev
  ~S5072C1(); // tgen
  S5072C1(); // tgen
};
//SIG(1 S5072C1) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v7 v8 Fp} v1 v2 v3 Fi Fp Fi FC6{ m FL[4]} FC7{ m Fp FC8{ Fi[4]}} FC9{ m Fp Fi[2] FC10{ m}} FC11{ m Fp[3] FC12{ m Fi[2]} FC4 FL[2] Fc} Fp Fc FL Fc[4] FC13{ m FL} Fc[2] Fi}


void  S5072C1 ::v1(){vfunc_called(this, "_ZN7S5072C12v1Ev");}
void  S5072C1 ::v2(){vfunc_called(this, "_ZN7S5072C12v2Ev");}
void  S5072C1 ::v3(){vfunc_called(this, "_ZN7S5072C12v3Ev");}
S5072C1 ::~S5072C1(){ note_dtor("S5072C1", this);} // tgen
S5072C1 ::S5072C1(){ note_ctor("S5072C1", this);} // tgen

static void Test_S5072C1()
{
  extern Class_Descriptor cd_S5072C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,51)];
    init_test(&cd_S5072C1, buf);
    S5072C1 *dp, &lv = *(dp=new (buf) S5072C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,200), "sizeof(S5072C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5072C1)");
    check_base_class_offset(lv, (S5072C3_nt*)(S5072C2_nt*), 0, "S5072C1");
    check_base_class_offset(lv, (S5072C2_nt*), 0, "S5072C1");
    check_field_offset(lv, s5072c1f0, ABISELECT(48,32), "S5072C1.s5072c1f0");
    check_field_offset(lv, s5072c1f1, ABISELECT(56,36), "S5072C1.s5072c1f1");
    check_field_offset(lv, s5072c1f2, ABISELECT(64,40), "S5072C1.s5072c1f2");
    check_field_offset(lv, s5072c1f3, ABISELECT(72,44), "S5072C1.s5072c1f3");
    check_field_offset(lv, s5072c1f4, ABISELECT(104,76), "S5072C1.s5072c1f4");
    check_field_offset(lv, s5072c1f5, ABISELECT(128,96), "S5072C1.s5072c1f5");
    check_field_offset(lv, s5072c1f6, ABISELECT(152,112), "S5072C1.s5072c1f6");
    check_field_offset(lv, s5072c1f7, ABISELECT(224,164), "S5072C1.s5072c1f7");
    check_field_offset(lv, s5072c1f8, ABISELECT(232,168), "S5072C1.s5072c1f8");
    check_field_offset(lv, s5072c1f9, ABISELECT(240,172), "S5072C1.s5072c1f9");
    check_field_offset(lv, s5072c1f10, ABISELECT(248,180), "S5072C1.s5072c1f10");
    check_field_offset(lv, s5072c1f11, ABISELECT(256,184), "S5072C1.s5072c1f11");
    check_field_offset(lv, s5072c1f12, ABISELECT(264,192), "S5072C1.s5072c1f12");
    check_field_offset(lv, s5072c1f13, ABISELECT(268,196), "S5072C1.s5072c1f13");
    test_class_info(&lv, &cd_S5072C1);
    dp->~S5072C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5072C1(Test_S5072C1, "S5072C1", ABISELECT(272,200));

#else // __cplusplus

extern void _ZN7S5072C1C1Ev();
extern void _ZN7S5072C1D1Ev();
Name_Map name_map_S5072C1[] = {
  NSPAIR(_ZN7S5072C1C1Ev),
  NSPAIR(_ZN7S5072C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5072C3_nt;
extern VTBL_ENTRY _ZTI10S5072C3_nt[];
extern  VTBL_ENTRY _ZTV10S5072C3_nt[];
extern Class_Descriptor cd_S5072C2_nt;
extern VTBL_ENTRY _ZTI10S5072C2_nt[];
extern  VTBL_ENTRY _ZTV10S5072C2_nt[];
static Base_Class bases_S5072C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5072C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5072C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S5072C1[];
extern void _ZN7S5072C1D1Ev();
extern void _ZN7S5072C1D0Ev();
extern void _ZN10S5072C3_nt2v4Ev();
extern void _ZN10S5072C3_nt2v5Ev();
extern void _ZN10S5072C3_nt2v6Ev();
extern void _ZN10S5072C2_nt2v7Ev();
extern void _ZN10S5072C2_nt2v8Ev();
extern void _ZN7S5072C12v1Ev();
extern void _ZN7S5072C12v2Ev();
extern void _ZN7S5072C12v3Ev();
static  VTBL_ENTRY vtc_S5072C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5072C1[0]),
  (VTBL_ENTRY)&_ZN7S5072C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5072C1D0Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S5072C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5072C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5072C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S5072C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5072C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5072C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5072C1[];
extern  VTBL_ENTRY _ZTV7S5072C1[];
Class_Descriptor cd_S5072C1 = {  "S5072C1", // class name
  bases_S5072C1, 2,
  &(vtc_S5072C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,200), // object size
  NSPAIRA(_ZTI7S5072C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5072C1),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  S16385C2_nt  {
  void *s16385c2f0[2];
  void  mf16385c2(); // _ZN11S16385C2_nt9mf16385c2Ev
};
//SIG(-1 S16385C2_nt) C1{ m Fp[2]}


void  S16385C2_nt ::mf16385c2(){}

//skip512 S16385C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16385C7  {
  void *s16385c7f0;
  int s16385c7f1;
  ::S19490C26 s16385c7f2;
  void  mf16385c7(); // _ZN8S16385C79mf16385c7Ev
};
//SIG(-1 S16385C7) C1{ m Fp Fi FC2{ m}}


void  S16385C7 ::mf16385c7(){}

static void Test_S16385C7()
{
  {
    init_simple_test("S16385C7");
    S16385C7 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S16385C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16385C7)");
    check_field_offset(lv, s16385c7f0, 0, "S16385C7.s16385c7f0");
    check_field_offset(lv, s16385c7f1, ABISELECT(8,4), "S16385C7.s16385c7f1");
    check_field_offset(lv, s16385c7f2, ABISELECT(12,8), "S16385C7.s16385c7f2");
  }
}
static Arrange_To_Call_Me vS16385C7(Test_S16385C7, "S16385C7", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16385C10_nt  {
  void *s16385c10f0;
  int s16385c10f1;
  ::S19490C18 s16385c10f2;
  ::S19490C12 s16385c10f3;
  void  mf16385c10(); // _ZN12S16385C10_nt10mf16385c10Ev
};
//SIG(-1 S16385C10_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S16385C10_nt ::mf16385c10(){}

//skip512 S16385C10_nt

#else // __cplusplus

Class_Descriptor cd_S16385C10_nt = {  "S16385C10_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  S16385C9_nt  : S16385C10_nt {
};
//SIG(-1 S16385C9_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S16385C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S16385C10_nt;
static Base_Class bases_S16385C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16385C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S16385C13  {
  __tsi64 s16385c13f0[2];
  ::S5072C4_nt s16385c13f1;
  ::S5072C4_nt s16385c13f2;
  ::S5072C4_nt s16385c13f3;
  ::S5072C4_nt s16385c13f4;
  ::S5072C4_nt s16385c13f5;
  __tsi64 s16385c13f6;
};
//SIG(-1 S16385C13) C1{ FL[2] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FL}



static void Test_S16385C13()
{
  {
    init_simple_test("S16385C13");
    S16385C13 lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S16385C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16385C13)");
    check_field_offset(lv, s16385c13f0, 0, "S16385C13.s16385c13f0");
    check_field_offset(lv, s16385c13f1, 16, "S16385C13.s16385c13f1");
    check_field_offset(lv, s16385c13f2, ABISELECT(32,28), "S16385C13.s16385c13f2");
    check_field_offset(lv, s16385c13f3, ABISELECT(48,40), "S16385C13.s16385c13f3");
    check_field_offset(lv, s16385c13f4, ABISELECT(64,52), "S16385C13.s16385c13f4");
    check_field_offset(lv, s16385c13f5, ABISELECT(80,64), "S16385C13.s16385c13f5");
    check_field_offset(lv, s16385c13f6, ABISELECT(96,76), "S16385C13.s16385c13f6");
  }
}
static Arrange_To_Call_Me vS16385C13(Test_S16385C13, "S16385C13", ABISELECT(104,84));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16385C1  {
  ::S16385C2_nt s16385c1f0;
  int s16385c1f1;
  char s16385c1f2[2];
  ::S5072C4_nt s16385c1f3;
  __tsi64 s16385c1f4;
  int s16385c1f5;
  void *s16385c1f6[29];
  int s16385c1f7[3];
  ::S2293C5_nt s16385c1f8;
  ::S2293C5_nt s16385c1f9;
  ::S16385C7 s16385c1f10;
  ::S16385C7 s16385c1f11;
  ::S16385C7 s16385c1f12;
  ::S16385C7 s16385c1f13;
  void *s16385c1f14;
  ::S16385C9_nt s16385c1f15;
  int s16385c1f16[2];
  ::S16385C13 s16385c1f17;
  ::S16385C13 s16385c1f18;
  void  mf16385c1(); // _ZN8S16385C19mf16385c1Ev
};
//SIG(1 S16385C1) C1{ m FC2{ m Fp[2]} Fi Fc[2] FC3{ m Fp Fi FC4{ m}} FL Fi Fp[29] Fi[3] FC5{ m Fp Fi[2] FC6{ m}} FC5 FC7{ m Fp Fi FC4} FC7 FC7 FC7 Fp FC8{ BC9{ m Fp Fi FC10{ m} FC11{ m}}} Fi[2] FC12{ FL[2] FC3 FC3 FC3 FC3 FC3 FL} FC12}


void  S16385C1 ::mf16385c1(){}

static void Test_S16385C1()
{
  {
    init_simple_test("S16385C1");
    S16385C1 lv;
    check2(sizeof(lv), ABISELECT(656,440), "sizeof(S16385C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16385C1)");
    check_field_offset(lv, s16385c1f0, 0, "S16385C1.s16385c1f0");
    check_field_offset(lv, s16385c1f1, ABISELECT(16,8), "S16385C1.s16385c1f1");
    check_field_offset(lv, s16385c1f2, ABISELECT(20,12), "S16385C1.s16385c1f2");
    check_field_offset(lv, s16385c1f3, ABISELECT(24,16), "S16385C1.s16385c1f3");
    check_field_offset(lv, s16385c1f4, ABISELECT(40,28), "S16385C1.s16385c1f4");
    check_field_offset(lv, s16385c1f5, ABISELECT(48,36), "S16385C1.s16385c1f5");
    check_field_offset(lv, s16385c1f6, ABISELECT(56,40), "S16385C1.s16385c1f6");
    check_field_offset(lv, s16385c1f7, ABISELECT(288,156), "S16385C1.s16385c1f7");
    check_field_offset(lv, s16385c1f8, ABISELECT(304,168), "S16385C1.s16385c1f8");
    check_field_offset(lv, s16385c1f9, ABISELECT(328,184), "S16385C1.s16385c1f9");
    check_field_offset(lv, s16385c1f10, ABISELECT(352,200), "S16385C1.s16385c1f10");
    check_field_offset(lv, s16385c1f11, ABISELECT(368,212), "S16385C1.s16385c1f11");
    check_field_offset(lv, s16385c1f12, ABISELECT(384,224), "S16385C1.s16385c1f12");
    check_field_offset(lv, s16385c1f13, ABISELECT(400,236), "S16385C1.s16385c1f13");
    check_field_offset(lv, s16385c1f14, ABISELECT(416,248), "S16385C1.s16385c1f14");
    check_field_offset(lv, s16385c1f15, ABISELECT(424,252), "S16385C1.s16385c1f15");
    check_field_offset(lv, s16385c1f16, ABISELECT(440,264), "S16385C1.s16385c1f16");
    check_field_offset(lv, s16385c1f17, ABISELECT(448,272), "S16385C1.s16385c1f17");
    check_field_offset(lv, s16385c1f18, ABISELECT(552,356), "S16385C1.s16385c1f18");
  }
}
static Arrange_To_Call_Me vS16385C1(Test_S16385C1, "S16385C1", ABISELECT(656,440));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S14237C3  {
  short s14237c3f0;
  short s14237c3f1;
};
//SIG(1 S14237C3) U1{ Fs Fs}

#endif // __cplusplus
#ifdef __cplusplus

struct  S14237C2  {
  ::S14237C3 s14237c2f0;
  ::S14237C3 s14237c2f1;
};
//SIG(1 S14237C2) C1{ FU2{ Fs Fs} FU2}



static void Test_S14237C2()
{
  {
    init_simple_test("S14237C2");
    S14237C2 lv;
    check2(sizeof(lv), 4, "sizeof(S14237C2)");
    check2(__alignof__(lv), 2, "__alignof__(S14237C2)");
    check_field_offset(lv, s14237c2f0, 0, "S14237C2.s14237c2f0");
    check_field_offset(lv, s14237c2f1, 2, "S14237C2.s14237c2f1");
  }
}
static Arrange_To_Call_Me vS14237C2(Test_S14237C2, "S14237C2", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14237C5_nt  {
  void *s14237c5f0;
  int s14237c5f1;
  void *s14237c5f2;
};
//SIG(-1 S14237C5_nt) C1{ Fp Fi Fp}



//skip512 S14237C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14237C1  {
  void *s14237c1f0;
  int s14237c1f1;
  void *s14237c1f2;
  long s14237c1f3;
  void *s14237c1f4;
  int s14237c1f5[2];
  void *s14237c1f6;
  int s14237c1f7;
  char s14237c1f8;
  int s14237c1f9[4];
  void *s14237c1f10;
  long s14237c1f11;
  void *s14237c1f12[2];
  int s14237c1f13[5];
  long s14237c1f14;
  int s14237c1f15[13];
  ::S14237C2 s14237c1f16[573];
  ::S14237C2 s14237c1f17[61];
  ::S14237C2 s14237c1f18[39];
  ::S14237C5_nt s14237c1f19;
  ::S14237C5_nt s14237c1f20;
  ::S14237C5_nt s14237c1f21;
  short s14237c1f22[16];
  int s14237c1f23[573];
  int s14237c1f24;
  int s14237c1f25;
  char s14237c1f26[573];
  void *s14237c1f27;
  int s14237c1f28;
  int s14237c1f29;
  void *s14237c1f30;
  long s14237c1f31;
  long s14237c1f32;
  int s14237c1f33;
  int s14237c1f34;
  short s14237c1f35;
  int s14237c1f36;
  long s14237c1f37;
};
//SIG(1 S14237C1) C1{ Fp Fi Fp Fl Fp Fi[2] Fp Fi Fc Fi[4] Fp Fl Fp[2] Fi[5] Fl Fi[13] FC2{ FU3{ Fs Fs} FU3}[573] FC2[61] FC2[39] FC4{ Fp Fi Fp} FC4 FC4 Fs[16] Fi[573] Fi Fi Fc[573] Fp Fi Fi Fp Fl Fl Fi Fi Fs Fi Fl}



static void Test_S14237C1()
{
  {
    init_simple_test("S14237C1");
    S14237C1 lv;
    check2(sizeof(lv), ABISELECT(5936,5828), "sizeof(S14237C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14237C1)");
    check_field_offset(lv, s14237c1f0, 0, "S14237C1.s14237c1f0");
    check_field_offset(lv, s14237c1f1, ABISELECT(8,4), "S14237C1.s14237c1f1");
    check_field_offset(lv, s14237c1f2, ABISELECT(16,8), "S14237C1.s14237c1f2");
    check_field_offset(lv, s14237c1f3, ABISELECT(24,12), "S14237C1.s14237c1f3");
    check_field_offset(lv, s14237c1f4, ABISELECT(32,16), "S14237C1.s14237c1f4");
    check_field_offset(lv, s14237c1f5, ABISELECT(40,20), "S14237C1.s14237c1f5");
    check_field_offset(lv, s14237c1f6, ABISELECT(48,28), "S14237C1.s14237c1f6");
    check_field_offset(lv, s14237c1f7, ABISELECT(56,32), "S14237C1.s14237c1f7");
    check_field_offset(lv, s14237c1f8, ABISELECT(60,36), "S14237C1.s14237c1f8");
    check_field_offset(lv, s14237c1f9, ABISELECT(64,40), "S14237C1.s14237c1f9");
    check_field_offset(lv, s14237c1f10, ABISELECT(80,56), "S14237C1.s14237c1f10");
    check_field_offset(lv, s14237c1f11, ABISELECT(88,60), "S14237C1.s14237c1f11");
    check_field_offset(lv, s14237c1f12, ABISELECT(96,64), "S14237C1.s14237c1f12");
    check_field_offset(lv, s14237c1f13, ABISELECT(112,72), "S14237C1.s14237c1f13");
    check_field_offset(lv, s14237c1f14, ABISELECT(136,92), "S14237C1.s14237c1f14");
    check_field_offset(lv, s14237c1f15, ABISELECT(144,96), "S14237C1.s14237c1f15");
    check_field_offset(lv, s14237c1f16, ABISELECT(196,148), "S14237C1.s14237c1f16");
    check_field_offset(lv, s14237c1f17, ABISELECT(2488,2440), "S14237C1.s14237c1f17");
    check_field_offset(lv, s14237c1f18, ABISELECT(2732,2684), "S14237C1.s14237c1f18");
    check_field_offset(lv, s14237c1f19, ABISELECT(2888,2840), "S14237C1.s14237c1f19");
    check_field_offset(lv, s14237c1f20, ABISELECT(2912,2852), "S14237C1.s14237c1f20");
    check_field_offset(lv, s14237c1f21, ABISELECT(2936,2864), "S14237C1.s14237c1f21");
    check_field_offset(lv, s14237c1f22, ABISELECT(2960,2876), "S14237C1.s14237c1f22");
    check_field_offset(lv, s14237c1f23, ABISELECT(2992,2908), "S14237C1.s14237c1f23");
    check_field_offset(lv, s14237c1f24, ABISELECT(5284,5200), "S14237C1.s14237c1f24");
    check_field_offset(lv, s14237c1f25, ABISELECT(5288,5204), "S14237C1.s14237c1f25");
    check_field_offset(lv, s14237c1f26, ABISELECT(5292,5208), "S14237C1.s14237c1f26");
    check_field_offset(lv, s14237c1f27, ABISELECT(5872,5784), "S14237C1.s14237c1f27");
    check_field_offset(lv, s14237c1f28, ABISELECT(5880,5788), "S14237C1.s14237c1f28");
    check_field_offset(lv, s14237c1f29, ABISELECT(5884,5792), "S14237C1.s14237c1f29");
    check_field_offset(lv, s14237c1f30, ABISELECT(5888,5796), "S14237C1.s14237c1f30");
    check_field_offset(lv, s14237c1f31, ABISELECT(5896,5800), "S14237C1.s14237c1f31");
    check_field_offset(lv, s14237c1f32, ABISELECT(5904,5804), "S14237C1.s14237c1f32");
    check_field_offset(lv, s14237c1f33, ABISELECT(5912,5808), "S14237C1.s14237c1f33");
    check_field_offset(lv, s14237c1f34, ABISELECT(5916,5812), "S14237C1.s14237c1f34");
    check_field_offset(lv, s14237c1f35, ABISELECT(5920,5816), "S14237C1.s14237c1f35");
    check_field_offset(lv, s14237c1f36, ABISELECT(5924,5820), "S14237C1.s14237c1f36");
    check_field_offset(lv, s14237c1f37, ABISELECT(5928,5824), "S14237C1.s14237c1f37");
  }
}
static Arrange_To_Call_Me vS14237C1(Test_S14237C1, "S14237C1", ABISELECT(5936,5828));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21020C3  : virtual S19490C26 {
  int s21020c3f0;
  ~S21020C3(); // tgen
  S21020C3(); // tgen
};
//SIG(-1 S21020C3) C1{ VBC2{ m} Fi}


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

static void Test_S21020C3()
{
  extern Class_Descriptor cd_S21020C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21020C3, buf);
    S21020C3 *dp, &lv = *(dp=new (buf) S21020C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21020C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21020C3)");
    check_base_class_offset(lv, (S19490C26*), 0, "S21020C3");
    check_field_offset(lv, s21020c3f0, ABISELECT(8,4), "S21020C3.s21020c3f0");
    test_class_info(&lv, &cd_S21020C3);
    dp->~S21020C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C3(Test_S21020C3, "S21020C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21020C3C1Ev();
extern void _ZN8S21020C3D1Ev();
Name_Map name_map_S21020C3[] = {
  NSPAIR(_ZN8S21020C3C1Ev),
  NSPAIR(_ZN8S21020C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S21020C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S21020C3[];
static  VTBL_ENTRY vtc_S21020C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
extern VTBL_ENTRY _ZTV8S21020C3[];
static  VTT_ENTRY vtt_S21020C3[] = {
  {&(_ZTV8S21020C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
Class_Descriptor cd_S21020C3 = {  "S21020C3", // class name
  bases_S21020C3, 1,
  &(vtc_S21020C3[0]), // expected_vtbl_contents
  &(vtt_S21020C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21020C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21020C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21020C3),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  S21020C6  : virtual S19490C26 {
  void *s21020c6f0[2];
  ~S21020C6(); // tgen
  S21020C6(); // tgen
};
//SIG(-1 S21020C6) C1{ VBC2{ m} Fp[2]}


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

static void Test_S21020C6()
{
  extern Class_Descriptor cd_S21020C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21020C6, buf);
    S21020C6 *dp, &lv = *(dp=new (buf) S21020C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21020C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21020C6)");
    check_base_class_offset(lv, (S19490C26*), 0, "S21020C6");
    check_field_offset(lv, s21020c6f0, ABISELECT(8,4), "S21020C6.s21020c6f0");
    test_class_info(&lv, &cd_S21020C6);
    dp->~S21020C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C6(Test_S21020C6, "S21020C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21020C6C1Ev();
extern void _ZN8S21020C6D1Ev();
Name_Map name_map_S21020C6[] = {
  NSPAIR(_ZN8S21020C6C1Ev),
  NSPAIR(_ZN8S21020C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S21020C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S21020C6[];
static  VTBL_ENTRY vtc_S21020C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C6[0]),
};
extern VTBL_ENTRY _ZTV8S21020C6[];
static  VTT_ENTRY vtt_S21020C6[] = {
  {&(_ZTV8S21020C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21020C6[];
extern  VTBL_ENTRY _ZTV8S21020C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C6[];
Class_Descriptor cd_S21020C6 = {  "S21020C6", // class name
  bases_S21020C6, 1,
  &(vtc_S21020C6[0]), // expected_vtbl_contents
  &(vtt_S21020C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21020C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21020C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21020C6),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  S21020C10  : S19490C10_nt , S19490C12 , S19490C26 {
};
//SIG(-1 S21020C10) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S21020C10()
{
  extern Class_Descriptor cd_S21020C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21020C10, buf);
    S21020C10 &lv = *(new (buf) S21020C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21020C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21020C10)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S21020C10");
    check_base_class_offset(lv, (S19490C12*), 0, "S21020C10");
    check_base_class_offset(lv, (S19490C26*), 0, "S21020C10");
    test_class_info(&lv, &cd_S21020C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C10(Test_S21020C10, "S21020C10", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S21020C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21020C10[];
Class_Descriptor cd_S21020C10 = {  "S21020C10", // class name
  bases_S21020C10, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S21020C10),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21020C8  : virtual S19490C18 , S21020C10 , S19490C11 , virtual S21020C3 {
  ~S21020C8(); // tgen
  S21020C8(); // tgen
};
//SIG(-1 S21020C8) C1{ VBC2{ m} BC3{ BC4{ m Fp} BC5{ m} BC6{ m}} BC7{ m} VBC8{ VBC6 Fi}}


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

static void Test_S21020C8()
{
  extern Class_Descriptor cd_S21020C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21020C8, buf);
    S21020C8 *dp, &lv = *(dp=new (buf) S21020C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21020C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21020C8)");
    check_base_class_offset(lv, (S19490C18*), 0, "S21020C8");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(8,4), "S21020C8");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(8,4), "S21020C8");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(8,4), "S21020C8");
    check_base_class_offset(lv, (S21020C10*), ABISELECT(8,4), "S21020C8");
    check_base_class_offset(lv, (S19490C11*), 0, "S21020C8");
    check_base_class_offset(lv, (S19490C26*)(S21020C3*), 0, "S21020C8");
    check_base_class_offset(lv, (S21020C3*), ABISELECT(16,8), "S21020C8");
    test_class_info(&lv, &cd_S21020C8);
    dp->~S21020C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C8(Test_S21020C8, "S21020C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21020C8C1Ev();
extern void _ZN8S21020C8D1Ev();
Name_Map name_map_S21020C8[] = {
  NSPAIR(_ZN8S21020C8C1Ev),
  NSPAIR(_ZN8S21020C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C3;
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
static Base_Class bases_S21020C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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, 0},
  {&cd_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21020C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21020C8[];
static  VTBL_ENTRY vtc_S21020C8[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
extern VTBL_ENTRY _ZTV8S21020C8[];
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C8[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
static  VTT_ENTRY vtt_S21020C8[] = {
  {&(_ZTV8S21020C8[5]),  5,8},
  {&(_ZTV8S21020C8[8]),  8,8},
  {&(_tg__ZTV8S21020C3__8S21020C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21020C8[];
extern  VTBL_ENTRY _ZTV8S21020C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C8[];
Class_Descriptor cd_S21020C8 = {  "S21020C8", // class name
  bases_S21020C8, 8,
  &(vtc_S21020C8[0]), // expected_vtbl_contents
  &(vtt_S21020C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21020C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21020C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21020C8),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  S21020C16  : virtual S21020C10 , virtual S19490C11 , S19490C12 {
  ~S21020C16(); // tgen
  S21020C16(); // tgen
};
//SIG(-1 S21020C16) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S21020C16()
{
  extern Class_Descriptor cd_S21020C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21020C16, buf);
    S21020C16 *dp, &lv = *(dp=new (buf) S21020C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21020C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21020C16)");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(8,4), "S21020C16");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(8,4), "S21020C16");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(8,4), "S21020C16");
    check_base_class_offset(lv, (S21020C10*), ABISELECT(8,4), "S21020C16");
    check_base_class_offset(lv, (S19490C11*), 0, "S21020C16");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*), 0, "S21020C16");
    test_class_info(&lv, &cd_S21020C16);
    dp->~S21020C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C16(Test_S21020C16, "S21020C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S21020C16C1Ev();
extern void _ZN9S21020C16D1Ev();
Name_Map name_map_S21020C16[] = {
  NSPAIR(_ZN9S21020C16C1Ev),
  NSPAIR(_ZN9S21020C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S21020C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21020C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21020C16[];
static  VTBL_ENTRY vtc_S21020C16[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
extern VTBL_ENTRY _ZTV9S21020C16[];
static  VTT_ENTRY vtt_S21020C16[] = {
  {&(_ZTV9S21020C16[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
Class_Descriptor cd_S21020C16 = {  "S21020C16", // class name
  bases_S21020C16, 6,
  &(vtc_S21020C16[0]), // expected_vtbl_contents
  &(vtt_S21020C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S21020C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21020C16),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21020C16),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  S21020C15  : virtual S21020C16 , S19490C10_nt , S19490C26 {
  long double s21020c15f0;
  int s21020c15f1;
  virtual  ~S21020C15(); // _ZN9S21020C15D2Ev
  S21020C15(); // tgen
};
//SIG(-1 S21020C15) C1{ VBC2{ VBC3{ BC4{ m Fp} BC5{ m} BC6{ m}} VBC7{ m} BC5} BC4 BC6 vd FD Fi}


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

static void Test_S21020C15()
{
  extern Class_Descriptor cd_S21020C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S21020C15, buf);
    S21020C15 *dp, &lv = *(dp=new (buf) S21020C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S21020C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21020C15)");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(40,24), "S21020C15");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(40,24), "S21020C15");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(40,24), "S21020C15");
    check_base_class_offset(lv, (S21020C10*)(S21020C16*), ABISELECT(40,24), "S21020C15");
    check_base_class_offset(lv, (S19490C11*)(S21020C16*), 0, "S21020C15");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C16*), 0, "S21020C15");
    check_base_class_offset(lv, (S21020C16*), 0, "S21020C15");
    /*is_ambiguous_... S21020C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S21020C15");
    /*is_ambiguous_... S21020C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S21020C15");
    check_field_offset(lv, s21020c15f0, ABISELECT(16,8), "S21020C15.s21020c15f0");
    check_field_offset(lv, s21020c15f1, ABISELECT(32,20), "S21020C15.s21020c15f1");
    test_class_info(&lv, &cd_S21020C15);
    dp->~S21020C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C15(Test_S21020C15, "S21020C15", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN9S21020C15C1Ev();
extern void _ZN9S21020C15D2Ev();
Name_Map name_map_S21020C15[] = {
  NSPAIR(_ZN9S21020C15C1Ev),
  NSPAIR(_ZN9S21020C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S21020C16;
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S21020C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21020C16,    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_S19490C10_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21020C15[];
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY vtc_S21020C15[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
extern VTBL_ENTRY _ZTV9S21020C15[];
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C15[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
static  VTT_ENTRY vtt_S21020C15[] = {
  {&(_ZTV9S21020C15[5]),  5,7},
  {&(_ZTV9S21020C15[5]),  5,7},
  {&(_tg__ZTV9S21020C16__9S21020C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
Class_Descriptor cd_S21020C15 = {  "S21020C15", // class name
  bases_S21020C15, 9,
  &(vtc_S21020C15[0]), // expected_vtbl_contents
  &(vtt_S21020C15[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI9S21020C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21020C15),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21020C15),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  S21020C14  : S21020C15 , virtual S21020C6 , virtual S21020C3 {
  ~S21020C14(); // tgen
  S21020C14(); // tgen
};
//SIG(-1 S21020C14) C1{ BC2{ VBC3{ VBC4{ BC5{ m Fp} BC6{ m} BC7{ m}} VBC8{ m} BC6} BC5 BC7 vd FD Fi} VBC9{ VBC7 Fp[2]} VBC10{ VBC7 Fi}}


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

static void Test_S21020C14()
{
  extern Class_Descriptor cd_S21020C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S21020C14, buf);
    S21020C14 *dp, &lv = *(dp=new (buf) S21020C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S21020C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21020C14)");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(40,24), "S21020C14");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(40,24), "S21020C14");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(40,24), "S21020C14");
    check_base_class_offset(lv, (S21020C10*)(S21020C16*), ABISELECT(40,24), "S21020C14");
    check_base_class_offset(lv, (S19490C11*)(S21020C16*), 0, "S21020C14");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C16*), 0, "S21020C14");
    check_base_class_offset(lv, (S21020C16*)(S21020C15*), 0, "S21020C14");
    /*is_ambiguous_... S21020C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*), ABISELECT(8,4), "S21020C14");
    /*is_ambiguous_... S21020C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*), 0, "S21020C14");
    check_base_class_offset(lv, (S21020C15*), 0, "S21020C14");
    check_base_class_offset(lv, (S19490C26*)(S21020C6*), ABISELECT(72,40), "S21020C14");
    check_base_class_offset(lv, (S19490C26*)(S21020C3*), ABISELECT(72,40), "S21020C14");
    check_base_class_offset(lv, (S21020C6*), ABISELECT(48,28), "S21020C14");
    check_base_class_offset(lv, (S21020C3*), ABISELECT(72,40), "S21020C14");
    test_class_info(&lv, &cd_S21020C14);
    dp->~S21020C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C14(Test_S21020C14, "S21020C14", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S21020C14C1Ev();
extern void _ZN9S21020C14D1Ev();
Name_Map name_map_S21020C14[] = {
  NSPAIR(_ZN9S21020C14C1Ev),
  NSPAIR(_ZN9S21020C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S21020C16;
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C6;
extern VTBL_ENTRY _ZTI8S21020C6[];
extern  VTBL_ENTRY _ZTV8S21020C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C6[];
extern Class_Descriptor cd_S21020C3;
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
static Base_Class bases_S21020C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21020C16,    0, //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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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, 1},
  {&cd_S21020C6,    ABISELECT(48,28), //bcp->offset
    10, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21020C3,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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},
  {0}};
extern VTBL_ENTRY _ZTI9S21020C14[];
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY vtc_S21020C14[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
extern VTBL_ENTRY _ZTV9S21020C14[];
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C15__9S21020C14[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C14[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C14[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
static  VTT_ENTRY vtt_S21020C14[] = {
  {&(_ZTV9S21020C14[8]),  8,16},
  {&(_tg__ZTV9S21020C15__9S21020C14[5]),  5,7},
  {&(_tg__ZTV9S21020C15__9S21020C14[5]),  5,7},
  {&(_ZTV9S21020C14[8]),  8,16},
  {&(_ZTV9S21020C14[13]),  13,16},
  {&(_ZTV9S21020C14[16]),  16,16},
  {&(_tg__ZTV9S21020C16__9S21020C14[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C14[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
Class_Descriptor cd_S21020C14 = {  "S21020C14", // class name
  bases_S21020C14, 13,
  &(vtc_S21020C14[0]), // expected_vtbl_contents
  &(vtt_S21020C14[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S21020C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21020C14),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21020C14),9, //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  S21020C5  : virtual S21020C6 , virtual S19490C10_nt , virtual S21020C8 , virtual S19490C7 , virtual S21020C14 {
  ~S21020C5(); // tgen
  S21020C5(); // tgen
};
//SIG(-1 S21020C5) C1{ VBC2{ VBC3{ m} Fp[2]} VBC4{ m Fp} VBC5{ VBC6{ m} BC7{ BC4 BC8{ m} BC3} BC9{ m} VBC10{ VBC3 Fi}} VBC11{ m} VBC12{ BC13{ VBC14{ VBC7 VBC9 BC8} BC4 BC3 vd FD Fi} VBC2 VBC10}}


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

static void Test_S21020C5()
{
  extern Class_Descriptor cd_S21020C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S21020C5, buf);
    S21020C5 *dp, &lv = *(dp=new (buf) S21020C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S21020C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21020C5)");
    check_base_class_offset(lv, (S19490C26*)(S21020C6*), 0, "S21020C5");
    check_base_class_offset(lv, (S19490C26*)(S21020C3*), 0, "S21020C5");
    check_base_class_offset(lv, (S21020C6*), ABISELECT(8,4), "S21020C5");
    check_base_class_offset(lv, (S21020C6*)(S21020C14*), ABISELECT(8,4), "S21020C5");
    /*is_ambiguous_... S21020C5::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(32,16), "S21020C5");
    check_base_class_offset(lv, (S19490C18*)(S21020C8*), 0, "S21020C5");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*)(S21020C8*), ABISELECT(48,24), "S21020C5");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*)(S21020C8*), ABISELECT(48,24), "S21020C5");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*)(S21020C8*), ABISELECT(48,24), "S21020C5");
    check_base_class_offset(lv, (S21020C10*)(S21020C8*), ABISELECT(48,24), "S21020C5");
    check_base_class_offset(lv, (S19490C11*)(S21020C8*), ABISELECT(40,20), "S21020C5");
    check_base_class_offset(lv, (S21020C3*)(S21020C8*), ABISELECT(56,28), "S21020C5");
    check_base_class_offset(lv, (S21020C3*)(S21020C14*), ABISELECT(56,28), "S21020C5");
    check_base_class_offset(lv, (S21020C8*), ABISELECT(40,20), "S21020C5");
    check_base_class_offset(lv, (S19490C7*), 0, "S21020C5");
    /*is_ambiguous_... S21020C5::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(120,60), "S21020C5");
    /*is_ambiguous_... S21020C5::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(120,60), "S21020C5");
    /*is_ambiguous_... S21020C5::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(120,60), "S21020C5");
    check_base_class_offset(lv, (S21020C10*)(S21020C16*), ABISELECT(120,60), "S21020C5");
    check_base_class_offset(lv, (S19490C11*)(S21020C16*), 0, "S21020C5");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C16*), 0, "S21020C5");
    check_base_class_offset(lv, (S21020C16*)(S21020C15*)(S21020C14*), 0, "S21020C5");
    /*is_ambiguous_... S21020C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*)(S21020C14*), ABISELECT(88,40), "S21020C5");
    /*is_ambiguous_... S21020C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*)(S21020C14*), ABISELECT(80,36), "S21020C5");
    check_base_class_offset(lv, (S21020C15*)(S21020C14*), ABISELECT(80,36), "S21020C5");
    check_base_class_offset(lv, (S21020C14*), ABISELECT(80,36), "S21020C5");
    test_class_info(&lv, &cd_S21020C5);
    dp->~S21020C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C5(Test_S21020C5, "S21020C5", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S21020C5C1Ev();
extern void _ZN8S21020C5D1Ev();
Name_Map name_map_S21020C5[] = {
  NSPAIR(_ZN8S21020C5C1Ev),
  NSPAIR(_ZN8S21020C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C6;
extern VTBL_ENTRY _ZTI8S21020C6[];
extern  VTBL_ENTRY _ZTV8S21020C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C6[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S21020C3;
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
extern Class_Descriptor cd_S21020C8;
extern VTBL_ENTRY _ZTI8S21020C8[];
extern  VTBL_ENTRY _ZTV8S21020C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C8[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S21020C16;
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S21020C14;
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
static Base_Class bases_S21020C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21020C6,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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_S19490C10_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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_S19490C12,    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_S19490C26,    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_S21020C10,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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_S21020C3,    ABISELECT(56,28), //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
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21020C8,    ABISELECT(40,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    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_S19490C12,    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_S19490C26,    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_S21020C10,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(88,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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(80,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
    21, //immediately_derived
  0, 0},
  {&cd_S21020C15,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21020C14,    ABISELECT(80,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S21020C5[];
extern void _ZN8S21020C5D1Ev();
extern void _ZN8S21020C5D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S21020C5D1Ev,_ZThn36_N8S21020C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S21020C5D0Ev,_ZThn36_N8S21020C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21020C5[] = {
  0,
  ABISELECT(80,36),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  (VTBL_ENTRY)&_ZN8S21020C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21020C5D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  ABISELECT(-80,-36),
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21020C5[];
static  VTBL_ENTRY _tg__ZTV8S21020C6__8S21020C5[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C8__8S21020C5[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C8__8S21020C5[] = {
  ABISELECT(-56,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C5[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C14__8S21020C5[] = {
  ABISELECT(-24,-8),
  ABISELECT(-80,-36),
  ABISELECT(-72,-32),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
};
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C159S21020C14__8S21020C5[] = {
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C159S21020C14__8S21020C5[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C14__8S21020C5[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C14__8S21020C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,32),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C14__8S21020C5[] = {
  ABISELECT(-56,-28),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__8S21020C5[] = {
  0,
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
static  VTT_ENTRY vtt_S21020C5[] = {
  {&(_ZTV8S21020C5[13]),  13,37},
  {&(_ZTV8S21020C5[18]),  18,37},
  {&(_ZTV8S21020C5[23]),  23,37},
  {&(_ZTV8S21020C5[26]),  26,37},
  {&(_ZTV8S21020C5[35]),  35,37},
  {&(_ZTV8S21020C5[13]),  13,37},
  {&(_tg__ZTV8S21020C6__8S21020C5[3]),  3,3},
  {&(_tg__ZTV8S21020C8__8S21020C5[5]),  5,5},
  {&(_tg__ZTV8S21020C3__8S21020C8__8S21020C5[3]),  3,3},
  {&(_tg__ZTV8S21020C3__8S21020C5[3]),  3,3},
  {&(_tg__ZTV9S21020C14__8S21020C5[8]),  8,10},
  {&(_tg__ZTV9S21020C159S21020C14__8S21020C5[5]),  5,7},
  {&(_tg__ZTV9S21020C16__9S21020C159S21020C14__8S21020C5[4]),  4,4},
  {&(_tg__ZTV9S21020C16__9S21020C14__8S21020C5[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C14__8S21020C5[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C14__8S21020C5[3]),  3,3},
  {&(_tg__ZTV9S21020C16__8S21020C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21020C5[];
extern  VTBL_ENTRY _ZTV8S21020C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C5[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21020C5D0Ev,_ZThn36_N8S21020C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21020C5D1Ev,_ZThn36_N8S21020C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21020C5 = {  "S21020C5", // class name
  bases_S21020C5, 23,
  &(vtc_S21020C5[0]), // expected_vtbl_contents
  &(vtt_S21020C5[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S21020C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21020C5),37, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21020C5),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21020C18  : S21020C14 {
  virtual  ~S21020C18(); // _ZN9S21020C18D2Ev
  S21020C18(); // tgen
};
//SIG(-1 S21020C18) C1{ BC2{ BC3{ VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} BC6 BC8 vd FD Fi} VBC10{ VBC8 Fp[2]} VBC11{ VBC8 Fi}} vd}


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

static void Test_S21020C18()
{
  extern Class_Descriptor cd_S21020C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S21020C18, buf);
    S21020C18 *dp, &lv = *(dp=new (buf) S21020C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S21020C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21020C18)");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(40,24), "S21020C18");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(40,24), "S21020C18");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(40,24), "S21020C18");
    check_base_class_offset(lv, (S21020C10*)(S21020C16*), ABISELECT(40,24), "S21020C18");
    check_base_class_offset(lv, (S19490C11*)(S21020C16*), 0, "S21020C18");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C16*), 0, "S21020C18");
    check_base_class_offset(lv, (S21020C16*)(S21020C15*)(S21020C14*), 0, "S21020C18");
    /*is_ambiguous_... S21020C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*)(S21020C14*), ABISELECT(8,4), "S21020C18");
    /*is_ambiguous_... S21020C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*)(S21020C14*), 0, "S21020C18");
    check_base_class_offset(lv, (S21020C15*)(S21020C14*), 0, "S21020C18");
    check_base_class_offset(lv, (S19490C26*)(S21020C6*), ABISELECT(72,40), "S21020C18");
    check_base_class_offset(lv, (S19490C26*)(S21020C3*), ABISELECT(72,40), "S21020C18");
    check_base_class_offset(lv, (S21020C6*)(S21020C14*), ABISELECT(48,28), "S21020C18");
    check_base_class_offset(lv, (S21020C3*)(S21020C14*), ABISELECT(72,40), "S21020C18");
    check_base_class_offset(lv, (S21020C14*), 0, "S21020C18");
    test_class_info(&lv, &cd_S21020C18);
    dp->~S21020C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C18(Test_S21020C18, "S21020C18", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S21020C18C1Ev();
extern void _ZN9S21020C18D2Ev();
Name_Map name_map_S21020C18[] = {
  NSPAIR(_ZN9S21020C18C1Ev),
  NSPAIR(_ZN9S21020C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S21020C16;
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C6;
extern VTBL_ENTRY _ZTI8S21020C6[];
extern  VTBL_ENTRY _ZTV8S21020C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C6[];
extern Class_Descriptor cd_S21020C3;
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
extern Class_Descriptor cd_S21020C14;
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
static Base_Class bases_S21020C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21020C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C15,    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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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, 1},
  {&cd_S21020C6,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21020C3,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21020C14,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21020C18[];
extern void _ZN9S21020C18D1Ev();
extern void _ZN9S21020C18D0Ev();
static  VTBL_ENTRY vtc_S21020C18[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
  (VTBL_ENTRY)&_ZN9S21020C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C18D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
extern VTBL_ENTRY _ZTV9S21020C18[];
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C14__9S21020C18[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
};
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C159S21020C14__9S21020C18[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C14__9S21020C18[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C14__9S21020C18[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C18[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C18[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
static  VTT_ENTRY vtt_S21020C18[] = {
  {&(_ZTV9S21020C18[8]),  8,16},
  {&(_tg__ZTV9S21020C14__9S21020C18[8]),  8,10},
  {&(_tg__ZTV9S21020C159S21020C14__9S21020C18[5]),  5,7},
  {&(_tg__ZTV9S21020C159S21020C14__9S21020C18[5]),  5,7},
  {&(_tg__ZTV9S21020C14__9S21020C18[8]),  8,10},
  {&(_tg__ZTV8S21020C6__9S21020C14__9S21020C18[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C14__9S21020C18[3]),  3,3},
  {&(_ZTV9S21020C18[8]),  8,16},
  {&(_ZTV9S21020C18[13]),  13,16},
  {&(_ZTV9S21020C18[16]),  16,16},
  {&(_tg__ZTV9S21020C16__9S21020C18[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C18[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21020C18[];
extern  VTBL_ENTRY _ZTV9S21020C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C18[];
Class_Descriptor cd_S21020C18 = {  "S21020C18", // class name
  bases_S21020C18, 14,
  &(vtc_S21020C18[0]), // expected_vtbl_contents
  &(vtt_S21020C18[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S21020C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21020C18),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21020C18),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  S21020C2  : virtual S21020C3 , S21020C5 , S19490C6_nt , S21020C18 {
  int s21020c2f0[2];
  virtual  ~S21020C2(); // _ZN8S21020C2D2Ev
  S21020C2(); // tgen
};
//SIG(-1 S21020C2) C1{ VBC2{ VBC3{ m} Fi} BC4{ VBC5{ VBC3 Fp[2]} VBC6{ m Fp} VBC7{ VBC8{ m} BC9{ BC6 BC10{ m} BC3} BC11{ m} VBC2} VBC12{ m} VBC13{ BC14{ VBC15{ VBC9 VBC11 BC10} BC6 BC3 vd FD Fi} VBC5 VBC2}} BC16{ m} BC17{ BC13 vd} vd Fi[2]}


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

static void Test_S21020C2()
{
  extern Class_Descriptor cd_S21020C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S21020C2, buf);
    S21020C2 *dp, &lv = *(dp=new (buf) S21020C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S21020C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21020C2)");
    check_base_class_offset(lv, (S19490C26*)(S21020C3*), 0, "S21020C2");
    check_base_class_offset(lv, (S19490C26*)(S21020C6*), 0, "S21020C2");
    check_base_class_offset(lv, (S21020C3*), ABISELECT(64,36), "S21020C2");
    check_base_class_offset(lv, (S21020C3*)(S21020C8*), ABISELECT(64,36), "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C3*)(S21020C14*), ABISELECT(64,36), "S21020C2");
    check_base_class_offset(lv, (S21020C3*)(S21020C14*)(S21020C18*), ABISELECT(64,36), "S21020C2");
    check_base_class_offset(lv, (S21020C6*)(S21020C5*), ABISELECT(80,44), "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C6*)(S21020C14*), ABISELECT(80,44), "S21020C2");
    check_base_class_offset(lv, (S21020C6*)(S21020C14*)(S21020C18*), ABISELECT(80,44), "S21020C2");
    /*is_ambiguous_... S21020C5::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C5*), ABISELECT(104,56), "S21020C2");
    check_base_class_offset(lv, (S19490C18*)(S21020C8*), 0, "S21020C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*)(S21020C8*), ABISELECT(120,64), "S21020C2");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*)(S21020C8*), ABISELECT(120,64), "S21020C2");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*)(S21020C8*), ABISELECT(120,64), "S21020C2");
    check_base_class_offset(lv, (S21020C10*)(S21020C8*), ABISELECT(120,64), "S21020C2");
    check_base_class_offset(lv, (S19490C11*)(S21020C8*), ABISELECT(112,60), "S21020C2");
    check_base_class_offset(lv, (S21020C8*)(S21020C5*), ABISELECT(112,60), "S21020C2");
    check_base_class_offset(lv, (S19490C7*)(S21020C5*), 0, "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(168,92), "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(168,92), "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(168,92), "S21020C2");
    check_base_class_offset(lv, (S21020C10*)(S21020C16*), ABISELECT(168,92), "S21020C2");
    check_base_class_offset(lv, (S19490C11*)(S21020C16*), 0, "S21020C2");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C16*), 0, "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C16*)(S21020C15*)(S21020C14*), 0, "S21020C2");
    check_base_class_offset(lv, (S21020C16*)(S21020C15*)(S21020C14*)(S21020C18*), 0, "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C14 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*)(S21020C14*), ABISELECT(136,72), "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C14 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*)(S21020C14*), ABISELECT(128,68), "S21020C2");
    /*is_ambiguous_... S21020C2::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C15*)(S21020C14*), ABISELECT(128,68), "S21020C2");
    check_base_class_offset(lv, (S21020C14*)(S21020C5*), ABISELECT(128,68), "S21020C2");
    check_base_class_offset(lv, (S21020C5*), 0, "S21020C2");
    check_base_class_offset(lv, (S19490C6_nt*), 0, "S21020C2");
    /*is_ambiguous_... S21020C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*)(S21020C14*)(S21020C18*), ABISELECT(24,8), "S21020C2");
    /*is_ambiguous_... S21020C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*)(S21020C14*)(S21020C18*), ABISELECT(16,4), "S21020C2");
    check_base_class_offset(lv, (S21020C15*)(S21020C14*)(S21020C18*), ABISELECT(16,4), "S21020C2");
    check_base_class_offset(lv, (S21020C14*)(S21020C18*), ABISELECT(16,4), "S21020C2");
    check_base_class_offset(lv, (S21020C18*), ABISELECT(16,4), "S21020C2");
    check_field_offset(lv, s21020c2f0, ABISELECT(52,28), "S21020C2.s21020c2f0");
    test_class_info(&lv, &cd_S21020C2);
    dp->~S21020C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C2(Test_S21020C2, "S21020C2", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S21020C2C1Ev();
extern void _ZN8S21020C2D2Ev();
Name_Map name_map_S21020C2[] = {
  NSPAIR(_ZN8S21020C2C1Ev),
  NSPAIR(_ZN8S21020C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C3;
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
extern Class_Descriptor cd_S21020C6;
extern VTBL_ENTRY _ZTI8S21020C6[];
extern  VTBL_ENTRY _ZTV8S21020C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C6[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S21020C8;
extern VTBL_ENTRY _ZTI8S21020C8[];
extern  VTBL_ENTRY _ZTV8S21020C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C8[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S21020C16;
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S21020C14;
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
extern Class_Descriptor cd_S21020C5;
extern VTBL_ENTRY _ZTI8S21020C5[];
extern  VTBL_ENTRY _ZTV8S21020C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C5[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S21020C14;
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
extern Class_Descriptor cd_S21020C18;
extern VTBL_ENTRY _ZTI9S21020C18[];
extern  VTBL_ENTRY _ZTV9S21020C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C18[];
static Base_Class bases_S21020C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21020C3,    ABISELECT(64,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21020C6,    ABISELECT(80,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    23, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    8, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C11,    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
    10, //immediately_derived
  0, 0},
  {&cd_S21020C8,    ABISELECT(112,60), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    15, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_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_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S21020C15,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21020C14,    ABISELECT(128,68), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21020C5,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21020C15,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21020C14,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21020C18,    ABISELECT(16,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21020C2[];
extern void _ZN8S21020C2D1Ev();
extern void _ZN8S21020C2D0Ev();
extern void ABISELECT(_ZThn16_N8S21020C2D1Ev,_ZThn4_N8S21020C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21020C2D0Ev,_ZThn4_N8S21020C2D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S21020C2D1Ev,_ZTv0_n36_N8S21020C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21020C2D1Ev,_ZThn68_N8S21020C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21020C2D0Ev,_ZTv0_n36_N8S21020C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21020C2D0Ev,_ZThn68_N8S21020C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21020C2[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  (VTBL_ENTRY)&_ZN8S21020C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21020C2D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21020C2D1Ev,_ZThn4_N8S21020C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21020C2D0Ev,_ZThn4_N8S21020C2D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C2D1Ev,_ZTv0_n36_N8S21020C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C2D0Ev,_ZTv0_n36_N8S21020C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21020C2[];
extern void _ZN8S21020C5D1Ev();
extern void _ZN8S21020C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21020C5__8S21020C2[] = {
  0,
  ABISELECT(128,68),
  0,
  ABISELECT(64,36),
  0,
  ABISELECT(112,60),
  ABISELECT(104,56),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  (VTBL_ENTRY)&_ZN8S21020C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21020C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__8S21020C5__8S21020C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C8__8S21020C5__8S21020C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C5__8S21020C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21020C5D1Ev,_ZThn68_N8S21020C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21020C5D0Ev,_ZThn68_N8S21020C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21020C14__8S21020C5__8S21020C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev),
};
extern void _ZN9S21020C18D1Ev();
extern void _ZN9S21020C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C18__8S21020C2[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
  (VTBL_ENTRY)&_ZN9S21020C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C18D0Ev,
};
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C149S21020C18__A1__8S21020C2[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-4),
  ABISELECT(64,40),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
};
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C159S21020C149S21020C18__A1__8S21020C2[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C159S21020C149S21020C18__A1__8S21020C2[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C149S21020C18__A1__8S21020C2[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C149S21020C18__A1__8S21020C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C149S21020C18__A1__8S21020C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C18__8S21020C2[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C18__8S21020C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C18__8S21020C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C2[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__8S21020C2[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C8__8S21020C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C8__8S21020C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C14__8S21020C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-128,-68),
  ABISELECT(-48,-24),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
};
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C159S21020C14__8S21020C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C159S21020C14__8S21020C2[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C14__8S21020C2[] = {
  0,
  ABISELECT(168,92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C14__8S21020C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C14__8S21020C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__8S21020C2[] = {
  0,
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
static  VTT_ENTRY vtt_S21020C2[] = {
  {&(_ZTV8S21020C2[13]),  13,47},
  {&(_tg__ZTV8S21020C5__8S21020C2[13]),  13,15},
  {&(_tg__ZTV8S21020C6__8S21020C5__8S21020C2[3]),  3,3},
  {&(_tg__ZTV8S21020C8__8S21020C5__8S21020C2[5]),  5,5},
  {&(_tg__ZTV8S21020C3__8S21020C5__8S21020C2[3]),  3,3},
  {&(_tg__ZTV9S21020C14__8S21020C5__8S21020C2[9]),  9,11},
  {&(_tg__ZTV8S21020C5__8S21020C2[13]),  13,15},
  {&(_tg__ZTV9S21020C18__8S21020C2[8]),  8,10},
  {&(_tg__ZTV9S21020C149S21020C18__A1__8S21020C2[8]),  8,10},
  {&(_tg__ZTV9S21020C159S21020C149S21020C18__A1__8S21020C2[5]),  5,7},
  {&(_tg__ZTV9S21020C16__9S21020C159S21020C149S21020C18__A1__8S21020C2[4]),  4,4},
  {&(_tg__ZTV9S21020C16__9S21020C149S21020C18__A1__8S21020C2[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C149S21020C18__A1__8S21020C2[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C149S21020C18__A1__8S21020C2[3]),  3,3},
  {&(_tg__ZTV9S21020C16__9S21020C18__8S21020C2[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C18__8S21020C2[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C18__8S21020C2[3]),  3,3},
  {&(_ZTV8S21020C2[28]),  28,47},
  {&(_ZTV8S21020C2[31]),  31,47},
  {&(_ZTV8S21020C2[36]),  36,47},
  {&(_ZTV8S21020C2[45]),  45,47},
  {&(_ZTV8S21020C2[13]),  13,47},
  {&(_ZTV8S21020C2[23]),  23,47},
  {&(_tg__ZTV8S21020C3__8S21020C2[3]),  3,3},
  {&(_tg__ZTV8S21020C6__8S21020C2[3]),  3,3},
  {&(_tg__ZTV8S21020C8__8S21020C2[5]),  5,5},
  {&(_tg__ZTV8S21020C3__8S21020C8__8S21020C2[3]),  3,3},
  {&(_tg__ZTV9S21020C14__8S21020C2[8]),  8,10},
  {&(_tg__ZTV9S21020C159S21020C14__8S21020C2[5]),  5,7},
  {&(_tg__ZTV9S21020C16__9S21020C159S21020C14__8S21020C2[4]),  4,4},
  {&(_tg__ZTV9S21020C16__9S21020C14__8S21020C2[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C14__8S21020C2[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C14__8S21020C2[3]),  3,3},
  {&(_tg__ZTV9S21020C16__8S21020C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21020C2[];
extern  VTBL_ENTRY _ZTV8S21020C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C2[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C5D0Ev,_ZThn68_N8S21020C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C5D1Ev,_ZThn68_N8S21020C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C2D0Ev,_ZTv0_n36_N8S21020C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C2D0Ev,_ZThn68_N8S21020C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C2D1Ev,_ZTv0_n36_N8S21020C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C2D1Ev,_ZThn68_N8S21020C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21020C2 = {  "S21020C2", // class name
  bases_S21020C2, 30,
  &(vtc_S21020C2[0]), // expected_vtbl_contents
  &(vtt_S21020C2[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S21020C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21020C2),47, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21020C2),34, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21020C1  : virtual S21020C2 {
  ~S21020C1(); // tgen
  S21020C1(); // tgen
};
//SIG(1 S21020C1) C1{ VBC2{ VBC3{ VBC4{ m} Fi} BC5{ VBC6{ VBC4 Fp[2]} VBC7{ m Fp} VBC8{ VBC9{ m} BC10{ BC7 BC11{ m} BC4} BC12{ m} VBC3} VBC13{ m} VBC14{ BC15{ VBC16{ VBC10 VBC12 BC11} BC7 BC4 vd FD Fi} VBC6 VBC3}} BC17{ m} BC18{ BC14 vd} vd Fi[2]}}


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

static void Test_S21020C1()
{
  extern Class_Descriptor cd_S21020C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,26)];
    init_test(&cd_S21020C1, buf);
    S21020C1 *dp, &lv = *(dp=new (buf) S21020C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S21020C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21020C1)");
    check_base_class_offset(lv, (S19490C26*)(S21020C3*), 0, "S21020C1");
    check_base_class_offset(lv, (S19490C26*)(S21020C6*), 0, "S21020C1");
    check_base_class_offset(lv, (S21020C3*)(S21020C2*), ABISELECT(80,40), "S21020C1");
    check_base_class_offset(lv, (S21020C3*)(S21020C8*), ABISELECT(80,40), "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C3*)(S21020C14*), ABISELECT(80,40), "S21020C1");
    check_base_class_offset(lv, (S21020C3*)(S21020C14*)(S21020C18*)(S21020C2*), ABISELECT(80,40), "S21020C1");
    check_base_class_offset(lv, (S21020C6*)(S21020C5*)(S21020C2*), ABISELECT(96,48), "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C6*)(S21020C14*), ABISELECT(96,48), "S21020C1");
    check_base_class_offset(lv, (S21020C6*)(S21020C14*)(S21020C18*)(S21020C2*), ABISELECT(96,48), "S21020C1");
    /*is_ambiguous_... S21020C5::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C5*)(S21020C2*), ABISELECT(120,60), "S21020C1");
    check_base_class_offset(lv, (S19490C18*)(S21020C8*), 0, "S21020C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*)(S21020C8*), ABISELECT(136,68), "S21020C1");
    check_base_class_offset(lv, (S19490C12*)(S21020C10*)(S21020C8*), ABISELECT(136,68), "S21020C1");
    check_base_class_offset(lv, (S19490C26*)(S21020C10*)(S21020C8*), ABISELECT(136,68), "S21020C1");
    check_base_class_offset(lv, (S21020C10*)(S21020C8*), ABISELECT(136,68), "S21020C1");
    check_base_class_offset(lv, (S19490C11*)(S21020C8*), ABISELECT(128,64), "S21020C1");
    check_base_class_offset(lv, (S21020C8*)(S21020C5*)(S21020C2*), ABISELECT(128,64), "S21020C1");
    check_base_class_offset(lv, (S19490C7*)(S21020C5*)(S21020C2*), 0, "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C10*), ABISELECT(184,96), "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C10*), ABISELECT(184,96), "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C10 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C10*), ABISELECT(184,96), "S21020C1");
    check_base_class_offset(lv, (S21020C10*)(S21020C16*), ABISELECT(184,96), "S21020C1");
    check_base_class_offset(lv, (S19490C11*)(S21020C16*), 0, "S21020C1");
    /*is_ambiguous_... S21020C16::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S21020C16*), 0, "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C16*)(S21020C15*)(S21020C14*), 0, "S21020C1");
    check_base_class_offset(lv, (S21020C16*)(S21020C15*)(S21020C14*)(S21020C18*)(S21020C2*), 0, "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C14 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*)(S21020C14*), ABISELECT(152,76), "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C14 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*)(S21020C14*), ABISELECT(144,72), "S21020C1");
    /*is_ambiguous_... S21020C1::S21020C14 */ AMB_check_base_class_offset(lv, (S21020C15*)(S21020C14*), ABISELECT(144,72), "S21020C1");
    check_base_class_offset(lv, (S21020C14*)(S21020C5*)(S21020C2*), ABISELECT(144,72), "S21020C1");
    check_base_class_offset(lv, (S21020C5*)(S21020C2*), ABISELECT(16,4), "S21020C1");
    check_base_class_offset(lv, (S19490C6_nt*)(S21020C2*), ABISELECT(16,4), "S21020C1");
    /*is_ambiguous_... S21020C15::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S21020C15*)(S21020C14*)(S21020C18*)(S21020C2*), ABISELECT(40,12), "S21020C1");
    /*is_ambiguous_... S21020C15::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S21020C15*)(S21020C14*)(S21020C18*)(S21020C2*), ABISELECT(32,8), "S21020C1");
    check_base_class_offset(lv, (S21020C15*)(S21020C14*)(S21020C18*)(S21020C2*), ABISELECT(32,8), "S21020C1");
    check_base_class_offset(lv, (S21020C14*)(S21020C18*)(S21020C2*), ABISELECT(32,8), "S21020C1");
    check_base_class_offset(lv, (S21020C18*)(S21020C2*), ABISELECT(32,8), "S21020C1");
    check_base_class_offset(lv, (S21020C2*), ABISELECT(16,4), "S21020C1");
    test_class_info(&lv, &cd_S21020C1);
    dp->~S21020C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21020C1(Test_S21020C1, "S21020C1", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S21020C1C1Ev();
extern void _ZN8S21020C1D1Ev();
Name_Map name_map_S21020C1[] = {
  NSPAIR(_ZN8S21020C1C1Ev),
  NSPAIR(_ZN8S21020C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C3;
extern VTBL_ENTRY _ZTI8S21020C3[];
extern  VTBL_ENTRY _ZTV8S21020C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C3[];
extern Class_Descriptor cd_S21020C6;
extern VTBL_ENTRY _ZTI8S21020C6[];
extern  VTBL_ENTRY _ZTV8S21020C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C6[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S21020C8;
extern VTBL_ENTRY _ZTI8S21020C8[];
extern  VTBL_ENTRY _ZTV8S21020C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C8[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C10;
extern VTBL_ENTRY _ZTI9S21020C10[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S21020C16;
extern VTBL_ENTRY _ZTI9S21020C16[];
extern  VTBL_ENTRY _ZTV9S21020C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C16[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S21020C14;
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
extern Class_Descriptor cd_S21020C5;
extern VTBL_ENTRY _ZTI8S21020C5[];
extern  VTBL_ENTRY _ZTV8S21020C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C5[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S21020C15;
extern VTBL_ENTRY _ZTI9S21020C15[];
extern  VTBL_ENTRY _ZTV9S21020C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C15[];
extern Class_Descriptor cd_S21020C14;
extern VTBL_ENTRY _ZTI9S21020C14[];
extern  VTBL_ENTRY _ZTV9S21020C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C14[];
extern Class_Descriptor cd_S21020C18;
extern VTBL_ENTRY _ZTI9S21020C18[];
extern  VTBL_ENTRY _ZTV9S21020C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21020C18[];
extern Class_Descriptor cd_S21020C2;
extern VTBL_ENTRY _ZTI8S21020C2[];
extern  VTBL_ENTRY _ZTV8S21020C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C2[];
static Base_Class bases_S21020C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21020C3,    ABISELECT(80,40), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21020C6,    ABISELECT(96,48), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    23, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_nt,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    8, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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_S19490C11,    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
    10, //immediately_derived
  0, 0},
  {&cd_S21020C8,    ABISELECT(128,64), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    15, //immediately_derived
  0, 0},
  {&cd_S21020C10,    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
    18, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(144,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_S21020C15,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21020C14,    ABISELECT(144,72), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21020C5,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19490C6_nt,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(40,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(32,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21020C15,    ABISELECT(32,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21020C14,    ABISELECT(32,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21020C18,    ABISELECT(32,8), //bcp->offset
    32, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21020C2,    ABISELECT(16,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21020C1[];
extern void _ZN8S21020C1D1Ev();
extern void _ZN8S21020C1D0Ev();
extern void ABISELECT(_ZTv0_n112_N8S21020C1D1Ev,_ZTv0_n56_N8S21020C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21020C1D1Ev,_ZThn4_N8S21020C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S21020C1D0Ev,_ZTv0_n56_N8S21020C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21020C1D0Ev,_ZThn4_N8S21020C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n112_N8S21020C1D1Ev,_ZTvn4_n56_N8S21020C1D1Ev)();
extern void ABISELECT(_ZTvn16_n112_N8S21020C1D0Ev,_ZTvn4_n56_N8S21020C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S21020C1D1Ev,_ZTv0_n36_N8S21020C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21020C1D1Ev,_ZThn72_N8S21020C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21020C1D0Ev,_ZTv0_n36_N8S21020C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21020C1D0Ev,_ZThn72_N8S21020C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21020C1[] = {
  0,
  ABISELECT(144,72),
  0,
  0,
  ABISELECT(128,64),
  ABISELECT(120,60),
  ABISELECT(96,48),
  0,
  ABISELECT(80,40),
  ABISELECT(16,4),
  0,
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  (VTBL_ENTRY)&_ZN8S21020C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21020C1D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(128,68),
  ABISELECT(-16,-4),
  ABISELECT(64,36),
  ABISELECT(-16,-4),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(-16,-4),
  ABISELECT(80,44),
  ABISELECT(-16,-4),
  ABISELECT(168,92),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21020C1D1Ev,_ZTv0_n56_N8S21020C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21020C1D0Ev,_ZTv0_n56_N8S21020C1D0Ev),
  ABISELECT(48,32),
  ABISELECT(-32,-8),
  ABISELECT(64,40),
  ABISELECT(-32,-8),
  ABISELECT(-32,-8),
  ABISELECT(152,88),
  ABISELECT(-32,-8),
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S21020C1D1Ev,_ZTvn4_n56_N8S21020C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n112_N8S21020C1D0Ev,_ZTvn4_n56_N8S21020C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  ABISELECT(-144,-72),
  ABISELECT(-64,-32),
  ABISELECT(-144,-72),
  ABISELECT(-48,-24),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(40,24),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21020C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C1D1Ev,_ZTv0_n36_N8S21020C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C1D0Ev,_ZTv0_n36_N8S21020C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21020C1[];
extern void _ZN8S21020C2D1Ev();
extern void _ZN8S21020C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21020C2__8S21020C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(128,68),
  ABISELECT(-16,-4),
  ABISELECT(64,36),
  ABISELECT(-16,-4),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(-16,-4),
  ABISELECT(80,44),
  ABISELECT(-16,-4),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  (VTBL_ENTRY)&_ZN8S21020C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21020C2D0Ev,
};
extern void _ZN8S21020C5D1Ev();
extern void _ZN8S21020C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21020C58S21020C2__8S21020C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(128,68),
  ABISELECT(-16,-4),
  ABISELECT(64,36),
  ABISELECT(-16,-4),
  ABISELECT(112,60),
  ABISELECT(104,56),
  ABISELECT(-16,-4),
  ABISELECT(80,44),
  ABISELECT(-16,-4),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  (VTBL_ENTRY)&_ZN8S21020C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21020C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__8S21020C58S21020C2__8S21020C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C8__8S21020C58S21020C2__8S21020C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C58S21020C2__8S21020C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21020C5D1Ev,_ZThn68_N8S21020C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21020C5D0Ev,_ZThn68_N8S21020C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21020C14__8S21020C58S21020C2__8S21020C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-144,-72),
  ABISELECT(-48,-24),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__8S21020C58S21020C2__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21020C5[0]),
};
extern void _ZN9S21020C18D1Ev();
extern void _ZN9S21020C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C188S21020C2__8S21020C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-8),
  ABISELECT(64,40),
  ABISELECT(-32,-8),
  ABISELECT(-32,-8),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
  (VTBL_ENTRY)&_ZN9S21020C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C18D0Ev,
};
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C149S21020C188S21020C2__A1__8S21020C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-8),
  ABISELECT(64,40),
  ABISELECT(-32,-8),
  ABISELECT(-32,-8),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
};
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C159S21020C149S21020C188S21020C2__A1__8S21020C1[] = {
  ABISELECT(-32,-8),
  ABISELECT(-32,-8),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C159S21020C149S21020C188S21020C2__A1__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(32,8),
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C149S21020C188S21020C2__A1__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(32,8),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C149S21020C188S21020C2__A1__8S21020C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C149S21020C188S21020C2__A1__8S21020C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C188S21020C2__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(32,8),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C188S21020C2__8S21020C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C188S21020C2__8S21020C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21020C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C2__8S21020C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__8S21020C2__8S21020C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C8__8S21020C2__8S21020C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S21020C2D1Ev,_ZTv0_n36_N8S21020C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21020C2D1Ev,_ZThn68_N8S21020C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21020C2D0Ev,_ZTv0_n36_N8S21020C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21020C2D0Ev,_ZThn68_N8S21020C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21020C14__8S21020C2__8S21020C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-32),
  ABISELECT(-144,-72),
  ABISELECT(-48,-24),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(40,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C2D1Ev,_ZTv0_n36_N8S21020C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21020C2D0Ev,_ZTv0_n36_N8S21020C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__8S21020C2__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
};
extern void ABISELECT(_ZThn16_N8S21020C2D1Ev,_ZThn4_N8S21020C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21020C2D0Ev,_ZThn4_N8S21020C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21020C18__8S21020C2__8S21020C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-8),
  ABISELECT(64,40),
  ABISELECT(-32,-8),
  ABISELECT(-32,-8),
  ABISELECT(152,88),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21020C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21020C2D1Ev,_ZThn4_N8S21020C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21020C2D0Ev,_ZThn4_N8S21020C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C1[] = {
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__8S21020C1[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C8__8S21020C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__8S21020C8__8S21020C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S21020C8[0]),
};
extern void _ZN9S21020C14D1Ev();
extern void _ZN9S21020C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C14__8S21020C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-144,-72),
  ABISELECT(-48,-24),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
  (VTBL_ENTRY)&_ZN9S21020C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C14D0Ev,
};
extern void _ZN9S21020C15D1Ev();
extern void _ZN9S21020C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21020C159S21020C14__8S21020C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
  (VTBL_ENTRY)&_ZN9S21020C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21020C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C159S21020C14__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S21020C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__9S21020C14__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C6__9S21020C14__8S21020C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21020C3__9S21020C14__8S21020C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S21020C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21020C16__8S21020C1[] = {
  0,
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21020C16[0]),
};
static  VTT_ENTRY vtt_S21020C1[] = {
  {&(_ZTV8S21020C1[14]),  14,64},
  {&(_ZTV8S21020C1[30]),  30,64},
  {&(_ZTV8S21020C1[45]),  45,64},
  {&(_ZTV8S21020C1[48]),  48,64},
  {&(_ZTV8S21020C1[53]),  53,64},
  {&(_ZTV8S21020C1[62]),  62,64},
  {&(_ZTV8S21020C1[14]),  14,64},
  {&(_ZTV8S21020C1[40]),  40,64},
  {&(_tg__ZTV8S21020C2__8S21020C1[13]),  13,15},
  {&(_tg__ZTV8S21020C58S21020C2__8S21020C1[13]),  13,15},
  {&(_tg__ZTV8S21020C6__8S21020C58S21020C2__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C8__8S21020C58S21020C2__8S21020C1[5]),  5,5},
  {&(_tg__ZTV8S21020C3__8S21020C58S21020C2__8S21020C1[3]),  3,3},
  {&(_tg__ZTV9S21020C14__8S21020C58S21020C2__8S21020C1[9]),  9,11},
  {&(_tg__ZTV9S21020C16__8S21020C58S21020C2__8S21020C1[4]),  4,4},
  {&(_tg__ZTV9S21020C188S21020C2__8S21020C1[8]),  8,10},
  {&(_tg__ZTV9S21020C149S21020C188S21020C2__A1__8S21020C1[8]),  8,10},
  {&(_tg__ZTV9S21020C159S21020C149S21020C188S21020C2__A1__8S21020C1[5]),  5,7},
  {&(_tg__ZTV9S21020C16__9S21020C159S21020C149S21020C188S21020C2__A1__8S21020C1[4]),  4,4},
  {&(_tg__ZTV9S21020C16__9S21020C149S21020C188S21020C2__A1__8S21020C1[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C149S21020C188S21020C2__A1__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C149S21020C188S21020C2__A1__8S21020C1[3]),  3,3},
  {&(_tg__ZTV9S21020C16__9S21020C188S21020C2__8S21020C1[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C188S21020C2__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C188S21020C2__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C3__8S21020C2__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C6__8S21020C2__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C8__8S21020C2__8S21020C1[5]),  5,5},
  {&(_tg__ZTV9S21020C14__8S21020C2__8S21020C1[9]),  9,11},
  {&(_tg__ZTV9S21020C16__8S21020C2__8S21020C1[4]),  4,4},
  {&(_tg__ZTV9S21020C18__8S21020C2__8S21020C1[8]),  8,10},
  {&(_tg__ZTV8S21020C3__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C6__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C8__8S21020C1[5]),  5,5},
  {&(_tg__ZTV8S21020C3__8S21020C8__8S21020C1[3]),  3,3},
  {&(_tg__ZTV9S21020C14__8S21020C1[8]),  8,10},
  {&(_tg__ZTV9S21020C159S21020C14__8S21020C1[5]),  5,7},
  {&(_tg__ZTV9S21020C16__9S21020C159S21020C14__8S21020C1[4]),  4,4},
  {&(_tg__ZTV9S21020C16__9S21020C14__8S21020C1[4]),  4,4},
  {&(_tg__ZTV8S21020C6__9S21020C14__8S21020C1[3]),  3,3},
  {&(_tg__ZTV8S21020C3__9S21020C14__8S21020C1[3]),  3,3},
  {&(_tg__ZTV9S21020C16__8S21020C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21020C1[];
extern  VTBL_ENTRY _ZTV8S21020C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21020C1[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C2D0Ev,_ZTv0_n36_N8S21020C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C2D0Ev,_ZThn68_N8S21020C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C2D1Ev,_ZTv0_n36_N8S21020C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C2D1Ev,_ZThn68_N8S21020C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C5D0Ev,_ZTv0_n36_N8S21020C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C5D0Ev,_ZThn68_N8S21020C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C5D1Ev,_ZTv0_n36_N8S21020C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21020C5D1Ev,_ZThn68_N8S21020C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C1D0Ev,_ZTv0_n36_N8S21020C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21020C1D0Ev,_ZThn72_N8S21020C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21020C1D1Ev,_ZTv0_n36_N8S21020C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21020C1D1Ev,_ZThn72_N8S21020C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21020C1D0Ev,_ZTv0_n56_N8S21020C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21020C1D0Ev,_ZThn4_N8S21020C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21020C1D1Ev,_ZTv0_n56_N8S21020C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21020C1D1Ev,_ZThn4_N8S21020C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21020C1 = {  "S21020C1", // class name
  bases_S21020C1, 31,
  &(vtc_S21020C1[0]), // expected_vtbl_contents
  &(vtt_S21020C1[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S21020C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21020C1),64, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21020C1),42, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20552C4_nt  {
  int s20552c4f0;
  virtual void  v6(); // _ZN11S20552C4_nt2v6Ev
  virtual void  v7(); // _ZN11S20552C4_nt2v7Ev
  virtual void  v8(); // _ZN11S20552C4_nt2v8Ev
  ~S20552C4_nt(); // tgen
  S20552C4_nt(); // tgen
};
//SIG(-1 S20552C4_nt) C1{ v1 v2 v3 Fi}


void  S20552C4_nt ::v6(){vfunc_called(this, "_ZN11S20552C4_nt2v6Ev");}
void  S20552C4_nt ::v7(){vfunc_called(this, "_ZN11S20552C4_nt2v7Ev");}
void  S20552C4_nt ::v8(){vfunc_called(this, "_ZN11S20552C4_nt2v8Ev");}
S20552C4_nt ::~S20552C4_nt(){ note_dtor("S20552C4_nt", this);} // tgen
S20552C4_nt ::S20552C4_nt(){ note_ctor("S20552C4_nt", this);} // tgen

//skip512 S20552C4_nt

#else // __cplusplus

extern void _ZN11S20552C4_ntC1Ev();
extern void _ZN11S20552C4_ntD1Ev();
Name_Map name_map_S20552C4_nt[] = {
  NSPAIR(_ZN11S20552C4_ntC1Ev),
  NSPAIR(_ZN11S20552C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20552C4_nt[];
extern void _ZN11S20552C4_nt2v6Ev();
extern void _ZN11S20552C4_nt2v7Ev();
extern void _ZN11S20552C4_nt2v8Ev();
static  VTBL_ENTRY vtc_S20552C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20552C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI11S20552C4_nt[];
VTBL_ENTRY *P__ZTI11S20552C4_nt = _ZTI11S20552C4_nt; 
extern  VTBL_ENTRY _ZTV11S20552C4_nt[];
Class_Descriptor cd_S20552C4_nt = {  "S20552C4_nt", // class name
  0,0,//no base classes
  &(vtc_S20552C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20552C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20552C4_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  S20552C5_nt  {
  int s20552c5f0;
  virtual void  v9(); // _ZN11S20552C5_nt2v9Ev
  virtual void  v10(); // _ZN11S20552C5_nt3v10Ev
  virtual void  v11(); // _ZN11S20552C5_nt3v11Ev
  virtual void  v12(); // _ZN11S20552C5_nt3v12Ev
  virtual void  v13(); // _ZN11S20552C5_nt3v13Ev
  ~S20552C5_nt(); // tgen
  S20552C5_nt(); // tgen
};
//SIG(-1 S20552C5_nt) C1{ v1 v2 v3 v4 v5 Fi}


void  S20552C5_nt ::v9(){vfunc_called(this, "_ZN11S20552C5_nt2v9Ev");}
void  S20552C5_nt ::v10(){vfunc_called(this, "_ZN11S20552C5_nt3v10Ev");}
void  S20552C5_nt ::v11(){vfunc_called(this, "_ZN11S20552C5_nt3v11Ev");}
void  S20552C5_nt ::v12(){vfunc_called(this, "_ZN11S20552C5_nt3v12Ev");}
void  S20552C5_nt ::v13(){vfunc_called(this, "_ZN11S20552C5_nt3v13Ev");}
S20552C5_nt ::~S20552C5_nt(){ note_dtor("S20552C5_nt", this);} // tgen
S20552C5_nt ::S20552C5_nt(){ note_ctor("S20552C5_nt", this);} // tgen

//skip512 S20552C5_nt

#else // __cplusplus

extern void _ZN11S20552C5_ntC1Ev();
extern void _ZN11S20552C5_ntD1Ev();
Name_Map name_map_S20552C5_nt[] = {
  NSPAIR(_ZN11S20552C5_ntC1Ev),
  NSPAIR(_ZN11S20552C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20552C5_nt[];
extern void _ZN11S20552C5_nt2v9Ev();
extern void _ZN11S20552C5_nt3v10Ev();
extern void _ZN11S20552C5_nt3v11Ev();
extern void _ZN11S20552C5_nt3v12Ev();
extern void _ZN11S20552C5_nt3v13Ev();
static  VTBL_ENTRY vtc_S20552C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20552C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20552C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI11S20552C5_nt[];
VTBL_ENTRY *P__ZTI11S20552C5_nt = _ZTI11S20552C5_nt; 
extern  VTBL_ENTRY _ZTV11S20552C5_nt[];
Class_Descriptor cd_S20552C5_nt = {  "S20552C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20552C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20552C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20552C5_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  S20552C3  : S20552C4_nt , S20552C5_nt {
  long double s20552c3f0;
  virtual void  v14(); // _ZN8S20552C33v14Ev
  virtual void  v15(); // _ZN8S20552C33v15Ev
  ~S20552C3(); // tgen
  S20552C3(); // tgen
};
//SIG(-1 S20552C3) C1{ BC2{ v3 v4 v5 Fi} BC3{ v6 v7 v8 v9 v10 Fi} v1 v2 FD}


void  S20552C3 ::v14(){vfunc_called(this, "_ZN8S20552C33v14Ev");}
void  S20552C3 ::v15(){vfunc_called(this, "_ZN8S20552C33v15Ev");}
S20552C3 ::~S20552C3(){ note_dtor("S20552C3", this);} // tgen
S20552C3 ::S20552C3(){ note_ctor("S20552C3", this);} // tgen

static void Test_S20552C3()
{
  extern Class_Descriptor cd_S20552C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S20552C3, buf);
    S20552C3 *dp, &lv = *(dp=new (buf) S20552C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20552C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20552C3)");
    check_base_class_offset(lv, (S20552C4_nt*), 0, "S20552C3");
    check_base_class_offset(lv, (S20552C5_nt*), ABISELECT(16,8), "S20552C3");
    check_field_offset(lv, s20552c3f0, ABISELECT(32,16), "S20552C3.s20552c3f0");
    test_class_info(&lv, &cd_S20552C3);
    dp->~S20552C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20552C3(Test_S20552C3, "S20552C3", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20552C3C1Ev();
extern void _ZN8S20552C3D1Ev();
Name_Map name_map_S20552C3[] = {
  NSPAIR(_ZN8S20552C3C1Ev),
  NSPAIR(_ZN8S20552C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20552C4_nt;
extern VTBL_ENTRY _ZTI11S20552C4_nt[];
extern  VTBL_ENTRY _ZTV11S20552C4_nt[];
extern Class_Descriptor cd_S20552C5_nt;
extern VTBL_ENTRY _ZTI11S20552C5_nt[];
extern  VTBL_ENTRY _ZTV11S20552C5_nt[];
static Base_Class bases_S20552C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20552C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20552C5_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20552C3[];
extern void _ZN11S20552C4_nt2v6Ev();
extern void _ZN11S20552C4_nt2v7Ev();
extern void _ZN11S20552C4_nt2v8Ev();
extern void _ZN8S20552C33v14Ev();
extern void _ZN8S20552C33v15Ev();
extern void _ZN11S20552C5_nt2v9Ev();
extern void _ZN11S20552C5_nt3v10Ev();
extern void _ZN11S20552C5_nt3v11Ev();
extern void _ZN11S20552C5_nt3v12Ev();
extern void _ZN11S20552C5_nt3v13Ev();
static  VTBL_ENTRY vtc_S20552C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20552C3[0]),
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v15Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20552C3[0]),
  (VTBL_ENTRY)&_ZN11S20552C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI8S20552C3[];
extern  VTBL_ENTRY _ZTV8S20552C3[];
Class_Descriptor cd_S20552C3 = {  "S20552C3", // class name
  bases_S20552C3, 2,
  &(vtc_S20552C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20552C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20552C3),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  S20552C7_nt  {
  virtual void  v33(); // _ZN11S20552C7_nt3v33Ev
  ~S20552C7_nt(); // tgen
  S20552C7_nt(); // tgen
};
//SIG(-1 S20552C7_nt) C1{ v1}


void  S20552C7_nt ::v33(){vfunc_called(this, "_ZN11S20552C7_nt3v33Ev");}
S20552C7_nt ::~S20552C7_nt(){ note_dtor("S20552C7_nt", this);} // tgen
S20552C7_nt ::S20552C7_nt(){ note_ctor("S20552C7_nt", this);} // tgen

//skip512 S20552C7_nt

#else // __cplusplus

extern void _ZN11S20552C7_ntC1Ev();
extern void _ZN11S20552C7_ntD1Ev();
Name_Map name_map_S20552C7_nt[] = {
  NSPAIR(_ZN11S20552C7_ntC1Ev),
  NSPAIR(_ZN11S20552C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20552C7_nt[];
extern void _ZN11S20552C7_nt3v33Ev();
static  VTBL_ENTRY vtc_S20552C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20552C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S20552C7_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI11S20552C7_nt[];
VTBL_ENTRY *P__ZTI11S20552C7_nt = _ZTI11S20552C7_nt; 
extern  VTBL_ENTRY _ZTV11S20552C7_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20552C6  : virtual S20552C4_nt {
  ::S20552C7_nt s20552c6f0;
  int s20552c6f1;
  virtual void  v26(); // _ZN8S20552C63v26Ev
  virtual void  v27(); // _ZN8S20552C63v27Ev
  virtual void  v28(); // _ZN8S20552C63v28Ev
  virtual void  v29(); // _ZN8S20552C63v29Ev
  virtual void  v30(); // _ZN8S20552C63v30Ev
  virtual void  v31(); // _ZN8S20552C63v31Ev
  virtual void  v32(); // _ZN8S20552C63v32Ev
  ~S20552C6(); // tgen
  S20552C6(); // tgen
};
//SIG(-1 S20552C6) C1{ VBC2{ v8 v9 v10 Fi} v1 v2 v3 v4 v5 v6 v7 FC3{ v11} Fi}


void  S20552C6 ::v26(){vfunc_called(this, "_ZN8S20552C63v26Ev");}
void  S20552C6 ::v27(){vfunc_called(this, "_ZN8S20552C63v27Ev");}
void  S20552C6 ::v28(){vfunc_called(this, "_ZN8S20552C63v28Ev");}
void  S20552C6 ::v29(){vfunc_called(this, "_ZN8S20552C63v29Ev");}
void  S20552C6 ::v30(){vfunc_called(this, "_ZN8S20552C63v30Ev");}
void  S20552C6 ::v31(){vfunc_called(this, "_ZN8S20552C63v31Ev");}
void  S20552C6 ::v32(){vfunc_called(this, "_ZN8S20552C63v32Ev");}
S20552C6 ::~S20552C6(){ note_dtor("S20552C6", this);} // tgen
S20552C6 ::S20552C6(){ note_ctor("S20552C6", this);} // tgen

static void Test_S20552C6()
{
  extern Class_Descriptor cd_S20552C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20552C6, buf);
    S20552C6 *dp, &lv = *(dp=new (buf) S20552C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20552C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20552C6)");
    check_base_class_offset(lv, (S20552C4_nt*), ABISELECT(24,12), "S20552C6");
    check_field_offset(lv, s20552c6f0, ABISELECT(8,4), "S20552C6.s20552c6f0");
    check_field_offset(lv, s20552c6f1, ABISELECT(16,8), "S20552C6.s20552c6f1");
    test_class_info(&lv, &cd_S20552C6);
    dp->~S20552C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20552C6(Test_S20552C6, "S20552C6", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20552C6C1Ev();
extern void _ZN8S20552C6D1Ev();
Name_Map name_map_S20552C6[] = {
  NSPAIR(_ZN8S20552C6C1Ev),
  NSPAIR(_ZN8S20552C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20552C4_nt;
extern VTBL_ENTRY _ZTI11S20552C4_nt[];
extern  VTBL_ENTRY _ZTV11S20552C4_nt[];
static Base_Class bases_S20552C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20552C4_nt,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20552C6[];
extern void _ZN8S20552C63v26Ev();
extern void _ZN8S20552C63v27Ev();
extern void _ZN8S20552C63v28Ev();
extern void _ZN8S20552C63v29Ev();
extern void _ZN8S20552C63v30Ev();
extern void _ZN8S20552C63v31Ev();
extern void _ZN8S20552C63v32Ev();
extern void _ZN11S20552C4_nt2v6Ev();
extern void _ZN11S20552C4_nt2v7Ev();
extern void _ZN11S20552C4_nt2v8Ev();
static  VTBL_ENTRY vtc_S20552C6[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20552C6[0]),
  (VTBL_ENTRY)&_ZN8S20552C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20552C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20552C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20552C63v29Ev,
  (VTBL_ENTRY)&_ZN8S20552C63v30Ev,
  (VTBL_ENTRY)&_ZN8S20552C63v31Ev,
  (VTBL_ENTRY)&_ZN8S20552C63v32Ev,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20552C6[0]),
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v8Ev,
};
extern VTBL_ENTRY _ZTV8S20552C6[];
static  VTT_ENTRY vtt_S20552C6[] = {
  {&(_ZTV8S20552C6[3]),  3,18},
  {&(_ZTV8S20552C6[15]),  15,18},
};
extern VTBL_ENTRY _ZTI8S20552C6[];
extern  VTBL_ENTRY _ZTV8S20552C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20552C6[];
Class_Descriptor cd_S20552C6 = {  "S20552C6", // class name
  bases_S20552C6, 1,
  &(vtc_S20552C6[0]), // expected_vtbl_contents
  &(vtt_S20552C6[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20552C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20552C6),18, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20552C6),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  S20552C2  : virtual S20552C3 {
  ::S20552C6 s20552c2f0;
  virtual void  v16(); // _ZN8S20552C23v16Ev
  virtual void  v17(); // _ZN8S20552C23v17Ev
  virtual void  v18(); // _ZN8S20552C23v18Ev
  virtual void  v19(); // _ZN8S20552C23v19Ev
  virtual void  v20(); // _ZN8S20552C23v20Ev
  ~S20552C2(); // tgen
  S20552C2(); // tgen
};
//SIG(-1 S20552C2) C1{ VBC2{ BC3{ v6 v7 v8 Fi} BC4{ v9 v10 v11 v12 v13 Fi} v14 v15 FD} v1 v2 v3 v4 v5 FC5{ VBC3 v16 v17 v18 v19 v20 v21 v22 FC6{ v23} Fi}}


void  S20552C2 ::v16(){vfunc_called(this, "_ZN8S20552C23v16Ev");}
void  S20552C2 ::v17(){vfunc_called(this, "_ZN8S20552C23v17Ev");}
void  S20552C2 ::v18(){vfunc_called(this, "_ZN8S20552C23v18Ev");}
void  S20552C2 ::v19(){vfunc_called(this, "_ZN8S20552C23v19Ev");}
void  S20552C2 ::v20(){vfunc_called(this, "_ZN8S20552C23v20Ev");}
S20552C2 ::~S20552C2(){ note_dtor("S20552C2", this);} // tgen
S20552C2 ::S20552C2(){ note_ctor("S20552C2", this);} // tgen

static void Test_S20552C2()
{
  extern Class_Descriptor cd_S20552C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S20552C2, buf);
    S20552C2 *dp, &lv = *(dp=new (buf) S20552C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S20552C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20552C2)");
    check_base_class_offset(lv, (S20552C4_nt*)(S20552C3*), ABISELECT(48,24), "S20552C2");
    check_base_class_offset(lv, (S20552C5_nt*)(S20552C3*), ABISELECT(64,32), "S20552C2");
    check_base_class_offset(lv, (S20552C3*), ABISELECT(48,24), "S20552C2");
    check_field_offset(lv, s20552c2f0, ABISELECT(8,4), "S20552C2.s20552c2f0");
    test_class_info(&lv, &cd_S20552C2);
    dp->~S20552C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20552C2(Test_S20552C2, "S20552C2", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S20552C2C1Ev();
extern void _ZN8S20552C2D1Ev();
Name_Map name_map_S20552C2[] = {
  NSPAIR(_ZN8S20552C2C1Ev),
  NSPAIR(_ZN8S20552C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20552C4_nt;
extern VTBL_ENTRY _ZTI11S20552C4_nt[];
extern  VTBL_ENTRY _ZTV11S20552C4_nt[];
extern Class_Descriptor cd_S20552C5_nt;
extern VTBL_ENTRY _ZTI11S20552C5_nt[];
extern  VTBL_ENTRY _ZTV11S20552C5_nt[];
extern Class_Descriptor cd_S20552C3;
extern VTBL_ENTRY _ZTI8S20552C3[];
extern  VTBL_ENTRY _ZTV8S20552C3[];
static Base_Class bases_S20552C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20552C4_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
    2, //immediately_derived
  0, 0},
  {&cd_S20552C5_nt,    ABISELECT(64,32), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20552C3,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI8S20552C2[];
extern void _ZN8S20552C23v16Ev();
extern void _ZN8S20552C23v17Ev();
extern void _ZN8S20552C23v18Ev();
extern void _ZN8S20552C23v19Ev();
extern void _ZN8S20552C23v20Ev();
extern void _ZN11S20552C4_nt2v6Ev();
extern void _ZN11S20552C4_nt2v7Ev();
extern void _ZN11S20552C4_nt2v8Ev();
extern void _ZN8S20552C33v14Ev();
extern void _ZN8S20552C33v15Ev();
extern void _ZN11S20552C5_nt2v9Ev();
extern void _ZN11S20552C5_nt3v10Ev();
extern void _ZN11S20552C5_nt3v11Ev();
extern void _ZN11S20552C5_nt3v12Ev();
extern void _ZN11S20552C5_nt3v13Ev();
static  VTBL_ENTRY vtc_S20552C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20552C2[0]),
  (VTBL_ENTRY)&_ZN8S20552C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v20Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20552C2[0]),
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v15Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20552C2[0]),
  (VTBL_ENTRY)&_ZN11S20552C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v13Ev,
};
extern VTBL_ENTRY _ZTV8S20552C2[];
static  VTT_ENTRY vtt_S20552C2[] = {
  {&(_ZTV8S20552C2[3]),  3,32},
  {&(_ZTV8S20552C2[20]),  20,32},
  {&(_ZTV8S20552C2[27]),  27,32},
};
extern VTBL_ENTRY _ZTI8S20552C2[];
extern  VTBL_ENTRY _ZTV8S20552C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20552C2[];
Class_Descriptor cd_S20552C2 = {  "S20552C2", // class name
  bases_S20552C2, 3,
  &(vtc_S20552C2[0]), // expected_vtbl_contents
  &(vtt_S20552C2[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S20552C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20552C2),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20552C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20552C8  {
  char s20552c8f0;
  void *s20552c8f1[4];
  virtual void  v21(); // _ZN8S20552C83v21Ev
  virtual void  v22(); // _ZN8S20552C83v22Ev
  virtual void  v23(); // _ZN8S20552C83v23Ev
  virtual void  v24(); // _ZN8S20552C83v24Ev
  virtual void  v25(); // _ZN8S20552C83v25Ev
  ~S20552C8(); // tgen
  S20552C8(); // tgen
};
//SIG(-1 S20552C8) C1{ v1 v2 v3 v4 v5 Fc Fp[4]}


void  S20552C8 ::v21(){vfunc_called(this, "_ZN8S20552C83v21Ev");}
void  S20552C8 ::v22(){vfunc_called(this, "_ZN8S20552C83v22Ev");}
void  S20552C8 ::v23(){vfunc_called(this, "_ZN8S20552C83v23Ev");}
void  S20552C8 ::v24(){vfunc_called(this, "_ZN8S20552C83v24Ev");}
void  S20552C8 ::v25(){vfunc_called(this, "_ZN8S20552C83v25Ev");}
S20552C8 ::~S20552C8(){ note_dtor("S20552C8", this);} // tgen
S20552C8 ::S20552C8(){ note_ctor("S20552C8", this);} // tgen

static void Test_S20552C8()
{
  extern Class_Descriptor cd_S20552C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20552C8, buf);
    S20552C8 *dp, &lv = *(dp=new (buf) S20552C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20552C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20552C8)");
    check_field_offset(lv, s20552c8f0, ABISELECT(8,4), "S20552C8.s20552c8f0");
    check_field_offset(lv, s20552c8f1, ABISELECT(16,8), "S20552C8.s20552c8f1");
    test_class_info(&lv, &cd_S20552C8);
    dp->~S20552C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20552C8(Test_S20552C8, "S20552C8", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20552C8C1Ev();
extern void _ZN8S20552C8D1Ev();
Name_Map name_map_S20552C8[] = {
  NSPAIR(_ZN8S20552C8C1Ev),
  NSPAIR(_ZN8S20552C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20552C8[];
extern void _ZN8S20552C83v21Ev();
extern void _ZN8S20552C83v22Ev();
extern void _ZN8S20552C83v23Ev();
extern void _ZN8S20552C83v24Ev();
extern void _ZN8S20552C83v25Ev();
static  VTBL_ENTRY vtc_S20552C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20552C8[0]),
  (VTBL_ENTRY)&_ZN8S20552C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20552C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20552C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20552C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20552C83v25Ev,
};
extern VTBL_ENTRY _ZTI8S20552C8[];
extern  VTBL_ENTRY _ZTV8S20552C8[];
Class_Descriptor cd_S20552C8 = {  "S20552C8", // class name
  0,0,//no base classes
  &(vtc_S20552C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20552C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20552C8),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  S20552C1  : virtual S20552C2 {
  ::S20552C8 s20552c1f0;
  ::S20552C8 s20552c1f1;
  char s20552c1f2;
  virtual void  v1(); // _ZN8S20552C12v1Ev
  virtual void  v2(); // _ZN8S20552C12v2Ev
  virtual void  v3(); // _ZN8S20552C12v3Ev
  virtual void  v4(); // _ZN8S20552C12v4Ev
  virtual void  v5(); // _ZN8S20552C12v5Ev
  ~S20552C1(); // tgen
  S20552C1(); // tgen
};
//SIG(1 S20552C1) C1{ VBC2{ VBC3{ BC4{ v6 v7 v8 Fi} BC5{ v9 v10 v11 v12 v13 Fi} v14 v15 FD} v16 v17 v18 v19 v20 FC6{ VBC4 v26 v27 v28 v29 v30 v31 v32 FC7{ v33} Fi}} v1 v2 v3 v4 v5 FC8{ v21 v22 v23 v24 v25 Fc Fp[4]} FC8 Fc}


void  S20552C1 ::v1(){vfunc_called(this, "_ZN8S20552C12v1Ev");}
void  S20552C1 ::v2(){vfunc_called(this, "_ZN8S20552C12v2Ev");}
void  S20552C1 ::v3(){vfunc_called(this, "_ZN8S20552C12v3Ev");}
void  S20552C1 ::v4(){vfunc_called(this, "_ZN8S20552C12v4Ev");}
void  S20552C1 ::v5(){vfunc_called(this, "_ZN8S20552C12v5Ev");}
S20552C1 ::~S20552C1(){ note_dtor("S20552C1", this);} // tgen
S20552C1 ::S20552C1(){ note_ctor("S20552C1", this);} // tgen

static void Test_S20552C1()
{
  extern Class_Descriptor cd_S20552C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,28)];
    init_test(&cd_S20552C1, buf);
    S20552C1 *dp, &lv = *(dp=new (buf) S20552C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S20552C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20552C1)");
    check_base_class_offset(lv, (S20552C4_nt*)(S20552C3*), ABISELECT(160,80), "S20552C1");
    check_base_class_offset(lv, (S20552C5_nt*)(S20552C3*), ABISELECT(176,88), "S20552C1");
    check_base_class_offset(lv, (S20552C3*)(S20552C2*), ABISELECT(160,80), "S20552C1");
    check_base_class_offset(lv, (S20552C2*), ABISELECT(112,56), "S20552C1");
    check_field_offset(lv, s20552c1f0, ABISELECT(8,4), "S20552C1.s20552c1f0");
    check_field_offset(lv, s20552c1f1, ABISELECT(56,28), "S20552C1.s20552c1f1");
    check_field_offset(lv, s20552c1f2, ABISELECT(104,52), "S20552C1.s20552c1f2");
    test_class_info(&lv, &cd_S20552C1);
    dp->~S20552C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20552C1(Test_S20552C1, "S20552C1", ABISELECT(208,108));

#else // __cplusplus

extern void _ZN8S20552C1C1Ev();
extern void _ZN8S20552C1D1Ev();
Name_Map name_map_S20552C1[] = {
  NSPAIR(_ZN8S20552C1C1Ev),
  NSPAIR(_ZN8S20552C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20552C4_nt;
extern VTBL_ENTRY _ZTI11S20552C4_nt[];
extern  VTBL_ENTRY _ZTV11S20552C4_nt[];
extern Class_Descriptor cd_S20552C5_nt;
extern VTBL_ENTRY _ZTI11S20552C5_nt[];
extern  VTBL_ENTRY _ZTV11S20552C5_nt[];
extern Class_Descriptor cd_S20552C3;
extern VTBL_ENTRY _ZTI8S20552C3[];
extern  VTBL_ENTRY _ZTV8S20552C3[];
extern Class_Descriptor cd_S20552C2;
extern VTBL_ENTRY _ZTI8S20552C2[];
extern  VTBL_ENTRY _ZTV8S20552C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20552C2[];
static Base_Class bases_S20552C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20552C4_nt,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20552C5_nt,    ABISELECT(176,88), //bcp->offset
    39, //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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20552C3,    ABISELECT(160,80), //bcp->offset
    22, //bcp->virtual_function_table_offset
    12, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20552C2,    ABISELECT(112,56), //bcp->offset
    9, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20552C1[];
extern void _ZN8S20552C12v1Ev();
extern void _ZN8S20552C12v2Ev();
extern void _ZN8S20552C12v3Ev();
extern void _ZN8S20552C12v4Ev();
extern void _ZN8S20552C12v5Ev();
extern void _ZN8S20552C23v16Ev();
extern void _ZN8S20552C23v17Ev();
extern void _ZN8S20552C23v18Ev();
extern void _ZN8S20552C23v19Ev();
extern void _ZN8S20552C23v20Ev();
extern void _ZN11S20552C4_nt2v6Ev();
extern void _ZN11S20552C4_nt2v7Ev();
extern void _ZN11S20552C4_nt2v8Ev();
extern void _ZN8S20552C33v14Ev();
extern void _ZN8S20552C33v15Ev();
extern void _ZN11S20552C5_nt2v9Ev();
extern void _ZN11S20552C5_nt3v10Ev();
extern void _ZN11S20552C5_nt3v11Ev();
extern void _ZN11S20552C5_nt3v12Ev();
extern void _ZN11S20552C5_nt3v13Ev();
static  VTBL_ENTRY vtc_S20552C1[] = {
  ABISELECT(160,80),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20552C1[0]),
  (VTBL_ENTRY)&_ZN8S20552C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20552C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20552C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20552C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20552C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20552C1[0]),
  (VTBL_ENTRY)&_ZN8S20552C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v20Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20552C1[0]),
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v15Ev,
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S20552C1[0]),
  (VTBL_ENTRY)&_ZN11S20552C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v13Ev,
};
extern VTBL_ENTRY _ZTV8S20552C1[];
extern void _ZN8S20552C23v16Ev();
extern void _ZN8S20552C23v17Ev();
extern void _ZN8S20552C23v18Ev();
extern void _ZN8S20552C23v19Ev();
extern void _ZN8S20552C23v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20552C2__8S20552C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20552C2[0]),
  (VTBL_ENTRY)&_ZN8S20552C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20552C23v20Ev,
};
extern void _ZN11S20552C4_nt2v6Ev();
extern void _ZN11S20552C4_nt2v7Ev();
extern void _ZN11S20552C4_nt2v8Ev();
extern void _ZN8S20552C33v14Ev();
extern void _ZN8S20552C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20552C3__8S20552C2__8S20552C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20552C2[0]),
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20552C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20552C33v15Ev,
};
extern void _ZN11S20552C5_nt2v9Ev();
extern void _ZN11S20552C5_nt3v10Ev();
extern void _ZN11S20552C5_nt3v11Ev();
extern void _ZN11S20552C5_nt3v12Ev();
extern void _ZN11S20552C5_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV11S20552C5_nt8S20552C3__8S20552C2__8S20552C1[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20552C2[0]),
  (VTBL_ENTRY)&_ZN11S20552C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20552C5_nt3v13Ev,
};
static  VTT_ENTRY vtt_S20552C1[] = {
  {&(_ZTV8S20552C1[4]),  4,46},
  {&(_ZTV8S20552C1[17]),  17,46},
  {&(_ZTV8S20552C1[34]),  34,46},
  {&(_ZTV8S20552C1[41]),  41,46},
  {&(_tg__ZTV8S20552C2__8S20552C1[3]),  3,8},
  {&(_tg__ZTV8S20552C3__8S20552C2__8S20552C1[12]),  12,17},
  {&(_tg__ZTV11S20552C5_nt8S20552C3__8S20552C2__8S20552C1[2]),  2,7},
};
extern VTBL_ENTRY _ZTI8S20552C1[];
extern  VTBL_ENTRY _ZTV8S20552C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20552C1[];
Class_Descriptor cd_S20552C1 = {  "S20552C1", // class name
  bases_S20552C1, 4,
  &(vtc_S20552C1[0]), // expected_vtbl_contents
  &(vtt_S20552C1[0]), // expected_vtt_contents
  ABISELECT(208,108), // object size
  NSPAIRA(_ZTI8S20552C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20552C1),46, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20552C1),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4552C3_nt  {
  virtual  ~S4552C3_nt(); // _ZN10S4552C3_ntD1Ev
  virtual void  v2(); // _ZN10S4552C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4552C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4552C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4552C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4552C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4552C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4552C3_nt2v8Ev
  virtual void  v9(); // _ZN10S4552C3_nt2v9Ev
  virtual void  v10(); // _ZN10S4552C3_nt3v10Ev
  virtual void  v11(); // _ZN10S4552C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4552C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4552C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4552C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4552C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4552C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4552C3_nt3v17Ev
  S4552C3_nt(); // tgen
};
//SIG(-1 S4552C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S4552C3_nt ::~S4552C3_nt(){ note_dtor("S4552C3_nt", this);}
void  S4552C3_nt ::v2(){vfunc_called(this, "_ZN10S4552C3_nt2v2Ev");}
void  S4552C3_nt ::v3(){vfunc_called(this, "_ZN10S4552C3_nt2v3Ev");}
void  S4552C3_nt ::v4(){vfunc_called(this, "_ZN10S4552C3_nt2v4Ev");}
void  S4552C3_nt ::v5(){vfunc_called(this, "_ZN10S4552C3_nt2v5Ev");}
void  S4552C3_nt ::v6(){vfunc_called(this, "_ZN10S4552C3_nt2v6Ev");}
void  S4552C3_nt ::v7(){vfunc_called(this, "_ZN10S4552C3_nt2v7Ev");}
void  S4552C3_nt ::v8(){vfunc_called(this, "_ZN10S4552C3_nt2v8Ev");}
void  S4552C3_nt ::v9(){vfunc_called(this, "_ZN10S4552C3_nt2v9Ev");}
void  S4552C3_nt ::v10(){vfunc_called(this, "_ZN10S4552C3_nt3v10Ev");}
void  S4552C3_nt ::v11(){vfunc_called(this, "_ZN10S4552C3_nt3v11Ev");}
void  S4552C3_nt ::v12(){vfunc_called(this, "_ZN10S4552C3_nt3v12Ev");}
void  S4552C3_nt ::v13(){vfunc_called(this, "_ZN10S4552C3_nt3v13Ev");}
void  S4552C3_nt ::v14(){vfunc_called(this, "_ZN10S4552C3_nt3v14Ev");}
void  S4552C3_nt ::v15(){vfunc_called(this, "_ZN10S4552C3_nt3v15Ev");}
void  S4552C3_nt ::v16(){vfunc_called(this, "_ZN10S4552C3_nt3v16Ev");}
void  S4552C3_nt ::v17(){vfunc_called(this, "_ZN10S4552C3_nt3v17Ev");}
S4552C3_nt ::S4552C3_nt(){ note_ctor("S4552C3_nt", this);} // tgen

//skip512 S4552C3_nt

#else // __cplusplus

extern void _ZN10S4552C3_ntC1Ev();
extern void _ZN10S4552C3_ntD1Ev();
Name_Map name_map_S4552C3_nt[] = {
  NSPAIR(_ZN10S4552C3_ntC1Ev),
  NSPAIR(_ZN10S4552C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4552C3_nt[];
extern void _ZN10S4552C3_ntD1Ev();
extern void _ZN10S4552C3_ntD0Ev();
extern void _ZN10S4552C3_nt2v2Ev();
extern void _ZN10S4552C3_nt2v3Ev();
extern void _ZN10S4552C3_nt2v4Ev();
extern void _ZN10S4552C3_nt2v5Ev();
extern void _ZN10S4552C3_nt2v6Ev();
extern void _ZN10S4552C3_nt2v7Ev();
extern void _ZN10S4552C3_nt2v8Ev();
extern void _ZN10S4552C3_nt2v9Ev();
extern void _ZN10S4552C3_nt3v10Ev();
extern void _ZN10S4552C3_nt3v11Ev();
extern void _ZN10S4552C3_nt3v12Ev();
extern void _ZN10S4552C3_nt3v13Ev();
extern void _ZN10S4552C3_nt3v14Ev();
extern void _ZN10S4552C3_nt3v15Ev();
extern void _ZN10S4552C3_nt3v16Ev();
extern void _ZN10S4552C3_nt3v17Ev();
static  VTBL_ENTRY vtc_S4552C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4552C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4552C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v17Ev,
};
extern VTBL_ENTRY _ZTI10S4552C3_nt[];
VTBL_ENTRY *P__ZTI10S4552C3_nt = _ZTI10S4552C3_nt; 
extern  VTBL_ENTRY _ZTV10S4552C3_nt[];
Class_Descriptor cd_S4552C3_nt = {  "S4552C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4552C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4552C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4552C3_nt),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4552C2  : S4552C3_nt {
  void *s4552c2f0;
  char s4552c2f1;
  void *s4552c2f2;
  ::S16385C2_nt s4552c2f3;
  int s4552c2f4;
  __tsi64 s4552c2f5;
  int s4552c2f6[2];
  virtual  ~S4552C2(); // _ZN7S4552C2D1Ev
  virtual void  v18(); // _ZN7S4552C23v18Ev
  virtual void  v19(); // _ZN7S4552C23v19Ev
  virtual void  v20(); // _ZN7S4552C23v20Ev
  virtual void  v21(); // _ZN7S4552C23v21Ev
  virtual void  v22(); // _ZN7S4552C23v22Ev
  virtual void  v23(); // _ZN7S4552C23v23Ev
  virtual void  v24(); // _ZN7S4552C23v24Ev
  virtual void  v25(); // _ZN7S4552C23v25Ev
  virtual void  v26(); // _ZN7S4552C23v26Ev
  virtual void  v27(); // _ZN7S4552C23v27Ev
  virtual void  v28(); // _ZN7S4552C23v28Ev
  virtual void  v29(); // _ZN7S4552C23v29Ev
  virtual void  v30(); // _ZN7S4552C23v30Ev
  virtual void  v31(); // _ZN7S4552C23v31Ev
  virtual void  v32(); // _ZN7S4552C23v32Ev
  virtual void  v33(); // _ZN7S4552C23v33Ev
  S4552C2(); // tgen
};
//SIG(-1 S4552C2) C1{ BC2{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp Fc Fp FC3{ m Fp[2]} Fi FL Fi[2]}


 S4552C2 ::~S4552C2(){ note_dtor("S4552C2", this);}
void  S4552C2 ::v18(){vfunc_called(this, "_ZN7S4552C23v18Ev");}
void  S4552C2 ::v19(){vfunc_called(this, "_ZN7S4552C23v19Ev");}
void  S4552C2 ::v20(){vfunc_called(this, "_ZN7S4552C23v20Ev");}
void  S4552C2 ::v21(){vfunc_called(this, "_ZN7S4552C23v21Ev");}
void  S4552C2 ::v22(){vfunc_called(this, "_ZN7S4552C23v22Ev");}
void  S4552C2 ::v23(){vfunc_called(this, "_ZN7S4552C23v23Ev");}
void  S4552C2 ::v24(){vfunc_called(this, "_ZN7S4552C23v24Ev");}
void  S4552C2 ::v25(){vfunc_called(this, "_ZN7S4552C23v25Ev");}
void  S4552C2 ::v26(){vfunc_called(this, "_ZN7S4552C23v26Ev");}
void  S4552C2 ::v27(){vfunc_called(this, "_ZN7S4552C23v27Ev");}
void  S4552C2 ::v28(){vfunc_called(this, "_ZN7S4552C23v28Ev");}
void  S4552C2 ::v29(){vfunc_called(this, "_ZN7S4552C23v29Ev");}
void  S4552C2 ::v30(){vfunc_called(this, "_ZN7S4552C23v30Ev");}
void  S4552C2 ::v31(){vfunc_called(this, "_ZN7S4552C23v31Ev");}
void  S4552C2 ::v32(){vfunc_called(this, "_ZN7S4552C23v32Ev");}
void  S4552C2 ::v33(){vfunc_called(this, "_ZN7S4552C23v33Ev");}
S4552C2 ::S4552C2(){ note_ctor("S4552C2", this);} // tgen

static void Test_S4552C2()
{
  extern Class_Descriptor cd_S4552C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S4552C2, buf);
    S4552C2 *dp, &lv = *(dp=new (buf) S4552C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S4552C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4552C2)");
    check_base_class_offset(lv, (S4552C3_nt*), 0, "S4552C2");
    check_field_offset(lv, s4552c2f0, ABISELECT(8,4), "S4552C2.s4552c2f0");
    check_field_offset(lv, s4552c2f1, ABISELECT(16,8), "S4552C2.s4552c2f1");
    check_field_offset(lv, s4552c2f2, ABISELECT(24,12), "S4552C2.s4552c2f2");
    check_field_offset(lv, s4552c2f3, ABISELECT(32,16), "S4552C2.s4552c2f3");
    check_field_offset(lv, s4552c2f4, ABISELECT(48,24), "S4552C2.s4552c2f4");
    check_field_offset(lv, s4552c2f5, ABISELECT(56,28), "S4552C2.s4552c2f5");
    check_field_offset(lv, s4552c2f6, ABISELECT(64,36), "S4552C2.s4552c2f6");
    test_class_info(&lv, &cd_S4552C2);
    dp->~S4552C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4552C2(Test_S4552C2, "S4552C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S4552C2C1Ev();
extern void _ZN7S4552C2D1Ev();
Name_Map name_map_S4552C2[] = {
  NSPAIR(_ZN7S4552C2C1Ev),
  NSPAIR(_ZN7S4552C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4552C3_nt;
extern VTBL_ENTRY _ZTI10S4552C3_nt[];
extern  VTBL_ENTRY _ZTV10S4552C3_nt[];
static Base_Class bases_S4552C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4552C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4552C2[];
extern void _ZN7S4552C2D1Ev();
extern void _ZN7S4552C2D0Ev();
extern void _ZN10S4552C3_nt2v2Ev();
extern void _ZN10S4552C3_nt2v3Ev();
extern void _ZN10S4552C3_nt2v4Ev();
extern void _ZN10S4552C3_nt2v5Ev();
extern void _ZN10S4552C3_nt2v6Ev();
extern void _ZN10S4552C3_nt2v7Ev();
extern void _ZN10S4552C3_nt2v8Ev();
extern void _ZN10S4552C3_nt2v9Ev();
extern void _ZN10S4552C3_nt3v10Ev();
extern void _ZN10S4552C3_nt3v11Ev();
extern void _ZN10S4552C3_nt3v12Ev();
extern void _ZN10S4552C3_nt3v13Ev();
extern void _ZN10S4552C3_nt3v14Ev();
extern void _ZN10S4552C3_nt3v15Ev();
extern void _ZN10S4552C3_nt3v16Ev();
extern void _ZN10S4552C3_nt3v17Ev();
extern void _ZN7S4552C23v18Ev();
extern void _ZN7S4552C23v19Ev();
extern void _ZN7S4552C23v20Ev();
extern void _ZN7S4552C23v21Ev();
extern void _ZN7S4552C23v22Ev();
extern void _ZN7S4552C23v23Ev();
extern void _ZN7S4552C23v24Ev();
extern void _ZN7S4552C23v25Ev();
extern void _ZN7S4552C23v26Ev();
extern void _ZN7S4552C23v27Ev();
extern void _ZN7S4552C23v28Ev();
extern void _ZN7S4552C23v29Ev();
extern void _ZN7S4552C23v30Ev();
extern void _ZN7S4552C23v31Ev();
extern void _ZN7S4552C23v32Ev();
extern void _ZN7S4552C23v33Ev();
static  VTBL_ENTRY vtc_S4552C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4552C2[0]),
  (VTBL_ENTRY)&_ZN7S4552C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4552C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v23Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v27Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v28Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v29Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v30Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v31Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v32Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v33Ev,
};
extern VTBL_ENTRY _ZTI7S4552C2[];
extern  VTBL_ENTRY _ZTV7S4552C2[];
Class_Descriptor cd_S4552C2 = {  "S4552C2", // class name
  bases_S4552C2, 1,
  &(vtc_S4552C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S4552C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4552C2),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4552C1  : S4552C2 {
  char s4552c1f0;
  int s4552c1f1[6];
  virtual  ~S4552C1(); // _ZN7S4552C1D1Ev
  virtual void  v1(); // _ZN7S4552C12v1Ev
  S4552C1(); // tgen
};
//SIG(1 S4552C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17} vd v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fc Fp FC4{ m Fp[2]} Fi FL Fi[2]} vd v1 Fc Fi[6]}


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

static void Test_S4552C1()
{
  extern Class_Descriptor cd_S4552C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,19)];
    init_test(&cd_S4552C1, buf);
    S4552C1 *dp, &lv = *(dp=new (buf) S4552C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,72), "sizeof(S4552C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4552C1)");
    check_base_class_offset(lv, (S4552C3_nt*)(S4552C2*), 0, "S4552C1");
    check_base_class_offset(lv, (S4552C2*), 0, "S4552C1");
    check_field_offset(lv, s4552c1f0, ABISELECT(72,44), "S4552C1.s4552c1f0");
    check_field_offset(lv, s4552c1f1, ABISELECT(76,48), "S4552C1.s4552c1f1");
    test_class_info(&lv, &cd_S4552C1);
    dp->~S4552C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4552C1(Test_S4552C1, "S4552C1", ABISELECT(104,72));

#else // __cplusplus

extern void _ZN7S4552C1C1Ev();
extern void _ZN7S4552C1D1Ev();
Name_Map name_map_S4552C1[] = {
  NSPAIR(_ZN7S4552C1C1Ev),
  NSPAIR(_ZN7S4552C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4552C3_nt;
extern VTBL_ENTRY _ZTI10S4552C3_nt[];
extern  VTBL_ENTRY _ZTV10S4552C3_nt[];
extern Class_Descriptor cd_S4552C2;
extern VTBL_ENTRY _ZTI7S4552C2[];
extern  VTBL_ENTRY _ZTV7S4552C2[];
static Base_Class bases_S4552C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4552C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4552C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4552C1[];
extern void _ZN7S4552C1D1Ev();
extern void _ZN7S4552C1D0Ev();
extern void _ZN10S4552C3_nt2v2Ev();
extern void _ZN10S4552C3_nt2v3Ev();
extern void _ZN10S4552C3_nt2v4Ev();
extern void _ZN10S4552C3_nt2v5Ev();
extern void _ZN10S4552C3_nt2v6Ev();
extern void _ZN10S4552C3_nt2v7Ev();
extern void _ZN10S4552C3_nt2v8Ev();
extern void _ZN10S4552C3_nt2v9Ev();
extern void _ZN10S4552C3_nt3v10Ev();
extern void _ZN10S4552C3_nt3v11Ev();
extern void _ZN10S4552C3_nt3v12Ev();
extern void _ZN10S4552C3_nt3v13Ev();
extern void _ZN10S4552C3_nt3v14Ev();
extern void _ZN10S4552C3_nt3v15Ev();
extern void _ZN10S4552C3_nt3v16Ev();
extern void _ZN10S4552C3_nt3v17Ev();
extern void _ZN7S4552C23v18Ev();
extern void _ZN7S4552C23v19Ev();
extern void _ZN7S4552C23v20Ev();
extern void _ZN7S4552C23v21Ev();
extern void _ZN7S4552C23v22Ev();
extern void _ZN7S4552C23v23Ev();
extern void _ZN7S4552C23v24Ev();
extern void _ZN7S4552C23v25Ev();
extern void _ZN7S4552C23v26Ev();
extern void _ZN7S4552C23v27Ev();
extern void _ZN7S4552C23v28Ev();
extern void _ZN7S4552C23v29Ev();
extern void _ZN7S4552C23v30Ev();
extern void _ZN7S4552C23v31Ev();
extern void _ZN7S4552C23v32Ev();
extern void _ZN7S4552C23v33Ev();
extern void _ZN7S4552C12v1Ev();
static  VTBL_ENTRY vtc_S4552C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4552C1[0]),
  (VTBL_ENTRY)&_ZN7S4552C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4552C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4552C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v23Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v27Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v28Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v29Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v30Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v31Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v32Ev,
  (VTBL_ENTRY)&_ZN7S4552C23v33Ev,
  (VTBL_ENTRY)&_ZN7S4552C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4552C1[];
extern  VTBL_ENTRY _ZTV7S4552C1[];
Class_Descriptor cd_S4552C1 = {  "S4552C1", // class name
  bases_S4552C1, 2,
  &(vtc_S4552C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,72), // object size
  NSPAIRA(_ZTI7S4552C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4552C1),37, //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  S4554C3  {
  virtual  ~S4554C3(); // _ZN7S4554C3D1Ev
  virtual void  v2(); // _ZN7S4554C32v2Ev
  virtual void  v3(); // _ZN7S4554C32v3Ev
  virtual void  v4(); // _ZN7S4554C32v4Ev
  virtual void  v5(); // _ZN7S4554C32v5Ev
  virtual void  v6(); // _ZN7S4554C32v6Ev
  virtual void  v7(); // _ZN7S4554C32v7Ev
  virtual void  v8(); // _ZN7S4554C32v8Ev
  virtual void  v9(); // _ZN7S4554C32v9Ev
  virtual void  v10(); // _ZN7S4554C33v10Ev
  virtual void  v11(); // _ZN7S4554C33v11Ev
  virtual void  v12(); // _ZN7S4554C33v12Ev
  virtual void  v13(); // _ZN7S4554C33v13Ev
  virtual void  v14(); // _ZN7S4554C33v14Ev
  virtual void  v15(); // _ZN7S4554C33v15Ev
  virtual void  v16(); // _ZN7S4554C33v16Ev
  virtual void  v17(); // _ZN7S4554C33v17Ev
  S4554C3(); // tgen
};
//SIG(-1 S4554C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S4554C3 ::~S4554C3(){ note_dtor("S4554C3", this);}
void  S4554C3 ::v2(){vfunc_called(this, "_ZN7S4554C32v2Ev");}
void  S4554C3 ::v3(){vfunc_called(this, "_ZN7S4554C32v3Ev");}
void  S4554C3 ::v4(){vfunc_called(this, "_ZN7S4554C32v4Ev");}
void  S4554C3 ::v5(){vfunc_called(this, "_ZN7S4554C32v5Ev");}
void  S4554C3 ::v6(){vfunc_called(this, "_ZN7S4554C32v6Ev");}
void  S4554C3 ::v7(){vfunc_called(this, "_ZN7S4554C32v7Ev");}
void  S4554C3 ::v8(){vfunc_called(this, "_ZN7S4554C32v8Ev");}
void  S4554C3 ::v9(){vfunc_called(this, "_ZN7S4554C32v9Ev");}
void  S4554C3 ::v10(){vfunc_called(this, "_ZN7S4554C33v10Ev");}
void  S4554C3 ::v11(){vfunc_called(this, "_ZN7S4554C33v11Ev");}
void  S4554C3 ::v12(){vfunc_called(this, "_ZN7S4554C33v12Ev");}
void  S4554C3 ::v13(){vfunc_called(this, "_ZN7S4554C33v13Ev");}
void  S4554C3 ::v14(){vfunc_called(this, "_ZN7S4554C33v14Ev");}
void  S4554C3 ::v15(){vfunc_called(this, "_ZN7S4554C33v15Ev");}
void  S4554C3 ::v16(){vfunc_called(this, "_ZN7S4554C33v16Ev");}
void  S4554C3 ::v17(){vfunc_called(this, "_ZN7S4554C33v17Ev");}
S4554C3 ::S4554C3(){ note_ctor("S4554C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S4554C3C1Ev();
extern void _ZN7S4554C3D1Ev();
Name_Map name_map_S4554C3[] = {
  NSPAIR(_ZN7S4554C3C1Ev),
  NSPAIR(_ZN7S4554C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4554C3[];
extern void _ZN7S4554C3D1Ev();
extern void _ZN7S4554C3D0Ev();
extern void _ZN7S4554C32v2Ev();
extern void _ZN7S4554C32v3Ev();
extern void _ZN7S4554C32v4Ev();
extern void _ZN7S4554C32v5Ev();
extern void _ZN7S4554C32v6Ev();
extern void _ZN7S4554C32v7Ev();
extern void _ZN7S4554C32v8Ev();
extern void _ZN7S4554C32v9Ev();
extern void _ZN7S4554C33v10Ev();
extern void _ZN7S4554C33v11Ev();
extern void _ZN7S4554C33v12Ev();
extern void _ZN7S4554C33v13Ev();
extern void _ZN7S4554C33v14Ev();
extern void _ZN7S4554C33v15Ev();
extern void _ZN7S4554C33v16Ev();
extern void _ZN7S4554C33v17Ev();
static  VTBL_ENTRY vtc_S4554C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4554C3[0]),
  (VTBL_ENTRY)&_ZN7S4554C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4554C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v9Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v17Ev,
};
extern VTBL_ENTRY _ZTI7S4554C3[];
extern  VTBL_ENTRY _ZTV7S4554C3[];
Class_Descriptor cd_S4554C3 = {  "S4554C3", // class name
  0,0,//no base classes
  &(vtc_S4554C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4554C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4554C3),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4554C2  : S4554C3 {
  void *s4554c2f0;
  char s4554c2f1;
  void *s4554c2f2;
  ::S16385C2_nt s4554c2f3;
  int s4554c2f4;
  __tsi64 s4554c2f5;
  int s4554c2f6[2];
  virtual  ~S4554C2(); // _ZN7S4554C2D1Ev
  virtual void  v18(); // _ZN7S4554C23v18Ev
  virtual void  v19(); // _ZN7S4554C23v19Ev
  virtual void  v20(); // _ZN7S4554C23v20Ev
  virtual void  v21(); // _ZN7S4554C23v21Ev
  virtual void  v22(); // _ZN7S4554C23v22Ev
  virtual void  v23(); // _ZN7S4554C23v23Ev
  virtual void  v24(); // _ZN7S4554C23v24Ev
  virtual void  v25(); // _ZN7S4554C23v25Ev
  virtual void  v26(); // _ZN7S4554C23v26Ev
  virtual void  v27(); // _ZN7S4554C23v27Ev
  virtual void  v28(); // _ZN7S4554C23v28Ev
  virtual void  v29(); // _ZN7S4554C23v29Ev
  virtual void  v30(); // _ZN7S4554C23v30Ev
  virtual void  v31(); // _ZN7S4554C23v31Ev
  virtual void  v32(); // _ZN7S4554C23v32Ev
  virtual void  v33(); // _ZN7S4554C23v33Ev
  S4554C2(); // tgen
};
//SIG(-1 S4554C2) C1{ BC2{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp Fc Fp FC3{ m Fp[2]} Fi FL Fi[2]}


 S4554C2 ::~S4554C2(){ note_dtor("S4554C2", this);}
void  S4554C2 ::v18(){vfunc_called(this, "_ZN7S4554C23v18Ev");}
void  S4554C2 ::v19(){vfunc_called(this, "_ZN7S4554C23v19Ev");}
void  S4554C2 ::v20(){vfunc_called(this, "_ZN7S4554C23v20Ev");}
void  S4554C2 ::v21(){vfunc_called(this, "_ZN7S4554C23v21Ev");}
void  S4554C2 ::v22(){vfunc_called(this, "_ZN7S4554C23v22Ev");}
void  S4554C2 ::v23(){vfunc_called(this, "_ZN7S4554C23v23Ev");}
void  S4554C2 ::v24(){vfunc_called(this, "_ZN7S4554C23v24Ev");}
void  S4554C2 ::v25(){vfunc_called(this, "_ZN7S4554C23v25Ev");}
void  S4554C2 ::v26(){vfunc_called(this, "_ZN7S4554C23v26Ev");}
void  S4554C2 ::v27(){vfunc_called(this, "_ZN7S4554C23v27Ev");}
void  S4554C2 ::v28(){vfunc_called(this, "_ZN7S4554C23v28Ev");}
void  S4554C2 ::v29(){vfunc_called(this, "_ZN7S4554C23v29Ev");}
void  S4554C2 ::v30(){vfunc_called(this, "_ZN7S4554C23v30Ev");}
void  S4554C2 ::v31(){vfunc_called(this, "_ZN7S4554C23v31Ev");}
void  S4554C2 ::v32(){vfunc_called(this, "_ZN7S4554C23v32Ev");}
void  S4554C2 ::v33(){vfunc_called(this, "_ZN7S4554C23v33Ev");}
S4554C2 ::S4554C2(){ note_ctor("S4554C2", this);} // tgen

static void Test_S4554C2()
{
  extern Class_Descriptor cd_S4554C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S4554C2, buf);
    S4554C2 *dp, &lv = *(dp=new (buf) S4554C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S4554C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4554C2)");
    check_base_class_offset(lv, (S4554C3*), 0, "S4554C2");
    check_field_offset(lv, s4554c2f0, ABISELECT(8,4), "S4554C2.s4554c2f0");
    check_field_offset(lv, s4554c2f1, ABISELECT(16,8), "S4554C2.s4554c2f1");
    check_field_offset(lv, s4554c2f2, ABISELECT(24,12), "S4554C2.s4554c2f2");
    check_field_offset(lv, s4554c2f3, ABISELECT(32,16), "S4554C2.s4554c2f3");
    check_field_offset(lv, s4554c2f4, ABISELECT(48,24), "S4554C2.s4554c2f4");
    check_field_offset(lv, s4554c2f5, ABISELECT(56,28), "S4554C2.s4554c2f5");
    check_field_offset(lv, s4554c2f6, ABISELECT(64,36), "S4554C2.s4554c2f6");
    test_class_info(&lv, &cd_S4554C2);
    dp->~S4554C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4554C2(Test_S4554C2, "S4554C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S4554C2C1Ev();
extern void _ZN7S4554C2D1Ev();
Name_Map name_map_S4554C2[] = {
  NSPAIR(_ZN7S4554C2C1Ev),
  NSPAIR(_ZN7S4554C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4554C3;
extern VTBL_ENTRY _ZTI7S4554C3[];
extern  VTBL_ENTRY _ZTV7S4554C3[];
static Base_Class bases_S4554C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4554C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4554C2[];
extern void _ZN7S4554C2D1Ev();
extern void _ZN7S4554C2D0Ev();
extern void _ZN7S4554C32v2Ev();
extern void _ZN7S4554C32v3Ev();
extern void _ZN7S4554C32v4Ev();
extern void _ZN7S4554C32v5Ev();
extern void _ZN7S4554C32v6Ev();
extern void _ZN7S4554C32v7Ev();
extern void _ZN7S4554C32v8Ev();
extern void _ZN7S4554C32v9Ev();
extern void _ZN7S4554C33v10Ev();
extern void _ZN7S4554C33v11Ev();
extern void _ZN7S4554C33v12Ev();
extern void _ZN7S4554C33v13Ev();
extern void _ZN7S4554C33v14Ev();
extern void _ZN7S4554C33v15Ev();
extern void _ZN7S4554C33v16Ev();
extern void _ZN7S4554C33v17Ev();
extern void _ZN7S4554C23v18Ev();
extern void _ZN7S4554C23v19Ev();
extern void _ZN7S4554C23v20Ev();
extern void _ZN7S4554C23v21Ev();
extern void _ZN7S4554C23v22Ev();
extern void _ZN7S4554C23v23Ev();
extern void _ZN7S4554C23v24Ev();
extern void _ZN7S4554C23v25Ev();
extern void _ZN7S4554C23v26Ev();
extern void _ZN7S4554C23v27Ev();
extern void _ZN7S4554C23v28Ev();
extern void _ZN7S4554C23v29Ev();
extern void _ZN7S4554C23v30Ev();
extern void _ZN7S4554C23v31Ev();
extern void _ZN7S4554C23v32Ev();
extern void _ZN7S4554C23v33Ev();
static  VTBL_ENTRY vtc_S4554C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4554C2[0]),
  (VTBL_ENTRY)&_ZN7S4554C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4554C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v9Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v23Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v27Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v28Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v29Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v30Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v31Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v32Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v33Ev,
};
extern VTBL_ENTRY _ZTI7S4554C2[];
extern  VTBL_ENTRY _ZTV7S4554C2[];
Class_Descriptor cd_S4554C2 = {  "S4554C2", // class name
  bases_S4554C2, 1,
  &(vtc_S4554C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S4554C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4554C2),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4554C1  : S4554C2 {
  char s4554c1f0;
  int s4554c1f1[8];
  virtual  ~S4554C1(); // _ZN7S4554C1D1Ev
  virtual void  v1(); // _ZN7S4554C12v1Ev
  S4554C1(); // tgen
};
//SIG(1 S4554C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17} vd v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fc Fp FC4{ m Fp[2]} Fi FL Fi[2]} vd v1 Fc Fi[8]}


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

static void Test_S4554C1()
{
  extern Class_Descriptor cd_S4554C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,21)];
    init_test(&cd_S4554C1, buf);
    S4554C1 *dp, &lv = *(dp=new (buf) S4554C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,80), "sizeof(S4554C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4554C1)");
    check_base_class_offset(lv, (S4554C3*)(S4554C2*), 0, "S4554C1");
    check_base_class_offset(lv, (S4554C2*), 0, "S4554C1");
    check_field_offset(lv, s4554c1f0, ABISELECT(72,44), "S4554C1.s4554c1f0");
    check_field_offset(lv, s4554c1f1, ABISELECT(76,48), "S4554C1.s4554c1f1");
    test_class_info(&lv, &cd_S4554C1);
    dp->~S4554C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4554C1(Test_S4554C1, "S4554C1", ABISELECT(112,80));

#else // __cplusplus

extern void _ZN7S4554C1C1Ev();
extern void _ZN7S4554C1D1Ev();
Name_Map name_map_S4554C1[] = {
  NSPAIR(_ZN7S4554C1C1Ev),
  NSPAIR(_ZN7S4554C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4554C3;
extern VTBL_ENTRY _ZTI7S4554C3[];
extern  VTBL_ENTRY _ZTV7S4554C3[];
extern Class_Descriptor cd_S4554C2;
extern VTBL_ENTRY _ZTI7S4554C2[];
extern  VTBL_ENTRY _ZTV7S4554C2[];
static Base_Class bases_S4554C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4554C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4554C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4554C1[];
extern void _ZN7S4554C1D1Ev();
extern void _ZN7S4554C1D0Ev();
extern void _ZN7S4554C32v2Ev();
extern void _ZN7S4554C32v3Ev();
extern void _ZN7S4554C32v4Ev();
extern void _ZN7S4554C32v5Ev();
extern void _ZN7S4554C32v6Ev();
extern void _ZN7S4554C32v7Ev();
extern void _ZN7S4554C32v8Ev();
extern void _ZN7S4554C32v9Ev();
extern void _ZN7S4554C33v10Ev();
extern void _ZN7S4554C33v11Ev();
extern void _ZN7S4554C33v12Ev();
extern void _ZN7S4554C33v13Ev();
extern void _ZN7S4554C33v14Ev();
extern void _ZN7S4554C33v15Ev();
extern void _ZN7S4554C33v16Ev();
extern void _ZN7S4554C33v17Ev();
extern void _ZN7S4554C23v18Ev();
extern void _ZN7S4554C23v19Ev();
extern void _ZN7S4554C23v20Ev();
extern void _ZN7S4554C23v21Ev();
extern void _ZN7S4554C23v22Ev();
extern void _ZN7S4554C23v23Ev();
extern void _ZN7S4554C23v24Ev();
extern void _ZN7S4554C23v25Ev();
extern void _ZN7S4554C23v26Ev();
extern void _ZN7S4554C23v27Ev();
extern void _ZN7S4554C23v28Ev();
extern void _ZN7S4554C23v29Ev();
extern void _ZN7S4554C23v30Ev();
extern void _ZN7S4554C23v31Ev();
extern void _ZN7S4554C23v32Ev();
extern void _ZN7S4554C23v33Ev();
extern void _ZN7S4554C12v1Ev();
static  VTBL_ENTRY vtc_S4554C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4554C1[0]),
  (VTBL_ENTRY)&_ZN7S4554C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4554C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4554C32v9Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4554C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v23Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v27Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v28Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v29Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v30Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v31Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v32Ev,
  (VTBL_ENTRY)&_ZN7S4554C23v33Ev,
  (VTBL_ENTRY)&_ZN7S4554C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4554C1[];
extern  VTBL_ENTRY _ZTV7S4554C1[];
Class_Descriptor cd_S4554C1 = {  "S4554C1", // class name
  bases_S4554C1, 2,
  &(vtc_S4554C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,80), // object size
  NSPAIRA(_ZTI7S4554C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4554C1),37, //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  S8646C2_nt  {
  virtual  ~S8646C2_nt(); // _ZN10S8646C2_ntD1Ev
  virtual void  v16(); // _ZN10S8646C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8646C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8646C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8646C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8646C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8646C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8646C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8646C2_nt3v23Ev
  virtual void  v24(); // _ZN10S8646C2_nt3v24Ev
  virtual void  v25(); // _ZN10S8646C2_nt3v25Ev
  virtual void  v26(); // _ZN10S8646C2_nt3v26Ev
  virtual void  v27(); // _ZN10S8646C2_nt3v27Ev
  virtual void  v28(); // _ZN10S8646C2_nt3v28Ev
  virtual void  v29(); // _ZN10S8646C2_nt3v29Ev
  S8646C2_nt(); // tgen
};
//SIG(-1 S8646C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14}


 S8646C2_nt ::~S8646C2_nt(){ note_dtor("S8646C2_nt", this);}
void  S8646C2_nt ::v16(){vfunc_called(this, "_ZN10S8646C2_nt3v16Ev");}
void  S8646C2_nt ::v17(){vfunc_called(this, "_ZN10S8646C2_nt3v17Ev");}
void  S8646C2_nt ::v18(){vfunc_called(this, "_ZN10S8646C2_nt3v18Ev");}
void  S8646C2_nt ::v19(){vfunc_called(this, "_ZN10S8646C2_nt3v19Ev");}
void  S8646C2_nt ::v20(){vfunc_called(this, "_ZN10S8646C2_nt3v20Ev");}
void  S8646C2_nt ::v21(){vfunc_called(this, "_ZN10S8646C2_nt3v21Ev");}
void  S8646C2_nt ::v22(){vfunc_called(this, "_ZN10S8646C2_nt3v22Ev");}
void  S8646C2_nt ::v23(){vfunc_called(this, "_ZN10S8646C2_nt3v23Ev");}
void  S8646C2_nt ::v24(){vfunc_called(this, "_ZN10S8646C2_nt3v24Ev");}
void  S8646C2_nt ::v25(){vfunc_called(this, "_ZN10S8646C2_nt3v25Ev");}
void  S8646C2_nt ::v26(){vfunc_called(this, "_ZN10S8646C2_nt3v26Ev");}
void  S8646C2_nt ::v27(){vfunc_called(this, "_ZN10S8646C2_nt3v27Ev");}
void  S8646C2_nt ::v28(){vfunc_called(this, "_ZN10S8646C2_nt3v28Ev");}
void  S8646C2_nt ::v29(){vfunc_called(this, "_ZN10S8646C2_nt3v29Ev");}
S8646C2_nt ::S8646C2_nt(){ note_ctor("S8646C2_nt", this);} // tgen

//skip512 S8646C2_nt

#else // __cplusplus

extern void _ZN10S8646C2_ntC1Ev();
extern void _ZN10S8646C2_ntD1Ev();
Name_Map name_map_S8646C2_nt[] = {
  NSPAIR(_ZN10S8646C2_ntC1Ev),
  NSPAIR(_ZN10S8646C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8646C2_nt[];
extern void _ZN10S8646C2_ntD1Ev();
extern void _ZN10S8646C2_ntD0Ev();
extern void _ZN10S8646C2_nt3v16Ev();
extern void _ZN10S8646C2_nt3v17Ev();
extern void _ZN10S8646C2_nt3v18Ev();
extern void _ZN10S8646C2_nt3v19Ev();
extern void _ZN10S8646C2_nt3v20Ev();
extern void _ZN10S8646C2_nt3v21Ev();
extern void _ZN10S8646C2_nt3v22Ev();
extern void _ZN10S8646C2_nt3v23Ev();
extern void _ZN10S8646C2_nt3v24Ev();
extern void _ZN10S8646C2_nt3v25Ev();
extern void _ZN10S8646C2_nt3v26Ev();
extern void _ZN10S8646C2_nt3v27Ev();
extern void _ZN10S8646C2_nt3v28Ev();
extern void _ZN10S8646C2_nt3v29Ev();
static  VTBL_ENTRY vtc_S8646C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8646C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8646C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v29Ev,
};
extern VTBL_ENTRY _ZTI10S8646C2_nt[];
VTBL_ENTRY *P__ZTI10S8646C2_nt = _ZTI10S8646C2_nt; 
extern  VTBL_ENTRY _ZTV10S8646C2_nt[];
Class_Descriptor cd_S8646C2_nt = {  "S8646C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8646C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8646C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8646C2_nt),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8646C3_nt  {
  virtual  ~S8646C3_nt(); // _ZN10S8646C3_ntD1Ev
  virtual void  v30(); // _ZN10S8646C3_nt3v30Ev
  S8646C3_nt(); // tgen
};
//SIG(-1 S8646C3_nt) C1{ vd v1}


 S8646C3_nt ::~S8646C3_nt(){ note_dtor("S8646C3_nt", this);}
void  S8646C3_nt ::v30(){vfunc_called(this, "_ZN10S8646C3_nt3v30Ev");}
S8646C3_nt ::S8646C3_nt(){ note_ctor("S8646C3_nt", this);} // tgen

//skip512 S8646C3_nt

#else // __cplusplus

extern void _ZN10S8646C3_ntC1Ev();
extern void _ZN10S8646C3_ntD1Ev();
Name_Map name_map_S8646C3_nt[] = {
  NSPAIR(_ZN10S8646C3_ntC1Ev),
  NSPAIR(_ZN10S8646C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8646C3_nt[];
extern void _ZN10S8646C3_ntD1Ev();
extern void _ZN10S8646C3_ntD0Ev();
extern void _ZN10S8646C3_nt3v30Ev();
static  VTBL_ENTRY vtc_S8646C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8646C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S8646C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8646C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8646C3_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S8646C3_nt[];
VTBL_ENTRY *P__ZTI10S8646C3_nt = _ZTI10S8646C3_nt; 
extern  VTBL_ENTRY _ZTV10S8646C3_nt[];
Class_Descriptor cd_S8646C3_nt = {  "S8646C3_nt", // class name
  0,0,//no base classes
  &(vtc_S8646C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8646C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8646C3_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  S8646C4_nt  {
  void *s8646c4f0;
  void  mf8646c4(); // _ZN10S8646C4_nt8mf8646c4Ev
  virtual  ~S8646C4_nt(); // _ZN10S8646C4_ntD1Ev
  S8646C4_nt(); // tgen
};
//SIG(-1 S8646C4_nt) C1{ vd m Fp}


void  S8646C4_nt ::mf8646c4(){}
 S8646C4_nt ::~S8646C4_nt(){ note_dtor("S8646C4_nt", this);}
S8646C4_nt ::S8646C4_nt(){ note_ctor("S8646C4_nt", this);} // tgen

//skip512 S8646C4_nt

#else // __cplusplus

extern void _ZN10S8646C4_ntC1Ev();
extern void _ZN10S8646C4_ntD1Ev();
Name_Map name_map_S8646C4_nt[] = {
  NSPAIR(_ZN10S8646C4_ntC1Ev),
  NSPAIR(_ZN10S8646C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8646C4_nt[];
extern void _ZN10S8646C4_ntD1Ev();
extern void _ZN10S8646C4_ntD0Ev();
static  VTBL_ENTRY vtc_S8646C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8646C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S8646C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8646C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8646C4_nt[];
VTBL_ENTRY *P__ZTI10S8646C4_nt = _ZTI10S8646C4_nt; 
extern  VTBL_ENTRY _ZTV10S8646C4_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8646C6  {
  void *s8646c6f0;
  void  mf8646c6(); // _ZN7S8646C68mf8646c6Ev
  virtual  ~S8646C6(); // _ZN7S8646C6D1Ev
  S8646C6(); // tgen
};
//SIG(-1 S8646C6) C1{ vd m Fp}


void  S8646C6 ::mf8646c6(){}
 S8646C6 ::~S8646C6(){ note_dtor("S8646C6", this);}
S8646C6 ::S8646C6(){ note_ctor("S8646C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8646C6C1Ev();
extern void _ZN7S8646C6D1Ev();
Name_Map name_map_S8646C6[] = {
  NSPAIR(_ZN7S8646C6C1Ev),
  NSPAIR(_ZN7S8646C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8646C6[];
extern void _ZN7S8646C6D1Ev();
extern void _ZN7S8646C6D0Ev();
static  VTBL_ENTRY vtc_S8646C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8646C6[0]),
  (VTBL_ENTRY)&_ZN7S8646C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8646C6D0Ev,
};
extern VTBL_ENTRY _ZTI7S8646C6[];
extern  VTBL_ENTRY _ZTV7S8646C6[];
Class_Descriptor cd_S8646C6 = {  "S8646C6", // class name
  0,0,//no base classes
  &(vtc_S8646C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8646C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8646C6),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  S8646C1  : S8646C2_nt , S8646C3_nt {
  short s8646c1f0;
  void *s8646c1f1[2];
  __tsi64 s8646c1f2;
  ::S8646C4_nt s8646c1f3;
  ::S8646C4_nt s8646c1f4;
  ::S8646C6 s8646c1f5;
  virtual  ~S8646C1(); // _ZN7S8646C1D1Ev
  virtual void  v1(); // _ZN7S8646C12v1Ev
  virtual void  v2(); // _ZN7S8646C12v2Ev
  virtual void  v3(); // _ZN7S8646C12v3Ev
  virtual void  v4(); // _ZN7S8646C12v4Ev
  virtual void  v5(); // _ZN7S8646C12v5Ev
  virtual void  v6(); // _ZN7S8646C12v6Ev
  virtual void  v7(); // _ZN7S8646C12v7Ev
  virtual void  v8(); // _ZN7S8646C12v8Ev
  virtual void  v9(); // _ZN7S8646C12v9Ev
  virtual void  v10(); // _ZN7S8646C13v10Ev
  virtual void  v11(); // _ZN7S8646C13v11Ev
  virtual void  v12(); // _ZN7S8646C13v12Ev
  virtual void  v13(); // _ZN7S8646C13v13Ev
  virtual void  v14(); // _ZN7S8646C13v14Ev
  virtual void  v15(); // _ZN7S8646C13v15Ev
  S8646C1(); // tgen
};
//SIG(1 S8646C1) C1{ BC2{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29} BC3{ vd v30} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fs Fp[2] FL FC4{ vd m Fp} FC4 FC5{ vd m Fp}}


 S8646C1 ::~S8646C1(){ note_dtor("S8646C1", this);}
void  S8646C1 ::v1(){vfunc_called(this, "_ZN7S8646C12v1Ev");}
void  S8646C1 ::v2(){vfunc_called(this, "_ZN7S8646C12v2Ev");}
void  S8646C1 ::v3(){vfunc_called(this, "_ZN7S8646C12v3Ev");}
void  S8646C1 ::v4(){vfunc_called(this, "_ZN7S8646C12v4Ev");}
void  S8646C1 ::v5(){vfunc_called(this, "_ZN7S8646C12v5Ev");}
void  S8646C1 ::v6(){vfunc_called(this, "_ZN7S8646C12v6Ev");}
void  S8646C1 ::v7(){vfunc_called(this, "_ZN7S8646C12v7Ev");}
void  S8646C1 ::v8(){vfunc_called(this, "_ZN7S8646C12v8Ev");}
void  S8646C1 ::v9(){vfunc_called(this, "_ZN7S8646C12v9Ev");}
void  S8646C1 ::v10(){vfunc_called(this, "_ZN7S8646C13v10Ev");}
void  S8646C1 ::v11(){vfunc_called(this, "_ZN7S8646C13v11Ev");}
void  S8646C1 ::v12(){vfunc_called(this, "_ZN7S8646C13v12Ev");}
void  S8646C1 ::v13(){vfunc_called(this, "_ZN7S8646C13v13Ev");}
void  S8646C1 ::v14(){vfunc_called(this, "_ZN7S8646C13v14Ev");}
void  S8646C1 ::v15(){vfunc_called(this, "_ZN7S8646C13v15Ev");}
S8646C1 ::S8646C1(){ note_ctor("S8646C1", this);} // tgen

static void Test_S8646C1()
{
  extern Class_Descriptor cd_S8646C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S8646C1, buf);
    S8646C1 *dp, &lv = *(dp=new (buf) S8646C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S8646C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8646C1)");
    check_base_class_offset(lv, (S8646C2_nt*), 0, "S8646C1");
    check_base_class_offset(lv, (S8646C3_nt*), ABISELECT(8,4), "S8646C1");
    check_field_offset(lv, s8646c1f0, ABISELECT(16,8), "S8646C1.s8646c1f0");
    check_field_offset(lv, s8646c1f1, ABISELECT(24,12), "S8646C1.s8646c1f1");
    check_field_offset(lv, s8646c1f2, ABISELECT(40,20), "S8646C1.s8646c1f2");
    check_field_offset(lv, s8646c1f3, ABISELECT(48,28), "S8646C1.s8646c1f3");
    check_field_offset(lv, s8646c1f4, ABISELECT(64,36), "S8646C1.s8646c1f4");
    check_field_offset(lv, s8646c1f5, ABISELECT(80,44), "S8646C1.s8646c1f5");
    test_class_info(&lv, &cd_S8646C1);
    dp->~S8646C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8646C1(Test_S8646C1, "S8646C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S8646C1C1Ev();
extern void _ZN7S8646C1D1Ev();
Name_Map name_map_S8646C1[] = {
  NSPAIR(_ZN7S8646C1C1Ev),
  NSPAIR(_ZN7S8646C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8646C2_nt;
extern VTBL_ENTRY _ZTI10S8646C2_nt[];
extern  VTBL_ENTRY _ZTV10S8646C2_nt[];
extern Class_Descriptor cd_S8646C3_nt;
extern VTBL_ENTRY _ZTI10S8646C3_nt[];
extern  VTBL_ENTRY _ZTV10S8646C3_nt[];
static Base_Class bases_S8646C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8646C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8646C3_nt,    ABISELECT(8,4), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8646C1[];
extern void _ZN7S8646C1D1Ev();
extern void _ZN7S8646C1D0Ev();
extern void _ZN10S8646C2_nt3v16Ev();
extern void _ZN10S8646C2_nt3v17Ev();
extern void _ZN10S8646C2_nt3v18Ev();
extern void _ZN10S8646C2_nt3v19Ev();
extern void _ZN10S8646C2_nt3v20Ev();
extern void _ZN10S8646C2_nt3v21Ev();
extern void _ZN10S8646C2_nt3v22Ev();
extern void _ZN10S8646C2_nt3v23Ev();
extern void _ZN10S8646C2_nt3v24Ev();
extern void _ZN10S8646C2_nt3v25Ev();
extern void _ZN10S8646C2_nt3v26Ev();
extern void _ZN10S8646C2_nt3v27Ev();
extern void _ZN10S8646C2_nt3v28Ev();
extern void _ZN10S8646C2_nt3v29Ev();
extern void _ZN7S8646C12v1Ev();
extern void _ZN7S8646C12v2Ev();
extern void _ZN7S8646C12v3Ev();
extern void _ZN7S8646C12v4Ev();
extern void _ZN7S8646C12v5Ev();
extern void _ZN7S8646C12v6Ev();
extern void _ZN7S8646C12v7Ev();
extern void _ZN7S8646C12v8Ev();
extern void _ZN7S8646C12v9Ev();
extern void _ZN7S8646C13v10Ev();
extern void _ZN7S8646C13v11Ev();
extern void _ZN7S8646C13v12Ev();
extern void _ZN7S8646C13v13Ev();
extern void _ZN7S8646C13v14Ev();
extern void _ZN7S8646C13v15Ev();
extern void ABISELECT(_ZThn8_N7S8646C1D1Ev,_ZThn4_N7S8646C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S8646C1D0Ev,_ZThn4_N7S8646C1D0Ev)();
extern void _ZN10S8646C3_nt3v30Ev();
static  VTBL_ENTRY vtc_S8646C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8646C1[0]),
  (VTBL_ENTRY)&_ZN7S8646C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8646C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8646C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8646C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8646C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8646C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8646C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8646C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8646C13v14Ev,
  (VTBL_ENTRY)&_ZN7S8646C13v15Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S8646C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S8646C1D1Ev,_ZThn4_N7S8646C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S8646C1D0Ev,_ZThn4_N7S8646C1D0Ev),
  (VTBL_ENTRY)&_ZN10S8646C3_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI7S8646C1[];
extern  VTBL_ENTRY _ZTV7S8646C1[];
Class_Descriptor cd_S8646C1 = {  "S8646C1", // class name
  bases_S8646C1, 2,
  &(vtc_S8646C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S8646C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8646C1),38, //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  S923C5  {
  ::S16385C7 s923c5f0;
  int s923c5f1[2];
  char s923c5f2;
  virtual  ~S923C5(); // _ZN6S923C5D1Ev
  virtual void  v5(); // _ZN6S923C52v5Ev
  virtual void  v6(); // _ZN6S923C52v6Ev
  virtual void  v7(); // _ZN6S923C52v7Ev
  S923C5(); // tgen
};
//SIG(-1 S923C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S923C5 ::~S923C5(){ note_dtor("S923C5", this);}
void  S923C5 ::v5(){vfunc_called(this, "_ZN6S923C52v5Ev");}
void  S923C5 ::v6(){vfunc_called(this, "_ZN6S923C52v6Ev");}
void  S923C5 ::v7(){vfunc_called(this, "_ZN6S923C52v7Ev");}
S923C5 ::S923C5(){ note_ctor("S923C5", this);} // tgen

static void Test_S923C5()
{
  extern Class_Descriptor cd_S923C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S923C5, buf);
    S923C5 *dp, &lv = *(dp=new (buf) S923C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S923C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S923C5)");
    check_field_offset(lv, s923c5f0, ABISELECT(8,4), "S923C5.s923c5f0");
    check_field_offset(lv, s923c5f1, ABISELECT(24,16), "S923C5.s923c5f1");
    check_field_offset(lv, s923c5f2, ABISELECT(32,24), "S923C5.s923c5f2");
    test_class_info(&lv, &cd_S923C5);
    dp->~S923C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS923C5(Test_S923C5, "S923C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S923C5C1Ev();
extern void _ZN6S923C5D1Ev();
Name_Map name_map_S923C5[] = {
  NSPAIR(_ZN6S923C5C1Ev),
  NSPAIR(_ZN6S923C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S923C5[];
extern void _ZN6S923C5D1Ev();
extern void _ZN6S923C5D0Ev();
extern void _ZN6S923C52v5Ev();
extern void _ZN6S923C52v6Ev();
extern void _ZN6S923C52v7Ev();
static  VTBL_ENTRY vtc_S923C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S923C5[0]),
  (VTBL_ENTRY)&_ZN6S923C5D1Ev,
  (VTBL_ENTRY)&_ZN6S923C5D0Ev,
  (VTBL_ENTRY)&_ZN6S923C52v5Ev,
  (VTBL_ENTRY)&_ZN6S923C52v6Ev,
  (VTBL_ENTRY)&_ZN6S923C52v7Ev,
};
extern VTBL_ENTRY _ZTI6S923C5[];
extern  VTBL_ENTRY _ZTV6S923C5[];
Class_Descriptor cd_S923C5 = {  "S923C5", // class name
  0,0,//no base classes
  &(vtc_S923C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S923C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S923C5),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  S923C4  : S923C5 {
  void *s923c4f0[2];
  virtual  ~S923C4(); // _ZN6S923C4D1Ev
  virtual void  v8(); // _ZN6S923C42v8Ev
  virtual void  v9(); // _ZN6S923C42v9Ev
  virtual void  v10(); // _ZN6S923C43v10Ev
  virtual void  v11(); // _ZN6S923C43v11Ev
  virtual void  v12(); // _ZN6S923C43v12Ev
  virtual void  v13(); // _ZN6S923C43v13Ev
  virtual void  v14(); // _ZN6S923C43v14Ev
  virtual void  v15(); // _ZN6S923C43v15Ev
  virtual void  v16(); // _ZN6S923C43v16Ev
  S923C4(); // tgen
};
//SIG(-1 S923C4) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S923C4 ::~S923C4(){ note_dtor("S923C4", this);}
void  S923C4 ::v8(){vfunc_called(this, "_ZN6S923C42v8Ev");}
void  S923C4 ::v9(){vfunc_called(this, "_ZN6S923C42v9Ev");}
void  S923C4 ::v10(){vfunc_called(this, "_ZN6S923C43v10Ev");}
void  S923C4 ::v11(){vfunc_called(this, "_ZN6S923C43v11Ev");}
void  S923C4 ::v12(){vfunc_called(this, "_ZN6S923C43v12Ev");}
void  S923C4 ::v13(){vfunc_called(this, "_ZN6S923C43v13Ev");}
void  S923C4 ::v14(){vfunc_called(this, "_ZN6S923C43v14Ev");}
void  S923C4 ::v15(){vfunc_called(this, "_ZN6S923C43v15Ev");}
void  S923C4 ::v16(){vfunc_called(this, "_ZN6S923C43v16Ev");}
S923C4 ::S923C4(){ note_ctor("S923C4", this);} // tgen

static void Test_S923C4()
{
  extern Class_Descriptor cd_S923C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S923C4, buf);
    S923C4 *dp, &lv = *(dp=new (buf) S923C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S923C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S923C4)");
    check_base_class_offset(lv, (S923C5*), 0, "S923C4");
    check_field_offset(lv, s923c4f0, ABISELECT(40,28), "S923C4.s923c4f0");
    test_class_info(&lv, &cd_S923C4);
    dp->~S923C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS923C4(Test_S923C4, "S923C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN6S923C4C1Ev();
extern void _ZN6S923C4D1Ev();
Name_Map name_map_S923C4[] = {
  NSPAIR(_ZN6S923C4C1Ev),
  NSPAIR(_ZN6S923C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S923C5;
extern VTBL_ENTRY _ZTI6S923C5[];
extern  VTBL_ENTRY _ZTV6S923C5[];
static Base_Class bases_S923C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S923C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S923C4[];
extern void _ZN6S923C4D1Ev();
extern void _ZN6S923C4D0Ev();
extern void _ZN6S923C52v5Ev();
extern void _ZN6S923C52v6Ev();
extern void _ZN6S923C52v7Ev();
extern void _ZN6S923C42v8Ev();
extern void _ZN6S923C42v9Ev();
extern void _ZN6S923C43v10Ev();
extern void _ZN6S923C43v11Ev();
extern void _ZN6S923C43v12Ev();
extern void _ZN6S923C43v13Ev();
extern void _ZN6S923C43v14Ev();
extern void _ZN6S923C43v15Ev();
extern void _ZN6S923C43v16Ev();
static  VTBL_ENTRY vtc_S923C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S923C4[0]),
  (VTBL_ENTRY)&_ZN6S923C4D1Ev,
  (VTBL_ENTRY)&_ZN6S923C4D0Ev,
  (VTBL_ENTRY)&_ZN6S923C52v5Ev,
  (VTBL_ENTRY)&_ZN6S923C52v6Ev,
  (VTBL_ENTRY)&_ZN6S923C52v7Ev,
  (VTBL_ENTRY)&_ZN6S923C42v8Ev,
  (VTBL_ENTRY)&_ZN6S923C42v9Ev,
  (VTBL_ENTRY)&_ZN6S923C43v10Ev,
  (VTBL_ENTRY)&_ZN6S923C43v11Ev,
  (VTBL_ENTRY)&_ZN6S923C43v12Ev,
  (VTBL_ENTRY)&_ZN6S923C43v13Ev,
  (VTBL_ENTRY)&_ZN6S923C43v14Ev,
  (VTBL_ENTRY)&_ZN6S923C43v15Ev,
  (VTBL_ENTRY)&_ZN6S923C43v16Ev,
};
extern VTBL_ENTRY _ZTI6S923C4[];
extern  VTBL_ENTRY _ZTV6S923C4[];
Class_Descriptor cd_S923C4 = {  "S923C4", // class name
  bases_S923C4, 1,
  &(vtc_S923C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI6S923C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S923C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S923C3  : S923C4 {
  void *s923c3f0[4];
  int s923c3f1;
  virtual  ~S923C3(); // _ZN6S923C3D1Ev
  virtual void  v17(); // _ZN6S923C33v17Ev
  virtual void  v18(); // _ZN6S923C33v18Ev
  virtual void  v19(); // _ZN6S923C33v19Ev
  S923C3(); // tgen
};
//SIG(-1 S923C3) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S923C3 ::~S923C3(){ note_dtor("S923C3", this);}
void  S923C3 ::v17(){vfunc_called(this, "_ZN6S923C33v17Ev");}
void  S923C3 ::v18(){vfunc_called(this, "_ZN6S923C33v18Ev");}
void  S923C3 ::v19(){vfunc_called(this, "_ZN6S923C33v19Ev");}
S923C3 ::S923C3(){ note_ctor("S923C3", this);} // tgen

static void Test_S923C3()
{
  extern Class_Descriptor cd_S923C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S923C3, buf);
    S923C3 *dp, &lv = *(dp=new (buf) S923C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S923C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S923C3)");
    check_base_class_offset(lv, (S923C5*)(S923C4*), 0, "S923C3");
    check_base_class_offset(lv, (S923C4*), 0, "S923C3");
    check_field_offset(lv, s923c3f0, ABISELECT(56,36), "S923C3.s923c3f0");
    check_field_offset(lv, s923c3f1, ABISELECT(88,52), "S923C3.s923c3f1");
    test_class_info(&lv, &cd_S923C3);
    dp->~S923C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS923C3(Test_S923C3, "S923C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN6S923C3C1Ev();
extern void _ZN6S923C3D1Ev();
Name_Map name_map_S923C3[] = {
  NSPAIR(_ZN6S923C3C1Ev),
  NSPAIR(_ZN6S923C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S923C5;
extern VTBL_ENTRY _ZTI6S923C5[];
extern  VTBL_ENTRY _ZTV6S923C5[];
extern Class_Descriptor cd_S923C4;
extern VTBL_ENTRY _ZTI6S923C4[];
extern  VTBL_ENTRY _ZTV6S923C4[];
static Base_Class bases_S923C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S923C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S923C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S923C3[];
extern void _ZN6S923C3D1Ev();
extern void _ZN6S923C3D0Ev();
extern void _ZN6S923C52v5Ev();
extern void _ZN6S923C52v6Ev();
extern void _ZN6S923C52v7Ev();
extern void _ZN6S923C42v8Ev();
extern void _ZN6S923C42v9Ev();
extern void _ZN6S923C43v10Ev();
extern void _ZN6S923C43v11Ev();
extern void _ZN6S923C43v12Ev();
extern void _ZN6S923C43v13Ev();
extern void _ZN6S923C43v14Ev();
extern void _ZN6S923C43v15Ev();
extern void _ZN6S923C43v16Ev();
extern void _ZN6S923C33v17Ev();
extern void _ZN6S923C33v18Ev();
extern void _ZN6S923C33v19Ev();
static  VTBL_ENTRY vtc_S923C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S923C3[0]),
  (VTBL_ENTRY)&_ZN6S923C3D1Ev,
  (VTBL_ENTRY)&_ZN6S923C3D0Ev,
  (VTBL_ENTRY)&_ZN6S923C52v5Ev,
  (VTBL_ENTRY)&_ZN6S923C52v6Ev,
  (VTBL_ENTRY)&_ZN6S923C52v7Ev,
  (VTBL_ENTRY)&_ZN6S923C42v8Ev,
  (VTBL_ENTRY)&_ZN6S923C42v9Ev,
  (VTBL_ENTRY)&_ZN6S923C43v10Ev,
  (VTBL_ENTRY)&_ZN6S923C43v11Ev,
  (VTBL_ENTRY)&_ZN6S923C43v12Ev,
  (VTBL_ENTRY)&_ZN6S923C43v13Ev,
  (VTBL_ENTRY)&_ZN6S923C43v14Ev,
  (VTBL_ENTRY)&_ZN6S923C43v15Ev,
  (VTBL_ENTRY)&_ZN6S923C43v16Ev,
  (VTBL_ENTRY)&_ZN6S923C33v17Ev,
  (VTBL_ENTRY)&_ZN6S923C33v18Ev,
  (VTBL_ENTRY)&_ZN6S923C33v19Ev,
};
extern VTBL_ENTRY _ZTI6S923C3[];
extern  VTBL_ENTRY _ZTV6S923C3[];
Class_Descriptor cd_S923C3 = {  "S923C3", // class name
  bases_S923C3, 2,
  &(vtc_S923C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI6S923C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S923C3),19, //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  S923C2  : S923C3 {
  ::S16385C7 s923c2f0;
  void *s923c2f1;
  ::S16385C7 s923c2f2;
  char s923c2f3[2];
  virtual  ~S923C2(); // _ZN6S923C2D1Ev
  virtual void  v20(); // _ZN6S923C23v20Ev
  virtual void  v21(); // _ZN6S923C23v21Ev
  virtual void  v22(); // _ZN6S923C23v22Ev
  S923C2(); // tgen
};
//SIG(-1 S923C2) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 FC5 Fp FC5 Fc[2]}


 S923C2 ::~S923C2(){ note_dtor("S923C2", this);}
void  S923C2 ::v20(){vfunc_called(this, "_ZN6S923C23v20Ev");}
void  S923C2 ::v21(){vfunc_called(this, "_ZN6S923C23v21Ev");}
void  S923C2 ::v22(){vfunc_called(this, "_ZN6S923C23v22Ev");}
S923C2 ::S923C2(){ note_ctor("S923C2", this);} // tgen

static void Test_S923C2()
{
  extern Class_Descriptor cd_S923C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S923C2, buf);
    S923C2 *dp, &lv = *(dp=new (buf) S923C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S923C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S923C2)");
    check_base_class_offset(lv, (S923C5*)(S923C4*)(S923C3*), 0, "S923C2");
    check_base_class_offset(lv, (S923C4*)(S923C3*), 0, "S923C2");
    check_base_class_offset(lv, (S923C3*), 0, "S923C2");
    check_field_offset(lv, s923c2f0, ABISELECT(96,56), "S923C2.s923c2f0");
    check_field_offset(lv, s923c2f1, ABISELECT(112,68), "S923C2.s923c2f1");
    check_field_offset(lv, s923c2f2, ABISELECT(120,72), "S923C2.s923c2f2");
    check_field_offset(lv, s923c2f3, ABISELECT(136,84), "S923C2.s923c2f3");
    test_class_info(&lv, &cd_S923C2);
    dp->~S923C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS923C2(Test_S923C2, "S923C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S923C2C1Ev();
extern void _ZN6S923C2D1Ev();
Name_Map name_map_S923C2[] = {
  NSPAIR(_ZN6S923C2C1Ev),
  NSPAIR(_ZN6S923C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S923C5;
extern VTBL_ENTRY _ZTI6S923C5[];
extern  VTBL_ENTRY _ZTV6S923C5[];
extern Class_Descriptor cd_S923C4;
extern VTBL_ENTRY _ZTI6S923C4[];
extern  VTBL_ENTRY _ZTV6S923C4[];
extern Class_Descriptor cd_S923C3;
extern VTBL_ENTRY _ZTI6S923C3[];
extern  VTBL_ENTRY _ZTV6S923C3[];
static Base_Class bases_S923C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S923C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S923C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S923C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S923C2[];
extern void _ZN6S923C2D1Ev();
extern void _ZN6S923C2D0Ev();
extern void _ZN6S923C52v5Ev();
extern void _ZN6S923C52v6Ev();
extern void _ZN6S923C52v7Ev();
extern void _ZN6S923C42v8Ev();
extern void _ZN6S923C42v9Ev();
extern void _ZN6S923C43v10Ev();
extern void _ZN6S923C43v11Ev();
extern void _ZN6S923C43v12Ev();
extern void _ZN6S923C43v13Ev();
extern void _ZN6S923C43v14Ev();
extern void _ZN6S923C43v15Ev();
extern void _ZN6S923C43v16Ev();
extern void _ZN6S923C33v17Ev();
extern void _ZN6S923C33v18Ev();
extern void _ZN6S923C33v19Ev();
extern void _ZN6S923C23v20Ev();
extern void _ZN6S923C23v21Ev();
extern void _ZN6S923C23v22Ev();
static  VTBL_ENTRY vtc_S923C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S923C2[0]),
  (VTBL_ENTRY)&_ZN6S923C2D1Ev,
  (VTBL_ENTRY)&_ZN6S923C2D0Ev,
  (VTBL_ENTRY)&_ZN6S923C52v5Ev,
  (VTBL_ENTRY)&_ZN6S923C52v6Ev,
  (VTBL_ENTRY)&_ZN6S923C52v7Ev,
  (VTBL_ENTRY)&_ZN6S923C42v8Ev,
  (VTBL_ENTRY)&_ZN6S923C42v9Ev,
  (VTBL_ENTRY)&_ZN6S923C43v10Ev,
  (VTBL_ENTRY)&_ZN6S923C43v11Ev,
  (VTBL_ENTRY)&_ZN6S923C43v12Ev,
  (VTBL_ENTRY)&_ZN6S923C43v13Ev,
  (VTBL_ENTRY)&_ZN6S923C43v14Ev,
  (VTBL_ENTRY)&_ZN6S923C43v15Ev,
  (VTBL_ENTRY)&_ZN6S923C43v16Ev,
  (VTBL_ENTRY)&_ZN6S923C33v17Ev,
  (VTBL_ENTRY)&_ZN6S923C33v18Ev,
  (VTBL_ENTRY)&_ZN6S923C33v19Ev,
  (VTBL_ENTRY)&_ZN6S923C23v20Ev,
  (VTBL_ENTRY)&_ZN6S923C23v21Ev,
  (VTBL_ENTRY)&_ZN6S923C23v22Ev,
};
extern VTBL_ENTRY _ZTI6S923C2[];
extern  VTBL_ENTRY _ZTV6S923C2[];
Class_Descriptor cd_S923C2 = {  "S923C2", // class name
  bases_S923C2, 3,
  &(vtc_S923C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S923C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S923C2),22, //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  S923C1  : S923C2 {
  char s923c1f0;
  virtual  ~S923C1(); // _ZN6S923C1D1Ev
  virtual void  v1(); // _ZN6S923C12v1Ev
  virtual void  v2(); // _ZN6S923C12v2Ev
  virtual void  v3(); // _ZN6S923C12v3Ev
  virtual void  v4(); // _ZN6S923C12v4Ev
  S923C1(); // tgen
};
//SIG(1 S923C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v5 v6 v7 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp[2]} vd v17 v18 v19 Fp[4] Fi} vd v20 v21 v22 FC6 Fp FC6 Fc[2]} vd v1 v2 v3 v4 Fc}


 S923C1 ::~S923C1(){ note_dtor("S923C1", this);}
void  S923C1 ::v1(){vfunc_called(this, "_ZN6S923C12v1Ev");}
void  S923C1 ::v2(){vfunc_called(this, "_ZN6S923C12v2Ev");}
void  S923C1 ::v3(){vfunc_called(this, "_ZN6S923C12v3Ev");}
void  S923C1 ::v4(){vfunc_called(this, "_ZN6S923C12v4Ev");}
S923C1 ::S923C1(){ note_ctor("S923C1", this);} // tgen

static void Test_S923C1()
{
  extern Class_Descriptor cd_S923C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S923C1, buf);
    S923C1 *dp, &lv = *(dp=new (buf) S923C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S923C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S923C1)");
    check_base_class_offset(lv, (S923C5*)(S923C4*)(S923C3*)(S923C2*), 0, "S923C1");
    check_base_class_offset(lv, (S923C4*)(S923C3*)(S923C2*), 0, "S923C1");
    check_base_class_offset(lv, (S923C3*)(S923C2*), 0, "S923C1");
    check_base_class_offset(lv, (S923C2*), 0, "S923C1");
    check_field_offset(lv, s923c1f0, ABISELECT(138,86), "S923C1.s923c1f0");
    test_class_info(&lv, &cd_S923C1);
    dp->~S923C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS923C1(Test_S923C1, "S923C1", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S923C1C1Ev();
extern void _ZN6S923C1D1Ev();
Name_Map name_map_S923C1[] = {
  NSPAIR(_ZN6S923C1C1Ev),
  NSPAIR(_ZN6S923C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S923C5;
extern VTBL_ENTRY _ZTI6S923C5[];
extern  VTBL_ENTRY _ZTV6S923C5[];
extern Class_Descriptor cd_S923C4;
extern VTBL_ENTRY _ZTI6S923C4[];
extern  VTBL_ENTRY _ZTV6S923C4[];
extern Class_Descriptor cd_S923C3;
extern VTBL_ENTRY _ZTI6S923C3[];
extern  VTBL_ENTRY _ZTV6S923C3[];
extern Class_Descriptor cd_S923C2;
extern VTBL_ENTRY _ZTI6S923C2[];
extern  VTBL_ENTRY _ZTV6S923C2[];
static Base_Class bases_S923C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S923C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S923C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S923C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S923C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S923C1[];
extern void _ZN6S923C1D1Ev();
extern void _ZN6S923C1D0Ev();
extern void _ZN6S923C52v5Ev();
extern void _ZN6S923C52v6Ev();
extern void _ZN6S923C52v7Ev();
extern void _ZN6S923C42v8Ev();
extern void _ZN6S923C42v9Ev();
extern void _ZN6S923C43v10Ev();
extern void _ZN6S923C43v11Ev();
extern void _ZN6S923C43v12Ev();
extern void _ZN6S923C43v13Ev();
extern void _ZN6S923C43v14Ev();
extern void _ZN6S923C43v15Ev();
extern void _ZN6S923C43v16Ev();
extern void _ZN6S923C33v17Ev();
extern void _ZN6S923C33v18Ev();
extern void _ZN6S923C33v19Ev();
extern void _ZN6S923C23v20Ev();
extern void _ZN6S923C23v21Ev();
extern void _ZN6S923C23v22Ev();
extern void _ZN6S923C12v1Ev();
extern void _ZN6S923C12v2Ev();
extern void _ZN6S923C12v3Ev();
extern void _ZN6S923C12v4Ev();
static  VTBL_ENTRY vtc_S923C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S923C1[0]),
  (VTBL_ENTRY)&_ZN6S923C1D1Ev,
  (VTBL_ENTRY)&_ZN6S923C1D0Ev,
  (VTBL_ENTRY)&_ZN6S923C52v5Ev,
  (VTBL_ENTRY)&_ZN6S923C52v6Ev,
  (VTBL_ENTRY)&_ZN6S923C52v7Ev,
  (VTBL_ENTRY)&_ZN6S923C42v8Ev,
  (VTBL_ENTRY)&_ZN6S923C42v9Ev,
  (VTBL_ENTRY)&_ZN6S923C43v10Ev,
  (VTBL_ENTRY)&_ZN6S923C43v11Ev,
  (VTBL_ENTRY)&_ZN6S923C43v12Ev,
  (VTBL_ENTRY)&_ZN6S923C43v13Ev,
  (VTBL_ENTRY)&_ZN6S923C43v14Ev,
  (VTBL_ENTRY)&_ZN6S923C43v15Ev,
  (VTBL_ENTRY)&_ZN6S923C43v16Ev,
  (VTBL_ENTRY)&_ZN6S923C33v17Ev,
  (VTBL_ENTRY)&_ZN6S923C33v18Ev,
  (VTBL_ENTRY)&_ZN6S923C33v19Ev,
  (VTBL_ENTRY)&_ZN6S923C23v20Ev,
  (VTBL_ENTRY)&_ZN6S923C23v21Ev,
  (VTBL_ENTRY)&_ZN6S923C23v22Ev,
  (VTBL_ENTRY)&_ZN6S923C12v1Ev,
  (VTBL_ENTRY)&_ZN6S923C12v2Ev,
  (VTBL_ENTRY)&_ZN6S923C12v3Ev,
  (VTBL_ENTRY)&_ZN6S923C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S923C1[];
extern  VTBL_ENTRY _ZTV6S923C1[];
Class_Descriptor cd_S923C1 = {  "S923C1", // class name
  bases_S923C1, 4,
  &(vtc_S923C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S923C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S923C1),26, //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  S910C5  {
  ::S16385C7 s910c5f0;
  int s910c5f1[2];
  char s910c5f2;
  virtual  ~S910C5(); // _ZN6S910C5D1Ev
  virtual void  v4(); // _ZN6S910C52v4Ev
  virtual void  v5(); // _ZN6S910C52v5Ev
  virtual void  v6(); // _ZN6S910C52v6Ev
  S910C5(); // tgen
};
//SIG(-1 S910C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S910C5 ::~S910C5(){ note_dtor("S910C5", this);}
void  S910C5 ::v4(){vfunc_called(this, "_ZN6S910C52v4Ev");}
void  S910C5 ::v5(){vfunc_called(this, "_ZN6S910C52v5Ev");}
void  S910C5 ::v6(){vfunc_called(this, "_ZN6S910C52v6Ev");}
S910C5 ::S910C5(){ note_ctor("S910C5", this);} // tgen

static void Test_S910C5()
{
  extern Class_Descriptor cd_S910C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S910C5, buf);
    S910C5 *dp, &lv = *(dp=new (buf) S910C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S910C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S910C5)");
    check_field_offset(lv, s910c5f0, ABISELECT(8,4), "S910C5.s910c5f0");
    check_field_offset(lv, s910c5f1, ABISELECT(24,16), "S910C5.s910c5f1");
    check_field_offset(lv, s910c5f2, ABISELECT(32,24), "S910C5.s910c5f2");
    test_class_info(&lv, &cd_S910C5);
    dp->~S910C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS910C5(Test_S910C5, "S910C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S910C5C1Ev();
extern void _ZN6S910C5D1Ev();
Name_Map name_map_S910C5[] = {
  NSPAIR(_ZN6S910C5C1Ev),
  NSPAIR(_ZN6S910C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S910C5[];
extern void _ZN6S910C5D1Ev();
extern void _ZN6S910C5D0Ev();
extern void _ZN6S910C52v4Ev();
extern void _ZN6S910C52v5Ev();
extern void _ZN6S910C52v6Ev();
static  VTBL_ENTRY vtc_S910C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S910C5[0]),
  (VTBL_ENTRY)&_ZN6S910C5D1Ev,
  (VTBL_ENTRY)&_ZN6S910C5D0Ev,
  (VTBL_ENTRY)&_ZN6S910C52v4Ev,
  (VTBL_ENTRY)&_ZN6S910C52v5Ev,
  (VTBL_ENTRY)&_ZN6S910C52v6Ev,
};
extern VTBL_ENTRY _ZTI6S910C5[];
extern  VTBL_ENTRY _ZTV6S910C5[];
Class_Descriptor cd_S910C5 = {  "S910C5", // class name
  0,0,//no base classes
  &(vtc_S910C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S910C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S910C5),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  S910C4  : S910C5 {
  void *s910c4f0[2];
  virtual  ~S910C4(); // _ZN6S910C4D1Ev
  virtual void  v7(); // _ZN6S910C42v7Ev
  virtual void  v8(); // _ZN6S910C42v8Ev
  virtual void  v9(); // _ZN6S910C42v9Ev
  virtual void  v10(); // _ZN6S910C43v10Ev
  virtual void  v11(); // _ZN6S910C43v11Ev
  virtual void  v12(); // _ZN6S910C43v12Ev
  virtual void  v13(); // _ZN6S910C43v13Ev
  virtual void  v14(); // _ZN6S910C43v14Ev
  virtual void  v15(); // _ZN6S910C43v15Ev
  S910C4(); // tgen
};
//SIG(-1 S910C4) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S910C4 ::~S910C4(){ note_dtor("S910C4", this);}
void  S910C4 ::v7(){vfunc_called(this, "_ZN6S910C42v7Ev");}
void  S910C4 ::v8(){vfunc_called(this, "_ZN6S910C42v8Ev");}
void  S910C4 ::v9(){vfunc_called(this, "_ZN6S910C42v9Ev");}
void  S910C4 ::v10(){vfunc_called(this, "_ZN6S910C43v10Ev");}
void  S910C4 ::v11(){vfunc_called(this, "_ZN6S910C43v11Ev");}
void  S910C4 ::v12(){vfunc_called(this, "_ZN6S910C43v12Ev");}
void  S910C4 ::v13(){vfunc_called(this, "_ZN6S910C43v13Ev");}
void  S910C4 ::v14(){vfunc_called(this, "_ZN6S910C43v14Ev");}
void  S910C4 ::v15(){vfunc_called(this, "_ZN6S910C43v15Ev");}
S910C4 ::S910C4(){ note_ctor("S910C4", this);} // tgen

static void Test_S910C4()
{
  extern Class_Descriptor cd_S910C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S910C4, buf);
    S910C4 *dp, &lv = *(dp=new (buf) S910C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S910C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S910C4)");
    check_base_class_offset(lv, (S910C5*), 0, "S910C4");
    check_field_offset(lv, s910c4f0, ABISELECT(40,28), "S910C4.s910c4f0");
    test_class_info(&lv, &cd_S910C4);
    dp->~S910C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS910C4(Test_S910C4, "S910C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN6S910C4C1Ev();
extern void _ZN6S910C4D1Ev();
Name_Map name_map_S910C4[] = {
  NSPAIR(_ZN6S910C4C1Ev),
  NSPAIR(_ZN6S910C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S910C5;
extern VTBL_ENTRY _ZTI6S910C5[];
extern  VTBL_ENTRY _ZTV6S910C5[];
static Base_Class bases_S910C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S910C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S910C4[];
extern void _ZN6S910C4D1Ev();
extern void _ZN6S910C4D0Ev();
extern void _ZN6S910C52v4Ev();
extern void _ZN6S910C52v5Ev();
extern void _ZN6S910C52v6Ev();
extern void _ZN6S910C42v7Ev();
extern void _ZN6S910C42v8Ev();
extern void _ZN6S910C42v9Ev();
extern void _ZN6S910C43v10Ev();
extern void _ZN6S910C43v11Ev();
extern void _ZN6S910C43v12Ev();
extern void _ZN6S910C43v13Ev();
extern void _ZN6S910C43v14Ev();
extern void _ZN6S910C43v15Ev();
static  VTBL_ENTRY vtc_S910C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S910C4[0]),
  (VTBL_ENTRY)&_ZN6S910C4D1Ev,
  (VTBL_ENTRY)&_ZN6S910C4D0Ev,
  (VTBL_ENTRY)&_ZN6S910C52v4Ev,
  (VTBL_ENTRY)&_ZN6S910C52v5Ev,
  (VTBL_ENTRY)&_ZN6S910C52v6Ev,
  (VTBL_ENTRY)&_ZN6S910C42v7Ev,
  (VTBL_ENTRY)&_ZN6S910C42v8Ev,
  (VTBL_ENTRY)&_ZN6S910C42v9Ev,
  (VTBL_ENTRY)&_ZN6S910C43v10Ev,
  (VTBL_ENTRY)&_ZN6S910C43v11Ev,
  (VTBL_ENTRY)&_ZN6S910C43v12Ev,
  (VTBL_ENTRY)&_ZN6S910C43v13Ev,
  (VTBL_ENTRY)&_ZN6S910C43v14Ev,
  (VTBL_ENTRY)&_ZN6S910C43v15Ev,
};
extern VTBL_ENTRY _ZTI6S910C4[];
extern  VTBL_ENTRY _ZTV6S910C4[];
Class_Descriptor cd_S910C4 = {  "S910C4", // class name
  bases_S910C4, 1,
  &(vtc_S910C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI6S910C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S910C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S910C3  : S910C4 {
  void *s910c3f0[4];
  int s910c3f1;
  virtual  ~S910C3(); // _ZN6S910C3D1Ev
  virtual void  v16(); // _ZN6S910C33v16Ev
  virtual void  v17(); // _ZN6S910C33v17Ev
  virtual void  v18(); // _ZN6S910C33v18Ev
  S910C3(); // tgen
};
//SIG(-1 S910C3) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S910C3 ::~S910C3(){ note_dtor("S910C3", this);}
void  S910C3 ::v16(){vfunc_called(this, "_ZN6S910C33v16Ev");}
void  S910C3 ::v17(){vfunc_called(this, "_ZN6S910C33v17Ev");}
void  S910C3 ::v18(){vfunc_called(this, "_ZN6S910C33v18Ev");}
S910C3 ::S910C3(){ note_ctor("S910C3", this);} // tgen

static void Test_S910C3()
{
  extern Class_Descriptor cd_S910C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S910C3, buf);
    S910C3 *dp, &lv = *(dp=new (buf) S910C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S910C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S910C3)");
    check_base_class_offset(lv, (S910C5*)(S910C4*), 0, "S910C3");
    check_base_class_offset(lv, (S910C4*), 0, "S910C3");
    check_field_offset(lv, s910c3f0, ABISELECT(56,36), "S910C3.s910c3f0");
    check_field_offset(lv, s910c3f1, ABISELECT(88,52), "S910C3.s910c3f1");
    test_class_info(&lv, &cd_S910C3);
    dp->~S910C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS910C3(Test_S910C3, "S910C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN6S910C3C1Ev();
extern void _ZN6S910C3D1Ev();
Name_Map name_map_S910C3[] = {
  NSPAIR(_ZN6S910C3C1Ev),
  NSPAIR(_ZN6S910C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S910C5;
extern VTBL_ENTRY _ZTI6S910C5[];
extern  VTBL_ENTRY _ZTV6S910C5[];
extern Class_Descriptor cd_S910C4;
extern VTBL_ENTRY _ZTI6S910C4[];
extern  VTBL_ENTRY _ZTV6S910C4[];
static Base_Class bases_S910C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S910C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S910C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S910C3[];
extern void _ZN6S910C3D1Ev();
extern void _ZN6S910C3D0Ev();
extern void _ZN6S910C52v4Ev();
extern void _ZN6S910C52v5Ev();
extern void _ZN6S910C52v6Ev();
extern void _ZN6S910C42v7Ev();
extern void _ZN6S910C42v8Ev();
extern void _ZN6S910C42v9Ev();
extern void _ZN6S910C43v10Ev();
extern void _ZN6S910C43v11Ev();
extern void _ZN6S910C43v12Ev();
extern void _ZN6S910C43v13Ev();
extern void _ZN6S910C43v14Ev();
extern void _ZN6S910C43v15Ev();
extern void _ZN6S910C33v16Ev();
extern void _ZN6S910C33v17Ev();
extern void _ZN6S910C33v18Ev();
static  VTBL_ENTRY vtc_S910C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S910C3[0]),
  (VTBL_ENTRY)&_ZN6S910C3D1Ev,
  (VTBL_ENTRY)&_ZN6S910C3D0Ev,
  (VTBL_ENTRY)&_ZN6S910C52v4Ev,
  (VTBL_ENTRY)&_ZN6S910C52v5Ev,
  (VTBL_ENTRY)&_ZN6S910C52v6Ev,
  (VTBL_ENTRY)&_ZN6S910C42v7Ev,
  (VTBL_ENTRY)&_ZN6S910C42v8Ev,
  (VTBL_ENTRY)&_ZN6S910C42v9Ev,
  (VTBL_ENTRY)&_ZN6S910C43v10Ev,
  (VTBL_ENTRY)&_ZN6S910C43v11Ev,
  (VTBL_ENTRY)&_ZN6S910C43v12Ev,
  (VTBL_ENTRY)&_ZN6S910C43v13Ev,
  (VTBL_ENTRY)&_ZN6S910C43v14Ev,
  (VTBL_ENTRY)&_ZN6S910C43v15Ev,
  (VTBL_ENTRY)&_ZN6S910C33v16Ev,
  (VTBL_ENTRY)&_ZN6S910C33v17Ev,
  (VTBL_ENTRY)&_ZN6S910C33v18Ev,
};
extern VTBL_ENTRY _ZTI6S910C3[];
extern  VTBL_ENTRY _ZTV6S910C3[];
Class_Descriptor cd_S910C3 = {  "S910C3", // class name
  bases_S910C3, 2,
  &(vtc_S910C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI6S910C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S910C3),19, //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  S910C2  : S910C3 {
  ::S16385C7 s910c2f0;
  void *s910c2f1;
  ::S16385C7 s910c2f2;
  char s910c2f3[2];
  virtual  ~S910C2(); // _ZN6S910C2D1Ev
  virtual void  v19(); // _ZN6S910C23v19Ev
  virtual void  v20(); // _ZN6S910C23v20Ev
  virtual void  v21(); // _ZN6S910C23v21Ev
  S910C2(); // tgen
};
//SIG(-1 S910C2) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 FC5 Fp FC5 Fc[2]}


 S910C2 ::~S910C2(){ note_dtor("S910C2", this);}
void  S910C2 ::v19(){vfunc_called(this, "_ZN6S910C23v19Ev");}
void  S910C2 ::v20(){vfunc_called(this, "_ZN6S910C23v20Ev");}
void  S910C2 ::v21(){vfunc_called(this, "_ZN6S910C23v21Ev");}
S910C2 ::S910C2(){ note_ctor("S910C2", this);} // tgen

static void Test_S910C2()
{
  extern Class_Descriptor cd_S910C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S910C2, buf);
    S910C2 *dp, &lv = *(dp=new (buf) S910C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S910C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S910C2)");
    check_base_class_offset(lv, (S910C5*)(S910C4*)(S910C3*), 0, "S910C2");
    check_base_class_offset(lv, (S910C4*)(S910C3*), 0, "S910C2");
    check_base_class_offset(lv, (S910C3*), 0, "S910C2");
    check_field_offset(lv, s910c2f0, ABISELECT(96,56), "S910C2.s910c2f0");
    check_field_offset(lv, s910c2f1, ABISELECT(112,68), "S910C2.s910c2f1");
    check_field_offset(lv, s910c2f2, ABISELECT(120,72), "S910C2.s910c2f2");
    check_field_offset(lv, s910c2f3, ABISELECT(136,84), "S910C2.s910c2f3");
    test_class_info(&lv, &cd_S910C2);
    dp->~S910C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS910C2(Test_S910C2, "S910C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S910C2C1Ev();
extern void _ZN6S910C2D1Ev();
Name_Map name_map_S910C2[] = {
  NSPAIR(_ZN6S910C2C1Ev),
  NSPAIR(_ZN6S910C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S910C5;
extern VTBL_ENTRY _ZTI6S910C5[];
extern  VTBL_ENTRY _ZTV6S910C5[];
extern Class_Descriptor cd_S910C4;
extern VTBL_ENTRY _ZTI6S910C4[];
extern  VTBL_ENTRY _ZTV6S910C4[];
extern Class_Descriptor cd_S910C3;
extern VTBL_ENTRY _ZTI6S910C3[];
extern  VTBL_ENTRY _ZTV6S910C3[];
static Base_Class bases_S910C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S910C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S910C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S910C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S910C2[];
extern void _ZN6S910C2D1Ev();
extern void _ZN6S910C2D0Ev();
extern void _ZN6S910C52v4Ev();
extern void _ZN6S910C52v5Ev();
extern void _ZN6S910C52v6Ev();
extern void _ZN6S910C42v7Ev();
extern void _ZN6S910C42v8Ev();
extern void _ZN6S910C42v9Ev();
extern void _ZN6S910C43v10Ev();
extern void _ZN6S910C43v11Ev();
extern void _ZN6S910C43v12Ev();
extern void _ZN6S910C43v13Ev();
extern void _ZN6S910C43v14Ev();
extern void _ZN6S910C43v15Ev();
extern void _ZN6S910C33v16Ev();
extern void _ZN6S910C33v17Ev();
extern void _ZN6S910C33v18Ev();
extern void _ZN6S910C23v19Ev();
extern void _ZN6S910C23v20Ev();
extern void _ZN6S910C23v21Ev();
static  VTBL_ENTRY vtc_S910C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S910C2[0]),
  (VTBL_ENTRY)&_ZN6S910C2D1Ev,
  (VTBL_ENTRY)&_ZN6S910C2D0Ev,
  (VTBL_ENTRY)&_ZN6S910C52v4Ev,
  (VTBL_ENTRY)&_ZN6S910C52v5Ev,
  (VTBL_ENTRY)&_ZN6S910C52v6Ev,
  (VTBL_ENTRY)&_ZN6S910C42v7Ev,
  (VTBL_ENTRY)&_ZN6S910C42v8Ev,
  (VTBL_ENTRY)&_ZN6S910C42v9Ev,
  (VTBL_ENTRY)&_ZN6S910C43v10Ev,
  (VTBL_ENTRY)&_ZN6S910C43v11Ev,
  (VTBL_ENTRY)&_ZN6S910C43v12Ev,
  (VTBL_ENTRY)&_ZN6S910C43v13Ev,
  (VTBL_ENTRY)&_ZN6S910C43v14Ev,
  (VTBL_ENTRY)&_ZN6S910C43v15Ev,
  (VTBL_ENTRY)&_ZN6S910C33v16Ev,
  (VTBL_ENTRY)&_ZN6S910C33v17Ev,
  (VTBL_ENTRY)&_ZN6S910C33v18Ev,
  (VTBL_ENTRY)&_ZN6S910C23v19Ev,
  (VTBL_ENTRY)&_ZN6S910C23v20Ev,
  (VTBL_ENTRY)&_ZN6S910C23v21Ev,
};
extern VTBL_ENTRY _ZTI6S910C2[];
extern  VTBL_ENTRY _ZTV6S910C2[];
Class_Descriptor cd_S910C2 = {  "S910C2", // class name
  bases_S910C2, 3,
  &(vtc_S910C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S910C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S910C2),22, //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  S910C1  : S910C2 {
  ::S16385C7 s910c1f0;
  int s910c1f1;
  virtual  ~S910C1(); // _ZN6S910C1D1Ev
  virtual void  v1(); // _ZN6S910C12v1Ev
  virtual void  v2(); // _ZN6S910C12v2Ev
  virtual void  v3(); // _ZN6S910C12v3Ev
  S910C1(); // tgen
};
//SIG(1 S910C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v4 v5 v6 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v19 v20 v21 FC6 Fp FC6 Fc[2]} vd v1 v2 v3 FC6 Fi}


 S910C1 ::~S910C1(){ note_dtor("S910C1", this);}
void  S910C1 ::v1(){vfunc_called(this, "_ZN6S910C12v1Ev");}
void  S910C1 ::v2(){vfunc_called(this, "_ZN6S910C12v2Ev");}
void  S910C1 ::v3(){vfunc_called(this, "_ZN6S910C12v3Ev");}
S910C1 ::S910C1(){ note_ctor("S910C1", this);} // tgen

static void Test_S910C1()
{
  extern Class_Descriptor cd_S910C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S910C1, buf);
    S910C1 *dp, &lv = *(dp=new (buf) S910C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S910C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S910C1)");
    check_base_class_offset(lv, (S910C5*)(S910C4*)(S910C3*)(S910C2*), 0, "S910C1");
    check_base_class_offset(lv, (S910C4*)(S910C3*)(S910C2*), 0, "S910C1");
    check_base_class_offset(lv, (S910C3*)(S910C2*), 0, "S910C1");
    check_base_class_offset(lv, (S910C2*), 0, "S910C1");
    check_field_offset(lv, s910c1f0, ABISELECT(144,88), "S910C1.s910c1f0");
    check_field_offset(lv, s910c1f1, ABISELECT(160,100), "S910C1.s910c1f1");
    test_class_info(&lv, &cd_S910C1);
    dp->~S910C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS910C1(Test_S910C1, "S910C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN6S910C1C1Ev();
extern void _ZN6S910C1D1Ev();
Name_Map name_map_S910C1[] = {
  NSPAIR(_ZN6S910C1C1Ev),
  NSPAIR(_ZN6S910C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S910C5;
extern VTBL_ENTRY _ZTI6S910C5[];
extern  VTBL_ENTRY _ZTV6S910C5[];
extern Class_Descriptor cd_S910C4;
extern VTBL_ENTRY _ZTI6S910C4[];
extern  VTBL_ENTRY _ZTV6S910C4[];
extern Class_Descriptor cd_S910C3;
extern VTBL_ENTRY _ZTI6S910C3[];
extern  VTBL_ENTRY _ZTV6S910C3[];
extern Class_Descriptor cd_S910C2;
extern VTBL_ENTRY _ZTI6S910C2[];
extern  VTBL_ENTRY _ZTV6S910C2[];
static Base_Class bases_S910C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S910C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S910C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S910C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S910C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S910C1[];
extern void _ZN6S910C1D1Ev();
extern void _ZN6S910C1D0Ev();
extern void _ZN6S910C52v4Ev();
extern void _ZN6S910C52v5Ev();
extern void _ZN6S910C52v6Ev();
extern void _ZN6S910C42v7Ev();
extern void _ZN6S910C42v8Ev();
extern void _ZN6S910C42v9Ev();
extern void _ZN6S910C43v10Ev();
extern void _ZN6S910C43v11Ev();
extern void _ZN6S910C43v12Ev();
extern void _ZN6S910C43v13Ev();
extern void _ZN6S910C43v14Ev();
extern void _ZN6S910C43v15Ev();
extern void _ZN6S910C33v16Ev();
extern void _ZN6S910C33v17Ev();
extern void _ZN6S910C33v18Ev();
extern void _ZN6S910C23v19Ev();
extern void _ZN6S910C23v20Ev();
extern void _ZN6S910C23v21Ev();
extern void _ZN6S910C12v1Ev();
extern void _ZN6S910C12v2Ev();
extern void _ZN6S910C12v3Ev();
static  VTBL_ENTRY vtc_S910C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S910C1[0]),
  (VTBL_ENTRY)&_ZN6S910C1D1Ev,
  (VTBL_ENTRY)&_ZN6S910C1D0Ev,
  (VTBL_ENTRY)&_ZN6S910C52v4Ev,
  (VTBL_ENTRY)&_ZN6S910C52v5Ev,
  (VTBL_ENTRY)&_ZN6S910C52v6Ev,
  (VTBL_ENTRY)&_ZN6S910C42v7Ev,
  (VTBL_ENTRY)&_ZN6S910C42v8Ev,
  (VTBL_ENTRY)&_ZN6S910C42v9Ev,
  (VTBL_ENTRY)&_ZN6S910C43v10Ev,
  (VTBL_ENTRY)&_ZN6S910C43v11Ev,
  (VTBL_ENTRY)&_ZN6S910C43v12Ev,
  (VTBL_ENTRY)&_ZN6S910C43v13Ev,
  (VTBL_ENTRY)&_ZN6S910C43v14Ev,
  (VTBL_ENTRY)&_ZN6S910C43v15Ev,
  (VTBL_ENTRY)&_ZN6S910C33v16Ev,
  (VTBL_ENTRY)&_ZN6S910C33v17Ev,
  (VTBL_ENTRY)&_ZN6S910C33v18Ev,
  (VTBL_ENTRY)&_ZN6S910C23v19Ev,
  (VTBL_ENTRY)&_ZN6S910C23v20Ev,
  (VTBL_ENTRY)&_ZN6S910C23v21Ev,
  (VTBL_ENTRY)&_ZN6S910C12v1Ev,
  (VTBL_ENTRY)&_ZN6S910C12v2Ev,
  (VTBL_ENTRY)&_ZN6S910C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S910C1[];
extern  VTBL_ENTRY _ZTV6S910C1[];
Class_Descriptor cd_S910C1 = {  "S910C1", // class name
  bases_S910C1, 4,
  &(vtc_S910C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI6S910C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S910C1),25, //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  S6007C6  : virtual S1538C9_nt , S7283C5_nt , S19490C26 {
  ::S7150C10_nt s6007c6f0;
  ~S6007C6(); // tgen
  S6007C6(); // tgen
};
//SIG(-1 S6007C6) C1{ VBC2{ m Fi} BC3{ m Fp Fi} BC4{ m} FU5{ m}}


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

static void Test_S6007C6()
{
  extern Class_Descriptor cd_S6007C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6007C6, buf);
    S6007C6 *dp, &lv = *(dp=new (buf) S6007C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6007C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C6)");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(28,16), "S6007C6");
    check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S6007C6");
    check_base_class_offset(lv, (S19490C26*), 0, "S6007C6");
    check_field_offset(lv, s6007c6f0, ABISELECT(24,12), "S6007C6.s6007c6f0");
    test_class_info(&lv, &cd_S6007C6);
    dp->~S6007C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C6(Test_S6007C6, "S6007C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6007C6C1Ev();
extern void _ZN7S6007C6D1Ev();
Name_Map name_map_S6007C6[] = {
  NSPAIR(_ZN7S6007C6C1Ev),
  NSPAIR(_ZN7S6007C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S6007C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6007C6[];
static  VTBL_ENTRY vtc_S6007C6[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
extern VTBL_ENTRY _ZTV7S6007C6[];
static  VTT_ENTRY vtt_S6007C6[] = {
  {&(_ZTV7S6007C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
Class_Descriptor cd_S6007C6 = {  "S6007C6", // class name
  bases_S6007C6, 3,
  &(vtc_S6007C6[0]), // expected_vtbl_contents
  &(vtt_S6007C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6007C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6007C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6007C6),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  S6007C9  : virtual S7283C5_nt , virtual S6007C6 , virtual S19490C26 {
  ~S6007C9(); // tgen
  S6007C9(); // tgen
};
//SIG(-1 S6007C9) C1{ VBC2{ m Fp Fi} VBC3{ VBC4{ m Fi} BC2 BC5{ m} FU6{ m}} VBC5}


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

static void Test_S6007C9()
{
  extern Class_Descriptor cd_S6007C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S6007C9, buf);
    S6007C9 *dp, &lv = *(dp=new (buf) S6007C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S6007C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C9)");
    /*is_ambiguous_... S6007C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S6007C9");
    check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*), ABISELECT(52,28), "S6007C9");
    check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*), ABISELECT(32,16), "S6007C9");
    check_base_class_offset(lv, (S19490C26*)(S6007C6*), ABISELECT(24,12), "S6007C9");
    check_base_class_offset(lv, (S6007C6*), ABISELECT(24,12), "S6007C9");
    /*is_ambiguous_... S6007C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S6007C9");
    test_class_info(&lv, &cd_S6007C9);
    dp->~S6007C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C9(Test_S6007C9, "S6007C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S6007C9C1Ev();
extern void _ZN7S6007C9D1Ev();
Name_Map name_map_S6007C9[] = {
  NSPAIR(_ZN7S6007C9C1Ev),
  NSPAIR(_ZN7S6007C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S6007C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_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},
  {&cd_S1538C9_nt,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    4, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S6007C6,    ABISELECT(24,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S6007C9[];
static  VTBL_ENTRY vtc_S6007C9[] = {
  0,
  ABISELECT(52,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
  ABISELECT(28,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
extern VTBL_ENTRY _ZTV7S6007C9[];
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C9[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTT_ENTRY vtt_S6007C9[] = {
  {&(_ZTV7S6007C9[6]),  6,9},
  {&(_ZTV7S6007C9[9]),  9,9},
  {&(_tg__ZTV7S6007C6__7S6007C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6007C9[];
extern  VTBL_ENTRY _ZTV7S6007C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C9[];
Class_Descriptor cd_S6007C9 = {  "S6007C9", // class name
  bases_S6007C9, 6,
  &(vtc_S6007C9[0]), // expected_vtbl_contents
  &(vtt_S6007C9[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S6007C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6007C9),9, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6007C9),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  S6007C10  : virtual S19490C26 {
  ~S6007C10(); // tgen
  S6007C10(); // tgen
};
//SIG(-1 S6007C10) C1{ VBC2{ m}}


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

static void Test_S6007C10()
{
  extern Class_Descriptor cd_S6007C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6007C10, buf);
    S6007C10 *dp, &lv = *(dp=new (buf) S6007C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6007C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C10)");
    check_base_class_offset(lv, (S19490C26*), 0, "S6007C10");
    test_class_info(&lv, &cd_S6007C10);
    dp->~S6007C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C10(Test_S6007C10, "S6007C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6007C10C1Ev();
extern void _ZN8S6007C10D1Ev();
Name_Map name_map_S6007C10[] = {
  NSPAIR(_ZN8S6007C10C1Ev),
  NSPAIR(_ZN8S6007C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S6007C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S6007C10[];
static  VTBL_ENTRY vtc_S6007C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C10[0]),
};
extern VTBL_ENTRY _ZTV8S6007C10[];
static  VTT_ENTRY vtt_S6007C10[] = {
  {&(_ZTV8S6007C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6007C10[];
extern  VTBL_ENTRY _ZTV8S6007C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C10[];
Class_Descriptor cd_S6007C10 = {  "S6007C10", // class name
  bases_S6007C10, 1,
  &(vtc_S6007C10[0]), // expected_vtbl_contents
  &(vtt_S6007C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6007C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6007C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6007C10),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  S6007C11  : S19490C26 , S7283C5_nt , S1538C9_nt , S6007C6 {
  ~S6007C11(); // tgen
  S6007C11(); // tgen
};
//SIG(-1 S6007C11) C1{ BC2{ m} BC3{ m Fp Fi} BC4{ m Fi} BC5{ VBC4 BC3 BC2 FU6{ m}}}


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

static void Test_S6007C11()
{
  extern Class_Descriptor cd_S6007C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S6007C11, buf);
    S6007C11 *dp, &lv = *(dp=new (buf) S6007C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S6007C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C11)");
    /*is_ambiguous_... S6007C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(25,13), "S6007C11");
    /*is_ambiguous_... S6007C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(32,16), "S6007C11");
    /*is_ambiguous_... S6007C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(48,24), "S6007C11");
    check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*), ABISELECT(52,28), "S6007C11");
    check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*), ABISELECT(8,4), "S6007C11");
    check_base_class_offset(lv, (S19490C26*)(S6007C6*), 0, "S6007C11");
    check_base_class_offset(lv, (S6007C6*), 0, "S6007C11");
    test_class_info(&lv, &cd_S6007C11);
    dp->~S6007C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C11(Test_S6007C11, "S6007C11", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S6007C11C1Ev();
extern void _ZN8S6007C11D1Ev();
Name_Map name_map_S6007C11[] = {
  NSPAIR(_ZN8S6007C11C1Ev),
  NSPAIR(_ZN8S6007C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
static Base_Class bases_S6007C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6007C6,    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 _ZTI8S6007C11[];
static  VTBL_ENTRY vtc_S6007C11[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C11[0]),
};
extern VTBL_ENTRY _ZTV8S6007C11[];
static  VTBL_ENTRY _tg__ZTV7S6007C6__8S6007C11[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTT_ENTRY vtt_S6007C11[] = {
  {&(_ZTV8S6007C11[3]),  3,3},
  {&(_tg__ZTV7S6007C6__8S6007C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6007C11[];
extern  VTBL_ENTRY _ZTV8S6007C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C11[];
Class_Descriptor cd_S6007C11 = {  "S6007C11", // class name
  bases_S6007C11, 7,
  &(vtc_S6007C11[0]), // expected_vtbl_contents
  &(vtt_S6007C11[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S6007C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6007C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6007C11),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  S6007C5  : virtual S6007C6 , S6007C9 , virtual S6007C10 , virtual S6007C11 {
  int s6007c5f0;
  virtual  ~S6007C5(); // _ZN7S6007C5D2Ev
  S6007C5(); // tgen
};
//SIG(-1 S6007C5) C1{ VBC2{ VBC3{ m Fi} BC4{ m Fp Fi} BC5{ m} FU6{ m}} BC7{ VBC4 VBC2 VBC5} VBC8{ VBC5} VBC9{ BC5 BC4 BC3 BC2} vd Fi}


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

static void Test_S6007C5()
{
  extern Class_Descriptor cd_S6007C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S6007C5, buf);
    S6007C5 *dp, &lv = *(dp=new (buf) S6007C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S6007C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C5)");
    /*is_ambiguous_... S6007C5::S6007C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*), ABISELECT(44,24), "S6007C5");
    check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*)(S6007C11*), ABISELECT(44,24), "S6007C5");
    /*is_ambiguous_... S6007C5::S6007C6 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*), ABISELECT(24,12), "S6007C5");
    /*is_ambiguous_... S6007C5::S6007C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C6*), ABISELECT(16,8), "S6007C5");
    /*is_ambiguous_... S6007C5::S6007C6 */ AMB_check_base_class_offset(lv, (S6007C6*), ABISELECT(16,8), "S6007C5");
    check_base_class_offset(lv, (S6007C6*)(S6007C9*), ABISELECT(16,8), "S6007C5");
    /*is_ambiguous_... S6007C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C9*), ABISELECT(48,28), "S6007C5");
    /*is_ambiguous_... S6007C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C9*), 0, "S6007C5");
    check_base_class_offset(lv, (S19490C26*)(S6007C10*), 0, "S6007C5");
    check_base_class_offset(lv, (S6007C9*), 0, "S6007C5");
    check_base_class_offset(lv, (S6007C10*), ABISELECT(64,36), "S6007C5");
    /*is_ambiguous_... S6007C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C11*), ABISELECT(97,53), "S6007C5");
    /*is_ambiguous_... S6007C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C11*), ABISELECT(104,56), "S6007C5");
    /*is_ambiguous_... S6007C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C11*), ABISELECT(120,64), "S6007C5");
    check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*)(S6007C11*), ABISELECT(80,44), "S6007C5");
    check_base_class_offset(lv, (S19490C26*)(S6007C6*)(S6007C11*), ABISELECT(72,40), "S6007C5");
    check_base_class_offset(lv, (S6007C6*)(S6007C11*), ABISELECT(72,40), "S6007C5");
    check_base_class_offset(lv, (S6007C11*), ABISELECT(72,40), "S6007C5");
    check_field_offset(lv, s6007c5f0, ABISELECT(8,4), "S6007C5.s6007c5f0");
    test_class_info(&lv, &cd_S6007C5);
    dp->~S6007C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C5(Test_S6007C5, "S6007C5", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S6007C5C1Ev();
extern void _ZN7S6007C5D2Ev();
Name_Map name_map_S6007C5[] = {
  NSPAIR(_ZN7S6007C5C1Ev),
  NSPAIR(_ZN7S6007C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C9;
extern VTBL_ENTRY _ZTI7S6007C9[];
extern  VTBL_ENTRY _ZTV7S6007C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C9[];
extern Class_Descriptor cd_S6007C10;
extern VTBL_ENTRY _ZTI8S6007C10[];
extern  VTBL_ENTRY _ZTV8S6007C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S6007C11;
extern VTBL_ENTRY _ZTI8S6007C11[];
extern  VTBL_ENTRY _ZTV8S6007C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C11[];
static Base_Class bases_S6007C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1538C9_nt,    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_S7283C5_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6007C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6007C9,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6007C10,    ABISELECT(64,36), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(97,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    14, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    14, //immediately_derived
  0, 0},
  {&cd_S7283C5_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_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S6007C6,    ABISELECT(72,40), //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
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6007C11,    ABISELECT(72,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6007C5[];
extern void _ZN7S6007C5D1Ev();
extern void _ZN7S6007C5D0Ev();
static  VTBL_ENTRY vtc_S6007C5[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
  (VTBL_ENTRY)&_ZN7S6007C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6007C5D0Ev,
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
  ABISELECT(-28,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
extern VTBL_ENTRY _ZTV7S6007C5[];
static  VTBL_ENTRY _tg__ZTV7S6007C9__7S6007C5[] = {
  0,
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C9__7S6007C5[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C5[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C10__7S6007C5[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__7S6007C5[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C68S6007C11__A1__7S6007C5[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTT_ENTRY vtt_S6007C5[] = {
  {&(_ZTV7S6007C5[8]),  8,19},
  {&(_tg__ZTV7S6007C9__7S6007C5[6]),  6,6},
  {&(_tg__ZTV7S6007C6__7S6007C9__7S6007C5[3]),  3,3},
  {&(_ZTV7S6007C5[13]),  13,19},
  {&(_ZTV7S6007C5[16]),  16,19},
  {&(_ZTV7S6007C5[19]),  19,19},
  {&(_tg__ZTV7S6007C6__7S6007C5[3]),  3,3},
  {&(_tg__ZTV8S6007C10__7S6007C5[3]),  3,3},
  {&(_tg__ZTV8S6007C11__7S6007C5[3]),  3,3},
  {&(_tg__ZTV7S6007C68S6007C11__A1__7S6007C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6007C5[];
extern  VTBL_ENTRY _ZTV7S6007C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C5[];
Class_Descriptor cd_S6007C5 = {  "S6007C5", // class name
  bases_S6007C5, 15,
  &(vtc_S6007C5[0]), // expected_vtbl_contents
  &(vtt_S6007C5[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S6007C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6007C5),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6007C5),10, //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  S6007C13  : S19490C26 , S7283C5_nt , virtual S6007C11 {
  int s6007c13f0;
  ~S6007C13(); // tgen
  S6007C13(); // tgen
};
//SIG(-1 S6007C13) C1{ BC2{ m} BC3{ m Fp Fi} VBC4{ BC2 BC3 BC5{ m Fi} BC6{ VBC5 BC3 BC2 FU7{ m}}} Fi}


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

static void Test_S6007C13()
{
  extern Class_Descriptor cd_S6007C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S6007C13, buf);
    S6007C13 *dp, &lv = *(dp=new (buf) S6007C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S6007C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C13)");
    /*is_ambiguous_... S6007C13::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S6007C13");
    /*is_ambiguous_... S6007C13::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S6007C13");
    /*is_ambiguous_... S6007C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C11*), ABISELECT(57,29), "S6007C13");
    /*is_ambiguous_... S6007C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C11*), ABISELECT(64,32), "S6007C13");
    /*is_ambiguous_... S6007C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C11*), ABISELECT(80,40), "S6007C13");
    check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*)(S6007C11*), ABISELECT(84,44), "S6007C13");
    check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*)(S6007C11*), ABISELECT(40,20), "S6007C13");
    check_base_class_offset(lv, (S19490C26*)(S6007C6*)(S6007C11*), ABISELECT(32,16), "S6007C13");
    check_base_class_offset(lv, (S6007C6*)(S6007C11*), ABISELECT(32,16), "S6007C13");
    check_base_class_offset(lv, (S6007C11*), ABISELECT(32,16), "S6007C13");
    check_field_offset(lv, s6007c13f0, ABISELECT(24,12), "S6007C13.s6007c13f0");
    test_class_info(&lv, &cd_S6007C13);
    dp->~S6007C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C13(Test_S6007C13, "S6007C13", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S6007C13C1Ev();
extern void _ZN8S6007C13D1Ev();
Name_Map name_map_S6007C13[] = {
  NSPAIR(_ZN8S6007C13C1Ev),
  NSPAIR(_ZN8S6007C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S6007C11;
extern VTBL_ENTRY _ZTI8S6007C11[];
extern  VTBL_ENTRY _ZTV8S6007C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C11[];
static Base_Class bases_S6007C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7283C5_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_S19490C26,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    9, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    9, //immediately_derived
  0, 0},
  {&cd_S1538C9_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7283C5_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_S19490C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6007C6,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6007C11,    ABISELECT(32,16), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6007C13[];
static  VTBL_ENTRY vtc_S6007C13[] = {
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C13[0]),
  ABISELECT(52,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6007C13[0]),
};
extern VTBL_ENTRY _ZTV8S6007C13[];
static  VTBL_ENTRY _tg__ZTV8S6007C11__8S6007C13[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C68S6007C11__8S6007C13[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTT_ENTRY vtt_S6007C13[] = {
  {&(_ZTV8S6007C13[4]),  4,7},
  {&(_ZTV8S6007C13[7]),  7,7},
  {&(_tg__ZTV8S6007C11__8S6007C13[3]),  3,3},
  {&(_tg__ZTV7S6007C68S6007C11__8S6007C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6007C13[];
extern  VTBL_ENTRY _ZTV8S6007C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C13[];
Class_Descriptor cd_S6007C13 = {  "S6007C13", // class name
  bases_S6007C13, 10,
  &(vtc_S6007C13[0]), // expected_vtbl_contents
  &(vtt_S6007C13[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S6007C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6007C13),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6007C13),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  S6007C12  : virtual S6007C11 , virtual S6007C5 , S6007C13 , S6007C6 {
  int s6007c12f0;
  virtual  ~S6007C12(); // _ZN8S6007C12D2Ev
  virtual void  v1(); // _ZN8S6007C122v1Ev
  S6007C12(); // tgen
};
//SIG(-1 S6007C12) C1{ VBC2{ BC3{ m} BC4{ m Fp Fi} BC5{ m Fi} BC6{ VBC5 BC4 BC3 FU7{ m}}} VBC8{ VBC6 BC9{ VBC4 VBC6 VBC3} VBC10{ VBC3} VBC2 vd Fi} BC11{ BC3 BC4 VBC2 Fi} BC6 vd v1 Fi}


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

static void Test_S6007C12()
{
  extern Class_Descriptor cd_S6007C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,27)];
    init_test(&cd_S6007C12, buf);
    S6007C12 *dp, &lv = *(dp=new (buf) S6007C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S6007C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C12)");
    /*is_ambiguous_... S6007C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C11*), ABISELECT(89,49), "S6007C12");
    /*is_ambiguous_... S6007C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C11*), ABISELECT(96,52), "S6007C12");
    /*is_ambiguous_... S6007C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C11*), ABISELECT(112,60), "S6007C12");
    check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*)(S6007C11*), ABISELECT(116,64), "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*), ABISELECT(116,64), "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*), ABISELECT(116,64), "S6007C12");
    check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*)(S6007C11*), ABISELECT(72,40), "S6007C12");
    check_base_class_offset(lv, (S19490C26*)(S6007C6*)(S6007C11*), ABISELECT(64,36), "S6007C12");
    check_base_class_offset(lv, (S6007C6*)(S6007C11*), ABISELECT(64,36), "S6007C12");
    check_base_class_offset(lv, (S6007C11*), ABISELECT(64,36), "S6007C12");
    check_base_class_offset(lv, (S6007C11*)(S6007C5*), ABISELECT(64,36), "S6007C12");
    check_base_class_offset(lv, (S6007C11*)(S6007C13*), ABISELECT(64,36), "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*), ABISELECT(144,80), "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C6*), ABISELECT(136,76), "S6007C12");
    /*is_ambiguous_... S6007C5::S6007C6 */ AMB_check_base_class_offset(lv, (S6007C6*)(S6007C5*), ABISELECT(136,76), "S6007C12");
    check_base_class_offset(lv, (S6007C6*)(S6007C9*)(S6007C5*), ABISELECT(136,76), "S6007C12");
    /*is_ambiguous_... S6007C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C9*)(S6007C5*), ABISELECT(168,92), "S6007C12");
    /*is_ambiguous_... S6007C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C9*)(S6007C5*), ABISELECT(184,100), "S6007C12");
    check_base_class_offset(lv, (S19490C26*)(S6007C10*), ABISELECT(184,100), "S6007C12");
    check_base_class_offset(lv, (S6007C9*)(S6007C5*), ABISELECT(120,68), "S6007C12");
    check_base_class_offset(lv, (S6007C10*)(S6007C5*), ABISELECT(184,100), "S6007C12");
    check_base_class_offset(lv, (S6007C5*), ABISELECT(120,68), "S6007C12");
    /*is_ambiguous_... S6007C13::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C13*), 0, "S6007C12");
    /*is_ambiguous_... S6007C13::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C13*), ABISELECT(8,4), "S6007C12");
    check_base_class_offset(lv, (S6007C13*), 0, "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*), ABISELECT(40,20), "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C6*), ABISELECT(32,16), "S6007C12");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S6007C6*), ABISELECT(32,16), "S6007C12");
    check_field_offset(lv, s6007c12f0, ABISELECT(60,32), "S6007C12.s6007c12f0");
    test_class_info(&lv, &cd_S6007C12);
    dp->~S6007C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C12(Test_S6007C12, "S6007C12", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S6007C12C1Ev();
extern void _ZN8S6007C12D2Ev();
Name_Map name_map_S6007C12[] = {
  NSPAIR(_ZN8S6007C12C1Ev),
  NSPAIR(_ZN8S6007C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S6007C11;
extern VTBL_ENTRY _ZTI8S6007C11[];
extern  VTBL_ENTRY _ZTV8S6007C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C11[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C9;
extern VTBL_ENTRY _ZTI7S6007C9[];
extern  VTBL_ENTRY _ZTV7S6007C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C9[];
extern Class_Descriptor cd_S6007C10;
extern VTBL_ENTRY _ZTI8S6007C10[];
extern  VTBL_ENTRY _ZTV8S6007C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C10[];
extern Class_Descriptor cd_S6007C5;
extern VTBL_ENTRY _ZTI7S6007C5[];
extern  VTBL_ENTRY _ZTV7S6007C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S6007C13;
extern VTBL_ENTRY _ZTI8S6007C13[];
extern  VTBL_ENTRY _ZTV8S6007C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C13[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
static Base_Class bases_S6007C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(89,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
    7, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S1538C9_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_S1538C9_nt,    ABISELECT(116,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6007C6,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6007C11,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7283C5_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
    10, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    10, //immediately_derived
  0, 0},
  {&cd_S6007C6,    ABISELECT(136,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    13, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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, 1},
  {&cd_S6007C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6007C10,    ABISELECT(184,100), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6007C5,    ABISELECT(120,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7283C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S6007C13,    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_S7283C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S6007C6,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6007C12[];
extern void _ZN8S6007C12D1Ev();
extern void _ZN8S6007C12D0Ev();
extern void _ZN8S6007C122v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S6007C12D1Ev,_ZTv0_n36_N8S6007C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S6007C12D1Ev,_ZThn68_N8S6007C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6007C12D0Ev,_ZTv0_n36_N8S6007C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S6007C12D0Ev,_ZThn68_N8S6007C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6007C12[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(168,92),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(116,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  (VTBL_ENTRY)&_ZN8S6007C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6007C12D0Ev,
  (VTBL_ENTRY)&_ZN8S6007C122v1Ev,
  ABISELECT(84,48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  ABISELECT(52,28),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  ABISELECT(-120,-68),
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6007C12D1Ev,_ZTv0_n36_N8S6007C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6007C12D0Ev,_ZTv0_n36_N8S6007C12D0Ev),
  ABISELECT(-20,-12),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
};
extern VTBL_ENTRY _ZTV8S6007C12[];
static  VTBL_ENTRY _tg__ZTV8S6007C13__8S6007C12[] = {
  ABISELECT(116,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__8S6007C13__8S6007C12[] = {
  ABISELECT(52,28),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6007C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__A__8S6007C12[] = {
  ABISELECT(84,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__8S6007C12[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C68S6007C11__8S6007C12[] = {
  ABISELECT(52,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
extern void _ZN7S6007C5D1Ev();
extern void _ZN7S6007C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6007C5__8S6007C12[] = {
  ABISELECT(-56,-32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
  (VTBL_ENTRY)&_ZN7S6007C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6007C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6007C97S6007C5__8S6007C12[] = {
  ABISELECT(64,32),
  -4,
  ABISELECT(16,8),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C97S6007C5__8S6007C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C5__8S6007C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C10__7S6007C5__8S6007C12[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__7S6007C5__8S6007C12[] = {
  ABISELECT(52,28),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__A1__8S6007C12[] = {
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C10__8S6007C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C10[0]),
};
static  VTT_ENTRY vtt_S6007C12[] = {
  {&(_ZTV8S6007C12[9]),  9,35},
  {&(_tg__ZTV8S6007C13__8S6007C12[4]),  4,4},
  {&(_tg__ZTV8S6007C11__8S6007C13__8S6007C12[3]),  3,3},
  {&(_tg__ZTV7S6007C6__A__8S6007C12[3]),  3,3},
  {&(_ZTV8S6007C12[18]),  18,35},
  {&(_ZTV8S6007C12[27]),  27,35},
  {&(_ZTV8S6007C12[32]),  32,35},
  {&(_ZTV8S6007C12[35]),  35,35},
  {&(_ZTV8S6007C12[15]),  15,35},
  {&(_tg__ZTV8S6007C11__8S6007C12[3]),  3,3},
  {&(_tg__ZTV7S6007C68S6007C11__8S6007C12[3]),  3,3},
  {&(_tg__ZTV7S6007C5__8S6007C12[8]),  8,10},
  {&(_tg__ZTV7S6007C97S6007C5__8S6007C12[6]),  6,6},
  {&(_tg__ZTV7S6007C6__7S6007C97S6007C5__8S6007C12[3]),  3,3},
  {&(_tg__ZTV7S6007C6__7S6007C5__8S6007C12[3]),  3,3},
  {&(_tg__ZTV8S6007C10__7S6007C5__8S6007C12[3]),  3,3},
  {&(_tg__ZTV8S6007C11__7S6007C5__8S6007C12[3]),  3,3},
  {&(_tg__ZTV7S6007C6__A1__8S6007C12[3]),  3,3},
  {&(_tg__ZTV8S6007C10__8S6007C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6007C12[];
extern  VTBL_ENTRY _ZTV8S6007C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C12[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6007C12D0Ev,_ZTv0_n36_N8S6007C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6007C12D0Ev,_ZThn68_N8S6007C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6007C12D1Ev,_ZTv0_n36_N8S6007C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6007C12D1Ev,_ZThn68_N8S6007C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6007C12 = {  "S6007C12", // class name
  bases_S6007C12, 22,
  &(vtc_S6007C12[0]), // expected_vtbl_contents
  &(vtt_S6007C12[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S6007C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6007C12),35, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6007C12),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6007C1  : S7283C5_nt , S19490C26 , S19490C18 , virtual S6007C5 , virtual S6007C12 {
  virtual  ~S6007C1(); // _ZN7S6007C1D2Ev
  S6007C1(); // tgen
};
//SIG(1 S6007C1) C1{ BC2{ m Fp Fi} BC3{ m} BC4{ m} VBC5{ VBC6{ VBC7{ m Fi} BC2 BC3 FU8{ m}} BC9{ VBC2 VBC6 VBC3} VBC10{ VBC3} VBC11{ BC3 BC2 BC7 BC6} vd Fi} VBC12{ VBC11 VBC5 BC13{ BC3 BC2 VBC11 Fi} BC6 vd v1 Fi} vd}


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

static void Test_S6007C1()
{
  extern Class_Descriptor cd_S6007C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,30)];
    init_test(&cd_S6007C1, buf);
    S6007C1 *dp, &lv = *(dp=new (buf) S6007C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,116), "sizeof(S6007C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6007C1)");
    /*is_ambiguous_... S6007C1::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*), ABISELECT(8,4), "S6007C1");
    /*is_ambiguous_... S6007C1::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S6007C1");
    check_base_class_offset(lv, (S19490C18*), 0, "S6007C1");
    /*is_ambiguous_... S6007C1::S6007C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*), ABISELECT(68,36), "S6007C1");
    check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*)(S6007C11*), ABISELECT(68,36), "S6007C1");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C6*)(S6007C12*), ABISELECT(68,36), "S6007C1");
    /*is_ambiguous_... S6007C1::S6007C6 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*), ABISELECT(48,24), "S6007C1");
    /*is_ambiguous_... S6007C1::S6007C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C6*), ABISELECT(40,20), "S6007C1");
    /*is_ambiguous_... S6007C5::S6007C6 */ AMB_check_base_class_offset(lv, (S6007C6*)(S6007C5*), ABISELECT(40,20), "S6007C1");
    check_base_class_offset(lv, (S6007C6*)(S6007C9*)(S6007C5*), ABISELECT(40,20), "S6007C1");
    /*is_ambiguous_... S6007C9::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C9*)(S6007C5*), ABISELECT(72,40), "S6007C1");
    /*is_ambiguous_... S6007C9::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C9*)(S6007C5*), ABISELECT(88,48), "S6007C1");
    check_base_class_offset(lv, (S19490C26*)(S6007C10*), ABISELECT(88,48), "S6007C1");
    check_base_class_offset(lv, (S6007C9*)(S6007C5*), ABISELECT(24,12), "S6007C1");
    check_base_class_offset(lv, (S6007C10*)(S6007C5*), 0, "S6007C1");
    /*is_ambiguous_... S6007C11::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C11*), ABISELECT(121,65), "S6007C1");
    /*is_ambiguous_... S6007C11::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C11*), ABISELECT(128,68), "S6007C1");
    /*is_ambiguous_... S6007C11::S1538C9_nt */ AMB_check_base_class_offset(lv, (S1538C9_nt*)(S6007C11*), ABISELECT(144,76), "S6007C1");
    check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*)(S6007C11*), ABISELECT(104,56), "S6007C1");
    check_base_class_offset(lv, (S19490C26*)(S6007C6*)(S6007C11*), ABISELECT(96,52), "S6007C1");
    check_base_class_offset(lv, (S6007C6*)(S6007C11*), ABISELECT(96,52), "S6007C1");
    check_base_class_offset(lv, (S6007C11*)(S6007C5*), ABISELECT(96,52), "S6007C1");
    check_base_class_offset(lv, (S6007C11*)(S6007C12*), ABISELECT(96,52), "S6007C1");
    check_base_class_offset(lv, (S6007C11*)(S6007C13*)(S6007C12*), ABISELECT(96,52), "S6007C1");
    check_base_class_offset(lv, (S6007C5*), ABISELECT(24,12), "S6007C1");
    check_base_class_offset(lv, (S6007C5*)(S6007C12*), ABISELECT(24,12), "S6007C1");
    /*is_ambiguous_... S6007C13::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C13*)(S6007C12*), ABISELECT(152,80), "S6007C1");
    /*is_ambiguous_... S6007C13::S7283C5_nt */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C13*)(S6007C12*), ABISELECT(160,84), "S6007C1");
    check_base_class_offset(lv, (S6007C13*)(S6007C12*), ABISELECT(152,80), "S6007C1");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S7283C5_nt*)(S6007C6*)(S6007C12*), ABISELECT(192,100), "S6007C1");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S6007C6*)(S6007C12*), ABISELECT(184,96), "S6007C1");
    /*is_ambiguous_... S6007C12::S6007C6 */ AMB_check_base_class_offset(lv, (S6007C6*)(S6007C12*), ABISELECT(184,96), "S6007C1");
    check_base_class_offset(lv, (S6007C12*), ABISELECT(152,80), "S6007C1");
    test_class_info(&lv, &cd_S6007C1);
    dp->~S6007C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6007C1(Test_S6007C1, "S6007C1", ABISELECT(216,116));

#else // __cplusplus

extern void _ZN7S6007C1C1Ev();
extern void _ZN7S6007C1D2Ev();
Name_Map name_map_S6007C1[] = {
  NSPAIR(_ZN7S6007C1C1Ev),
  NSPAIR(_ZN7S6007C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C9;
extern VTBL_ENTRY _ZTI7S6007C9[];
extern  VTBL_ENTRY _ZTV7S6007C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C9[];
extern Class_Descriptor cd_S6007C10;
extern VTBL_ENTRY _ZTI8S6007C10[];
extern  VTBL_ENTRY _ZTV8S6007C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C10[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S6007C11;
extern VTBL_ENTRY _ZTI8S6007C11[];
extern  VTBL_ENTRY _ZTV8S6007C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C11[];
extern Class_Descriptor cd_S6007C5;
extern VTBL_ENTRY _ZTI7S6007C5[];
extern  VTBL_ENTRY _ZTV7S6007C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S6007C13;
extern VTBL_ENTRY _ZTI8S6007C13[];
extern  VTBL_ENTRY _ZTV8S6007C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C13[];
extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S6007C6;
extern VTBL_ENTRY _ZTI7S6007C6[];
extern  VTBL_ENTRY _ZTV7S6007C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C6[];
extern Class_Descriptor cd_S6007C12;
extern VTBL_ENTRY _ZTI8S6007C12[];
extern  VTBL_ENTRY _ZTV8S6007C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6007C12[];
static Base_Class bases_S6007C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1538C9_nt,    ABISELECT(68,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7283C5_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_S19490C26,    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_S6007C6,    ABISELECT(40,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7283C5_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
    9, //immediately_derived
  0, 1},
  {&cd_S19490C26,    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
    9, //immediately_derived
  0, 1},
  {&cd_S6007C9,    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
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6007C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19490C26,    ABISELECT(121,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    17, //immediately_derived
  0, 0},
  {&cd_S1538C9_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
    17, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    16, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    16, //immediately_derived
  0, 0},
  {&cd_S6007C6,    ABISELECT(96,52), //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
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6007C11,    ABISELECT(96,52), //bcp->offset
    26, //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
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S6007C5,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7283C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S6007C13,    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
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7283C5_nt,    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
    24, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    24, //immediately_derived
  0, 0},
  {&cd_S6007C6,    ABISELECT(184,96), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6007C12,    ABISELECT(152,80), //bcp->offset
    29, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6007C1[];
extern void _ZN7S6007C1D1Ev();
extern void _ZN7S6007C1D0Ev();
extern void ABISELECT(_ZTv0_n72_N7S6007C1D1Ev,_ZTv0_n36_N7S6007C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S6007C1D1Ev,_ZThn12_N7S6007C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6007C1D0Ev,_ZTv0_n36_N7S6007C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S6007C1D0Ev,_ZThn12_N7S6007C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6007C1D1Ev,_ZTv0_n40_N7S6007C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S6007C1D1Ev,_ZThn80_N7S6007C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6007C1D0Ev,_ZTv0_n40_N7S6007C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S6007C1D0Ev,_ZThn80_N7S6007C1D0Ev)() __attribute__((weak));
extern void _ZN8S6007C122v1Ev();
static  VTBL_ENTRY vtc_S6007C1[] = {
  ABISELECT(152,80),
  ABISELECT(96,52),
  0,
  ABISELECT(72,40),
  ABISELECT(68,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C1[0]),
  (VTBL_ENTRY)&_ZN7S6007C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6007C1D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(72,40),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6007C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6007C1D1Ev,_ZTv0_n36_N7S6007C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6007C1D0Ev,_ZTv0_n36_N7S6007C1D0Ev),
  ABISELECT(28,16),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6007C1[0]),
  ABISELECT(-28,-16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6007C1[0]),
  0,
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-128,-68),
  ABISELECT(-84,-44),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S6007C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6007C1D1Ev,_ZTv0_n40_N7S6007C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6007C1D0Ev,_ZTv0_n40_N7S6007C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6007C122v1Ev,
  ABISELECT(-116,-60),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S6007C1[0]),
};
extern VTBL_ENTRY _ZTV7S6007C1[];
extern void _ZN7S6007C5D1Ev();
extern void _ZN7S6007C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6007C5__7S6007C1[] = {
  ABISELECT(72,40),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
  (VTBL_ENTRY)&_ZN7S6007C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6007C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6007C97S6007C5__7S6007C1[] = {
  ABISELECT(64,36),
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C97S6007C5__7S6007C1[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6007C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C5__7S6007C1[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C10__7S6007C5__7S6007C1[] = {
  ABISELECT(88,48),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__7S6007C5__7S6007C1[] = {
  ABISELECT(-28,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6007C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__7S6007C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C10__7S6007C1[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__7S6007C1[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C68S6007C11__A1__7S6007C1[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
extern void _ZN8S6007C12D1Ev();
extern void _ZN8S6007C12D0Ev();
extern void _ZN8S6007C122v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6007C12__7S6007C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-128,-68),
  ABISELECT(-84,-44),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  (VTBL_ENTRY)&_ZN8S6007C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6007C12D0Ev,
  (VTBL_ENTRY)&_ZN8S6007C122v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6007C138S6007C12__7S6007C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6007C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__8S6007C138S6007C12__7S6007C1[] = {
  ABISELECT(-28,-16),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S6007C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C68S6007C12__A2__7S6007C1[] = {
  ABISELECT(-116,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6007C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C11__8S6007C12__7S6007C1[] = {
  ABISELECT(-28,-16),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S6007C12D1Ev,_ZTv0_n36_N8S6007C12D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S6007C12D0Ev,_ZTv0_n36_N8S6007C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6007C5__8S6007C12__7S6007C1[] = {
  ABISELECT(128,68),
  ABISELECT(72,40),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(44,24),
  ABISELECT(16,8),
  ABISELECT(48,28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6007C12D1Ev,_ZTv0_n36_N8S6007C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6007C12D0Ev,_ZTv0_n36_N8S6007C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__A1__8S6007C12__7S6007C1[] = {
  ABISELECT(28,16),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6007C10__8S6007C12__7S6007C1[] = {
  ABISELECT(88,48),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6007C6__A__8S6007C12__7S6007C1[] = {
  ABISELECT(-116,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6007C12[0]),
};
static  VTT_ENTRY vtt_S6007C1[] = {
  {&(_ZTV7S6007C1[10]),  10,46},
  {&(_ZTV7S6007C1[21]),  21,46},
  {&(_ZTV7S6007C1[26]),  26,46},
  {&(_ZTV7S6007C1[10]),  10,46},
  {&(_ZTV7S6007C1[29]),  29,46},
  {&(_ZTV7S6007C1[40]),  40,46},
  {&(_ZTV7S6007C1[46]),  46,46},
  {&(_tg__ZTV7S6007C5__7S6007C1[8]),  8,10},
  {&(_tg__ZTV7S6007C97S6007C5__7S6007C1[6]),  6,6},
  {&(_tg__ZTV7S6007C6__7S6007C97S6007C5__7S6007C1[3]),  3,3},
  {&(_tg__ZTV7S6007C6__7S6007C5__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C10__7S6007C5__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C11__7S6007C5__7S6007C1[3]),  3,3},
  {&(_tg__ZTV7S6007C6__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C10__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C11__7S6007C1[3]),  3,3},
  {&(_tg__ZTV7S6007C68S6007C11__A1__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C12__7S6007C1[9]),  9,12},
  {&(_tg__ZTV8S6007C138S6007C12__7S6007C1[4]),  4,4},
  {&(_tg__ZTV8S6007C11__8S6007C138S6007C12__7S6007C1[3]),  3,3},
  {&(_tg__ZTV7S6007C68S6007C12__A2__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C11__8S6007C12__7S6007C1[3]),  3,3},
  {&(_tg__ZTV7S6007C5__8S6007C12__7S6007C1[9]),  9,11},
  {&(_tg__ZTV7S6007C6__A1__8S6007C12__7S6007C1[3]),  3,3},
  {&(_tg__ZTV8S6007C10__8S6007C12__7S6007C1[3]),  3,3},
  {&(_tg__ZTV7S6007C6__A__8S6007C12__7S6007C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6007C1[];
extern  VTBL_ENTRY _ZTV7S6007C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6007C1[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6007C1D0Ev,_ZTv0_n40_N7S6007C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6007C1D0Ev,_ZThn80_N7S6007C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6007C1D1Ev,_ZTv0_n40_N7S6007C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6007C1D1Ev,_ZThn80_N7S6007C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6007C1D0Ev,_ZTv0_n36_N7S6007C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6007C1D0Ev,_ZThn12_N7S6007C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6007C1D1Ev,_ZTv0_n36_N7S6007C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6007C1D1Ev,_ZThn12_N7S6007C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6007C1 = {  "S6007C1", // class name
  bases_S6007C1, 26,
  &(vtc_S6007C1[0]), // expected_vtbl_contents
  &(vtt_S6007C1[0]), // expected_vtt_contents
  ABISELECT(216,116), // object size
  NSPAIRA(_ZTI7S6007C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6007C1),46, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6007C1),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S924C5  {
  ::S16385C7 s924c5f0;
  int s924c5f1[2];
  char s924c5f2;
  virtual  ~S924C5(); // _ZN6S924C5D1Ev
  virtual void  v5(); // _ZN6S924C52v5Ev
  virtual void  v6(); // _ZN6S924C52v6Ev
  virtual void  v7(); // _ZN6S924C52v7Ev
  S924C5(); // tgen
};
//SIG(-1 S924C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S924C5 ::~S924C5(){ note_dtor("S924C5", this);}
void  S924C5 ::v5(){vfunc_called(this, "_ZN6S924C52v5Ev");}
void  S924C5 ::v6(){vfunc_called(this, "_ZN6S924C52v6Ev");}
void  S924C5 ::v7(){vfunc_called(this, "_ZN6S924C52v7Ev");}
S924C5 ::S924C5(){ note_ctor("S924C5", this);} // tgen

static void Test_S924C5()
{
  extern Class_Descriptor cd_S924C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S924C5, buf);
    S924C5 *dp, &lv = *(dp=new (buf) S924C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S924C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S924C5)");
    check_field_offset(lv, s924c5f0, ABISELECT(8,4), "S924C5.s924c5f0");
    check_field_offset(lv, s924c5f1, ABISELECT(24,16), "S924C5.s924c5f1");
    check_field_offset(lv, s924c5f2, ABISELECT(32,24), "S924C5.s924c5f2");
    test_class_info(&lv, &cd_S924C5);
    dp->~S924C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS924C5(Test_S924C5, "S924C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S924C5C1Ev();
extern void _ZN6S924C5D1Ev();
Name_Map name_map_S924C5[] = {
  NSPAIR(_ZN6S924C5C1Ev),
  NSPAIR(_ZN6S924C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S924C5[];
extern void _ZN6S924C5D1Ev();
extern void _ZN6S924C5D0Ev();
extern void _ZN6S924C52v5Ev();
extern void _ZN6S924C52v6Ev();
extern void _ZN6S924C52v7Ev();
static  VTBL_ENTRY vtc_S924C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S924C5[0]),
  (VTBL_ENTRY)&_ZN6S924C5D1Ev,
  (VTBL_ENTRY)&_ZN6S924C5D0Ev,
  (VTBL_ENTRY)&_ZN6S924C52v5Ev,
  (VTBL_ENTRY)&_ZN6S924C52v6Ev,
  (VTBL_ENTRY)&_ZN6S924C52v7Ev,
};
extern VTBL_ENTRY _ZTI6S924C5[];
extern  VTBL_ENTRY _ZTV6S924C5[];
Class_Descriptor cd_S924C5 = {  "S924C5", // class name
  0,0,//no base classes
  &(vtc_S924C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S924C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S924C5),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  S924C4  : S924C5 {
  void *s924c4f0[2];
  virtual  ~S924C4(); // _ZN6S924C4D1Ev
  virtual void  v8(); // _ZN6S924C42v8Ev
  virtual void  v9(); // _ZN6S924C42v9Ev
  virtual void  v10(); // _ZN6S924C43v10Ev
  virtual void  v11(); // _ZN6S924C43v11Ev
  virtual void  v12(); // _ZN6S924C43v12Ev
  virtual void  v13(); // _ZN6S924C43v13Ev
  virtual void  v14(); // _ZN6S924C43v14Ev
  virtual void  v15(); // _ZN6S924C43v15Ev
  virtual void  v16(); // _ZN6S924C43v16Ev
  S924C4(); // tgen
};
//SIG(-1 S924C4) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S924C4 ::~S924C4(){ note_dtor("S924C4", this);}
void  S924C4 ::v8(){vfunc_called(this, "_ZN6S924C42v8Ev");}
void  S924C4 ::v9(){vfunc_called(this, "_ZN6S924C42v9Ev");}
void  S924C4 ::v10(){vfunc_called(this, "_ZN6S924C43v10Ev");}
void  S924C4 ::v11(){vfunc_called(this, "_ZN6S924C43v11Ev");}
void  S924C4 ::v12(){vfunc_called(this, "_ZN6S924C43v12Ev");}
void  S924C4 ::v13(){vfunc_called(this, "_ZN6S924C43v13Ev");}
void  S924C4 ::v14(){vfunc_called(this, "_ZN6S924C43v14Ev");}
void  S924C4 ::v15(){vfunc_called(this, "_ZN6S924C43v15Ev");}
void  S924C4 ::v16(){vfunc_called(this, "_ZN6S924C43v16Ev");}
S924C4 ::S924C4(){ note_ctor("S924C4", this);} // tgen

static void Test_S924C4()
{
  extern Class_Descriptor cd_S924C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S924C4, buf);
    S924C4 *dp, &lv = *(dp=new (buf) S924C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S924C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S924C4)");
    check_base_class_offset(lv, (S924C5*), 0, "S924C4");
    check_field_offset(lv, s924c4f0, ABISELECT(40,28), "S924C4.s924c4f0");
    test_class_info(&lv, &cd_S924C4);
    dp->~S924C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS924C4(Test_S924C4, "S924C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN6S924C4C1Ev();
extern void _ZN6S924C4D1Ev();
Name_Map name_map_S924C4[] = {
  NSPAIR(_ZN6S924C4C1Ev),
  NSPAIR(_ZN6S924C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S924C5;
extern VTBL_ENTRY _ZTI6S924C5[];
extern  VTBL_ENTRY _ZTV6S924C5[];
static Base_Class bases_S924C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S924C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S924C4[];
extern void _ZN6S924C4D1Ev();
extern void _ZN6S924C4D0Ev();
extern void _ZN6S924C52v5Ev();
extern void _ZN6S924C52v6Ev();
extern void _ZN6S924C52v7Ev();
extern void _ZN6S924C42v8Ev();
extern void _ZN6S924C42v9Ev();
extern void _ZN6S924C43v10Ev();
extern void _ZN6S924C43v11Ev();
extern void _ZN6S924C43v12Ev();
extern void _ZN6S924C43v13Ev();
extern void _ZN6S924C43v14Ev();
extern void _ZN6S924C43v15Ev();
extern void _ZN6S924C43v16Ev();
static  VTBL_ENTRY vtc_S924C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S924C4[0]),
  (VTBL_ENTRY)&_ZN6S924C4D1Ev,
  (VTBL_ENTRY)&_ZN6S924C4D0Ev,
  (VTBL_ENTRY)&_ZN6S924C52v5Ev,
  (VTBL_ENTRY)&_ZN6S924C52v6Ev,
  (VTBL_ENTRY)&_ZN6S924C52v7Ev,
  (VTBL_ENTRY)&_ZN6S924C42v8Ev,
  (VTBL_ENTRY)&_ZN6S924C42v9Ev,
  (VTBL_ENTRY)&_ZN6S924C43v10Ev,
  (VTBL_ENTRY)&_ZN6S924C43v11Ev,
  (VTBL_ENTRY)&_ZN6S924C43v12Ev,
  (VTBL_ENTRY)&_ZN6S924C43v13Ev,
  (VTBL_ENTRY)&_ZN6S924C43v14Ev,
  (VTBL_ENTRY)&_ZN6S924C43v15Ev,
  (VTBL_ENTRY)&_ZN6S924C43v16Ev,
};
extern VTBL_ENTRY _ZTI6S924C4[];
extern  VTBL_ENTRY _ZTV6S924C4[];
Class_Descriptor cd_S924C4 = {  "S924C4", // class name
  bases_S924C4, 1,
  &(vtc_S924C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI6S924C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S924C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S924C3  : S924C4 {
  void *s924c3f0[4];
  int s924c3f1;
  virtual  ~S924C3(); // _ZN6S924C3D1Ev
  virtual void  v17(); // _ZN6S924C33v17Ev
  virtual void  v18(); // _ZN6S924C33v18Ev
  virtual void  v19(); // _ZN6S924C33v19Ev
  S924C3(); // tgen
};
//SIG(-1 S924C3) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S924C3 ::~S924C3(){ note_dtor("S924C3", this);}
void  S924C3 ::v17(){vfunc_called(this, "_ZN6S924C33v17Ev");}
void  S924C3 ::v18(){vfunc_called(this, "_ZN6S924C33v18Ev");}
void  S924C3 ::v19(){vfunc_called(this, "_ZN6S924C33v19Ev");}
S924C3 ::S924C3(){ note_ctor("S924C3", this);} // tgen

static void Test_S924C3()
{
  extern Class_Descriptor cd_S924C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S924C3, buf);
    S924C3 *dp, &lv = *(dp=new (buf) S924C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S924C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S924C3)");
    check_base_class_offset(lv, (S924C5*)(S924C4*), 0, "S924C3");
    check_base_class_offset(lv, (S924C4*), 0, "S924C3");
    check_field_offset(lv, s924c3f0, ABISELECT(56,36), "S924C3.s924c3f0");
    check_field_offset(lv, s924c3f1, ABISELECT(88,52), "S924C3.s924c3f1");
    test_class_info(&lv, &cd_S924C3);
    dp->~S924C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS924C3(Test_S924C3, "S924C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN6S924C3C1Ev();
extern void _ZN6S924C3D1Ev();
Name_Map name_map_S924C3[] = {
  NSPAIR(_ZN6S924C3C1Ev),
  NSPAIR(_ZN6S924C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S924C5;
extern VTBL_ENTRY _ZTI6S924C5[];
extern  VTBL_ENTRY _ZTV6S924C5[];
extern Class_Descriptor cd_S924C4;
extern VTBL_ENTRY _ZTI6S924C4[];
extern  VTBL_ENTRY _ZTV6S924C4[];
static Base_Class bases_S924C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S924C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S924C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S924C3[];
extern void _ZN6S924C3D1Ev();
extern void _ZN6S924C3D0Ev();
extern void _ZN6S924C52v5Ev();
extern void _ZN6S924C52v6Ev();
extern void _ZN6S924C52v7Ev();
extern void _ZN6S924C42v8Ev();
extern void _ZN6S924C42v9Ev();
extern void _ZN6S924C43v10Ev();
extern void _ZN6S924C43v11Ev();
extern void _ZN6S924C43v12Ev();
extern void _ZN6S924C43v13Ev();
extern void _ZN6S924C43v14Ev();
extern void _ZN6S924C43v15Ev();
extern void _ZN6S924C43v16Ev();
extern void _ZN6S924C33v17Ev();
extern void _ZN6S924C33v18Ev();
extern void _ZN6S924C33v19Ev();
static  VTBL_ENTRY vtc_S924C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S924C3[0]),
  (VTBL_ENTRY)&_ZN6S924C3D1Ev,
  (VTBL_ENTRY)&_ZN6S924C3D0Ev,
  (VTBL_ENTRY)&_ZN6S924C52v5Ev,
  (VTBL_ENTRY)&_ZN6S924C52v6Ev,
  (VTBL_ENTRY)&_ZN6S924C52v7Ev,
  (VTBL_ENTRY)&_ZN6S924C42v8Ev,
  (VTBL_ENTRY)&_ZN6S924C42v9Ev,
  (VTBL_ENTRY)&_ZN6S924C43v10Ev,
  (VTBL_ENTRY)&_ZN6S924C43v11Ev,
  (VTBL_ENTRY)&_ZN6S924C43v12Ev,
  (VTBL_ENTRY)&_ZN6S924C43v13Ev,
  (VTBL_ENTRY)&_ZN6S924C43v14Ev,
  (VTBL_ENTRY)&_ZN6S924C43v15Ev,
  (VTBL_ENTRY)&_ZN6S924C43v16Ev,
  (VTBL_ENTRY)&_ZN6S924C33v17Ev,
  (VTBL_ENTRY)&_ZN6S924C33v18Ev,
  (VTBL_ENTRY)&_ZN6S924C33v19Ev,
};
extern VTBL_ENTRY _ZTI6S924C3[];
extern  VTBL_ENTRY _ZTV6S924C3[];
Class_Descriptor cd_S924C3 = {  "S924C3", // class name
  bases_S924C3, 2,
  &(vtc_S924C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI6S924C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S924C3),19, //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  S924C2  : S924C3 {
  ::S16385C7 s924c2f0;
  void *s924c2f1;
  ::S16385C7 s924c2f2;
  char s924c2f3[2];
  virtual  ~S924C2(); // _ZN6S924C2D1Ev
  virtual void  v20(); // _ZN6S924C23v20Ev
  virtual void  v21(); // _ZN6S924C23v21Ev
  virtual void  v22(); // _ZN6S924C23v22Ev
  S924C2(); // tgen
};
//SIG(-1 S924C2) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 FC5 Fp FC5 Fc[2]}


 S924C2 ::~S924C2(){ note_dtor("S924C2", this);}
void  S924C2 ::v20(){vfunc_called(this, "_ZN6S924C23v20Ev");}
void  S924C2 ::v21(){vfunc_called(this, "_ZN6S924C23v21Ev");}
void  S924C2 ::v22(){vfunc_called(this, "_ZN6S924C23v22Ev");}
S924C2 ::S924C2(){ note_ctor("S924C2", this);} // tgen

static void Test_S924C2()
{
  extern Class_Descriptor cd_S924C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S924C2, buf);
    S924C2 *dp, &lv = *(dp=new (buf) S924C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S924C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S924C2)");
    check_base_class_offset(lv, (S924C5*)(S924C4*)(S924C3*), 0, "S924C2");
    check_base_class_offset(lv, (S924C4*)(S924C3*), 0, "S924C2");
    check_base_class_offset(lv, (S924C3*), 0, "S924C2");
    check_field_offset(lv, s924c2f0, ABISELECT(96,56), "S924C2.s924c2f0");
    check_field_offset(lv, s924c2f1, ABISELECT(112,68), "S924C2.s924c2f1");
    check_field_offset(lv, s924c2f2, ABISELECT(120,72), "S924C2.s924c2f2");
    check_field_offset(lv, s924c2f3, ABISELECT(136,84), "S924C2.s924c2f3");
    test_class_info(&lv, &cd_S924C2);
    dp->~S924C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS924C2(Test_S924C2, "S924C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S924C2C1Ev();
extern void _ZN6S924C2D1Ev();
Name_Map name_map_S924C2[] = {
  NSPAIR(_ZN6S924C2C1Ev),
  NSPAIR(_ZN6S924C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S924C5;
extern VTBL_ENTRY _ZTI6S924C5[];
extern  VTBL_ENTRY _ZTV6S924C5[];
extern Class_Descriptor cd_S924C4;
extern VTBL_ENTRY _ZTI6S924C4[];
extern  VTBL_ENTRY _ZTV6S924C4[];
extern Class_Descriptor cd_S924C3;
extern VTBL_ENTRY _ZTI6S924C3[];
extern  VTBL_ENTRY _ZTV6S924C3[];
static Base_Class bases_S924C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S924C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S924C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S924C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S924C2[];
extern void _ZN6S924C2D1Ev();
extern void _ZN6S924C2D0Ev();
extern void _ZN6S924C52v5Ev();
extern void _ZN6S924C52v6Ev();
extern void _ZN6S924C52v7Ev();
extern void _ZN6S924C42v8Ev();
extern void _ZN6S924C42v9Ev();
extern void _ZN6S924C43v10Ev();
extern void _ZN6S924C43v11Ev();
extern void _ZN6S924C43v12Ev();
extern void _ZN6S924C43v13Ev();
extern void _ZN6S924C43v14Ev();
extern void _ZN6S924C43v15Ev();
extern void _ZN6S924C43v16Ev();
extern void _ZN6S924C33v17Ev();
extern void _ZN6S924C33v18Ev();
extern void _ZN6S924C33v19Ev();
extern void _ZN6S924C23v20Ev();
extern void _ZN6S924C23v21Ev();
extern void _ZN6S924C23v22Ev();
static  VTBL_ENTRY vtc_S924C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S924C2[0]),
  (VTBL_ENTRY)&_ZN6S924C2D1Ev,
  (VTBL_ENTRY)&_ZN6S924C2D0Ev,
  (VTBL_ENTRY)&_ZN6S924C52v5Ev,
  (VTBL_ENTRY)&_ZN6S924C52v6Ev,
  (VTBL_ENTRY)&_ZN6S924C52v7Ev,
  (VTBL_ENTRY)&_ZN6S924C42v8Ev,
  (VTBL_ENTRY)&_ZN6S924C42v9Ev,
  (VTBL_ENTRY)&_ZN6S924C43v10Ev,
  (VTBL_ENTRY)&_ZN6S924C43v11Ev,
  (VTBL_ENTRY)&_ZN6S924C43v12Ev,
  (VTBL_ENTRY)&_ZN6S924C43v13Ev,
  (VTBL_ENTRY)&_ZN6S924C43v14Ev,
  (VTBL_ENTRY)&_ZN6S924C43v15Ev,
  (VTBL_ENTRY)&_ZN6S924C43v16Ev,
  (VTBL_ENTRY)&_ZN6S924C33v17Ev,
  (VTBL_ENTRY)&_ZN6S924C33v18Ev,
  (VTBL_ENTRY)&_ZN6S924C33v19Ev,
  (VTBL_ENTRY)&_ZN6S924C23v20Ev,
  (VTBL_ENTRY)&_ZN6S924C23v21Ev,
  (VTBL_ENTRY)&_ZN6S924C23v22Ev,
};
extern VTBL_ENTRY _ZTI6S924C2[];
extern  VTBL_ENTRY _ZTV6S924C2[];
Class_Descriptor cd_S924C2 = {  "S924C2", // class name
  bases_S924C2, 3,
  &(vtc_S924C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S924C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S924C2),22, //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  S924C1  : S924C2 {
  virtual  ~S924C1(); // _ZN6S924C1D1Ev
  virtual void  v1(); // _ZN6S924C12v1Ev
  virtual void  v2(); // _ZN6S924C12v2Ev
  virtual void  v3(); // _ZN6S924C12v3Ev
  virtual void  v4(); // _ZN6S924C12v4Ev
  S924C1(); // tgen
};
//SIG(1 S924C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v5 v6 v7 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp[2]} vd v17 v18 v19 Fp[4] Fi} vd v20 v21 v22 FC6 Fp FC6 Fc[2]} vd v1 v2 v3 v4}


 S924C1 ::~S924C1(){ note_dtor("S924C1", this);}
void  S924C1 ::v1(){vfunc_called(this, "_ZN6S924C12v1Ev");}
void  S924C1 ::v2(){vfunc_called(this, "_ZN6S924C12v2Ev");}
void  S924C1 ::v3(){vfunc_called(this, "_ZN6S924C12v3Ev");}
void  S924C1 ::v4(){vfunc_called(this, "_ZN6S924C12v4Ev");}
S924C1 ::S924C1(){ note_ctor("S924C1", this);} // tgen

static void Test_S924C1()
{
  extern Class_Descriptor cd_S924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S924C1, buf);
    S924C1 *dp, &lv = *(dp=new (buf) S924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S924C1)");
    check_base_class_offset(lv, (S924C5*)(S924C4*)(S924C3*)(S924C2*), 0, "S924C1");
    check_base_class_offset(lv, (S924C4*)(S924C3*)(S924C2*), 0, "S924C1");
    check_base_class_offset(lv, (S924C3*)(S924C2*), 0, "S924C1");
    check_base_class_offset(lv, (S924C2*), 0, "S924C1");
    test_class_info(&lv, &cd_S924C1);
    dp->~S924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS924C1(Test_S924C1, "S924C1", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S924C1C1Ev();
extern void _ZN6S924C1D1Ev();
Name_Map name_map_S924C1[] = {
  NSPAIR(_ZN6S924C1C1Ev),
  NSPAIR(_ZN6S924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S924C5;
extern VTBL_ENTRY _ZTI6S924C5[];
extern  VTBL_ENTRY _ZTV6S924C5[];
extern Class_Descriptor cd_S924C4;
extern VTBL_ENTRY _ZTI6S924C4[];
extern  VTBL_ENTRY _ZTV6S924C4[];
extern Class_Descriptor cd_S924C3;
extern VTBL_ENTRY _ZTI6S924C3[];
extern  VTBL_ENTRY _ZTV6S924C3[];
extern Class_Descriptor cd_S924C2;
extern VTBL_ENTRY _ZTI6S924C2[];
extern  VTBL_ENTRY _ZTV6S924C2[];
static Base_Class bases_S924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S924C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S924C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S924C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S924C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S924C1[];
extern void _ZN6S924C1D1Ev();
extern void _ZN6S924C1D0Ev();
extern void _ZN6S924C52v5Ev();
extern void _ZN6S924C52v6Ev();
extern void _ZN6S924C52v7Ev();
extern void _ZN6S924C42v8Ev();
extern void _ZN6S924C42v9Ev();
extern void _ZN6S924C43v10Ev();
extern void _ZN6S924C43v11Ev();
extern void _ZN6S924C43v12Ev();
extern void _ZN6S924C43v13Ev();
extern void _ZN6S924C43v14Ev();
extern void _ZN6S924C43v15Ev();
extern void _ZN6S924C43v16Ev();
extern void _ZN6S924C33v17Ev();
extern void _ZN6S924C33v18Ev();
extern void _ZN6S924C33v19Ev();
extern void _ZN6S924C23v20Ev();
extern void _ZN6S924C23v21Ev();
extern void _ZN6S924C23v22Ev();
extern void _ZN6S924C12v1Ev();
extern void _ZN6S924C12v2Ev();
extern void _ZN6S924C12v3Ev();
extern void _ZN6S924C12v4Ev();
static  VTBL_ENTRY vtc_S924C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S924C1[0]),
  (VTBL_ENTRY)&_ZN6S924C1D1Ev,
  (VTBL_ENTRY)&_ZN6S924C1D0Ev,
  (VTBL_ENTRY)&_ZN6S924C52v5Ev,
  (VTBL_ENTRY)&_ZN6S924C52v6Ev,
  (VTBL_ENTRY)&_ZN6S924C52v7Ev,
  (VTBL_ENTRY)&_ZN6S924C42v8Ev,
  (VTBL_ENTRY)&_ZN6S924C42v9Ev,
  (VTBL_ENTRY)&_ZN6S924C43v10Ev,
  (VTBL_ENTRY)&_ZN6S924C43v11Ev,
  (VTBL_ENTRY)&_ZN6S924C43v12Ev,
  (VTBL_ENTRY)&_ZN6S924C43v13Ev,
  (VTBL_ENTRY)&_ZN6S924C43v14Ev,
  (VTBL_ENTRY)&_ZN6S924C43v15Ev,
  (VTBL_ENTRY)&_ZN6S924C43v16Ev,
  (VTBL_ENTRY)&_ZN6S924C33v17Ev,
  (VTBL_ENTRY)&_ZN6S924C33v18Ev,
  (VTBL_ENTRY)&_ZN6S924C33v19Ev,
  (VTBL_ENTRY)&_ZN6S924C23v20Ev,
  (VTBL_ENTRY)&_ZN6S924C23v21Ev,
  (VTBL_ENTRY)&_ZN6S924C23v22Ev,
  (VTBL_ENTRY)&_ZN6S924C12v1Ev,
  (VTBL_ENTRY)&_ZN6S924C12v2Ev,
  (VTBL_ENTRY)&_ZN6S924C12v3Ev,
  (VTBL_ENTRY)&_ZN6S924C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S924C1[];
extern  VTBL_ENTRY _ZTV6S924C1[];
Class_Descriptor cd_S924C1 = {  "S924C1", // class name
  bases_S924C1, 4,
  &(vtc_S924C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S924C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S924C1),26, //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  S19280C3  {
  int s19280c3f0;
  virtual void  v10(); // _ZN8S19280C33v10Ev
  virtual void  v11(); // _ZN8S19280C33v11Ev
  virtual void  v12(); // _ZN8S19280C33v12Ev
  ~S19280C3(); // tgen
  S19280C3(); // tgen
};
//SIG(-1 S19280C3) C1{ v1 v2 v3 Fi}


void  S19280C3 ::v10(){vfunc_called(this, "_ZN8S19280C33v10Ev");}
void  S19280C3 ::v11(){vfunc_called(this, "_ZN8S19280C33v11Ev");}
void  S19280C3 ::v12(){vfunc_called(this, "_ZN8S19280C33v12Ev");}
S19280C3 ::~S19280C3(){ note_dtor("S19280C3", this);} // tgen
S19280C3 ::S19280C3(){ note_ctor("S19280C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19280C3C1Ev();
extern void _ZN8S19280C3D1Ev();
Name_Map name_map_S19280C3[] = {
  NSPAIR(_ZN8S19280C3C1Ev),
  NSPAIR(_ZN8S19280C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19280C3[];
extern void _ZN8S19280C33v10Ev();
extern void _ZN8S19280C33v11Ev();
extern void _ZN8S19280C33v12Ev();
static  VTBL_ENTRY vtc_S19280C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19280C3[0]),
  (VTBL_ENTRY)&_ZN8S19280C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S19280C3[];
extern  VTBL_ENTRY _ZTV8S19280C3[];
Class_Descriptor cd_S19280C3 = {  "S19280C3", // class name
  0,0,//no base classes
  &(vtc_S19280C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19280C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19280C3),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  S19280C4  {
  int s19280c4f0;
  virtual void  v13(); // _ZN8S19280C43v13Ev
  virtual void  v14(); // _ZN8S19280C43v14Ev
  virtual void  v15(); // _ZN8S19280C43v15Ev
  virtual void  v16(); // _ZN8S19280C43v16Ev
  virtual void  v17(); // _ZN8S19280C43v17Ev
  ~S19280C4(); // tgen
  S19280C4(); // tgen
};
//SIG(-1 S19280C4) C1{ v1 v2 v3 v4 v5 Fi}


void  S19280C4 ::v13(){vfunc_called(this, "_ZN8S19280C43v13Ev");}
void  S19280C4 ::v14(){vfunc_called(this, "_ZN8S19280C43v14Ev");}
void  S19280C4 ::v15(){vfunc_called(this, "_ZN8S19280C43v15Ev");}
void  S19280C4 ::v16(){vfunc_called(this, "_ZN8S19280C43v16Ev");}
void  S19280C4 ::v17(){vfunc_called(this, "_ZN8S19280C43v17Ev");}
S19280C4 ::~S19280C4(){ note_dtor("S19280C4", this);} // tgen
S19280C4 ::S19280C4(){ note_ctor("S19280C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19280C4C1Ev();
extern void _ZN8S19280C4D1Ev();
Name_Map name_map_S19280C4[] = {
  NSPAIR(_ZN8S19280C4C1Ev),
  NSPAIR(_ZN8S19280C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19280C4[];
extern void _ZN8S19280C43v13Ev();
extern void _ZN8S19280C43v14Ev();
extern void _ZN8S19280C43v15Ev();
extern void _ZN8S19280C43v16Ev();
extern void _ZN8S19280C43v17Ev();
static  VTBL_ENTRY vtc_S19280C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19280C4[0]),
  (VTBL_ENTRY)&_ZN8S19280C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v17Ev,
};
extern VTBL_ENTRY _ZTI8S19280C4[];
extern  VTBL_ENTRY _ZTV8S19280C4[];
Class_Descriptor cd_S19280C4 = {  "S19280C4", // class name
  0,0,//no base classes
  &(vtc_S19280C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19280C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19280C4),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  S19280C2  : S19280C3 , S19280C4 {
  long double s19280c2f0;
  virtual void  v18(); // _ZN8S19280C23v18Ev
  virtual void  v19(); // _ZN8S19280C23v19Ev
  ~S19280C2(); // tgen
  S19280C2(); // tgen
};
//SIG(-1 S19280C2) C1{ BC2{ v3 v4 v5 Fi} BC3{ v6 v7 v8 v9 v10 Fi} v1 v2 FD}


void  S19280C2 ::v18(){vfunc_called(this, "_ZN8S19280C23v18Ev");}
void  S19280C2 ::v19(){vfunc_called(this, "_ZN8S19280C23v19Ev");}
S19280C2 ::~S19280C2(){ note_dtor("S19280C2", this);} // tgen
S19280C2 ::S19280C2(){ note_ctor("S19280C2", this);} // tgen

static void Test_S19280C2()
{
  extern Class_Descriptor cd_S19280C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19280C2, buf);
    S19280C2 *dp, &lv = *(dp=new (buf) S19280C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19280C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19280C2)");
    check_base_class_offset(lv, (S19280C3*), 0, "S19280C2");
    check_base_class_offset(lv, (S19280C4*), ABISELECT(16,8), "S19280C2");
    check_field_offset(lv, s19280c2f0, ABISELECT(32,16), "S19280C2.s19280c2f0");
    test_class_info(&lv, &cd_S19280C2);
    dp->~S19280C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19280C2(Test_S19280C2, "S19280C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19280C2C1Ev();
extern void _ZN8S19280C2D1Ev();
Name_Map name_map_S19280C2[] = {
  NSPAIR(_ZN8S19280C2C1Ev),
  NSPAIR(_ZN8S19280C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19280C3;
extern VTBL_ENTRY _ZTI8S19280C3[];
extern  VTBL_ENTRY _ZTV8S19280C3[];
extern Class_Descriptor cd_S19280C4;
extern VTBL_ENTRY _ZTI8S19280C4[];
extern  VTBL_ENTRY _ZTV8S19280C4[];
static Base_Class bases_S19280C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19280C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19280C4,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19280C2[];
extern void _ZN8S19280C33v10Ev();
extern void _ZN8S19280C33v11Ev();
extern void _ZN8S19280C33v12Ev();
extern void _ZN8S19280C23v18Ev();
extern void _ZN8S19280C23v19Ev();
extern void _ZN8S19280C43v13Ev();
extern void _ZN8S19280C43v14Ev();
extern void _ZN8S19280C43v15Ev();
extern void _ZN8S19280C43v16Ev();
extern void _ZN8S19280C43v17Ev();
static  VTBL_ENTRY vtc_S19280C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19280C2[0]),
  (VTBL_ENTRY)&_ZN8S19280C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v19Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19280C2[0]),
  (VTBL_ENTRY)&_ZN8S19280C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v17Ev,
};
extern VTBL_ENTRY _ZTI8S19280C2[];
extern  VTBL_ENTRY _ZTV8S19280C2[];
Class_Descriptor cd_S19280C2 = {  "S19280C2", // class name
  bases_S19280C2, 2,
  &(vtc_S19280C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19280C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19280C2),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  S19280C5  : virtual S19280C2 {
  ::S20552C6 s19280c5f0;
  virtual void  v20(); // _ZN8S19280C53v20Ev
  virtual void  v21(); // _ZN8S19280C53v21Ev
  virtual void  v22(); // _ZN8S19280C53v22Ev
  virtual void  v23(); // _ZN8S19280C53v23Ev
  virtual void  v24(); // _ZN8S19280C53v24Ev
  ~S19280C5(); // tgen
  S19280C5(); // tgen
};
//SIG(-1 S19280C5) C1{ VBC2{ BC3{ v6 v7 v8 Fi} BC4{ v9 v10 v11 v12 v13 Fi} v14 v15 FD} v1 v2 v3 v4 v5 FC5{ VBC6{ v23 v24 v25 Fi} v16 v17 v18 v19 v20 v21 v22 FC7{ v26} Fi}}


void  S19280C5 ::v20(){vfunc_called(this, "_ZN8S19280C53v20Ev");}
void  S19280C5 ::v21(){vfunc_called(this, "_ZN8S19280C53v21Ev");}
void  S19280C5 ::v22(){vfunc_called(this, "_ZN8S19280C53v22Ev");}
void  S19280C5 ::v23(){vfunc_called(this, "_ZN8S19280C53v23Ev");}
void  S19280C5 ::v24(){vfunc_called(this, "_ZN8S19280C53v24Ev");}
S19280C5 ::~S19280C5(){ note_dtor("S19280C5", this);} // tgen
S19280C5 ::S19280C5(){ note_ctor("S19280C5", this);} // tgen

static void Test_S19280C5()
{
  extern Class_Descriptor cd_S19280C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S19280C5, buf);
    S19280C5 *dp, &lv = *(dp=new (buf) S19280C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S19280C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19280C5)");
    check_base_class_offset(lv, (S19280C3*)(S19280C2*), ABISELECT(48,24), "S19280C5");
    check_base_class_offset(lv, (S19280C4*)(S19280C2*), ABISELECT(64,32), "S19280C5");
    check_base_class_offset(lv, (S19280C2*), ABISELECT(48,24), "S19280C5");
    check_field_offset(lv, s19280c5f0, ABISELECT(8,4), "S19280C5.s19280c5f0");
    test_class_info(&lv, &cd_S19280C5);
    dp->~S19280C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19280C5(Test_S19280C5, "S19280C5", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S19280C5C1Ev();
extern void _ZN8S19280C5D1Ev();
Name_Map name_map_S19280C5[] = {
  NSPAIR(_ZN8S19280C5C1Ev),
  NSPAIR(_ZN8S19280C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19280C3;
extern VTBL_ENTRY _ZTI8S19280C3[];
extern  VTBL_ENTRY _ZTV8S19280C3[];
extern Class_Descriptor cd_S19280C4;
extern VTBL_ENTRY _ZTI8S19280C4[];
extern  VTBL_ENTRY _ZTV8S19280C4[];
extern Class_Descriptor cd_S19280C2;
extern VTBL_ENTRY _ZTI8S19280C2[];
extern  VTBL_ENTRY _ZTV8S19280C2[];
static Base_Class bases_S19280C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19280C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19280C4,    ABISELECT(64,32), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19280C2,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI8S19280C5[];
extern void _ZN8S19280C53v20Ev();
extern void _ZN8S19280C53v21Ev();
extern void _ZN8S19280C53v22Ev();
extern void _ZN8S19280C53v23Ev();
extern void _ZN8S19280C53v24Ev();
extern void _ZN8S19280C33v10Ev();
extern void _ZN8S19280C33v11Ev();
extern void _ZN8S19280C33v12Ev();
extern void _ZN8S19280C23v18Ev();
extern void _ZN8S19280C23v19Ev();
extern void _ZN8S19280C43v13Ev();
extern void _ZN8S19280C43v14Ev();
extern void _ZN8S19280C43v15Ev();
extern void _ZN8S19280C43v16Ev();
extern void _ZN8S19280C43v17Ev();
static  VTBL_ENTRY vtc_S19280C5[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19280C5[0]),
  (VTBL_ENTRY)&_ZN8S19280C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v24Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19280C5[0]),
  (VTBL_ENTRY)&_ZN8S19280C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v19Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19280C5[0]),
  (VTBL_ENTRY)&_ZN8S19280C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S19280C5[];
static  VTT_ENTRY vtt_S19280C5[] = {
  {&(_ZTV8S19280C5[3]),  3,32},
  {&(_ZTV8S19280C5[20]),  20,32},
  {&(_ZTV8S19280C5[27]),  27,32},
};
extern VTBL_ENTRY _ZTI8S19280C5[];
extern  VTBL_ENTRY _ZTV8S19280C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19280C5[];
Class_Descriptor cd_S19280C5 = {  "S19280C5", // class name
  bases_S19280C5, 3,
  &(vtc_S19280C5[0]), // expected_vtbl_contents
  &(vtt_S19280C5[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S19280C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19280C5),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19280C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19280C1  : virtual S19280C2 , S19280C5 {
  virtual void  v1(); // _ZN8S19280C12v1Ev
  virtual void  v2(); // _ZN8S19280C12v2Ev
  virtual void  v3(); // _ZN8S19280C12v3Ev
  virtual void  v4(); // _ZN8S19280C12v4Ev
  virtual void  v5(); // _ZN8S19280C12v5Ev
  virtual void  v6(); // _ZN8S19280C12v6Ev
  virtual void  v7(); // _ZN8S19280C12v7Ev
  virtual void  v8(); // _ZN8S19280C12v8Ev
  virtual void  v9(); // _ZN8S19280C12v9Ev
  ~S19280C1(); // tgen
  S19280C1(); // tgen
};
//SIG(1 S19280C1) C1{ VBC2{ BC3{ v10 v11 v12 Fi} BC4{ v13 v14 v15 v16 v17 Fi} v18 v19 FD} BC5{ VBC2 v20 v21 v22 v23 v24 FC6{ VBC7{ v32 v33 v34 Fi} v25 v26 v27 v28 v29 v30 v31 FC8{ v35} Fi}} v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S19280C1 ::v1(){vfunc_called(this, "_ZN8S19280C12v1Ev");}
void  S19280C1 ::v2(){vfunc_called(this, "_ZN8S19280C12v2Ev");}
void  S19280C1 ::v3(){vfunc_called(this, "_ZN8S19280C12v3Ev");}
void  S19280C1 ::v4(){vfunc_called(this, "_ZN8S19280C12v4Ev");}
void  S19280C1 ::v5(){vfunc_called(this, "_ZN8S19280C12v5Ev");}
void  S19280C1 ::v6(){vfunc_called(this, "_ZN8S19280C12v6Ev");}
void  S19280C1 ::v7(){vfunc_called(this, "_ZN8S19280C12v7Ev");}
void  S19280C1 ::v8(){vfunc_called(this, "_ZN8S19280C12v8Ev");}
void  S19280C1 ::v9(){vfunc_called(this, "_ZN8S19280C12v9Ev");}
S19280C1 ::~S19280C1(){ note_dtor("S19280C1", this);} // tgen
S19280C1 ::S19280C1(){ note_ctor("S19280C1", this);} // tgen

static void Test_S19280C1()
{
  extern Class_Descriptor cd_S19280C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S19280C1, buf);
    S19280C1 *dp, &lv = *(dp=new (buf) S19280C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S19280C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19280C1)");
    check_base_class_offset(lv, (S19280C3*)(S19280C2*), ABISELECT(48,24), "S19280C1");
    check_base_class_offset(lv, (S19280C4*)(S19280C2*), ABISELECT(64,32), "S19280C1");
    check_base_class_offset(lv, (S19280C2*), ABISELECT(48,24), "S19280C1");
    check_base_class_offset(lv, (S19280C2*)(S19280C5*), ABISELECT(48,24), "S19280C1");
    check_base_class_offset(lv, (S19280C5*), 0, "S19280C1");
    test_class_info(&lv, &cd_S19280C1);
    dp->~S19280C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19280C1(Test_S19280C1, "S19280C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S19280C1C1Ev();
extern void _ZN8S19280C1D1Ev();
Name_Map name_map_S19280C1[] = {
  NSPAIR(_ZN8S19280C1C1Ev),
  NSPAIR(_ZN8S19280C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19280C3;
extern VTBL_ENTRY _ZTI8S19280C3[];
extern  VTBL_ENTRY _ZTV8S19280C3[];
extern Class_Descriptor cd_S19280C4;
extern VTBL_ENTRY _ZTI8S19280C4[];
extern  VTBL_ENTRY _ZTV8S19280C4[];
extern Class_Descriptor cd_S19280C2;
extern VTBL_ENTRY _ZTI8S19280C2[];
extern  VTBL_ENTRY _ZTV8S19280C2[];
extern Class_Descriptor cd_S19280C5;
extern VTBL_ENTRY _ZTI8S19280C5[];
extern  VTBL_ENTRY _ZTV8S19280C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19280C5[];
static Base_Class bases_S19280C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19280C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19280C4,    ABISELECT(64,32), //bcp->offset
    34, //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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19280C2,    ABISELECT(48,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19280C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19280C1[];
extern void _ZN8S19280C53v20Ev();
extern void _ZN8S19280C53v21Ev();
extern void _ZN8S19280C53v22Ev();
extern void _ZN8S19280C53v23Ev();
extern void _ZN8S19280C53v24Ev();
extern void _ZN8S19280C12v1Ev();
extern void _ZN8S19280C12v2Ev();
extern void _ZN8S19280C12v3Ev();
extern void _ZN8S19280C12v4Ev();
extern void _ZN8S19280C12v5Ev();
extern void _ZN8S19280C12v6Ev();
extern void _ZN8S19280C12v7Ev();
extern void _ZN8S19280C12v8Ev();
extern void _ZN8S19280C12v9Ev();
extern void _ZN8S19280C33v10Ev();
extern void _ZN8S19280C33v11Ev();
extern void _ZN8S19280C33v12Ev();
extern void _ZN8S19280C23v18Ev();
extern void _ZN8S19280C23v19Ev();
extern void _ZN8S19280C43v13Ev();
extern void _ZN8S19280C43v14Ev();
extern void _ZN8S19280C43v15Ev();
extern void _ZN8S19280C43v16Ev();
extern void _ZN8S19280C43v17Ev();
static  VTBL_ENTRY vtc_S19280C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19280C1[0]),
  (VTBL_ENTRY)&_ZN8S19280C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v24Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19280C12v9Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19280C1[0]),
  (VTBL_ENTRY)&_ZN8S19280C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v19Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19280C1[0]),
  (VTBL_ENTRY)&_ZN8S19280C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S19280C1[];
extern void _ZN8S19280C53v20Ev();
extern void _ZN8S19280C53v21Ev();
extern void _ZN8S19280C53v22Ev();
extern void _ZN8S19280C53v23Ev();
extern void _ZN8S19280C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19280C5__8S19280C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19280C5[0]),
  (VTBL_ENTRY)&_ZN8S19280C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19280C53v24Ev,
};
extern void _ZN8S19280C33v10Ev();
extern void _ZN8S19280C33v11Ev();
extern void _ZN8S19280C33v12Ev();
extern void _ZN8S19280C23v18Ev();
extern void _ZN8S19280C23v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19280C2__8S19280C5__8S19280C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19280C5[0]),
  (VTBL_ENTRY)&_ZN8S19280C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19280C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19280C23v19Ev,
};
extern void _ZN8S19280C43v13Ev();
extern void _ZN8S19280C43v14Ev();
extern void _ZN8S19280C43v15Ev();
extern void _ZN8S19280C43v16Ev();
extern void _ZN8S19280C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19280C48S19280C2__8S19280C5__8S19280C1[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19280C5[0]),
  (VTBL_ENTRY)&_ZN8S19280C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19280C43v17Ev,
};
static  VTT_ENTRY vtt_S19280C1[] = {
  {&(_ZTV8S19280C1[3]),  3,41},
  {&(_tg__ZTV8S19280C5__8S19280C1[3]),  3,8},
  {&(_tg__ZTV8S19280C2__8S19280C5__8S19280C1[12]),  12,17},
  {&(_tg__ZTV8S19280C48S19280C2__8S19280C5__8S19280C1[2]),  2,7},
  {&(_ZTV8S19280C1[29]),  29,41},
  {&(_ZTV8S19280C1[36]),  36,41},
};
extern VTBL_ENTRY _ZTI8S19280C1[];
extern  VTBL_ENTRY _ZTV8S19280C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19280C1[];
Class_Descriptor cd_S19280C1 = {  "S19280C1", // class name
  bases_S19280C1, 4,
  &(vtc_S19280C1[0]), // expected_vtbl_contents
  &(vtt_S19280C1[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S19280C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19280C1),41, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19280C1),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S871C5  {
  ::S16385C7 s871c5f0;
  int s871c5f1[2];
  char s871c5f2;
  virtual  ~S871C5(); // _ZN6S871C5D1Ev
  virtual void  v2(); // _ZN6S871C52v2Ev
  virtual void  v3(); // _ZN6S871C52v3Ev
  virtual void  v4(); // _ZN6S871C52v4Ev
  S871C5(); // tgen
};
//SIG(-1 S871C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S871C5 ::~S871C5(){ note_dtor("S871C5", this);}
void  S871C5 ::v2(){vfunc_called(this, "_ZN6S871C52v2Ev");}
void  S871C5 ::v3(){vfunc_called(this, "_ZN6S871C52v3Ev");}
void  S871C5 ::v4(){vfunc_called(this, "_ZN6S871C52v4Ev");}
S871C5 ::S871C5(){ note_ctor("S871C5", this);} // tgen

static void Test_S871C5()
{
  extern Class_Descriptor cd_S871C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S871C5, buf);
    S871C5 *dp, &lv = *(dp=new (buf) S871C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S871C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S871C5)");
    check_field_offset(lv, s871c5f0, ABISELECT(8,4), "S871C5.s871c5f0");
    check_field_offset(lv, s871c5f1, ABISELECT(24,16), "S871C5.s871c5f1");
    check_field_offset(lv, s871c5f2, ABISELECT(32,24), "S871C5.s871c5f2");
    test_class_info(&lv, &cd_S871C5);
    dp->~S871C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS871C5(Test_S871C5, "S871C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S871C5C1Ev();
extern void _ZN6S871C5D1Ev();
Name_Map name_map_S871C5[] = {
  NSPAIR(_ZN6S871C5C1Ev),
  NSPAIR(_ZN6S871C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S871C5[];
extern void _ZN6S871C5D1Ev();
extern void _ZN6S871C5D0Ev();
extern void _ZN6S871C52v2Ev();
extern void _ZN6S871C52v3Ev();
extern void _ZN6S871C52v4Ev();
static  VTBL_ENTRY vtc_S871C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S871C5[0]),
  (VTBL_ENTRY)&_ZN6S871C5D1Ev,
  (VTBL_ENTRY)&_ZN6S871C5D0Ev,
  (VTBL_ENTRY)&_ZN6S871C52v2Ev,
  (VTBL_ENTRY)&_ZN6S871C52v3Ev,
  (VTBL_ENTRY)&_ZN6S871C52v4Ev,
};
extern VTBL_ENTRY _ZTI6S871C5[];
extern  VTBL_ENTRY _ZTV6S871C5[];
Class_Descriptor cd_S871C5 = {  "S871C5", // class name
  0,0,//no base classes
  &(vtc_S871C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S871C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S871C5),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  S871C4  : S871C5 {
  void *s871c4f0[2];
  virtual  ~S871C4(); // _ZN6S871C4D1Ev
  virtual void  v5(); // _ZN6S871C42v5Ev
  virtual void  v6(); // _ZN6S871C42v6Ev
  virtual void  v7(); // _ZN6S871C42v7Ev
  virtual void  v8(); // _ZN6S871C42v8Ev
  virtual void  v9(); // _ZN6S871C42v9Ev
  virtual void  v10(); // _ZN6S871C43v10Ev
  virtual void  v11(); // _ZN6S871C43v11Ev
  virtual void  v12(); // _ZN6S871C43v12Ev
  virtual void  v13(); // _ZN6S871C43v13Ev
  S871C4(); // tgen
};
//SIG(-1 S871C4) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S871C4 ::~S871C4(){ note_dtor("S871C4", this);}
void  S871C4 ::v5(){vfunc_called(this, "_ZN6S871C42v5Ev");}
void  S871C4 ::v6(){vfunc_called(this, "_ZN6S871C42v6Ev");}
void  S871C4 ::v7(){vfunc_called(this, "_ZN6S871C42v7Ev");}
void  S871C4 ::v8(){vfunc_called(this, "_ZN6S871C42v8Ev");}
void  S871C4 ::v9(){vfunc_called(this, "_ZN6S871C42v9Ev");}
void  S871C4 ::v10(){vfunc_called(this, "_ZN6S871C43v10Ev");}
void  S871C4 ::v11(){vfunc_called(this, "_ZN6S871C43v11Ev");}
void  S871C4 ::v12(){vfunc_called(this, "_ZN6S871C43v12Ev");}
void  S871C4 ::v13(){vfunc_called(this, "_ZN6S871C43v13Ev");}
S871C4 ::S871C4(){ note_ctor("S871C4", this);} // tgen

static void Test_S871C4()
{
  extern Class_Descriptor cd_S871C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S871C4, buf);
    S871C4 *dp, &lv = *(dp=new (buf) S871C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S871C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S871C4)");
    check_base_class_offset(lv, (S871C5*), 0, "S871C4");
    check_field_offset(lv, s871c4f0, ABISELECT(40,28), "S871C4.s871c4f0");
    test_class_info(&lv, &cd_S871C4);
    dp->~S871C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS871C4(Test_S871C4, "S871C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN6S871C4C1Ev();
extern void _ZN6S871C4D1Ev();
Name_Map name_map_S871C4[] = {
  NSPAIR(_ZN6S871C4C1Ev),
  NSPAIR(_ZN6S871C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S871C5;
extern VTBL_ENTRY _ZTI6S871C5[];
extern  VTBL_ENTRY _ZTV6S871C5[];
static Base_Class bases_S871C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S871C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S871C4[];
extern void _ZN6S871C4D1Ev();
extern void _ZN6S871C4D0Ev();
extern void _ZN6S871C52v2Ev();
extern void _ZN6S871C52v3Ev();
extern void _ZN6S871C52v4Ev();
extern void _ZN6S871C42v5Ev();
extern void _ZN6S871C42v6Ev();
extern void _ZN6S871C42v7Ev();
extern void _ZN6S871C42v8Ev();
extern void _ZN6S871C42v9Ev();
extern void _ZN6S871C43v10Ev();
extern void _ZN6S871C43v11Ev();
extern void _ZN6S871C43v12Ev();
extern void _ZN6S871C43v13Ev();
static  VTBL_ENTRY vtc_S871C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S871C4[0]),
  (VTBL_ENTRY)&_ZN6S871C4D1Ev,
  (VTBL_ENTRY)&_ZN6S871C4D0Ev,
  (VTBL_ENTRY)&_ZN6S871C52v2Ev,
  (VTBL_ENTRY)&_ZN6S871C52v3Ev,
  (VTBL_ENTRY)&_ZN6S871C52v4Ev,
  (VTBL_ENTRY)&_ZN6S871C42v5Ev,
  (VTBL_ENTRY)&_ZN6S871C42v6Ev,
  (VTBL_ENTRY)&_ZN6S871C42v7Ev,
  (VTBL_ENTRY)&_ZN6S871C42v8Ev,
  (VTBL_ENTRY)&_ZN6S871C42v9Ev,
  (VTBL_ENTRY)&_ZN6S871C43v10Ev,
  (VTBL_ENTRY)&_ZN6S871C43v11Ev,
  (VTBL_ENTRY)&_ZN6S871C43v12Ev,
  (VTBL_ENTRY)&_ZN6S871C43v13Ev,
};
extern VTBL_ENTRY _ZTI6S871C4[];
extern  VTBL_ENTRY _ZTV6S871C4[];
Class_Descriptor cd_S871C4 = {  "S871C4", // class name
  bases_S871C4, 1,
  &(vtc_S871C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI6S871C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S871C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S871C3  : S871C4 {
  void *s871c3f0[4];
  int s871c3f1;
  virtual  ~S871C3(); // _ZN6S871C3D1Ev
  virtual void  v14(); // _ZN6S871C33v14Ev
  virtual void  v15(); // _ZN6S871C33v15Ev
  virtual void  v16(); // _ZN6S871C33v16Ev
  S871C3(); // tgen
};
//SIG(-1 S871C3) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S871C3 ::~S871C3(){ note_dtor("S871C3", this);}
void  S871C3 ::v14(){vfunc_called(this, "_ZN6S871C33v14Ev");}
void  S871C3 ::v15(){vfunc_called(this, "_ZN6S871C33v15Ev");}
void  S871C3 ::v16(){vfunc_called(this, "_ZN6S871C33v16Ev");}
S871C3 ::S871C3(){ note_ctor("S871C3", this);} // tgen

static void Test_S871C3()
{
  extern Class_Descriptor cd_S871C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S871C3, buf);
    S871C3 *dp, &lv = *(dp=new (buf) S871C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S871C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S871C3)");
    check_base_class_offset(lv, (S871C5*)(S871C4*), 0, "S871C3");
    check_base_class_offset(lv, (S871C4*), 0, "S871C3");
    check_field_offset(lv, s871c3f0, ABISELECT(56,36), "S871C3.s871c3f0");
    check_field_offset(lv, s871c3f1, ABISELECT(88,52), "S871C3.s871c3f1");
    test_class_info(&lv, &cd_S871C3);
    dp->~S871C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS871C3(Test_S871C3, "S871C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN6S871C3C1Ev();
extern void _ZN6S871C3D1Ev();
Name_Map name_map_S871C3[] = {
  NSPAIR(_ZN6S871C3C1Ev),
  NSPAIR(_ZN6S871C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S871C5;
extern VTBL_ENTRY _ZTI6S871C5[];
extern  VTBL_ENTRY _ZTV6S871C5[];
extern Class_Descriptor cd_S871C4;
extern VTBL_ENTRY _ZTI6S871C4[];
extern  VTBL_ENTRY _ZTV6S871C4[];
static Base_Class bases_S871C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S871C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S871C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S871C3[];
extern void _ZN6S871C3D1Ev();
extern void _ZN6S871C3D0Ev();
extern void _ZN6S871C52v2Ev();
extern void _ZN6S871C52v3Ev();
extern void _ZN6S871C52v4Ev();
extern void _ZN6S871C42v5Ev();
extern void _ZN6S871C42v6Ev();
extern void _ZN6S871C42v7Ev();
extern void _ZN6S871C42v8Ev();
extern void _ZN6S871C42v9Ev();
extern void _ZN6S871C43v10Ev();
extern void _ZN6S871C43v11Ev();
extern void _ZN6S871C43v12Ev();
extern void _ZN6S871C43v13Ev();
extern void _ZN6S871C33v14Ev();
extern void _ZN6S871C33v15Ev();
extern void _ZN6S871C33v16Ev();
static  VTBL_ENTRY vtc_S871C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S871C3[0]),
  (VTBL_ENTRY)&_ZN6S871C3D1Ev,
  (VTBL_ENTRY)&_ZN6S871C3D0Ev,
  (VTBL_ENTRY)&_ZN6S871C52v2Ev,
  (VTBL_ENTRY)&_ZN6S871C52v3Ev,
  (VTBL_ENTRY)&_ZN6S871C52v4Ev,
  (VTBL_ENTRY)&_ZN6S871C42v5Ev,
  (VTBL_ENTRY)&_ZN6S871C42v6Ev,
  (VTBL_ENTRY)&_ZN6S871C42v7Ev,
  (VTBL_ENTRY)&_ZN6S871C42v8Ev,
  (VTBL_ENTRY)&_ZN6S871C42v9Ev,
  (VTBL_ENTRY)&_ZN6S871C43v10Ev,
  (VTBL_ENTRY)&_ZN6S871C43v11Ev,
  (VTBL_ENTRY)&_ZN6S871C43v12Ev,
  (VTBL_ENTRY)&_ZN6S871C43v13Ev,
  (VTBL_ENTRY)&_ZN6S871C33v14Ev,
  (VTBL_ENTRY)&_ZN6S871C33v15Ev,
  (VTBL_ENTRY)&_ZN6S871C33v16Ev,
};
extern VTBL_ENTRY _ZTI6S871C3[];
extern  VTBL_ENTRY _ZTV6S871C3[];
Class_Descriptor cd_S871C3 = {  "S871C3", // class name
  bases_S871C3, 2,
  &(vtc_S871C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI6S871C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S871C3),19, //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  S871C2  : S871C3 {
  void *s871c2f0[3];
  int s871c2f1;
  char s871c2f2;
  void *s871c2f3;
  char s871c2f4;
  int s871c2f5;
  virtual  ~S871C2(); // _ZN6S871C2D1Ev
  virtual void  v17(); // _ZN6S871C23v17Ev
  virtual void  v18(); // _ZN6S871C23v18Ev
  S871C2(); // tgen
};
//SIG(-1 S871C2) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fp[3] Fi Fc Fp Fc Fi}


 S871C2 ::~S871C2(){ note_dtor("S871C2", this);}
void  S871C2 ::v17(){vfunc_called(this, "_ZN6S871C23v17Ev");}
void  S871C2 ::v18(){vfunc_called(this, "_ZN6S871C23v18Ev");}
S871C2 ::S871C2(){ note_ctor("S871C2", this);} // tgen

static void Test_S871C2()
{
  extern Class_Descriptor cd_S871C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S871C2, buf);
    S871C2 *dp, &lv = *(dp=new (buf) S871C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S871C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S871C2)");
    check_base_class_offset(lv, (S871C5*)(S871C4*)(S871C3*), 0, "S871C2");
    check_base_class_offset(lv, (S871C4*)(S871C3*), 0, "S871C2");
    check_base_class_offset(lv, (S871C3*), 0, "S871C2");
    check_field_offset(lv, s871c2f0, ABISELECT(96,56), "S871C2.s871c2f0");
    check_field_offset(lv, s871c2f1, ABISELECT(120,68), "S871C2.s871c2f1");
    check_field_offset(lv, s871c2f2, ABISELECT(124,72), "S871C2.s871c2f2");
    check_field_offset(lv, s871c2f3, ABISELECT(128,76), "S871C2.s871c2f3");
    check_field_offset(lv, s871c2f4, ABISELECT(136,80), "S871C2.s871c2f4");
    check_field_offset(lv, s871c2f5, ABISELECT(140,84), "S871C2.s871c2f5");
    test_class_info(&lv, &cd_S871C2);
    dp->~S871C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS871C2(Test_S871C2, "S871C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S871C2C1Ev();
extern void _ZN6S871C2D1Ev();
Name_Map name_map_S871C2[] = {
  NSPAIR(_ZN6S871C2C1Ev),
  NSPAIR(_ZN6S871C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S871C5;
extern VTBL_ENTRY _ZTI6S871C5[];
extern  VTBL_ENTRY _ZTV6S871C5[];
extern Class_Descriptor cd_S871C4;
extern VTBL_ENTRY _ZTI6S871C4[];
extern  VTBL_ENTRY _ZTV6S871C4[];
extern Class_Descriptor cd_S871C3;
extern VTBL_ENTRY _ZTI6S871C3[];
extern  VTBL_ENTRY _ZTV6S871C3[];
static Base_Class bases_S871C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S871C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S871C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S871C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S871C2[];
extern void _ZN6S871C2D1Ev();
extern void _ZN6S871C2D0Ev();
extern void _ZN6S871C52v2Ev();
extern void _ZN6S871C52v3Ev();
extern void _ZN6S871C52v4Ev();
extern void _ZN6S871C42v5Ev();
extern void _ZN6S871C42v6Ev();
extern void _ZN6S871C42v7Ev();
extern void _ZN6S871C42v8Ev();
extern void _ZN6S871C42v9Ev();
extern void _ZN6S871C43v10Ev();
extern void _ZN6S871C43v11Ev();
extern void _ZN6S871C43v12Ev();
extern void _ZN6S871C43v13Ev();
extern void _ZN6S871C33v14Ev();
extern void _ZN6S871C33v15Ev();
extern void _ZN6S871C33v16Ev();
extern void _ZN6S871C23v17Ev();
extern void _ZN6S871C23v18Ev();
static  VTBL_ENTRY vtc_S871C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S871C2[0]),
  (VTBL_ENTRY)&_ZN6S871C2D1Ev,
  (VTBL_ENTRY)&_ZN6S871C2D0Ev,
  (VTBL_ENTRY)&_ZN6S871C52v2Ev,
  (VTBL_ENTRY)&_ZN6S871C52v3Ev,
  (VTBL_ENTRY)&_ZN6S871C52v4Ev,
  (VTBL_ENTRY)&_ZN6S871C42v5Ev,
  (VTBL_ENTRY)&_ZN6S871C42v6Ev,
  (VTBL_ENTRY)&_ZN6S871C42v7Ev,
  (VTBL_ENTRY)&_ZN6S871C42v8Ev,
  (VTBL_ENTRY)&_ZN6S871C42v9Ev,
  (VTBL_ENTRY)&_ZN6S871C43v10Ev,
  (VTBL_ENTRY)&_ZN6S871C43v11Ev,
  (VTBL_ENTRY)&_ZN6S871C43v12Ev,
  (VTBL_ENTRY)&_ZN6S871C43v13Ev,
  (VTBL_ENTRY)&_ZN6S871C33v14Ev,
  (VTBL_ENTRY)&_ZN6S871C33v15Ev,
  (VTBL_ENTRY)&_ZN6S871C33v16Ev,
  (VTBL_ENTRY)&_ZN6S871C23v17Ev,
  (VTBL_ENTRY)&_ZN6S871C23v18Ev,
};
extern VTBL_ENTRY _ZTI6S871C2[];
extern  VTBL_ENTRY _ZTV6S871C2[];
Class_Descriptor cd_S871C2 = {  "S871C2", // class name
  bases_S871C2, 3,
  &(vtc_S871C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S871C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S871C2),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  S871C1  : S871C2 {
  void *s871c1f0;
  virtual  ~S871C1(); // _ZN6S871C1D1Ev
  virtual void  v1(); // _ZN6S871C12v1Ev
  S871C1(); // tgen
};
//SIG(1 S871C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp[2]} vd v14 v15 v16 Fp[4] Fi} vd v17 v18 Fp[3] Fi Fc Fp Fc Fi} vd v1 Fp}


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

static void Test_S871C1()
{
  extern Class_Descriptor cd_S871C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,24)];
    init_test(&cd_S871C1, buf);
    S871C1 *dp, &lv = *(dp=new (buf) S871C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,92), "sizeof(S871C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S871C1)");
    check_base_class_offset(lv, (S871C5*)(S871C4*)(S871C3*)(S871C2*), 0, "S871C1");
    check_base_class_offset(lv, (S871C4*)(S871C3*)(S871C2*), 0, "S871C1");
    check_base_class_offset(lv, (S871C3*)(S871C2*), 0, "S871C1");
    check_base_class_offset(lv, (S871C2*), 0, "S871C1");
    check_field_offset(lv, s871c1f0, ABISELECT(144,88), "S871C1.s871c1f0");
    test_class_info(&lv, &cd_S871C1);
    dp->~S871C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS871C1(Test_S871C1, "S871C1", ABISELECT(152,92));

#else // __cplusplus

extern void _ZN6S871C1C1Ev();
extern void _ZN6S871C1D1Ev();
Name_Map name_map_S871C1[] = {
  NSPAIR(_ZN6S871C1C1Ev),
  NSPAIR(_ZN6S871C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S871C5;
extern VTBL_ENTRY _ZTI6S871C5[];
extern  VTBL_ENTRY _ZTV6S871C5[];
extern Class_Descriptor cd_S871C4;
extern VTBL_ENTRY _ZTI6S871C4[];
extern  VTBL_ENTRY _ZTV6S871C4[];
extern Class_Descriptor cd_S871C3;
extern VTBL_ENTRY _ZTI6S871C3[];
extern  VTBL_ENTRY _ZTV6S871C3[];
extern Class_Descriptor cd_S871C2;
extern VTBL_ENTRY _ZTI6S871C2[];
extern  VTBL_ENTRY _ZTV6S871C2[];
static Base_Class bases_S871C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S871C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S871C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S871C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S871C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S871C1[];
extern void _ZN6S871C1D1Ev();
extern void _ZN6S871C1D0Ev();
extern void _ZN6S871C52v2Ev();
extern void _ZN6S871C52v3Ev();
extern void _ZN6S871C52v4Ev();
extern void _ZN6S871C42v5Ev();
extern void _ZN6S871C42v6Ev();
extern void _ZN6S871C42v7Ev();
extern void _ZN6S871C42v8Ev();
extern void _ZN6S871C42v9Ev();
extern void _ZN6S871C43v10Ev();
extern void _ZN6S871C43v11Ev();
extern void _ZN6S871C43v12Ev();
extern void _ZN6S871C43v13Ev();
extern void _ZN6S871C33v14Ev();
extern void _ZN6S871C33v15Ev();
extern void _ZN6S871C33v16Ev();
extern void _ZN6S871C23v17Ev();
extern void _ZN6S871C23v18Ev();
extern void _ZN6S871C12v1Ev();
static  VTBL_ENTRY vtc_S871C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S871C1[0]),
  (VTBL_ENTRY)&_ZN6S871C1D1Ev,
  (VTBL_ENTRY)&_ZN6S871C1D0Ev,
  (VTBL_ENTRY)&_ZN6S871C52v2Ev,
  (VTBL_ENTRY)&_ZN6S871C52v3Ev,
  (VTBL_ENTRY)&_ZN6S871C52v4Ev,
  (VTBL_ENTRY)&_ZN6S871C42v5Ev,
  (VTBL_ENTRY)&_ZN6S871C42v6Ev,
  (VTBL_ENTRY)&_ZN6S871C42v7Ev,
  (VTBL_ENTRY)&_ZN6S871C42v8Ev,
  (VTBL_ENTRY)&_ZN6S871C42v9Ev,
  (VTBL_ENTRY)&_ZN6S871C43v10Ev,
  (VTBL_ENTRY)&_ZN6S871C43v11Ev,
  (VTBL_ENTRY)&_ZN6S871C43v12Ev,
  (VTBL_ENTRY)&_ZN6S871C43v13Ev,
  (VTBL_ENTRY)&_ZN6S871C33v14Ev,
  (VTBL_ENTRY)&_ZN6S871C33v15Ev,
  (VTBL_ENTRY)&_ZN6S871C33v16Ev,
  (VTBL_ENTRY)&_ZN6S871C23v17Ev,
  (VTBL_ENTRY)&_ZN6S871C23v18Ev,
  (VTBL_ENTRY)&_ZN6S871C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S871C1[];
extern  VTBL_ENTRY _ZTV6S871C1[];
Class_Descriptor cd_S871C1 = {  "S871C1", // class name
  bases_S871C1, 4,
  &(vtc_S871C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,92), // object size
  NSPAIRA(_ZTI6S871C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S871C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19058C4  {
  long double s19058c4f0;
  long s19058c4f1;
  virtual void  v4(); // _ZN8S19058C42v4Ev
  virtual void  v5(); // _ZN8S19058C42v5Ev
  virtual void  v6(); // _ZN8S19058C42v6Ev
  virtual void  v7(); // _ZN8S19058C42v7Ev
  virtual void  v8(); // _ZN8S19058C42v8Ev
  virtual void  v9(); // _ZN8S19058C42v9Ev
  ~S19058C4(); // tgen
  S19058C4(); // tgen
};
//SIG(-1 S19058C4) C1{ v1 v2 v3 v4 v5 v6 FD Fl}


void  S19058C4 ::v4(){vfunc_called(this, "_ZN8S19058C42v4Ev");}
void  S19058C4 ::v5(){vfunc_called(this, "_ZN8S19058C42v5Ev");}
void  S19058C4 ::v6(){vfunc_called(this, "_ZN8S19058C42v6Ev");}
void  S19058C4 ::v7(){vfunc_called(this, "_ZN8S19058C42v7Ev");}
void  S19058C4 ::v8(){vfunc_called(this, "_ZN8S19058C42v8Ev");}
void  S19058C4 ::v9(){vfunc_called(this, "_ZN8S19058C42v9Ev");}
S19058C4 ::~S19058C4(){ note_dtor("S19058C4", this);} // tgen
S19058C4 ::S19058C4(){ note_ctor("S19058C4", this);} // tgen

static void Test_S19058C4()
{
  extern Class_Descriptor cd_S19058C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19058C4, buf);
    S19058C4 *dp, &lv = *(dp=new (buf) S19058C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19058C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19058C4)");
    check_field_offset(lv, s19058c4f0, ABISELECT(16,4), "S19058C4.s19058c4f0");
    check_field_offset(lv, s19058c4f1, ABISELECT(32,16), "S19058C4.s19058c4f1");
    test_class_info(&lv, &cd_S19058C4);
    dp->~S19058C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19058C4(Test_S19058C4, "S19058C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19058C4C1Ev();
extern void _ZN8S19058C4D1Ev();
Name_Map name_map_S19058C4[] = {
  NSPAIR(_ZN8S19058C4C1Ev),
  NSPAIR(_ZN8S19058C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19058C4[];
extern void _ZN8S19058C42v4Ev();
extern void _ZN8S19058C42v5Ev();
extern void _ZN8S19058C42v6Ev();
extern void _ZN8S19058C42v7Ev();
extern void _ZN8S19058C42v8Ev();
extern void _ZN8S19058C42v9Ev();
static  VTBL_ENTRY vtc_S19058C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19058C4[0]),
  (VTBL_ENTRY)&_ZN8S19058C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v9Ev,
};
extern VTBL_ENTRY _ZTI8S19058C4[];
extern  VTBL_ENTRY _ZTV8S19058C4[];
Class_Descriptor cd_S19058C4 = {  "S19058C4", // class name
  0,0,//no base classes
  &(vtc_S19058C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19058C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19058C4),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  S19058C3  : S19058C4 {
  int s19058c3f0;
  virtual void  v10(); // _ZN8S19058C33v10Ev
  virtual void  v11(); // _ZN8S19058C33v11Ev
  virtual void  v12(); // _ZN8S19058C33v12Ev
  virtual void  v13(); // _ZN8S19058C33v13Ev
  virtual void  v14(); // _ZN8S19058C33v14Ev
  virtual void  v15(); // _ZN8S19058C33v15Ev
  virtual void  v16(); // _ZN8S19058C33v16Ev
  ~S19058C3(); // tgen
  S19058C3(); // tgen
};
//SIG(-1 S19058C3) C1{ BC2{ v8 v9 v10 v11 v12 v13 FD Fl} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S19058C3 ::v10(){vfunc_called(this, "_ZN8S19058C33v10Ev");}
void  S19058C3 ::v11(){vfunc_called(this, "_ZN8S19058C33v11Ev");}
void  S19058C3 ::v12(){vfunc_called(this, "_ZN8S19058C33v12Ev");}
void  S19058C3 ::v13(){vfunc_called(this, "_ZN8S19058C33v13Ev");}
void  S19058C3 ::v14(){vfunc_called(this, "_ZN8S19058C33v14Ev");}
void  S19058C3 ::v15(){vfunc_called(this, "_ZN8S19058C33v15Ev");}
void  S19058C3 ::v16(){vfunc_called(this, "_ZN8S19058C33v16Ev");}
S19058C3 ::~S19058C3(){ note_dtor("S19058C3", this);} // tgen
S19058C3 ::S19058C3(){ note_ctor("S19058C3", this);} // tgen

static void Test_S19058C3()
{
  extern Class_Descriptor cd_S19058C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19058C3, buf);
    S19058C3 *dp, &lv = *(dp=new (buf) S19058C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19058C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19058C3)");
    check_base_class_offset(lv, (S19058C4*), 0, "S19058C3");
    check_field_offset(lv, s19058c3f0, ABISELECT(40,20), "S19058C3.s19058c3f0");
    test_class_info(&lv, &cd_S19058C3);
    dp->~S19058C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19058C3(Test_S19058C3, "S19058C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19058C3C1Ev();
extern void _ZN8S19058C3D1Ev();
Name_Map name_map_S19058C3[] = {
  NSPAIR(_ZN8S19058C3C1Ev),
  NSPAIR(_ZN8S19058C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19058C4;
extern VTBL_ENTRY _ZTI8S19058C4[];
extern  VTBL_ENTRY _ZTV8S19058C4[];
static Base_Class bases_S19058C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19058C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19058C3[];
extern void _ZN8S19058C42v4Ev();
extern void _ZN8S19058C42v5Ev();
extern void _ZN8S19058C42v6Ev();
extern void _ZN8S19058C42v7Ev();
extern void _ZN8S19058C42v8Ev();
extern void _ZN8S19058C42v9Ev();
extern void _ZN8S19058C33v10Ev();
extern void _ZN8S19058C33v11Ev();
extern void _ZN8S19058C33v12Ev();
extern void _ZN8S19058C33v13Ev();
extern void _ZN8S19058C33v14Ev();
extern void _ZN8S19058C33v15Ev();
extern void _ZN8S19058C33v16Ev();
static  VTBL_ENTRY vtc_S19058C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19058C3[0]),
  (VTBL_ENTRY)&_ZN8S19058C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S19058C3[];
extern  VTBL_ENTRY _ZTV8S19058C3[];
Class_Descriptor cd_S19058C3 = {  "S19058C3", // class name
  bases_S19058C3, 1,
  &(vtc_S19058C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19058C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19058C3),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  S19058C2  : S19058C3 {
  __tsi64 s19058c2f0[2];
  ::S19058C4 s19058c2f1;
  virtual  ~S19058C2(); // _ZN8S19058C2D1Ev
  virtual void  v17(); // _ZN8S19058C23v17Ev
  virtual void  v18(); // _ZN8S19058C23v18Ev
  virtual void  v19(); // _ZN8S19058C23v19Ev
  virtual void  v20(); // _ZN8S19058C23v20Ev
  S19058C2(); // tgen
};
//SIG(-1 S19058C2) C1{ BC2{ BC3{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v1 v2 v3 v4 FL[2] FC3}


 S19058C2 ::~S19058C2(){ note_dtor("S19058C2", this);}
void  S19058C2 ::v17(){vfunc_called(this, "_ZN8S19058C23v17Ev");}
void  S19058C2 ::v18(){vfunc_called(this, "_ZN8S19058C23v18Ev");}
void  S19058C2 ::v19(){vfunc_called(this, "_ZN8S19058C23v19Ev");}
void  S19058C2 ::v20(){vfunc_called(this, "_ZN8S19058C23v20Ev");}
S19058C2 ::S19058C2(){ note_ctor("S19058C2", this);} // tgen

static void Test_S19058C2()
{
  extern Class_Descriptor cd_S19058C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S19058C2, buf);
    S19058C2 *dp, &lv = *(dp=new (buf) S19058C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19058C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19058C2)");
    check_base_class_offset(lv, (S19058C4*)(S19058C3*), 0, "S19058C2");
    check_base_class_offset(lv, (S19058C3*), 0, "S19058C2");
    check_field_offset(lv, s19058c2f0, ABISELECT(48,24), "S19058C2.s19058c2f0");
    check_field_offset(lv, s19058c2f1, ABISELECT(64,40), "S19058C2.s19058c2f1");
    test_class_info(&lv, &cd_S19058C2);
    dp->~S19058C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19058C2(Test_S19058C2, "S19058C2", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S19058C2C1Ev();
extern void _ZN8S19058C2D1Ev();
Name_Map name_map_S19058C2[] = {
  NSPAIR(_ZN8S19058C2C1Ev),
  NSPAIR(_ZN8S19058C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19058C4;
extern VTBL_ENTRY _ZTI8S19058C4[];
extern  VTBL_ENTRY _ZTV8S19058C4[];
extern Class_Descriptor cd_S19058C3;
extern VTBL_ENTRY _ZTI8S19058C3[];
extern  VTBL_ENTRY _ZTV8S19058C3[];
static Base_Class bases_S19058C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19058C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19058C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI8S19058C2[];
extern void _ZN8S19058C42v4Ev();
extern void _ZN8S19058C42v5Ev();
extern void _ZN8S19058C42v6Ev();
extern void _ZN8S19058C42v7Ev();
extern void _ZN8S19058C42v8Ev();
extern void _ZN8S19058C42v9Ev();
extern void _ZN8S19058C33v10Ev();
extern void _ZN8S19058C33v11Ev();
extern void _ZN8S19058C33v12Ev();
extern void _ZN8S19058C33v13Ev();
extern void _ZN8S19058C33v14Ev();
extern void _ZN8S19058C33v15Ev();
extern void _ZN8S19058C33v16Ev();
extern void _ZN8S19058C2D1Ev();
extern void _ZN8S19058C2D0Ev();
extern void _ZN8S19058C23v17Ev();
extern void _ZN8S19058C23v18Ev();
extern void _ZN8S19058C23v19Ev();
extern void _ZN8S19058C23v20Ev();
static  VTBL_ENTRY vtc_S19058C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19058C2[0]),
  (VTBL_ENTRY)&_ZN8S19058C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v16Ev,
  (VTBL_ENTRY)&_ZN8S19058C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19058C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v20Ev,
};
extern VTBL_ENTRY _ZTI8S19058C2[];
extern  VTBL_ENTRY _ZTV8S19058C2[];
Class_Descriptor cd_S19058C2 = {  "S19058C2", // class name
  bases_S19058C2, 2,
  &(vtc_S19058C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S19058C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19058C2),21, //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  S19058C5  {
  ::S19058C4 s19058c5f0;
  int s19058c5f1;
  virtual  ~S19058C5(); // _ZN8S19058C5D1Ev
  virtual void  v21(); // _ZN8S19058C53v21Ev
  virtual void  v22(); // _ZN8S19058C53v22Ev
  virtual void  v23(); // _ZN8S19058C53v23Ev
  virtual void  v24(); // _ZN8S19058C53v24Ev
  S19058C5(); // tgen
};
//SIG(-1 S19058C5) C1{ vd v1 v2 v3 v4 FC2{ v5 v6 v7 v8 v9 v10 FD Fl} Fi}


 S19058C5 ::~S19058C5(){ note_dtor("S19058C5", this);}
void  S19058C5 ::v21(){vfunc_called(this, "_ZN8S19058C53v21Ev");}
void  S19058C5 ::v22(){vfunc_called(this, "_ZN8S19058C53v22Ev");}
void  S19058C5 ::v23(){vfunc_called(this, "_ZN8S19058C53v23Ev");}
void  S19058C5 ::v24(){vfunc_called(this, "_ZN8S19058C53v24Ev");}
S19058C5 ::S19058C5(){ note_ctor("S19058C5", this);} // tgen

static void Test_S19058C5()
{
  extern Class_Descriptor cd_S19058C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,8)];
    init_test(&cd_S19058C5, buf);
    S19058C5 *dp, &lv = *(dp=new (buf) S19058C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,28), "sizeof(S19058C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19058C5)");
    check_field_offset(lv, s19058c5f0, ABISELECT(16,4), "S19058C5.s19058c5f0");
    check_field_offset(lv, s19058c5f1, ABISELECT(64,24), "S19058C5.s19058c5f1");
    test_class_info(&lv, &cd_S19058C5);
    dp->~S19058C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19058C5(Test_S19058C5, "S19058C5", ABISELECT(80,28));

#else // __cplusplus

extern void _ZN8S19058C5C1Ev();
extern void _ZN8S19058C5D1Ev();
Name_Map name_map_S19058C5[] = {
  NSPAIR(_ZN8S19058C5C1Ev),
  NSPAIR(_ZN8S19058C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19058C5[];
extern void _ZN8S19058C5D1Ev();
extern void _ZN8S19058C5D0Ev();
extern void _ZN8S19058C53v21Ev();
extern void _ZN8S19058C53v22Ev();
extern void _ZN8S19058C53v23Ev();
extern void _ZN8S19058C53v24Ev();
static  VTBL_ENTRY vtc_S19058C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19058C5[0]),
  (VTBL_ENTRY)&_ZN8S19058C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19058C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v24Ev,
};
extern VTBL_ENTRY _ZTI8S19058C5[];
extern  VTBL_ENTRY _ZTV8S19058C5[];
Class_Descriptor cd_S19058C5 = {  "S19058C5", // class name
  0,0,//no base classes
  &(vtc_S19058C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,28), // object size
  NSPAIRA(_ZTI8S19058C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19058C5),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  S19058C6  : S19058C4 {
  virtual void  v25(); // _ZN8S19058C63v25Ev
  virtual void  v26(); // _ZN8S19058C63v26Ev
  ~S19058C6(); // tgen
  S19058C6(); // tgen
};
//SIG(-1 S19058C6) C1{ BC2{ v3 v4 v5 v6 v7 v8 FD Fl} v1 v2}


void  S19058C6 ::v25(){vfunc_called(this, "_ZN8S19058C63v25Ev");}
void  S19058C6 ::v26(){vfunc_called(this, "_ZN8S19058C63v26Ev");}
S19058C6 ::~S19058C6(){ note_dtor("S19058C6", this);} // tgen
S19058C6 ::S19058C6(){ note_ctor("S19058C6", this);} // tgen

static void Test_S19058C6()
{
  extern Class_Descriptor cd_S19058C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19058C6, buf);
    S19058C6 *dp, &lv = *(dp=new (buf) S19058C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19058C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19058C6)");
    check_base_class_offset(lv, (S19058C4*), 0, "S19058C6");
    test_class_info(&lv, &cd_S19058C6);
    dp->~S19058C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19058C6(Test_S19058C6, "S19058C6", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19058C6C1Ev();
extern void _ZN8S19058C6D1Ev();
Name_Map name_map_S19058C6[] = {
  NSPAIR(_ZN8S19058C6C1Ev),
  NSPAIR(_ZN8S19058C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19058C4;
extern VTBL_ENTRY _ZTI8S19058C4[];
extern  VTBL_ENTRY _ZTV8S19058C4[];
static Base_Class bases_S19058C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19058C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19058C6[];
extern void _ZN8S19058C42v4Ev();
extern void _ZN8S19058C42v5Ev();
extern void _ZN8S19058C42v6Ev();
extern void _ZN8S19058C42v7Ev();
extern void _ZN8S19058C42v8Ev();
extern void _ZN8S19058C42v9Ev();
extern void _ZN8S19058C63v25Ev();
extern void _ZN8S19058C63v26Ev();
static  VTBL_ENTRY vtc_S19058C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19058C6[0]),
  (VTBL_ENTRY)&_ZN8S19058C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19058C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19058C63v26Ev,
};
extern VTBL_ENTRY _ZTI8S19058C6[];
extern  VTBL_ENTRY _ZTV8S19058C6[];
Class_Descriptor cd_S19058C6 = {  "S19058C6", // class name
  bases_S19058C6, 1,
  &(vtc_S19058C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19058C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19058C6),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  S19058C1  : virtual S19058C2 , virtual S19058C5 , S19058C6 {
  int s19058c1f0;
  virtual  ~S19058C1(); // _ZN8S19058C1D2Ev
  virtual void  v1(); // _ZN8S19058C12v1Ev
  virtual void  v2(); // _ZN8S19058C12v2Ev
  virtual void  v3(); // _ZN8S19058C12v3Ev
  S19058C1(); // tgen
};
//SIG(1 S19058C1) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8 v9 FD Fl} v10 v11 v12 v13 v14 v15 v16 Fi} vd v17 v18 v19 v20 FL[2] FC4} VBC5{ vd v21 v22 v23 v24 FC4 Fi} BC6{ BC4 v25 v26} vd v1 v2 v3 Fi}


 S19058C1 ::~S19058C1(){ note_dtor("S19058C1", this);}
void  S19058C1 ::v1(){vfunc_called(this, "_ZN8S19058C12v1Ev");}
void  S19058C1 ::v2(){vfunc_called(this, "_ZN8S19058C12v2Ev");}
void  S19058C1 ::v3(){vfunc_called(this, "_ZN8S19058C12v3Ev");}
S19058C1 ::S19058C1(){ note_ctor("S19058C1", this);} // tgen

static void Test_S19058C1()
{
  extern Class_Descriptor cd_S19058C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,29)];
    init_test(&cd_S19058C1, buf);
    S19058C1 *dp, &lv = *(dp=new (buf) S19058C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,112), "sizeof(S19058C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19058C1)");
    check_base_class_offset(lv, (S19058C4*)(S19058C3*)(S19058C2*), ABISELECT(48,24), "S19058C1");
    check_base_class_offset(lv, (S19058C3*)(S19058C2*), ABISELECT(48,24), "S19058C1");
    check_base_class_offset(lv, (S19058C2*), ABISELECT(48,24), "S19058C1");
    check_base_class_offset(lv, (S19058C5*), ABISELECT(160,84), "S19058C1");
    check_base_class_offset(lv, (S19058C4*)(S19058C6*), 0, "S19058C1");
    check_base_class_offset(lv, (S19058C6*), 0, "S19058C1");
    check_field_offset(lv, s19058c1f0, ABISELECT(40,20), "S19058C1.s19058c1f0");
    test_class_info(&lv, &cd_S19058C1);
    dp->~S19058C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19058C1(Test_S19058C1, "S19058C1", ABISELECT(240,112));

#else // __cplusplus

extern void _ZN8S19058C1C1Ev();
extern void _ZN8S19058C1D2Ev();
Name_Map name_map_S19058C1[] = {
  NSPAIR(_ZN8S19058C1C1Ev),
  NSPAIR(_ZN8S19058C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19058C4;
extern VTBL_ENTRY _ZTI8S19058C4[];
extern  VTBL_ENTRY _ZTV8S19058C4[];
extern Class_Descriptor cd_S19058C3;
extern VTBL_ENTRY _ZTI8S19058C3[];
extern  VTBL_ENTRY _ZTV8S19058C3[];
extern Class_Descriptor cd_S19058C2;
extern VTBL_ENTRY _ZTI8S19058C2[];
extern  VTBL_ENTRY _ZTV8S19058C2[];
extern Class_Descriptor cd_S19058C5;
extern VTBL_ENTRY _ZTI8S19058C5[];
extern  VTBL_ENTRY _ZTV8S19058C5[];
extern Class_Descriptor cd_S19058C4;
extern VTBL_ENTRY _ZTI8S19058C4[];
extern  VTBL_ENTRY _ZTV8S19058C4[];
extern Class_Descriptor cd_S19058C6;
extern VTBL_ENTRY _ZTI8S19058C6[];
extern  VTBL_ENTRY _ZTV8S19058C6[];
static Base_Class bases_S19058C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19058C4,    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
  0, 0},
  {&cd_S19058C3,    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_S19058C2,    ABISELECT(48,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19058C5,    ABISELECT(160,84), //bcp->offset
    56, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19058C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19058C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19058C1[];
extern void _ZN8S19058C42v4Ev();
extern void _ZN8S19058C42v5Ev();
extern void _ZN8S19058C42v6Ev();
extern void _ZN8S19058C42v7Ev();
extern void _ZN8S19058C42v8Ev();
extern void _ZN8S19058C42v9Ev();
extern void _ZN8S19058C63v25Ev();
extern void _ZN8S19058C63v26Ev();
extern void _ZN8S19058C1D1Ev();
extern void _ZN8S19058C1D0Ev();
extern void _ZN8S19058C12v1Ev();
extern void _ZN8S19058C12v2Ev();
extern void _ZN8S19058C12v3Ev();
extern void _ZN8S19058C42v4Ev();
extern void _ZN8S19058C42v5Ev();
extern void _ZN8S19058C42v6Ev();
extern void _ZN8S19058C42v7Ev();
extern void _ZN8S19058C42v8Ev();
extern void _ZN8S19058C42v9Ev();
extern void _ZN8S19058C33v10Ev();
extern void _ZN8S19058C33v11Ev();
extern void _ZN8S19058C33v12Ev();
extern void _ZN8S19058C33v13Ev();
extern void _ZN8S19058C33v14Ev();
extern void _ZN8S19058C33v15Ev();
extern void _ZN8S19058C33v16Ev();
extern void ABISELECT(_ZTv0_n128_N8S19058C1D1Ev,_ZTv0_n64_N8S19058C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19058C1D1Ev,_ZThn24_N8S19058C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19058C1D0Ev,_ZTv0_n64_N8S19058C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19058C1D0Ev,_ZThn24_N8S19058C1D0Ev)() __attribute__((weak));
extern void _ZN8S19058C23v17Ev();
extern void _ZN8S19058C23v18Ev();
extern void _ZN8S19058C23v19Ev();
extern void _ZN8S19058C23v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S19058C1D1Ev,_ZTv0_n12_N8S19058C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S19058C1D1Ev,_ZThn84_N8S19058C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19058C1D0Ev,_ZTv0_n12_N8S19058C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S19058C1D0Ev,_ZThn84_N8S19058C1D0Ev)() __attribute__((weak));
extern void _ZN8S19058C53v21Ev();
extern void _ZN8S19058C53v22Ev();
extern void _ZN8S19058C53v23Ev();
extern void _ZN8S19058C53v24Ev();
static  VTBL_ENTRY vtc_S19058C1[] = {
  ABISELECT(160,84),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19058C1[0]),
  (VTBL_ENTRY)&_ZN8S19058C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19058C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19058C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19058C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19058C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19058C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19058C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19058C12v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19058C1[0]),
  (VTBL_ENTRY)&_ZN8S19058C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19058C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19058C33v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19058C1D1Ev,_ZTv0_n64_N8S19058C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19058C1D0Ev,_ZTv0_n64_N8S19058C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19058C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19058C23v20Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S19058C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19058C1D1Ev,_ZTv0_n12_N8S19058C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19058C1D0Ev,_ZTv0_n12_N8S19058C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19058C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19058C53v24Ev,
};
extern VTBL_ENTRY _ZTV8S19058C1[];
static  VTT_ENTRY vtt_S19058C1[] = {
  {&(_ZTV8S19058C1[4]),  4,69},
  {&(_ZTV8S19058C1[37]),  37,69},
  {&(_ZTV8S19058C1[63]),  63,69},
};
extern VTBL_ENTRY _ZTI8S19058C1[];
extern  VTBL_ENTRY _ZTV8S19058C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19058C1[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19058C1D0Ev,_ZTv0_n12_N8S19058C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19058C1D0Ev,_ZThn84_N8S19058C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19058C1D1Ev,_ZTv0_n12_N8S19058C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19058C1D1Ev,_ZThn84_N8S19058C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19058C1D0Ev,_ZTv0_n64_N8S19058C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19058C1D0Ev,_ZThn24_N8S19058C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19058C1D1Ev,_ZTv0_n64_N8S19058C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19058C1D1Ev,_ZThn24_N8S19058C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19058C1 = {  "S19058C1", // class name
  bases_S19058C1, 6,
  &(vtc_S19058C1[0]), // expected_vtbl_contents
  &(vtt_S19058C1[0]), // expected_vtt_contents
  ABISELECT(240,112), // object size
  NSPAIRA(_ZTI8S19058C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19058C1),69, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19058C1),3, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6109C8  : S19490C10_nt , S19490C18 , S19490C12 {
};
//SIG(-1 S6109C8) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S6109C8()
{
  extern Class_Descriptor cd_S6109C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6109C8, buf);
    S6109C8 &lv = *(new (buf) S6109C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6109C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6109C8)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S6109C8");
    check_base_class_offset(lv, (S19490C18*), 0, "S6109C8");
    check_base_class_offset(lv, (S19490C12*), 0, "S6109C8");
    test_class_info(&lv, &cd_S6109C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C8(Test_S6109C8, "S6109C8", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S6109C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6109C8[];
Class_Descriptor cd_S6109C8 = {  "S6109C8", // class name
  bases_S6109C8, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6109C8),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6109C7  : virtual S6109C8 , virtual S19490C11 , S19490C18 {
  ~S6109C7(); // tgen
  S6109C7(); // tgen
};
//SIG(-1 S6109C7) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S6109C7()
{
  extern Class_Descriptor cd_S6109C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6109C7, buf);
    S6109C7 *dp, &lv = *(dp=new (buf) S6109C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6109C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6109C7)");
    check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*), ABISELECT(8,4), "S6109C7");
    check_base_class_offset(lv, (S19490C18*)(S6109C8*), ABISELECT(8,4), "S6109C7");
    check_base_class_offset(lv, (S19490C12*)(S6109C8*), ABISELECT(8,4), "S6109C7");
    check_base_class_offset(lv, (S6109C8*), ABISELECT(8,4), "S6109C7");
    check_base_class_offset(lv, (S19490C11*), 0, "S6109C7");
    /*is_ambiguous_... S6109C7::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S6109C7");
    test_class_info(&lv, &cd_S6109C7);
    dp->~S6109C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C7(Test_S6109C7, "S6109C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6109C7C1Ev();
extern void _ZN7S6109C7D1Ev();
Name_Map name_map_S6109C7[] = {
  NSPAIR(_ZN7S6109C7C1Ev),
  NSPAIR(_ZN7S6109C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S6109C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6109C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6109C7[];
static  VTBL_ENTRY vtc_S6109C7[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C7[0]),
};
extern VTBL_ENTRY _ZTV7S6109C7[];
static  VTT_ENTRY vtt_S6109C7[] = {
  {&(_ZTV7S6109C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S6109C7[];
extern  VTBL_ENTRY _ZTV7S6109C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C7[];
Class_Descriptor cd_S6109C7 = {  "S6109C7", // class name
  bases_S6109C7, 6,
  &(vtc_S6109C7[0]), // expected_vtbl_contents
  &(vtt_S6109C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6109C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6109C7),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6109C7),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  S6109C6  : virtual S6109C7 , S19490C10_nt , S19490C12 {
  long double s6109c6f0;
  int s6109c6f1;
  virtual  ~S6109C6(); // _ZN7S6109C6D2Ev
  S6109C6(); // tgen
};
//SIG(-1 S6109C6) C1{ VBC2{ VBC3{ BC4{ m Fp} BC5{ m} BC6{ m}} VBC7{ m} BC5} BC4 BC6 vd FD Fi}


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

static void Test_S6109C6()
{
  extern Class_Descriptor cd_S6109C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S6109C6, buf);
    S6109C6 *dp, &lv = *(dp=new (buf) S6109C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6109C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6109C6)");
    check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*), ABISELECT(40,24), "S6109C6");
    check_base_class_offset(lv, (S19490C18*)(S6109C8*), ABISELECT(40,24), "S6109C6");
    check_base_class_offset(lv, (S19490C12*)(S6109C8*), ABISELECT(40,24), "S6109C6");
    check_base_class_offset(lv, (S6109C8*)(S6109C7*), ABISELECT(40,24), "S6109C6");
    check_base_class_offset(lv, (S19490C11*)(S6109C7*), 0, "S6109C6");
    /*is_ambiguous_... S6109C7::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C7*), 0, "S6109C6");
    check_base_class_offset(lv, (S6109C7*), 0, "S6109C6");
    /*is_ambiguous_... S6109C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S6109C6");
    /*is_ambiguous_... S6109C6::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*), 0, "S6109C6");
    check_field_offset(lv, s6109c6f0, ABISELECT(16,8), "S6109C6.s6109c6f0");
    check_field_offset(lv, s6109c6f1, ABISELECT(32,20), "S6109C6.s6109c6f1");
    test_class_info(&lv, &cd_S6109C6);
    dp->~S6109C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C6(Test_S6109C6, "S6109C6", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6109C6C1Ev();
extern void _ZN7S6109C6D2Ev();
Name_Map name_map_S6109C6[] = {
  NSPAIR(_ZN7S6109C6C1Ev),
  NSPAIR(_ZN7S6109C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S6109C7;
extern VTBL_ENTRY _ZTI7S6109C7[];
extern  VTBL_ENTRY _ZTV7S6109C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S6109C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6109C8,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6109C7,    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_S19490C10_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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6109C6[];
extern void _ZN7S6109C6D1Ev();
extern void _ZN7S6109C6D0Ev();
static  VTBL_ENTRY vtc_S6109C6[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
  (VTBL_ENTRY)&_ZN7S6109C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C6D0Ev,
};
extern VTBL_ENTRY _ZTV7S6109C6[];
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C6[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C7[0]),
};
static  VTT_ENTRY vtt_S6109C6[] = {
  {&(_ZTV7S6109C6[5]),  5,7},
  {&(_ZTV7S6109C6[5]),  5,7},
  {&(_tg__ZTV7S6109C7__7S6109C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S6109C6[];
extern  VTBL_ENTRY _ZTV7S6109C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C6[];
Class_Descriptor cd_S6109C6 = {  "S6109C6", // class name
  bases_S6109C6, 9,
  &(vtc_S6109C6[0]), // expected_vtbl_contents
  &(vtt_S6109C6[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6109C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6109C6),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6109C6),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  S6109C12  : virtual S19490C12 {
  void *s6109c12f0[2];
  ~S6109C12(); // tgen
  S6109C12(); // tgen
};
//SIG(-1 S6109C12) C1{ VBC2{ m} Fp[2]}


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

static void Test_S6109C12()
{
  extern Class_Descriptor cd_S6109C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6109C12, buf);
    S6109C12 *dp, &lv = *(dp=new (buf) S6109C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6109C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6109C12)");
    check_base_class_offset(lv, (S19490C12*), 0, "S6109C12");
    check_field_offset(lv, s6109c12f0, ABISELECT(8,4), "S6109C12.s6109c12f0");
    test_class_info(&lv, &cd_S6109C12);
    dp->~S6109C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C12(Test_S6109C12, "S6109C12", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S6109C12C1Ev();
extern void _ZN8S6109C12D1Ev();
Name_Map name_map_S6109C12[] = {
  NSPAIR(_ZN8S6109C12C1Ev),
  NSPAIR(_ZN8S6109C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S6109C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S6109C12[];
static  VTBL_ENTRY vtc_S6109C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C12[0]),
};
extern VTBL_ENTRY _ZTV8S6109C12[];
static  VTT_ENTRY vtt_S6109C12[] = {
  {&(_ZTV8S6109C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6109C12[];
extern  VTBL_ENTRY _ZTV8S6109C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C12[];
Class_Descriptor cd_S6109C12 = {  "S6109C12", // class name
  bases_S6109C12, 1,
  &(vtc_S6109C12[0]), // expected_vtbl_contents
  &(vtt_S6109C12[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S6109C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6109C12),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6109C12),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  S6109C13  : virtual S19490C12 {
  int s6109c13f0;
  ~S6109C13(); // tgen
  S6109C13(); // tgen
};
//SIG(-1 S6109C13) C1{ VBC2{ m} Fi}


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

static void Test_S6109C13()
{
  extern Class_Descriptor cd_S6109C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6109C13, buf);
    S6109C13 *dp, &lv = *(dp=new (buf) S6109C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6109C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6109C13)");
    check_base_class_offset(lv, (S19490C12*), 0, "S6109C13");
    check_field_offset(lv, s6109c13f0, ABISELECT(8,4), "S6109C13.s6109c13f0");
    test_class_info(&lv, &cd_S6109C13);
    dp->~S6109C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C13(Test_S6109C13, "S6109C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S6109C13C1Ev();
extern void _ZN8S6109C13D1Ev();
Name_Map name_map_S6109C13[] = {
  NSPAIR(_ZN8S6109C13C1Ev),
  NSPAIR(_ZN8S6109C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S6109C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S6109C13[];
static  VTBL_ENTRY vtc_S6109C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C13[0]),
};
extern VTBL_ENTRY _ZTV8S6109C13[];
static  VTT_ENTRY vtt_S6109C13[] = {
  {&(_ZTV8S6109C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6109C13[];
extern  VTBL_ENTRY _ZTV8S6109C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C13[];
Class_Descriptor cd_S6109C13 = {  "S6109C13", // class name
  bases_S6109C13, 1,
  &(vtc_S6109C13[0]), // expected_vtbl_contents
  &(vtt_S6109C13[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S6109C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6109C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6109C13),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  S6109C5  : S6109C6 , virtual S6109C12 , virtual S6109C13 {
  ~S6109C5(); // tgen
  S6109C5(); // tgen
};
//SIG(-1 S6109C5) C1{ BC2{ VBC3{ VBC4{ BC5{ m Fp} BC6{ m} BC7{ m}} VBC8{ m} BC6} BC5 BC7 vd FD Fi} VBC9{ VBC7 Fp[2]} VBC10{ VBC7 Fi}}


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

static void Test_S6109C5()
{
  extern Class_Descriptor cd_S6109C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S6109C5, buf);
    S6109C5 *dp, &lv = *(dp=new (buf) S6109C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S6109C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6109C5)");
    check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*), ABISELECT(40,24), "S6109C5");
    check_base_class_offset(lv, (S19490C18*)(S6109C8*), ABISELECT(40,24), "S6109C5");
    check_base_class_offset(lv, (S19490C12*)(S6109C8*), ABISELECT(40,24), "S6109C5");
    check_base_class_offset(lv, (S6109C8*)(S6109C7*), ABISELECT(40,24), "S6109C5");
    check_base_class_offset(lv, (S19490C11*)(S6109C7*), 0, "S6109C5");
    /*is_ambiguous_... S6109C7::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C7*), 0, "S6109C5");
    check_base_class_offset(lv, (S6109C7*)(S6109C6*), 0, "S6109C5");
    /*is_ambiguous_... S6109C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S6109C6*), ABISELECT(8,4), "S6109C5");
    /*is_ambiguous_... S6109C6::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C6*), 0, "S6109C5");
    check_base_class_offset(lv, (S6109C6*), 0, "S6109C5");
    check_base_class_offset(lv, (S19490C12*)(S6109C12*), ABISELECT(72,40), "S6109C5");
    check_base_class_offset(lv, (S19490C12*)(S6109C13*), ABISELECT(72,40), "S6109C5");
    check_base_class_offset(lv, (S6109C12*), ABISELECT(48,28), "S6109C5");
    check_base_class_offset(lv, (S6109C13*), ABISELECT(72,40), "S6109C5");
    test_class_info(&lv, &cd_S6109C5);
    dp->~S6109C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C5(Test_S6109C5, "S6109C5", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN7S6109C5C1Ev();
extern void _ZN7S6109C5D1Ev();
Name_Map name_map_S6109C5[] = {
  NSPAIR(_ZN7S6109C5C1Ev),
  NSPAIR(_ZN7S6109C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S6109C7;
extern VTBL_ENTRY _ZTI7S6109C7[];
extern  VTBL_ENTRY _ZTV7S6109C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C6;
extern VTBL_ENTRY _ZTI7S6109C6[];
extern  VTBL_ENTRY _ZTV7S6109C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C12;
extern VTBL_ENTRY _ZTI8S6109C12[];
extern  VTBL_ENTRY _ZTV8S6109C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C12[];
extern Class_Descriptor cd_S6109C13;
extern VTBL_ENTRY _ZTI8S6109C13[];
extern  VTBL_ENTRY _ZTV8S6109C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C13[];
static Base_Class bases_S6109C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6109C8,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6109C7,    0, //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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6109C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    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, 1},
  {&cd_S6109C12,    ABISELECT(48,28), //bcp->offset
    10, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6109C13,    ABISELECT(72,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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},
  {0}};
extern VTBL_ENTRY _ZTI7S6109C5[];
extern void _ZN7S6109C5D1Ev();
extern void _ZN7S6109C5D0Ev();
static  VTBL_ENTRY vtc_S6109C5[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
  (VTBL_ENTRY)&_ZN7S6109C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C5D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
extern VTBL_ENTRY _ZTV7S6109C5[];
extern void _ZN7S6109C6D1Ev();
extern void _ZN7S6109C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C6__7S6109C5[] = {
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
  (VTBL_ENTRY)&_ZN7S6109C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C5[] = {
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C5[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C13[0]),
};
static  VTT_ENTRY vtt_S6109C5[] = {
  {&(_ZTV7S6109C5[8]),  8,16},
  {&(_tg__ZTV7S6109C6__7S6109C5[5]),  5,7},
  {&(_tg__ZTV7S6109C6__7S6109C5[5]),  5,7},
  {&(_ZTV7S6109C5[8]),  8,16},
  {&(_ZTV7S6109C5[13]),  13,16},
  {&(_ZTV7S6109C5[16]),  16,16},
  {&(_tg__ZTV7S6109C7__7S6109C5[4]),  4,4},
  {&(_tg__ZTV8S6109C12__7S6109C5[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6109C5[];
extern  VTBL_ENTRY _ZTV7S6109C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C5[];
Class_Descriptor cd_S6109C5 = {  "S6109C5", // class name
  bases_S6109C5, 13,
  &(vtc_S6109C5[0]), // expected_vtbl_contents
  &(vtt_S6109C5[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI7S6109C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6109C5),16, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6109C5),9, //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  S6109C14  : S19490C18 , virtual S19490C12 , S6109C8 {
  ~S6109C14(); // tgen
  S6109C14(); // tgen
};
//SIG(-1 S6109C14) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S6109C14()
{
  extern Class_Descriptor cd_S6109C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6109C14, buf);
    S6109C14 *dp, &lv = *(dp=new (buf) S6109C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6109C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6109C14)");
    /*is_ambiguous_... S6109C14::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S6109C14");
    /*is_ambiguous_... S6109C14::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*), 0, "S6109C14");
    check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*), ABISELECT(8,4), "S6109C14");
    check_base_class_offset(lv, (S19490C18*)(S6109C8*), ABISELECT(8,4), "S6109C14");
    check_base_class_offset(lv, (S19490C12*)(S6109C8*), ABISELECT(8,4), "S6109C14");
    check_base_class_offset(lv, (S6109C8*), ABISELECT(8,4), "S6109C14");
    test_class_info(&lv, &cd_S6109C14);
    dp->~S6109C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C14(Test_S6109C14, "S6109C14", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S6109C14C1Ev();
extern void _ZN8S6109C14D1Ev();
Name_Map name_map_S6109C14[] = {
  NSPAIR(_ZN8S6109C14C1Ev),
  NSPAIR(_ZN8S6109C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
static Base_Class bases_S6109C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6109C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6109C14[];
static  VTBL_ENTRY vtc_S6109C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C14[0]),
};
extern VTBL_ENTRY _ZTV8S6109C14[];
static  VTT_ENTRY vtt_S6109C14[] = {
  {&(_ZTV8S6109C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6109C14[];
extern  VTBL_ENTRY _ZTV8S6109C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C14[];
Class_Descriptor cd_S6109C14 = {  "S6109C14", // class name
  bases_S6109C14, 6,
  &(vtc_S6109C14[0]), // expected_vtbl_contents
  &(vtt_S6109C14[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S6109C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6109C14),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6109C14),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  S6109C4  : S6109C5 , virtual S6109C14 {
  char s6109c4f0;
  ~S6109C4(); // tgen
  S6109C4(); // tgen
};
//SIG(-1 S6109C4) C1{ BC2{ BC3{ VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} BC6 BC8 vd FD Fi} VBC10{ VBC8 Fp[2]} VBC11{ VBC8 Fi}} VBC12{ BC7 VBC8 BC5} Fc}


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

static void Test_S6109C4()
{
  extern Class_Descriptor cd_S6109C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S6109C4, buf);
    S6109C4 *dp, &lv = *(dp=new (buf) S6109C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S6109C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6109C4)");
    /*is_ambiguous_... S6109C4::S6109C8 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*), ABISELECT(40,28), "S6109C4");
    /*is_ambiguous_... S6109C4::S6109C8 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C8*), ABISELECT(40,28), "S6109C4");
    /*is_ambiguous_... S6109C4::S6109C8 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C8*), ABISELECT(40,28), "S6109C4");
    check_base_class_offset(lv, (S6109C8*)(S6109C7*), ABISELECT(40,28), "S6109C4");
    check_base_class_offset(lv, (S19490C11*)(S6109C7*), 0, "S6109C4");
    /*is_ambiguous_... S6109C7::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C7*), 0, "S6109C4");
    check_base_class_offset(lv, (S6109C7*)(S6109C6*)(S6109C5*), 0, "S6109C4");
    /*is_ambiguous_... S6109C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S6109C6*)(S6109C5*), ABISELECT(8,4), "S6109C4");
    /*is_ambiguous_... S6109C6::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C6*)(S6109C5*), 0, "S6109C4");
    check_base_class_offset(lv, (S6109C6*)(S6109C5*), 0, "S6109C4");
    check_base_class_offset(lv, (S19490C12*)(S6109C12*), ABISELECT(72,44), "S6109C4");
    check_base_class_offset(lv, (S19490C12*)(S6109C13*), ABISELECT(72,44), "S6109C4");
    /*is_ambiguous_... S6109C14::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C14*), ABISELECT(72,44), "S6109C4");
    check_base_class_offset(lv, (S6109C12*)(S6109C5*), ABISELECT(48,32), "S6109C4");
    check_base_class_offset(lv, (S6109C13*)(S6109C5*), ABISELECT(72,44), "S6109C4");
    check_base_class_offset(lv, (S6109C5*), 0, "S6109C4");
    /*is_ambiguous_... S6109C14::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C14*), ABISELECT(88,52), "S6109C4");
    check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*)(S6109C14*), ABISELECT(96,56), "S6109C4");
    check_base_class_offset(lv, (S19490C18*)(S6109C8*)(S6109C14*), ABISELECT(96,56), "S6109C4");
    check_base_class_offset(lv, (S19490C12*)(S6109C8*)(S6109C14*), ABISELECT(96,56), "S6109C4");
    check_base_class_offset(lv, (S6109C8*)(S6109C14*), ABISELECT(96,56), "S6109C4");
    check_base_class_offset(lv, (S6109C14*), ABISELECT(88,52), "S6109C4");
    check_field_offset(lv, s6109c4f0, ABISELECT(36,24), "S6109C4.s6109c4f0");
    test_class_info(&lv, &cd_S6109C4);
    dp->~S6109C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C4(Test_S6109C4, "S6109C4", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S6109C4C1Ev();
extern void _ZN7S6109C4D1Ev();
Name_Map name_map_S6109C4[] = {
  NSPAIR(_ZN7S6109C4C1Ev),
  NSPAIR(_ZN7S6109C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S6109C7;
extern VTBL_ENTRY _ZTI7S6109C7[];
extern  VTBL_ENTRY _ZTV7S6109C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C6;
extern VTBL_ENTRY _ZTI7S6109C6[];
extern  VTBL_ENTRY _ZTV7S6109C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C12;
extern VTBL_ENTRY _ZTI8S6109C12[];
extern  VTBL_ENTRY _ZTV8S6109C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C12[];
extern Class_Descriptor cd_S6109C13;
extern VTBL_ENTRY _ZTI8S6109C13[];
extern  VTBL_ENTRY _ZTV8S6109C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C13[];
extern Class_Descriptor cd_S6109C5;
extern VTBL_ENTRY _ZTI7S6109C5[];
extern  VTBL_ENTRY _ZTV7S6109C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C5[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S6109C14;
extern VTBL_ENTRY _ZTI8S6109C14[];
extern  VTBL_ENTRY _ZTV8S6109C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C14[];
static Base_Class bases_S6109C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6109C8,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6109C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6109C6,    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
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6109C12,    ABISELECT(48,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6109C13,    ABISELECT(72,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6109C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    18, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    18, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    18, //immediately_derived
  0, 0},
  {&cd_S6109C8,    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
    19, //immediately_derived
  0, 0},
  {&cd_S6109C14,    ABISELECT(88,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6109C4[];
extern void _ZN7S6109C4D1Ev();
extern void _ZN7S6109C4D0Ev();
static  VTBL_ENTRY vtc_S6109C4[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
  (VTBL_ENTRY)&_ZN7S6109C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C4D0Ev,
  ABISELECT(24,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
  ABISELECT(-16,-8),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
};
extern VTBL_ENTRY _ZTV7S6109C4[];
extern void _ZN7S6109C5D1Ev();
extern void _ZN7S6109C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C5__7S6109C4[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
  (VTBL_ENTRY)&_ZN7S6109C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C5D0Ev,
};
extern void _ZN7S6109C6D1Ev();
extern void _ZN7S6109C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C67S6109C5__7S6109C4[] = {
  0,
  0,
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
  (VTBL_ENTRY)&_ZN7S6109C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C5__7S6109C4[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C5__7S6109C4[] = {
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C4[] = {
  0,
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C4[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C14__7S6109C4[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C14[0]),
};
static  VTT_ENTRY vtt_S6109C4[] = {
  {&(_ZTV7S6109C4[9]),  9,20},
  {&(_tg__ZTV7S6109C5__7S6109C4[8]),  8,10},
  {&(_tg__ZTV7S6109C67S6109C5__7S6109C4[5]),  5,7},
  {&(_tg__ZTV7S6109C67S6109C5__7S6109C4[5]),  5,7},
  {&(_tg__ZTV7S6109C5__7S6109C4[8]),  8,10},
  {&(_tg__ZTV8S6109C12__7S6109C5__7S6109C4[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C5__7S6109C4[3]),  3,3},
  {&(_ZTV7S6109C4[9]),  9,20},
  {&(_ZTV7S6109C4[14]),  14,20},
  {&(_ZTV7S6109C4[17]),  17,20},
  {&(_ZTV7S6109C4[20]),  20,20},
  {&(_tg__ZTV7S6109C7__7S6109C4[4]),  4,4},
  {&(_tg__ZTV8S6109C12__7S6109C4[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C4[3]),  3,3},
  {&(_tg__ZTV8S6109C14__7S6109C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6109C4[];
extern  VTBL_ENTRY _ZTV7S6109C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C4[];
Class_Descriptor cd_S6109C4 = {  "S6109C4", // class name
  bases_S6109C4, 20,
  &(vtc_S6109C4[0]), // expected_vtbl_contents
  &(vtt_S6109C4[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S6109C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6109C4),20, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6109C4),15, //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  S6109C1  : S19490C26 , S19490C10_nt , virtual S6109C4 , virtual S1538C9_nt , virtual S6109C5 {
  ~S6109C1(); // tgen
  S6109C1(); // tgen
};
//SIG(1 S6109C1) C1{ BC2{ m} BC3{ m Fp} VBC4{ BC5{ BC6{ VBC7{ VBC8{ BC3 BC9{ m} BC10{ m}} VBC11{ m} BC9} BC3 BC10 vd FD Fi} VBC12{ VBC10 Fp[2]} VBC13{ VBC10 Fi}} VBC14{ BC9 VBC10 BC8} Fc} VBC15{ m Fi} VBC5}


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

static void Test_S6109C1()
{
  extern Class_Descriptor cd_S6109C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S6109C1, buf);
    S6109C1 *dp, &lv = *(dp=new (buf) S6109C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S6109C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6109C1)");
    check_base_class_offset(lv, (S19490C26*), 0, "S6109C1");
    /*is_ambiguous_... S6109C1::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C8 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*), ABISELECT(56,36), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C8 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C8*), ABISELECT(56,36), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C8 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C8*), ABISELECT(56,36), "S6109C1");
    check_base_class_offset(lv, (S6109C8*)(S6109C7*), ABISELECT(56,36), "S6109C1");
    check_base_class_offset(lv, (S19490C11*)(S6109C7*), 0, "S6109C1");
    /*is_ambiguous_... S6109C7::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C7*), 0, "S6109C1");
    check_base_class_offset(lv, (S6109C7*)(S6109C6*)(S6109C5*)(S6109C4*), 0, "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S6109C7*)(S6109C6*)(S6109C5*), 0, "S6109C1");
    /*is_ambiguous_... S6109C6::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S6109C6*)(S6109C5*)(S6109C4*), ABISELECT(24,12), "S6109C1");
    /*is_ambiguous_... S6109C6::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C6*)(S6109C5*)(S6109C4*), ABISELECT(16,8), "S6109C1");
    check_base_class_offset(lv, (S6109C6*)(S6109C5*)(S6109C4*), ABISELECT(16,8), "S6109C1");
    check_base_class_offset(lv, (S19490C12*)(S6109C12*), 0, "S6109C1");
    check_base_class_offset(lv, (S19490C12*)(S6109C13*), 0, "S6109C1");
    /*is_ambiguous_... S6109C14::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C14*), 0, "S6109C1");
    check_base_class_offset(lv, (S6109C12*)(S6109C5*)(S6109C4*), ABISELECT(64,40), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S6109C12*)(S6109C5*), ABISELECT(64,40), "S6109C1");
    check_base_class_offset(lv, (S6109C13*)(S6109C5*)(S6109C4*), ABISELECT(88,52), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S6109C13*)(S6109C5*), ABISELECT(88,52), "S6109C1");
    check_base_class_offset(lv, (S6109C5*)(S6109C4*), ABISELECT(16,8), "S6109C1");
    /*is_ambiguous_... S6109C14::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6109C14*), ABISELECT(104,60), "S6109C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S6109C8*)(S6109C14*), ABISELECT(112,64), "S6109C1");
    check_base_class_offset(lv, (S19490C18*)(S6109C8*)(S6109C14*), ABISELECT(112,64), "S6109C1");
    check_base_class_offset(lv, (S19490C12*)(S6109C8*)(S6109C14*), ABISELECT(112,64), "S6109C1");
    check_base_class_offset(lv, (S6109C8*)(S6109C14*), ABISELECT(112,64), "S6109C1");
    check_base_class_offset(lv, (S6109C14*)(S6109C4*), ABISELECT(104,60), "S6109C1");
    check_base_class_offset(lv, (S6109C4*), ABISELECT(16,8), "S6109C1");
    check_base_class_offset(lv, (S1538C9_nt*), ABISELECT(120,68), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S6109C6*)(S6109C5*), ABISELECT(136,76), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6109C6*)(S6109C5*), ABISELECT(128,72), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S6109C6*)(S6109C5*), ABISELECT(128,72), "S6109C1");
    /*is_ambiguous_... S6109C1::S6109C5 */ AMB_check_base_class_offset(lv, (S6109C5*), ABISELECT(128,72), "S6109C1");
    test_class_info(&lv, &cd_S6109C1);
    dp->~S6109C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6109C1(Test_S6109C1, "S6109C1", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN7S6109C1C1Ev();
extern void _ZN7S6109C1D1Ev();
Name_Map name_map_S6109C1[] = {
  NSPAIR(_ZN7S6109C1C1Ev),
  NSPAIR(_ZN7S6109C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S6109C7;
extern VTBL_ENTRY _ZTI7S6109C7[];
extern  VTBL_ENTRY _ZTV7S6109C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C7[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C6;
extern VTBL_ENTRY _ZTI7S6109C6[];
extern  VTBL_ENTRY _ZTV7S6109C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C12;
extern VTBL_ENTRY _ZTI8S6109C12[];
extern  VTBL_ENTRY _ZTV8S6109C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C12[];
extern Class_Descriptor cd_S6109C13;
extern VTBL_ENTRY _ZTI8S6109C13[];
extern  VTBL_ENTRY _ZTV8S6109C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C13[];
extern Class_Descriptor cd_S6109C5;
extern VTBL_ENTRY _ZTI7S6109C5[];
extern  VTBL_ENTRY _ZTV7S6109C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C5[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C8;
extern VTBL_ENTRY _ZTI7S6109C8[];
extern Class_Descriptor cd_S6109C14;
extern VTBL_ENTRY _ZTI8S6109C14[];
extern  VTBL_ENTRY _ZTV8S6109C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6109C14[];
extern Class_Descriptor cd_S6109C4;
extern VTBL_ENTRY _ZTI7S6109C4[];
extern  VTBL_ENTRY _ZTV7S6109C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C4[];
extern Class_Descriptor cd_S1538C9_nt;
extern VTBL_ENTRY _ZTI10S1538C9_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6109C6;
extern VTBL_ENTRY _ZTI7S6109C6[];
extern  VTBL_ENTRY _ZTV7S6109C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C6[];
extern Class_Descriptor cd_S6109C5;
extern VTBL_ENTRY _ZTI7S6109C5[];
extern  VTBL_ENTRY _ZTV7S6109C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C5[];
static Base_Class bases_S6109C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_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_S19490C10_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    5, //immediately_derived
  0, 0},
  {&cd_S6109C8,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6109C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    11, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6109C6,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S6109C12,    ABISELECT(64,40), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6109C13,    ABISELECT(88,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6109C5,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    20, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    20, //immediately_derived
  0, 0},
  {&cd_S6109C8,    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_S6109C14,    ABISELECT(104,60), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6109C4,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1538C9_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
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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
    26, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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_S6109C6,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6109C5,    ABISELECT(128,72), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6109C1[];
extern void _ZN7S6109C1D1Ev();
extern void _ZN7S6109C1D0Ev();
extern void ABISELECT(_ZTv0_n80_N7S6109C1D1Ev,_ZTv0_n40_N7S6109C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S6109C1D1Ev,_ZThn8_N7S6109C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6109C1D0Ev,_ZTv0_n40_N7S6109C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S6109C1D0Ev,_ZThn8_N7S6109C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6109C1D1Ev,_ZTv0_n36_N7S6109C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6109C1D1Ev,_ZThn72_N7S6109C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6109C1D0Ev,_ZTv0_n36_N7S6109C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6109C1D0Ev,_ZThn72_N7S6109C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6109C1[] = {
  ABISELECT(128,72),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(88,52),
  0,
  ABISELECT(64,40),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C1[0]),
  (VTBL_ENTRY)&_ZN7S6109C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6109C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6109C1D1Ev,_ZTv0_n40_N7S6109C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6109C1D0Ev,_ZTv0_n40_N7S6109C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6109C1[0]),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6109C1[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S6109C1[0]),
  ABISELECT(-128,-72),
  ABISELECT(-40,-20),
  ABISELECT(-128,-72),
  ABISELECT(-64,-32),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-72,-36),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S6109C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6109C1D1Ev,_ZTv0_n36_N7S6109C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6109C1D0Ev,_ZTv0_n36_N7S6109C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6109C1[];
extern void _ZN7S6109C4D1Ev();
extern void _ZN7S6109C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C4__7S6109C1[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
  (VTBL_ENTRY)&_ZN7S6109C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C4D0Ev,
};
extern void _ZN7S6109C5D1Ev();
extern void _ZN7S6109C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C57S6109C4__7S6109C1[] = {
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
  (VTBL_ENTRY)&_ZN7S6109C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C5D0Ev,
};
extern void _ZN7S6109C6D1Ev();
extern void _ZN7S6109C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C67S6109C57S6109C4__7S6109C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
  (VTBL_ENTRY)&_ZN7S6109C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C67S6109C57S6109C4__7S6109C1[] = {
  0,
  ABISELECT(56,36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C57S6109C4__7S6109C1[] = {
  0,
  ABISELECT(56,36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C57S6109C4__7S6109C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C57S6109C4__7S6109C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C4__7S6109C1[] = {
  0,
  ABISELECT(56,36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C4__7S6109C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C4__7S6109C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C14__7S6109C4__7S6109C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6109C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C1[] = {
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C1[] = {
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C14__7S6109C1[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6109C14[0]),
};
extern void _ZN7S6109C5D1Ev();
extern void _ZN7S6109C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C5__A1__7S6109C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-128,-72),
  ABISELECT(-64,-32),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
  (VTBL_ENTRY)&_ZN7S6109C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C5D0Ev,
};
extern void _ZN7S6109C6D1Ev();
extern void _ZN7S6109C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6109C67S6109C5__A1__7S6109C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
  (VTBL_ENTRY)&_ZN7S6109C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6109C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C67S6109C5__A1__7S6109C1[] = {
  0,
  ABISELECT(56,36),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S6109C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6109C7__7S6109C5__A1__7S6109C1[] = {
  0,
  ABISELECT(56,36),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C12__7S6109C5__A1__7S6109C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6109C13__7S6109C5__A1__7S6109C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S6109C5[0]),
};
static  VTT_ENTRY vtt_S6109C1[] = {
  {&(_ZTV7S6109C1[12]),  12,46},
  {&(_ZTV7S6109C1[24]),  24,46},
  {&(_ZTV7S6109C1[12]),  12,46},
  {&(_ZTV7S6109C1[29]),  29,46},
  {&(_ZTV7S6109C1[32]),  32,46},
  {&(_ZTV7S6109C1[35]),  35,46},
  {&(_ZTV7S6109C1[44]),  44,46},
  {&(_tg__ZTV7S6109C4__7S6109C1[9]),  9,11},
  {&(_tg__ZTV7S6109C57S6109C4__7S6109C1[8]),  8,10},
  {&(_tg__ZTV7S6109C67S6109C57S6109C4__7S6109C1[5]),  5,7},
  {&(_tg__ZTV7S6109C7__7S6109C67S6109C57S6109C4__7S6109C1[4]),  4,4},
  {&(_tg__ZTV7S6109C7__7S6109C57S6109C4__7S6109C1[4]),  4,4},
  {&(_tg__ZTV8S6109C12__7S6109C57S6109C4__7S6109C1[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C57S6109C4__7S6109C1[3]),  3,3},
  {&(_tg__ZTV7S6109C7__7S6109C4__7S6109C1[4]),  4,4},
  {&(_tg__ZTV8S6109C12__7S6109C4__7S6109C1[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C4__7S6109C1[3]),  3,3},
  {&(_tg__ZTV8S6109C14__7S6109C4__7S6109C1[3]),  3,3},
  {&(_tg__ZTV7S6109C7__7S6109C1[4]),  4,4},
  {&(_tg__ZTV8S6109C12__7S6109C1[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C1[3]),  3,3},
  {&(_tg__ZTV8S6109C14__7S6109C1[3]),  3,3},
  {&(_tg__ZTV7S6109C5__A1__7S6109C1[8]),  8,10},
  {&(_tg__ZTV7S6109C67S6109C5__A1__7S6109C1[5]),  5,7},
  {&(_tg__ZTV7S6109C7__7S6109C67S6109C5__A1__7S6109C1[4]),  4,4},
  {&(_tg__ZTV7S6109C7__7S6109C5__A1__7S6109C1[4]),  4,4},
  {&(_tg__ZTV8S6109C12__7S6109C5__A1__7S6109C1[3]),  3,3},
  {&(_tg__ZTV8S6109C13__7S6109C5__A1__7S6109C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6109C1[];
extern  VTBL_ENTRY _ZTV7S6109C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6109C1[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6109C1D0Ev,_ZTv0_n36_N7S6109C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6109C1D0Ev,_ZThn72_N7S6109C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6109C1D1Ev,_ZTv0_n36_N7S6109C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6109C1D1Ev,_ZThn72_N7S6109C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6109C1D0Ev,_ZTv0_n40_N7S6109C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6109C1D0Ev,_ZThn8_N7S6109C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6109C1D1Ev,_ZTv0_n40_N7S6109C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6109C1D1Ev,_ZThn8_N7S6109C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6109C1 = {  "S6109C1", // class name
  bases_S6109C1, 28,
  &(vtc_S6109C1[0]), // expected_vtbl_contents
  &(vtt_S6109C1[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI7S6109C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6109C1),46, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6109C1),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S872C5  {
  ::S16385C7 s872c5f0;
  int s872c5f1[2];
  char s872c5f2;
  virtual  ~S872C5(); // _ZN6S872C5D1Ev
  virtual void  v2(); // _ZN6S872C52v2Ev
  virtual void  v3(); // _ZN6S872C52v3Ev
  virtual void  v4(); // _ZN6S872C52v4Ev
  S872C5(); // tgen
};
//SIG(-1 S872C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S872C5 ::~S872C5(){ note_dtor("S872C5", this);}
void  S872C5 ::v2(){vfunc_called(this, "_ZN6S872C52v2Ev");}
void  S872C5 ::v3(){vfunc_called(this, "_ZN6S872C52v3Ev");}
void  S872C5 ::v4(){vfunc_called(this, "_ZN6S872C52v4Ev");}
S872C5 ::S872C5(){ note_ctor("S872C5", this);} // tgen

static void Test_S872C5()
{
  extern Class_Descriptor cd_S872C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S872C5, buf);
    S872C5 *dp, &lv = *(dp=new (buf) S872C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S872C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S872C5)");
    check_field_offset(lv, s872c5f0, ABISELECT(8,4), "S872C5.s872c5f0");
    check_field_offset(lv, s872c5f1, ABISELECT(24,16), "S872C5.s872c5f1");
    check_field_offset(lv, s872c5f2, ABISELECT(32,24), "S872C5.s872c5f2");
    test_class_info(&lv, &cd_S872C5);
    dp->~S872C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS872C5(Test_S872C5, "S872C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S872C5C1Ev();
extern void _ZN6S872C5D1Ev();
Name_Map name_map_S872C5[] = {
  NSPAIR(_ZN6S872C5C1Ev),
  NSPAIR(_ZN6S872C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S872C5[];
extern void _ZN6S872C5D1Ev();
extern void _ZN6S872C5D0Ev();
extern void _ZN6S872C52v2Ev();
extern void _ZN6S872C52v3Ev();
extern void _ZN6S872C52v4Ev();
static  VTBL_ENTRY vtc_S872C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S872C5[0]),
  (VTBL_ENTRY)&_ZN6S872C5D1Ev,
  (VTBL_ENTRY)&_ZN6S872C5D0Ev,
  (VTBL_ENTRY)&_ZN6S872C52v2Ev,
  (VTBL_ENTRY)&_ZN6S872C52v3Ev,
  (VTBL_ENTRY)&_ZN6S872C52v4Ev,
};
extern VTBL_ENTRY _ZTI6S872C5[];
extern  VTBL_ENTRY _ZTV6S872C5[];
Class_Descriptor cd_S872C5 = {  "S872C5", // class name
  0,0,//no base classes
  &(vtc_S872C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S872C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S872C5),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  S872C4  : S872C5 {
  void *s872c4f0[2];
  virtual  ~S872C4(); // _ZN6S872C4D1Ev
  virtual void  v5(); // _ZN6S872C42v5Ev
  virtual void  v6(); // _ZN6S872C42v6Ev
  virtual void  v7(); // _ZN6S872C42v7Ev
  virtual void  v8(); // _ZN6S872C42v8Ev
  virtual void  v9(); // _ZN6S872C42v9Ev
  virtual void  v10(); // _ZN6S872C43v10Ev
  virtual void  v11(); // _ZN6S872C43v11Ev
  virtual void  v12(); // _ZN6S872C43v12Ev
  virtual void  v13(); // _ZN6S872C43v13Ev
  S872C4(); // tgen
};
//SIG(-1 S872C4) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S872C4 ::~S872C4(){ note_dtor("S872C4", this);}
void  S872C4 ::v5(){vfunc_called(this, "_ZN6S872C42v5Ev");}
void  S872C4 ::v6(){vfunc_called(this, "_ZN6S872C42v6Ev");}
void  S872C4 ::v7(){vfunc_called(this, "_ZN6S872C42v7Ev");}
void  S872C4 ::v8(){vfunc_called(this, "_ZN6S872C42v8Ev");}
void  S872C4 ::v9(){vfunc_called(this, "_ZN6S872C42v9Ev");}
void  S872C4 ::v10(){vfunc_called(this, "_ZN6S872C43v10Ev");}
void  S872C4 ::v11(){vfunc_called(this, "_ZN6S872C43v11Ev");}
void  S872C4 ::v12(){vfunc_called(this, "_ZN6S872C43v12Ev");}
void  S872C4 ::v13(){vfunc_called(this, "_ZN6S872C43v13Ev");}
S872C4 ::S872C4(){ note_ctor("S872C4", this);} // tgen

static void Test_S872C4()
{
  extern Class_Descriptor cd_S872C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S872C4, buf);
    S872C4 *dp, &lv = *(dp=new (buf) S872C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S872C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S872C4)");
    check_base_class_offset(lv, (S872C5*), 0, "S872C4");
    check_field_offset(lv, s872c4f0, ABISELECT(40,28), "S872C4.s872c4f0");
    test_class_info(&lv, &cd_S872C4);
    dp->~S872C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS872C4(Test_S872C4, "S872C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN6S872C4C1Ev();
extern void _ZN6S872C4D1Ev();
Name_Map name_map_S872C4[] = {
  NSPAIR(_ZN6S872C4C1Ev),
  NSPAIR(_ZN6S872C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S872C5;
extern VTBL_ENTRY _ZTI6S872C5[];
extern  VTBL_ENTRY _ZTV6S872C5[];
static Base_Class bases_S872C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S872C4[];
extern void _ZN6S872C4D1Ev();
extern void _ZN6S872C4D0Ev();
extern void _ZN6S872C52v2Ev();
extern void _ZN6S872C52v3Ev();
extern void _ZN6S872C52v4Ev();
extern void _ZN6S872C42v5Ev();
extern void _ZN6S872C42v6Ev();
extern void _ZN6S872C42v7Ev();
extern void _ZN6S872C42v8Ev();
extern void _ZN6S872C42v9Ev();
extern void _ZN6S872C43v10Ev();
extern void _ZN6S872C43v11Ev();
extern void _ZN6S872C43v12Ev();
extern void _ZN6S872C43v13Ev();
static  VTBL_ENTRY vtc_S872C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S872C4[0]),
  (VTBL_ENTRY)&_ZN6S872C4D1Ev,
  (VTBL_ENTRY)&_ZN6S872C4D0Ev,
  (VTBL_ENTRY)&_ZN6S872C52v2Ev,
  (VTBL_ENTRY)&_ZN6S872C52v3Ev,
  (VTBL_ENTRY)&_ZN6S872C52v4Ev,
  (VTBL_ENTRY)&_ZN6S872C42v5Ev,
  (VTBL_ENTRY)&_ZN6S872C42v6Ev,
  (VTBL_ENTRY)&_ZN6S872C42v7Ev,
  (VTBL_ENTRY)&_ZN6S872C42v8Ev,
  (VTBL_ENTRY)&_ZN6S872C42v9Ev,
  (VTBL_ENTRY)&_ZN6S872C43v10Ev,
  (VTBL_ENTRY)&_ZN6S872C43v11Ev,
  (VTBL_ENTRY)&_ZN6S872C43v12Ev,
  (VTBL_ENTRY)&_ZN6S872C43v13Ev,
};
extern VTBL_ENTRY _ZTI6S872C4[];
extern  VTBL_ENTRY _ZTV6S872C4[];
Class_Descriptor cd_S872C4 = {  "S872C4", // class name
  bases_S872C4, 1,
  &(vtc_S872C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI6S872C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S872C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S872C3  : S872C4 {
  void *s872c3f0[4];
  int s872c3f1;
  virtual  ~S872C3(); // _ZN6S872C3D1Ev
  virtual void  v14(); // _ZN6S872C33v14Ev
  virtual void  v15(); // _ZN6S872C33v15Ev
  virtual void  v16(); // _ZN6S872C33v16Ev
  S872C3(); // tgen
};
//SIG(-1 S872C3) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S872C3 ::~S872C3(){ note_dtor("S872C3", this);}
void  S872C3 ::v14(){vfunc_called(this, "_ZN6S872C33v14Ev");}
void  S872C3 ::v15(){vfunc_called(this, "_ZN6S872C33v15Ev");}
void  S872C3 ::v16(){vfunc_called(this, "_ZN6S872C33v16Ev");}
S872C3 ::S872C3(){ note_ctor("S872C3", this);} // tgen

static void Test_S872C3()
{
  extern Class_Descriptor cd_S872C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S872C3, buf);
    S872C3 *dp, &lv = *(dp=new (buf) S872C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S872C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S872C3)");
    check_base_class_offset(lv, (S872C5*)(S872C4*), 0, "S872C3");
    check_base_class_offset(lv, (S872C4*), 0, "S872C3");
    check_field_offset(lv, s872c3f0, ABISELECT(56,36), "S872C3.s872c3f0");
    check_field_offset(lv, s872c3f1, ABISELECT(88,52), "S872C3.s872c3f1");
    test_class_info(&lv, &cd_S872C3);
    dp->~S872C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS872C3(Test_S872C3, "S872C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN6S872C3C1Ev();
extern void _ZN6S872C3D1Ev();
Name_Map name_map_S872C3[] = {
  NSPAIR(_ZN6S872C3C1Ev),
  NSPAIR(_ZN6S872C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S872C5;
extern VTBL_ENTRY _ZTI6S872C5[];
extern  VTBL_ENTRY _ZTV6S872C5[];
extern Class_Descriptor cd_S872C4;
extern VTBL_ENTRY _ZTI6S872C4[];
extern  VTBL_ENTRY _ZTV6S872C4[];
static Base_Class bases_S872C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S872C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S872C3[];
extern void _ZN6S872C3D1Ev();
extern void _ZN6S872C3D0Ev();
extern void _ZN6S872C52v2Ev();
extern void _ZN6S872C52v3Ev();
extern void _ZN6S872C52v4Ev();
extern void _ZN6S872C42v5Ev();
extern void _ZN6S872C42v6Ev();
extern void _ZN6S872C42v7Ev();
extern void _ZN6S872C42v8Ev();
extern void _ZN6S872C42v9Ev();
extern void _ZN6S872C43v10Ev();
extern void _ZN6S872C43v11Ev();
extern void _ZN6S872C43v12Ev();
extern void _ZN6S872C43v13Ev();
extern void _ZN6S872C33v14Ev();
extern void _ZN6S872C33v15Ev();
extern void _ZN6S872C33v16Ev();
static  VTBL_ENTRY vtc_S872C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S872C3[0]),
  (VTBL_ENTRY)&_ZN6S872C3D1Ev,
  (VTBL_ENTRY)&_ZN6S872C3D0Ev,
  (VTBL_ENTRY)&_ZN6S872C52v2Ev,
  (VTBL_ENTRY)&_ZN6S872C52v3Ev,
  (VTBL_ENTRY)&_ZN6S872C52v4Ev,
  (VTBL_ENTRY)&_ZN6S872C42v5Ev,
  (VTBL_ENTRY)&_ZN6S872C42v6Ev,
  (VTBL_ENTRY)&_ZN6S872C42v7Ev,
  (VTBL_ENTRY)&_ZN6S872C42v8Ev,
  (VTBL_ENTRY)&_ZN6S872C42v9Ev,
  (VTBL_ENTRY)&_ZN6S872C43v10Ev,
  (VTBL_ENTRY)&_ZN6S872C43v11Ev,
  (VTBL_ENTRY)&_ZN6S872C43v12Ev,
  (VTBL_ENTRY)&_ZN6S872C43v13Ev,
  (VTBL_ENTRY)&_ZN6S872C33v14Ev,
  (VTBL_ENTRY)&_ZN6S872C33v15Ev,
  (VTBL_ENTRY)&_ZN6S872C33v16Ev,
};
extern VTBL_ENTRY _ZTI6S872C3[];
extern  VTBL_ENTRY _ZTV6S872C3[];
Class_Descriptor cd_S872C3 = {  "S872C3", // class name
  bases_S872C3, 2,
  &(vtc_S872C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI6S872C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S872C3),19, //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  S872C2  : S872C3 {
  void *s872c2f0[3];
  int s872c2f1;
  char s872c2f2;
  void *s872c2f3;
  char s872c2f4;
  int s872c2f5;
  virtual  ~S872C2(); // _ZN6S872C2D1Ev
  virtual void  v17(); // _ZN6S872C23v17Ev
  virtual void  v18(); // _ZN6S872C23v18Ev
  S872C2(); // tgen
};
//SIG(-1 S872C2) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fp[3] Fi Fc Fp Fc Fi}


 S872C2 ::~S872C2(){ note_dtor("S872C2", this);}
void  S872C2 ::v17(){vfunc_called(this, "_ZN6S872C23v17Ev");}
void  S872C2 ::v18(){vfunc_called(this, "_ZN6S872C23v18Ev");}
S872C2 ::S872C2(){ note_ctor("S872C2", this);} // tgen

static void Test_S872C2()
{
  extern Class_Descriptor cd_S872C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S872C2, buf);
    S872C2 *dp, &lv = *(dp=new (buf) S872C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S872C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S872C2)");
    check_base_class_offset(lv, (S872C5*)(S872C4*)(S872C3*), 0, "S872C2");
    check_base_class_offset(lv, (S872C4*)(S872C3*), 0, "S872C2");
    check_base_class_offset(lv, (S872C3*), 0, "S872C2");
    check_field_offset(lv, s872c2f0, ABISELECT(96,56), "S872C2.s872c2f0");
    check_field_offset(lv, s872c2f1, ABISELECT(120,68), "S872C2.s872c2f1");
    check_field_offset(lv, s872c2f2, ABISELECT(124,72), "S872C2.s872c2f2");
    check_field_offset(lv, s872c2f3, ABISELECT(128,76), "S872C2.s872c2f3");
    check_field_offset(lv, s872c2f4, ABISELECT(136,80), "S872C2.s872c2f4");
    check_field_offset(lv, s872c2f5, ABISELECT(140,84), "S872C2.s872c2f5");
    test_class_info(&lv, &cd_S872C2);
    dp->~S872C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS872C2(Test_S872C2, "S872C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S872C2C1Ev();
extern void _ZN6S872C2D1Ev();
Name_Map name_map_S872C2[] = {
  NSPAIR(_ZN6S872C2C1Ev),
  NSPAIR(_ZN6S872C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S872C5;
extern VTBL_ENTRY _ZTI6S872C5[];
extern  VTBL_ENTRY _ZTV6S872C5[];
extern Class_Descriptor cd_S872C4;
extern VTBL_ENTRY _ZTI6S872C4[];
extern  VTBL_ENTRY _ZTV6S872C4[];
extern Class_Descriptor cd_S872C3;
extern VTBL_ENTRY _ZTI6S872C3[];
extern  VTBL_ENTRY _ZTV6S872C3[];
static Base_Class bases_S872C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S872C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S872C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S872C2[];
extern void _ZN6S872C2D1Ev();
extern void _ZN6S872C2D0Ev();
extern void _ZN6S872C52v2Ev();
extern void _ZN6S872C52v3Ev();
extern void _ZN6S872C52v4Ev();
extern void _ZN6S872C42v5Ev();
extern void _ZN6S872C42v6Ev();
extern void _ZN6S872C42v7Ev();
extern void _ZN6S872C42v8Ev();
extern void _ZN6S872C42v9Ev();
extern void _ZN6S872C43v10Ev();
extern void _ZN6S872C43v11Ev();
extern void _ZN6S872C43v12Ev();
extern void _ZN6S872C43v13Ev();
extern void _ZN6S872C33v14Ev();
extern void _ZN6S872C33v15Ev();
extern void _ZN6S872C33v16Ev();
extern void _ZN6S872C23v17Ev();
extern void _ZN6S872C23v18Ev();
static  VTBL_ENTRY vtc_S872C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S872C2[0]),
  (VTBL_ENTRY)&_ZN6S872C2D1Ev,
  (VTBL_ENTRY)&_ZN6S872C2D0Ev,
  (VTBL_ENTRY)&_ZN6S872C52v2Ev,
  (VTBL_ENTRY)&_ZN6S872C52v3Ev,
  (VTBL_ENTRY)&_ZN6S872C52v4Ev,
  (VTBL_ENTRY)&_ZN6S872C42v5Ev,
  (VTBL_ENTRY)&_ZN6S872C42v6Ev,
  (VTBL_ENTRY)&_ZN6S872C42v7Ev,
  (VTBL_ENTRY)&_ZN6S872C42v8Ev,
  (VTBL_ENTRY)&_ZN6S872C42v9Ev,
  (VTBL_ENTRY)&_ZN6S872C43v10Ev,
  (VTBL_ENTRY)&_ZN6S872C43v11Ev,
  (VTBL_ENTRY)&_ZN6S872C43v12Ev,
  (VTBL_ENTRY)&_ZN6S872C43v13Ev,
  (VTBL_ENTRY)&_ZN6S872C33v14Ev,
  (VTBL_ENTRY)&_ZN6S872C33v15Ev,
  (VTBL_ENTRY)&_ZN6S872C33v16Ev,
  (VTBL_ENTRY)&_ZN6S872C23v17Ev,
  (VTBL_ENTRY)&_ZN6S872C23v18Ev,
};
extern VTBL_ENTRY _ZTI6S872C2[];
extern  VTBL_ENTRY _ZTV6S872C2[];
Class_Descriptor cd_S872C2 = {  "S872C2", // class name
  bases_S872C2, 3,
  &(vtc_S872C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S872C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S872C2),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  S872C1  : S872C2 {
  virtual  ~S872C1(); // _ZN6S872C1D1Ev
  virtual void  v1(); // _ZN6S872C12v1Ev
  S872C1(); // tgen
};
//SIG(1 S872C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp[2]} vd v14 v15 v16 Fp[4] Fi} vd v17 v18 Fp[3] Fi Fc Fp Fc Fi} vd v1}


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

static void Test_S872C1()
{
  extern Class_Descriptor cd_S872C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S872C1, buf);
    S872C1 *dp, &lv = *(dp=new (buf) S872C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S872C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S872C1)");
    check_base_class_offset(lv, (S872C5*)(S872C4*)(S872C3*)(S872C2*), 0, "S872C1");
    check_base_class_offset(lv, (S872C4*)(S872C3*)(S872C2*), 0, "S872C1");
    check_base_class_offset(lv, (S872C3*)(S872C2*), 0, "S872C1");
    check_base_class_offset(lv, (S872C2*), 0, "S872C1");
    test_class_info(&lv, &cd_S872C1);
    dp->~S872C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS872C1(Test_S872C1, "S872C1", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN6S872C1C1Ev();
extern void _ZN6S872C1D1Ev();
Name_Map name_map_S872C1[] = {
  NSPAIR(_ZN6S872C1C1Ev),
  NSPAIR(_ZN6S872C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S872C5;
extern VTBL_ENTRY _ZTI6S872C5[];
extern  VTBL_ENTRY _ZTV6S872C5[];
extern Class_Descriptor cd_S872C4;
extern VTBL_ENTRY _ZTI6S872C4[];
extern  VTBL_ENTRY _ZTV6S872C4[];
extern Class_Descriptor cd_S872C3;
extern VTBL_ENTRY _ZTI6S872C3[];
extern  VTBL_ENTRY _ZTV6S872C3[];
extern Class_Descriptor cd_S872C2;
extern VTBL_ENTRY _ZTI6S872C2[];
extern  VTBL_ENTRY _ZTV6S872C2[];
static Base_Class bases_S872C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S872C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S872C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S872C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S872C1[];
extern void _ZN6S872C1D1Ev();
extern void _ZN6S872C1D0Ev();
extern void _ZN6S872C52v2Ev();
extern void _ZN6S872C52v3Ev();
extern void _ZN6S872C52v4Ev();
extern void _ZN6S872C42v5Ev();
extern void _ZN6S872C42v6Ev();
extern void _ZN6S872C42v7Ev();
extern void _ZN6S872C42v8Ev();
extern void _ZN6S872C42v9Ev();
extern void _ZN6S872C43v10Ev();
extern void _ZN6S872C43v11Ev();
extern void _ZN6S872C43v12Ev();
extern void _ZN6S872C43v13Ev();
extern void _ZN6S872C33v14Ev();
extern void _ZN6S872C33v15Ev();
extern void _ZN6S872C33v16Ev();
extern void _ZN6S872C23v17Ev();
extern void _ZN6S872C23v18Ev();
extern void _ZN6S872C12v1Ev();
static  VTBL_ENTRY vtc_S872C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S872C1[0]),
  (VTBL_ENTRY)&_ZN6S872C1D1Ev,
  (VTBL_ENTRY)&_ZN6S872C1D0Ev,
  (VTBL_ENTRY)&_ZN6S872C52v2Ev,
  (VTBL_ENTRY)&_ZN6S872C52v3Ev,
  (VTBL_ENTRY)&_ZN6S872C52v4Ev,
  (VTBL_ENTRY)&_ZN6S872C42v5Ev,
  (VTBL_ENTRY)&_ZN6S872C42v6Ev,
  (VTBL_ENTRY)&_ZN6S872C42v7Ev,
  (VTBL_ENTRY)&_ZN6S872C42v8Ev,
  (VTBL_ENTRY)&_ZN6S872C42v9Ev,
  (VTBL_ENTRY)&_ZN6S872C43v10Ev,
  (VTBL_ENTRY)&_ZN6S872C43v11Ev,
  (VTBL_ENTRY)&_ZN6S872C43v12Ev,
  (VTBL_ENTRY)&_ZN6S872C43v13Ev,
  (VTBL_ENTRY)&_ZN6S872C33v14Ev,
  (VTBL_ENTRY)&_ZN6S872C33v15Ev,
  (VTBL_ENTRY)&_ZN6S872C33v16Ev,
  (VTBL_ENTRY)&_ZN6S872C23v17Ev,
  (VTBL_ENTRY)&_ZN6S872C23v18Ev,
  (VTBL_ENTRY)&_ZN6S872C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S872C1[];
extern  VTBL_ENTRY _ZTV6S872C1[];
Class_Descriptor cd_S872C1 = {  "S872C1", // class name
  bases_S872C1, 4,
  &(vtc_S872C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI6S872C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S872C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5912C6  : virtual S19490C26 {
  virtual void  v1(); // _ZN7S5912C62v1Ev
  ~S5912C6(); // tgen
  S5912C6(); // tgen
};
//SIG(-1 S5912C6) C1{ VBC2{ m} v1}


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

static void Test_S5912C6()
{
  extern Class_Descriptor cd_S5912C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S5912C6, buf);
    S5912C6 *dp, &lv = *(dp=new (buf) S5912C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S5912C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5912C6)");
    check_base_class_offset(lv, (S19490C26*), 0, "S5912C6");
    test_class_info(&lv, &cd_S5912C6);
    dp->~S5912C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5912C6(Test_S5912C6, "S5912C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S5912C6C1Ev();
extern void _ZN7S5912C6D1Ev();
Name_Map name_map_S5912C6[] = {
  NSPAIR(_ZN7S5912C6C1Ev),
  NSPAIR(_ZN7S5912C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S5912C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5912C6[];
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY vtc_S5912C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S5912C6[];
static  VTT_ENTRY vtt_S5912C6[] = {
  {&(_ZTV7S5912C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
Class_Descriptor cd_S5912C6 = {  "S5912C6", // class name
  bases_S5912C6, 1,
  &(vtc_S5912C6[0]), // expected_vtbl_contents
  &(vtt_S5912C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5912C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5912C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5912C6),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  S5912C5  : S19490C26 , S5912C6 {
  int s5912c5f0[2];
  virtual void  v2(); // _ZN7S5912C52v2Ev
  ~S5912C5(); // tgen
  S5912C5(); // tgen
};
//SIG(-1 S5912C5) C1{ BC2{ m} BC3{ VBC2 v2} v1 Fi[2]}


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

static void Test_S5912C5()
{
  extern Class_Descriptor cd_S5912C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S5912C5, buf);
    S5912C5 *dp, &lv = *(dp=new (buf) S5912C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S5912C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5912C5)");
    /*is_ambiguous_... S5912C5::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S5912C5");
    check_base_class_offset(lv, (S19490C26*)(S5912C6*), ABISELECT(16,12), "S5912C5");
    check_base_class_offset(lv, (S5912C6*), 0, "S5912C5");
    check_field_offset(lv, s5912c5f0, ABISELECT(8,4), "S5912C5.s5912c5f0");
    test_class_info(&lv, &cd_S5912C5);
    dp->~S5912C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5912C5(Test_S5912C5, "S5912C5", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S5912C5C1Ev();
extern void _ZN7S5912C5D1Ev();
Name_Map name_map_S5912C5[] = {
  NSPAIR(_ZN7S5912C5C1Ev),
  NSPAIR(_ZN7S5912C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
static Base_Class bases_S5912C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    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
    2, //immediately_derived
  0, 1},
  {&cd_S5912C6,    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 _ZTI7S5912C5[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY vtc_S5912C5[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern VTBL_ENTRY _ZTV7S5912C5[];
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__7S5912C5[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
static  VTT_ENTRY vtt_S5912C5[] = {
  {&(_ZTV7S5912C5[3]),  3,5},
  {&(_tg__ZTV7S5912C6__7S5912C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
Class_Descriptor cd_S5912C5 = {  "S5912C5", // class name
  bases_S5912C5, 3,
  &(vtc_S5912C5[0]), // expected_vtbl_contents
  &(vtt_S5912C5[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S5912C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5912C5),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5912C5),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  S5912C3  : virtual S19490C26 , virtual S5912C5 , S5912C6 {
  int s5912c3f0[2];
  void *s5912c3f1[3];
  ~S5912C3(); // tgen
  S5912C3(); // tgen
};
//SIG(-1 S5912C3) C1{ VBC2{ m} VBC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC4 Fi[2] Fp[3]}


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

static void Test_S5912C3()
{
  extern Class_Descriptor cd_S5912C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S5912C3, buf);
    S5912C3 *dp, &lv = *(dp=new (buf) S5912C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S5912C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5912C3)");
    /*is_ambiguous_... S5912C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S5912C3");
    check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*), 0, "S5912C3");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*), 0, "S5912C3");
    /*is_ambiguous_... S5912C5::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*), ABISELECT(40,24), "S5912C3");
    check_base_class_offset(lv, (S5912C6*)(S5912C5*), ABISELECT(40,24), "S5912C3");
    check_base_class_offset(lv, (S5912C5*), ABISELECT(40,24), "S5912C3");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*), 0, "S5912C3");
    check_field_offset(lv, s5912c3f0, ABISELECT(8,4), "S5912C3.s5912c3f0");
    check_field_offset(lv, s5912c3f1, ABISELECT(16,12), "S5912C3.s5912c3f1");
    test_class_info(&lv, &cd_S5912C3);
    dp->~S5912C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5912C3(Test_S5912C3, "S5912C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S5912C3C1Ev();
extern void _ZN7S5912C3D1Ev();
Name_Map name_map_S5912C3[] = {
  NSPAIR(_ZN7S5912C3C1Ev),
  NSPAIR(_ZN7S5912C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
static Base_Class bases_S5912C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(40,24), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(40,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5912C6,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5912C3[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY vtc_S5912C3[] = {
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern VTBL_ENTRY _ZTV7S5912C3[];
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__A1__7S5912C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__7S5912C3[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C5__7S5912C3[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
static  VTT_ENTRY vtt_S5912C3[] = {
  {&(_ZTV7S5912C3[4]),  4,12},
  {&(_tg__ZTV7S5912C6__A1__7S5912C3[3]),  3,4},
  {&(_ZTV7S5912C3[10]),  10,12},
  {&(_tg__ZTV7S5912C5__7S5912C3[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C5__7S5912C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5912C3[];
extern  VTBL_ENTRY _ZTV7S5912C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C3[];
Class_Descriptor cd_S5912C3 = {  "S5912C3", // class name
  bases_S5912C3, 5,
  &(vtc_S5912C3[0]), // expected_vtbl_contents
  &(vtt_S5912C3[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S5912C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5912C3),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5912C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5912C8  : S19490C26 , S5912C5 , S5912C3 , S5912C6 {
  int s5912c8f0[2];
  ~S5912C8(); // tgen
  S5912C8(); // tgen
};
//SIG(-1 S5912C8) C1{ BC2{ m} BC3{ BC2 BC4{ VBC2 v1} v2 Fi[2]} BC5{ VBC2 VBC3 BC4 Fi[2] Fp[3]} BC4 Fi[2]}


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

static void Test_S5912C8()
{
  extern Class_Descriptor cd_S5912C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S5912C8, buf);
    S5912C8 *dp, &lv = *(dp=new (buf) S5912C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S5912C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5912C8)");
    /*is_ambiguous_... S5912C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), ABISELECT(16,12), "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*), 0, "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*), ABISELECT(72,48), "S5912C8");
    /*is_ambiguous_... S5912C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C3*), ABISELECT(72,48), "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*), ABISELECT(72,48), "S5912C8");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C3*), ABISELECT(72,48), "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*), ABISELECT(72,48), "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*), 0, "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C5*), 0, "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*), ABISELECT(80,52), "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*), ABISELECT(80,52), "S5912C8");
    check_base_class_offset(lv, (S5912C5*)(S5912C3*), ABISELECT(80,52), "S5912C8");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C3*), ABISELECT(16,12), "S5912C8");
    check_base_class_offset(lv, (S5912C3*), ABISELECT(16,12), "S5912C8");
    /*is_ambiguous_... S5912C8::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*), ABISELECT(56,36), "S5912C8");
    check_field_offset(lv, s5912c8f0, ABISELECT(64,40), "S5912C8.s5912c8f0");
    test_class_info(&lv, &cd_S5912C8);
    dp->~S5912C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5912C8(Test_S5912C8, "S5912C8", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S5912C8C1Ev();
extern void _ZN7S5912C8D1Ev();
Name_Map name_map_S5912C8[] = {
  NSPAIR(_ZN7S5912C8C1Ev),
  NSPAIR(_ZN7S5912C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C3;
extern VTBL_ENTRY _ZTI7S5912C3[];
extern  VTBL_ENTRY _ZTV7S5912C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C3[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
static Base_Class bases_S5912C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    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, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S5912C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5912C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(80,52), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S5912C6,    ABISELECT(16,12), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5912C3,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5912C6,    ABISELECT(56,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5912C8[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY vtc_S5912C8[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  ABISELECT(16,12),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern VTBL_ENTRY _ZTV7S5912C8[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A__7S5912C8[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C5__7S5912C8[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C3__7S5912C8[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C3__A2__7S5912C8[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__7S5912C3__7S5912C8[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__A3__7S5912C8[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A1__7S5912C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C5__A1__7S5912C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
static  VTT_ENTRY vtt_S5912C8[] = {
  {&(_ZTV7S5912C8[4]),  4,22},
  {&(_tg__ZTV7S5912C5__A__7S5912C8[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C5__7S5912C8[3]),  3,4},
  {&(_tg__ZTV7S5912C3__7S5912C8[4]),  4,5},
  {&(_tg__ZTV7S5912C67S5912C3__A2__7S5912C8[3]),  3,4},
  {&(_tg__ZTV7S5912C5__7S5912C3__7S5912C8[5]),  5,7},
  {&(_tg__ZTV7S5912C6__A3__7S5912C8[3]),  3,4},
  {&(_ZTV7S5912C8[10]),  10,22},
  {&(_ZTV7S5912C8[20]),  20,22},
  {&(_ZTV7S5912C8[14]),  14,22},
  {&(_tg__ZTV7S5912C5__A1__7S5912C8[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C5__A1__7S5912C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5912C8[];
extern  VTBL_ENTRY _ZTV7S5912C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C8[];
Class_Descriptor cd_S5912C8 = {  "S5912C8", // class name
  bases_S5912C8, 11,
  &(vtc_S5912C8[0]), // expected_vtbl_contents
  &(vtt_S5912C8[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S5912C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5912C8),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5912C8),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5912C7  : S19490C26 , S5912C6 , virtual S5912C8 , S5912C3 , S5912C5 {
  ::S5912C5 s5912c7f0;
  short s5912c7f1;
  int s5912c7f2[2];
  void *s5912c7f3[3];
  ::S5912C8 s5912c7f4;
  virtual void  v3(); // _ZN7S5912C72v3Ev
  ~S5912C7(); // tgen
  S5912C7(); // tgen
};
//SIG(-1 S5912C7) C1{ BC2{ m} BC3{ VBC2 v2} VBC4{ BC2 BC5{ BC2 BC3 v3 Fi[2]} BC6{ VBC2 VBC5 BC3 Fi[2] Fp[3]} BC3 Fi[2]} BC6 BC5 v1 FC5 Fs Fi[2] Fp[3] FC4}


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

static void Test_S5912C7()
{
  extern Class_Descriptor cd_S5912C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S5912C7, buf);
    S5912C7 *dp, &lv = *(dp=new (buf) S5912C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S5912C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5912C7)");
    /*is_ambiguous_... S5912C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*)(S5912C8*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C3*)(S5912C8*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C3*)(S5912C8*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C8::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C8*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C3*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C3*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*), ABISELECT(224,144), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*), 0, "S5912C7");
    /*is_ambiguous_... S5912C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C8*), ABISELECT(248,160), "S5912C7");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*)(S5912C8*), ABISELECT(232,148), "S5912C7");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*)(S5912C8*), ABISELECT(232,148), "S5912C7");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C5*)(S5912C8*), ABISELECT(232,148), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*), ABISELECT(304,196), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*), ABISELECT(304,196), "S5912C7");
    check_base_class_offset(lv, (S5912C5*)(S5912C3*)(S5912C8*), ABISELECT(304,196), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S5912C5*)(S5912C3*), ABISELECT(304,196), "S5912C7");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C3*)(S5912C8*), ABISELECT(248,160), "S5912C7");
    check_base_class_offset(lv, (S5912C3*)(S5912C8*), ABISELECT(248,160), "S5912C7");
    /*is_ambiguous_... S5912C8::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C8*), ABISELECT(288,184), "S5912C7");
    check_base_class_offset(lv, (S5912C8*), ABISELECT(232,148), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C3*), ABISELECT(8,4), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S5912C3*), ABISELECT(8,4), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*), ABISELECT(48,28), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*), ABISELECT(48,28), "S5912C7");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C5*), ABISELECT(48,28), "S5912C7");
    check_field_offset(lv, s5912c7f0, ABISELECT(64,40), "S5912C7.s5912c7f0");
    check_field_offset(lv, s5912c7f1, ABISELECT(88,56), "S5912C7.s5912c7f1");
    check_field_offset(lv, s5912c7f2, ABISELECT(92,60), "S5912C7.s5912c7f2");
    check_field_offset(lv, s5912c7f3, ABISELECT(104,68), "S5912C7.s5912c7f3");
    check_field_offset(lv, s5912c7f4, ABISELECT(128,80), "S5912C7.s5912c7f4");
    test_class_info(&lv, &cd_S5912C7);
    dp->~S5912C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5912C7(Test_S5912C7, "S5912C7", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN7S5912C7C1Ev();
extern void _ZN7S5912C7D1Ev();
Name_Map name_map_S5912C7[] = {
  NSPAIR(_ZN7S5912C7C1Ev),
  NSPAIR(_ZN7S5912C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C3;
extern VTBL_ENTRY _ZTI7S5912C3[];
extern  VTBL_ENTRY _ZTV7S5912C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C3[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C8;
extern VTBL_ENTRY _ZTI7S5912C8[];
extern  VTBL_ENTRY _ZTV7S5912C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C8[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C3;
extern VTBL_ENTRY _ZTI7S5912C3[];
extern  VTBL_ENTRY _ZTV7S5912C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
static Base_Class bases_S5912C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S5912C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(248,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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(304,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5912C6,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5912C3,    ABISELECT(248,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(288,184), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5912C8,    ABISELECT(232,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5912C6,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5912C3,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5912C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5912C7[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C72v3Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY vtc_S5912C7[] = {
  ABISELECT(304,196),
  ABISELECT(232,148),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C72v3Ev,
  ABISELECT(296,192),
  ABISELECT(216,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  ABISELECT(176,116),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern VTBL_ENTRY _ZTV7S5912C7[];
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__7S5912C7[] = {
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C3__A1__7S5912C7[] = {
  ABISELECT(296,192),
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C3__A5__7S5912C7[] = {
  ABISELECT(216,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__7S5912C3__A1__7S5912C7[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A__7S5912C7[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C5__A6__7S5912C7[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C8__7S5912C7[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C57S5912C8__7S5912C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C57S5912C8__A1__7S5912C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C37S5912C8__7S5912C7[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C37S5912C8__A3__7S5912C7[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__7S5912C37S5912C8__7S5912C7[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C8__A4__7S5912C7[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C3__7S5912C8__7S5912C7[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A1__7S5912C8__7S5912C7[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__A3__7S5912C8__7S5912C7[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A1__7S5912C7[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C5__A2__7S5912C7[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
static  VTT_ENTRY vtt_S5912C7[] = {
  {&(_ZTV7S5912C7[5]),  5,41},
  {&(_tg__ZTV7S5912C6__7S5912C7[3]),  3,4},
  {&(_tg__ZTV7S5912C3__A1__7S5912C7[4]),  4,5},
  {&(_tg__ZTV7S5912C67S5912C3__A5__7S5912C7[3]),  3,4},
  {&(_tg__ZTV7S5912C5__7S5912C3__A1__7S5912C7[5]),  5,7},
  {&(_tg__ZTV7S5912C5__A__7S5912C7[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C5__A6__7S5912C7[3]),  3,4},
  {&(_ZTV7S5912C7[23]),  23,41},
  {&(_ZTV7S5912C7[29]),  29,41},
  {&(_ZTV7S5912C7[39]),  39,41},
  {&(_ZTV7S5912C7[33]),  33,41},
  {&(_ZTV7S5912C7[11]),  11,41},
  {&(_ZTV7S5912C7[15]),  15,41},
  {&(_tg__ZTV7S5912C8__7S5912C7[4]),  4,6},
  {&(_tg__ZTV7S5912C57S5912C8__7S5912C7[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C57S5912C8__A1__7S5912C7[3]),  3,4},
  {&(_tg__ZTV7S5912C37S5912C8__7S5912C7[4]),  4,5},
  {&(_tg__ZTV7S5912C67S5912C37S5912C8__A3__7S5912C7[3]),  3,4},
  {&(_tg__ZTV7S5912C5__7S5912C37S5912C8__7S5912C7[5]),  5,7},
  {&(_tg__ZTV7S5912C67S5912C8__A4__7S5912C7[3]),  3,4},
  {&(_tg__ZTV7S5912C3__7S5912C8__7S5912C7[4]),  4,5},
  {&(_tg__ZTV7S5912C5__A1__7S5912C8__7S5912C7[5]),  5,7},
  {&(_tg__ZTV7S5912C6__A3__7S5912C8__7S5912C7[3]),  3,4},
  {&(_tg__ZTV7S5912C5__A1__7S5912C7[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C5__A2__7S5912C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5912C7[];
extern  VTBL_ENTRY _ZTV7S5912C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C7[];
Class_Descriptor cd_S5912C7 = {  "S5912C7", // class name
  bases_S5912C7, 19,
  &(vtc_S5912C7[0]), // expected_vtbl_contents
  &(vtt_S5912C7[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI7S5912C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S5912C7),41, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5912C7),25, //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  S5912C1  : S5719C15 , S5912C7 , virtual S5912C6 {
  ~S5912C1(); // tgen
  S5912C1(); // tgen
};
//SIG(1 S5912C1) C1{ BC2{ m FL Fp FD FC3{ VBC4{ m} VBC5{ BC4 BC6{ VBC4 v4} v5 Fi[2]} BC6 Fi[2] Fp[3]} Fi[8]} BC7{ BC8{ m} BC9{ VBC8 v1} VBC10{ BC8 BC11{ BC8 BC9 v2 Fi[2]} BC12{ VBC8 VBC11 BC9 Fi[2] Fp[3]} BC9 Fi[2]} BC12 BC11 v3 FC11 Fs Fi[2] Fp[3] FC10} VBC9}


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

static void Test_S5912C1()
{
  extern Class_Descriptor cd_S5912C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,77)];
    init_test(&cd_S5912C1, buf);
    S5912C1 *dp, &lv = *(dp=new (buf) S5912C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,304), "sizeof(S5912C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5912C1)");
    check_base_class_offset(lv, (S5719C15*), ABISELECT(224,144), "S5912C1");
    /*is_ambiguous_... S5912C7::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C7*), 0, "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C7*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*)(S5912C8*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C3*)(S5912C8*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C1::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C3*)(S5912C8*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C8::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C8*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C3*)(S5912C7*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C3*)(S5912C7*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*)(S5912C5*)(S5912C7*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C1::S5912C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C6*), ABISELECT(344,236), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C7*), 0, "S5912C1");
    /*is_ambiguous_... S5912C8::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C8*), ABISELECT(368,252), "S5912C1");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*)(S5912C8*), ABISELECT(352,240), "S5912C1");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*)(S5912C8*), ABISELECT(352,240), "S5912C1");
    /*is_ambiguous_... S5912C8::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C5*)(S5912C8*), ABISELECT(352,240), "S5912C1");
    /*is_ambiguous_... S5912C1::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*), ABISELECT(424,288), "S5912C1");
    /*is_ambiguous_... S5912C1::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*), ABISELECT(424,288), "S5912C1");
    check_base_class_offset(lv, (S5912C5*)(S5912C3*)(S5912C8*), ABISELECT(424,288), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S5912C5*)(S5912C3*)(S5912C7*), ABISELECT(424,288), "S5912C1");
    /*is_ambiguous_... S5912C3::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C3*)(S5912C8*), ABISELECT(368,252), "S5912C1");
    check_base_class_offset(lv, (S5912C3*)(S5912C8*), ABISELECT(368,252), "S5912C1");
    /*is_ambiguous_... S5912C8::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C8*), ABISELECT(408,276), "S5912C1");
    check_base_class_offset(lv, (S5912C8*)(S5912C7*), ABISELECT(352,240), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C3*)(S5912C7*), ABISELECT(8,4), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C3 */ AMB_check_base_class_offset(lv, (S5912C3*)(S5912C7*), ABISELECT(8,4), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S19490C26*)(S5912C5*)(S5912C7*), ABISELECT(48,28), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C6*)(S5912C5*)(S5912C7*), ABISELECT(48,28), "S5912C1");
    /*is_ambiguous_... S5912C7::S5912C5 */ AMB_check_base_class_offset(lv, (S5912C5*)(S5912C7*), ABISELECT(48,28), "S5912C1");
    check_base_class_offset(lv, (S5912C7*), 0, "S5912C1");
    /*is_ambiguous_... S5912C1::S5912C6 */ AMB_check_base_class_offset(lv, (S5912C6*), ABISELECT(440,300), "S5912C1");
    test_class_info(&lv, &cd_S5912C1);
    dp->~S5912C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5912C1(Test_S5912C1, "S5912C1", ABISELECT(448,304));

#else // __cplusplus

extern void _ZN7S5912C1C1Ev();
extern void _ZN7S5912C1D1Ev();
Name_Map name_map_S5912C1[] = {
  NSPAIR(_ZN7S5912C1C1Ev),
  NSPAIR(_ZN7S5912C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5719C15;
extern VTBL_ENTRY _ZTI8S5719C15[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C3;
extern VTBL_ENTRY _ZTI7S5912C3[];
extern  VTBL_ENTRY _ZTV7S5912C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C3[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C8;
extern VTBL_ENTRY _ZTI7S5912C8[];
extern  VTBL_ENTRY _ZTV7S5912C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C8[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C3;
extern VTBL_ENTRY _ZTI7S5912C3[];
extern  VTBL_ENTRY _ZTV7S5912C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C3[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
extern Class_Descriptor cd_S5912C5;
extern VTBL_ENTRY _ZTI7S5912C5[];
extern  VTBL_ENTRY _ZTV7S5912C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C5[];
extern Class_Descriptor cd_S5912C7;
extern VTBL_ENTRY _ZTI7S5912C7[];
extern  VTBL_ENTRY _ZTV7S5912C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C7[];
extern Class_Descriptor cd_S5912C6;
extern VTBL_ENTRY _ZTI7S5912C6[];
extern  VTBL_ENTRY _ZTV7S5912C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C6[];
static Base_Class bases_S5912C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5719C15,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    ABISELECT(344,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
    3, //immediately_derived
  0, 1},
  {&cd_S5912C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(368,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
    14, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(352,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
    7, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(352,240), //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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(352,240), //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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(424,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(424,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(424,288), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S5912C6,    ABISELECT(368,252), //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5912C3,    ABISELECT(368,252), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5912C6,    ABISELECT(408,276), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5912C8,    ABISELECT(352,240), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S5912C6,    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
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5912C3,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5912C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5912C5,    ABISELECT(48,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5912C7,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5912C6,    ABISELECT(440,300), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S5912C1[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C72v3Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY vtc_S5912C1[] = {
  ABISELECT(440,300),
  ABISELECT(424,288),
  ABISELECT(352,240),
  ABISELECT(344,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C72v3Ev,
  ABISELECT(416,284),
  ABISELECT(336,232),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  ABISELECT(296,208),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-368,-252),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-408,-276),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-424,-288),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
  0,
  ABISELECT(-96,-64),
  ABISELECT(-440,-300),
  (VTBL_ENTRY)&(_ZTI7S5912C1[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S5912C1[];
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C7__7S5912C1[] = {
  ABISELECT(424,288),
  ABISELECT(352,240),
  ABISELECT(344,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C72v3Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C7__7S5912C1[] = {
  ABISELECT(344,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C37S5912C7__A1__7S5912C1[] = {
  ABISELECT(416,284),
  ABISELECT(336,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C37S5912C7__A5__7S5912C1[] = {
  ABISELECT(336,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__7S5912C37S5912C7__A1__7S5912C1[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-416,-284),
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C57S5912C7__A2__7S5912C1[] = {
  ABISELECT(296,208),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C57S5912C7__A6__7S5912C1[] = {
  ABISELECT(296,208),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C8__7S5912C7__7S5912C1[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C37S5912C8__7S5912C7__7S5912C1[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-368,-252),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A1__7S5912C7__7S5912C1[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-424,-288),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C8__A4__7S5912C7__7S5912C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-408,-276),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C3__A1__7S5912C7__7S5912C1[] = {
  ABISELECT(416,284),
  ABISELECT(336,232),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A__7S5912C7__7S5912C1[] = {
  ABISELECT(296,208),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S5912C7[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C8__7S5912C1[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C57S5912C8__7S5912C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C57S5912C8__A1__7S5912C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C37S5912C8__7S5912C1[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C37S5912C8__A3__7S5912C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__7S5912C37S5912C8__7S5912C1[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5912C3[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C8__A4__7S5912C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C3__7S5912C8__7S5912C1[] = {
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A1__7S5912C8__7S5912C1[] = {
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__A3__7S5912C8__7S5912C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S5912C8[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
extern void _ZN7S5912C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C5__A1__7S5912C1[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C5[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
  (VTBL_ENTRY)&_ZN7S5912C52v2Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C67S5912C5__A2__7S5912C1[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
extern void _ZN7S5912C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5912C6__A7__7S5912C1[] = {
  ABISELECT(-96,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S5912C6[0]),
  (VTBL_ENTRY)&_ZN7S5912C62v1Ev,
};
static  VTT_ENTRY vtt_S5912C1[] = {
  {&(_ZTV7S5912C1[6]),  6,47},
  {&(_tg__ZTV7S5912C7__7S5912C1[5]),  5,7},
  {&(_tg__ZTV7S5912C67S5912C7__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C37S5912C7__A1__7S5912C1[4]),  4,5},
  {&(_tg__ZTV7S5912C67S5912C37S5912C7__A5__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C5__7S5912C37S5912C7__A1__7S5912C1[5]),  5,7},
  {&(_tg__ZTV7S5912C57S5912C7__A2__7S5912C1[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C57S5912C7__A6__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C8__7S5912C7__7S5912C1[6]),  6,8},
  {&(_tg__ZTV7S5912C37S5912C8__7S5912C7__7S5912C1[4]),  4,5},
  {&(_tg__ZTV7S5912C5__A1__7S5912C7__7S5912C1[5]),  5,7},
  {&(_tg__ZTV7S5912C67S5912C8__A4__7S5912C7__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C3__A1__7S5912C7__7S5912C1[4]),  4,5},
  {&(_tg__ZTV7S5912C5__A__7S5912C7__7S5912C1[3]),  3,5},
  {&(_ZTV7S5912C1[24]),  24,47},
  {&(_ZTV7S5912C1[30]),  30,47},
  {&(_ZTV7S5912C1[40]),  40,47},
  {&(_ZTV7S5912C1[34]),  34,47},
  {&(_ZTV7S5912C1[12]),  12,47},
  {&(_ZTV7S5912C1[16]),  16,47},
  {&(_ZTV7S5912C1[46]),  46,47},
  {&(_tg__ZTV7S5912C8__7S5912C1[4]),  4,6},
  {&(_tg__ZTV7S5912C57S5912C8__7S5912C1[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C57S5912C8__A1__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C37S5912C8__7S5912C1[4]),  4,5},
  {&(_tg__ZTV7S5912C67S5912C37S5912C8__A3__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C5__7S5912C37S5912C8__7S5912C1[5]),  5,7},
  {&(_tg__ZTV7S5912C67S5912C8__A4__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C3__7S5912C8__7S5912C1[4]),  4,5},
  {&(_tg__ZTV7S5912C5__A1__7S5912C8__7S5912C1[5]),  5,7},
  {&(_tg__ZTV7S5912C6__A3__7S5912C8__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C5__A1__7S5912C1[3]),  3,5},
  {&(_tg__ZTV7S5912C67S5912C5__A2__7S5912C1[3]),  3,4},
  {&(_tg__ZTV7S5912C6__A7__7S5912C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S5912C1[];
extern  VTBL_ENTRY _ZTV7S5912C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5912C1[];
Class_Descriptor cd_S5912C1 = {  "S5912C1", // class name
  bases_S5912C1, 22,
  &(vtc_S5912C1[0]), // expected_vtbl_contents
  &(vtt_S5912C1[0]), // expected_vtt_contents
  ABISELECT(448,304), // object size
  NSPAIRA(_ZTI7S5912C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S5912C1),47, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5912C1),34, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20865C3  {
  int s20865c3f0;
  virtual void  v5(); // _ZN8S20865C32v5Ev
  virtual void  v6(); // _ZN8S20865C32v6Ev
  virtual void  v7(); // _ZN8S20865C32v7Ev
  ~S20865C3(); // tgen
  S20865C3(); // tgen
};
//SIG(-1 S20865C3) C1{ v1 v2 v3 Fi}


void  S20865C3 ::v5(){vfunc_called(this, "_ZN8S20865C32v5Ev");}
void  S20865C3 ::v6(){vfunc_called(this, "_ZN8S20865C32v6Ev");}
void  S20865C3 ::v7(){vfunc_called(this, "_ZN8S20865C32v7Ev");}
S20865C3 ::~S20865C3(){ note_dtor("S20865C3", this);} // tgen
S20865C3 ::S20865C3(){ note_ctor("S20865C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20865C3C1Ev();
extern void _ZN8S20865C3D1Ev();
Name_Map name_map_S20865C3[] = {
  NSPAIR(_ZN8S20865C3C1Ev),
  NSPAIR(_ZN8S20865C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20865C3[];
extern void _ZN8S20865C32v5Ev();
extern void _ZN8S20865C32v6Ev();
extern void _ZN8S20865C32v7Ev();
static  VTBL_ENTRY vtc_S20865C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C3[0]),
  (VTBL_ENTRY)&_ZN8S20865C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v7Ev,
};
extern VTBL_ENTRY _ZTI8S20865C3[];
extern  VTBL_ENTRY _ZTV8S20865C3[];
Class_Descriptor cd_S20865C3 = {  "S20865C3", // class name
  0,0,//no base classes
  &(vtc_S20865C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20865C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20865C3),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  S20865C4  {
  virtual void  v15(); // _ZN8S20865C43v15Ev
  ~S20865C4(); // tgen
  S20865C4(); // tgen
};
//SIG(-1 S20865C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20865C4C1Ev();
extern void _ZN8S20865C4D1Ev();
Name_Map name_map_S20865C4[] = {
  NSPAIR(_ZN8S20865C4C1Ev),
  NSPAIR(_ZN8S20865C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20865C4[];
extern void _ZN8S20865C43v15Ev();
static  VTBL_ENTRY vtc_S20865C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C4[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
};
extern VTBL_ENTRY _ZTI8S20865C4[];
extern  VTBL_ENTRY _ZTV8S20865C4[];
Class_Descriptor cd_S20865C4 = {  "S20865C4", // class name
  0,0,//no base classes
  &(vtc_S20865C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20865C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20865C4),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  S20865C2  : virtual S20865C3 {
  ::S20865C4 s20865c2f0;
  int s20865c2f1;
  virtual void  v8(); // _ZN8S20865C22v8Ev
  virtual void  v9(); // _ZN8S20865C22v9Ev
  virtual void  v10(); // _ZN8S20865C23v10Ev
  virtual void  v11(); // _ZN8S20865C23v11Ev
  virtual void  v12(); // _ZN8S20865C23v12Ev
  virtual void  v13(); // _ZN8S20865C23v13Ev
  virtual void  v14(); // _ZN8S20865C23v14Ev
  ~S20865C2(); // tgen
  S20865C2(); // tgen
};
//SIG(-1 S20865C2) C1{ VBC2{ v8 v9 v10 Fi} v1 v2 v3 v4 v5 v6 v7 FC3{ v11} Fi}


void  S20865C2 ::v8(){vfunc_called(this, "_ZN8S20865C22v8Ev");}
void  S20865C2 ::v9(){vfunc_called(this, "_ZN8S20865C22v9Ev");}
void  S20865C2 ::v10(){vfunc_called(this, "_ZN8S20865C23v10Ev");}
void  S20865C2 ::v11(){vfunc_called(this, "_ZN8S20865C23v11Ev");}
void  S20865C2 ::v12(){vfunc_called(this, "_ZN8S20865C23v12Ev");}
void  S20865C2 ::v13(){vfunc_called(this, "_ZN8S20865C23v13Ev");}
void  S20865C2 ::v14(){vfunc_called(this, "_ZN8S20865C23v14Ev");}
S20865C2 ::~S20865C2(){ note_dtor("S20865C2", this);} // tgen
S20865C2 ::S20865C2(){ note_ctor("S20865C2", this);} // tgen

static void Test_S20865C2()
{
  extern Class_Descriptor cd_S20865C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20865C2, buf);
    S20865C2 *dp, &lv = *(dp=new (buf) S20865C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20865C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20865C2)");
    check_base_class_offset(lv, (S20865C3*), ABISELECT(24,12), "S20865C2");
    check_field_offset(lv, s20865c2f0, ABISELECT(8,4), "S20865C2.s20865c2f0");
    check_field_offset(lv, s20865c2f1, ABISELECT(16,8), "S20865C2.s20865c2f1");
    test_class_info(&lv, &cd_S20865C2);
    dp->~S20865C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20865C2(Test_S20865C2, "S20865C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20865C2C1Ev();
extern void _ZN8S20865C2D1Ev();
Name_Map name_map_S20865C2[] = {
  NSPAIR(_ZN8S20865C2C1Ev),
  NSPAIR(_ZN8S20865C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20865C3;
extern VTBL_ENTRY _ZTI8S20865C3[];
extern  VTBL_ENTRY _ZTV8S20865C3[];
static Base_Class bases_S20865C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20865C3,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20865C2[];
extern void _ZN8S20865C22v8Ev();
extern void _ZN8S20865C22v9Ev();
extern void _ZN8S20865C23v10Ev();
extern void _ZN8S20865C23v11Ev();
extern void _ZN8S20865C23v12Ev();
extern void _ZN8S20865C23v13Ev();
extern void _ZN8S20865C23v14Ev();
extern void _ZN8S20865C32v5Ev();
extern void _ZN8S20865C32v6Ev();
extern void _ZN8S20865C32v7Ev();
static  VTBL_ENTRY vtc_S20865C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C2[0]),
  (VTBL_ENTRY)&_ZN8S20865C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20865C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v14Ev,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20865C2[0]),
  (VTBL_ENTRY)&_ZN8S20865C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v7Ev,
};
extern VTBL_ENTRY _ZTV8S20865C2[];
static  VTT_ENTRY vtt_S20865C2[] = {
  {&(_ZTV8S20865C2[3]),  3,18},
  {&(_ZTV8S20865C2[15]),  15,18},
};
extern VTBL_ENTRY _ZTI8S20865C2[];
extern  VTBL_ENTRY _ZTV8S20865C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C2[];
Class_Descriptor cd_S20865C2 = {  "S20865C2", // class name
  bases_S20865C2, 1,
  &(vtc_S20865C2[0]), // expected_vtbl_contents
  &(vtt_S20865C2[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20865C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20865C2),18, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20865C2),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  S20865C6  : virtual S20865C4 {
  char s20865c6f0;
  virtual void  v16(); // _ZN8S20865C63v16Ev
  virtual void  v17(); // _ZN8S20865C63v17Ev
  virtual void  v18(); // _ZN8S20865C63v18Ev
  virtual void  v19(); // _ZN8S20865C63v19Ev
  virtual void  v20(); // _ZN8S20865C63v20Ev
  virtual void  v21(); // _ZN8S20865C63v21Ev
  ~S20865C6(); // tgen
  S20865C6(); // tgen
};
//SIG(-1 S20865C6) C1{ VBC2{ v7} v1 v2 v3 v4 v5 v6 Fc}


void  S20865C6 ::v16(){vfunc_called(this, "_ZN8S20865C63v16Ev");}
void  S20865C6 ::v17(){vfunc_called(this, "_ZN8S20865C63v17Ev");}
void  S20865C6 ::v18(){vfunc_called(this, "_ZN8S20865C63v18Ev");}
void  S20865C6 ::v19(){vfunc_called(this, "_ZN8S20865C63v19Ev");}
void  S20865C6 ::v20(){vfunc_called(this, "_ZN8S20865C63v20Ev");}
void  S20865C6 ::v21(){vfunc_called(this, "_ZN8S20865C63v21Ev");}
S20865C6 ::~S20865C6(){ note_dtor("S20865C6", this);} // tgen
S20865C6 ::S20865C6(){ note_ctor("S20865C6", this);} // tgen

static void Test_S20865C6()
{
  extern Class_Descriptor cd_S20865C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20865C6, buf);
    S20865C6 *dp, &lv = *(dp=new (buf) S20865C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20865C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20865C6)");
    check_base_class_offset(lv, (S20865C4*), 0, "S20865C6");
    check_field_offset(lv, s20865c6f0, ABISELECT(8,4), "S20865C6.s20865c6f0");
    test_class_info(&lv, &cd_S20865C6);
    dp->~S20865C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20865C6(Test_S20865C6, "S20865C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20865C6C1Ev();
extern void _ZN8S20865C6D1Ev();
Name_Map name_map_S20865C6[] = {
  NSPAIR(_ZN8S20865C6C1Ev),
  NSPAIR(_ZN8S20865C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20865C4;
extern VTBL_ENTRY _ZTI8S20865C4[];
extern  VTBL_ENTRY _ZTV8S20865C4[];
static Base_Class bases_S20865C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20865C4,    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 _ZTI8S20865C6[];
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C63v16Ev();
extern void _ZN8S20865C63v17Ev();
extern void _ZN8S20865C63v18Ev();
extern void _ZN8S20865C63v19Ev();
extern void _ZN8S20865C63v20Ev();
extern void _ZN8S20865C63v21Ev();
static  VTBL_ENTRY vtc_S20865C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C6[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v21Ev,
};
extern VTBL_ENTRY _ZTV8S20865C6[];
static  VTT_ENTRY vtt_S20865C6[] = {
  {&(_ZTV8S20865C6[4]),  4,11},
  {&(_ZTV8S20865C6[4]),  4,11},
};
extern VTBL_ENTRY _ZTI8S20865C6[];
extern  VTBL_ENTRY _ZTV8S20865C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C6[];
Class_Descriptor cd_S20865C6 = {  "S20865C6", // class name
  bases_S20865C6, 1,
  &(vtc_S20865C6[0]), // expected_vtbl_contents
  &(vtt_S20865C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20865C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20865C6),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20865C6),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  S20865C5  : S20865C6 , S20865C4 {
  int s20865c5f0;
  virtual void  v22(); // _ZN8S20865C53v22Ev
  virtual void  v23(); // _ZN8S20865C53v23Ev
  virtual void  v24(); // _ZN8S20865C53v24Ev
  virtual void  v25(); // _ZN8S20865C53v25Ev
  virtual void  v26(); // _ZN8S20865C53v26Ev
  virtual void  v27(); // _ZN8S20865C53v27Ev
  virtual void  v28(); // _ZN8S20865C53v28Ev
  virtual void  v29(); // _ZN8S20865C53v29Ev
  ~S20865C5(); // tgen
  S20865C5(); // tgen
};
//SIG(-1 S20865C5) C1{ BC2{ VBC3{ v9} v10 v11 v12 v13 v14 v15 Fc} BC3 v1 v2 v3 v4 v5 v6 v7 v8 Fi}


void  S20865C5 ::v22(){vfunc_called(this, "_ZN8S20865C53v22Ev");}
void  S20865C5 ::v23(){vfunc_called(this, "_ZN8S20865C53v23Ev");}
void  S20865C5 ::v24(){vfunc_called(this, "_ZN8S20865C53v24Ev");}
void  S20865C5 ::v25(){vfunc_called(this, "_ZN8S20865C53v25Ev");}
void  S20865C5 ::v26(){vfunc_called(this, "_ZN8S20865C53v26Ev");}
void  S20865C5 ::v27(){vfunc_called(this, "_ZN8S20865C53v27Ev");}
void  S20865C5 ::v28(){vfunc_called(this, "_ZN8S20865C53v28Ev");}
void  S20865C5 ::v29(){vfunc_called(this, "_ZN8S20865C53v29Ev");}
S20865C5 ::~S20865C5(){ note_dtor("S20865C5", this);} // tgen
S20865C5 ::S20865C5(){ note_ctor("S20865C5", this);} // tgen

static void Test_S20865C5()
{
  extern Class_Descriptor cd_S20865C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20865C5, buf);
    S20865C5 *dp, &lv = *(dp=new (buf) S20865C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20865C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20865C5)");
    check_base_class_offset(lv, (S20865C4*)(S20865C6*), 0, "S20865C5");
    check_base_class_offset(lv, (S20865C6*), 0, "S20865C5");
    /*is_ambiguous_... S20865C5::S20865C4 */ AMB_check_base_class_offset(lv, (S20865C4*), ABISELECT(16,8), "S20865C5");
    check_field_offset(lv, s20865c5f0, ABISELECT(24,12), "S20865C5.s20865c5f0");
    test_class_info(&lv, &cd_S20865C5);
    dp->~S20865C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20865C5(Test_S20865C5, "S20865C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20865C5C1Ev();
extern void _ZN8S20865C5D1Ev();
Name_Map name_map_S20865C5[] = {
  NSPAIR(_ZN8S20865C5C1Ev),
  NSPAIR(_ZN8S20865C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20865C4;
extern VTBL_ENTRY _ZTI8S20865C4[];
extern  VTBL_ENTRY _ZTV8S20865C4[];
extern Class_Descriptor cd_S20865C6;
extern VTBL_ENTRY _ZTI8S20865C6[];
extern  VTBL_ENTRY _ZTV8S20865C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C6[];
extern Class_Descriptor cd_S20865C4;
extern VTBL_ENTRY _ZTI8S20865C4[];
extern  VTBL_ENTRY _ZTV8S20865C4[];
static Base_Class bases_S20865C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20865C4,    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_S20865C6,    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_S20865C4,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20865C5[];
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C63v16Ev();
extern void _ZN8S20865C63v17Ev();
extern void _ZN8S20865C63v18Ev();
extern void _ZN8S20865C63v19Ev();
extern void _ZN8S20865C63v20Ev();
extern void _ZN8S20865C63v21Ev();
extern void _ZN8S20865C53v22Ev();
extern void _ZN8S20865C53v23Ev();
extern void _ZN8S20865C53v24Ev();
extern void _ZN8S20865C53v25Ev();
extern void _ZN8S20865C53v26Ev();
extern void _ZN8S20865C53v27Ev();
extern void _ZN8S20865C53v28Ev();
extern void _ZN8S20865C53v29Ev();
extern void _ZN8S20865C43v15Ev();
static  VTBL_ENTRY vtc_S20865C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C5[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v25Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v29Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20865C5[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
};
extern VTBL_ENTRY _ZTV8S20865C5[];
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C63v16Ev();
extern void _ZN8S20865C63v17Ev();
extern void _ZN8S20865C63v18Ev();
extern void _ZN8S20865C63v19Ev();
extern void _ZN8S20865C63v20Ev();
extern void _ZN8S20865C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C6__8S20865C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C6[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v21Ev,
};
static  VTT_ENTRY vtt_S20865C5[] = {
  {&(_ZTV8S20865C5[4]),  4,22},
  {&(_tg__ZTV8S20865C6__8S20865C5[4]),  4,11},
  {&(_tg__ZTV8S20865C6__8S20865C5[4]),  4,11},
  {&(_ZTV8S20865C5[4]),  4,22},
};
extern VTBL_ENTRY _ZTI8S20865C5[];
extern  VTBL_ENTRY _ZTV8S20865C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C5[];
Class_Descriptor cd_S20865C5 = {  "S20865C5", // class name
  bases_S20865C5, 3,
  &(vtc_S20865C5[0]), // expected_vtbl_contents
  &(vtt_S20865C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20865C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20865C5),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20865C5),4, //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  S20865C1  : virtual S20865C2 , virtual S20865C5 {
  char s20865c1f0;
  virtual void  v1(); // _ZN8S20865C12v1Ev
  virtual void  v2(); // _ZN8S20865C12v2Ev
  virtual void  v3(); // _ZN8S20865C12v3Ev
  virtual void  v4(); // _ZN8S20865C12v4Ev
  ~S20865C1(); // tgen
  S20865C1(); // tgen
};
//SIG(1 S20865C1) C1{ VBC2{ VBC3{ v5 v6 v7 Fi} v8 v9 v10 v11 v12 v13 v14 FC4{ v15} Fi} VBC5{ BC6{ VBC4 v16 v17 v18 v19 v20 v21 Fc} BC4 v22 v23 v24 v25 v26 v27 v28 v29 Fi} v1 v2 v3 v4 Fc}


void  S20865C1 ::v1(){vfunc_called(this, "_ZN8S20865C12v1Ev");}
void  S20865C1 ::v2(){vfunc_called(this, "_ZN8S20865C12v2Ev");}
void  S20865C1 ::v3(){vfunc_called(this, "_ZN8S20865C12v3Ev");}
void  S20865C1 ::v4(){vfunc_called(this, "_ZN8S20865C12v4Ev");}
S20865C1 ::~S20865C1(){ note_dtor("S20865C1", this);} // tgen
S20865C1 ::S20865C1(){ note_ctor("S20865C1", this);} // tgen

static void Test_S20865C1()
{
  extern Class_Descriptor cd_S20865C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S20865C1, buf);
    S20865C1 *dp, &lv = *(dp=new (buf) S20865C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S20865C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20865C1)");
    check_base_class_offset(lv, (S20865C3*)(S20865C2*), ABISELECT(40,20), "S20865C1");
    check_base_class_offset(lv, (S20865C2*), ABISELECT(16,8), "S20865C1");
    check_base_class_offset(lv, (S20865C4*)(S20865C6*)(S20865C5*), 0, "S20865C1");
    check_base_class_offset(lv, (S20865C6*)(S20865C5*), ABISELECT(56,28), "S20865C1");
    /*is_ambiguous_... S20865C5::S20865C4 */ AMB_check_base_class_offset(lv, (S20865C4*)(S20865C5*), ABISELECT(72,36), "S20865C1");
    check_base_class_offset(lv, (S20865C5*), ABISELECT(56,28), "S20865C1");
    check_field_offset(lv, s20865c1f0, ABISELECT(8,4), "S20865C1.s20865c1f0");
    test_class_info(&lv, &cd_S20865C1);
    dp->~S20865C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20865C1(Test_S20865C1, "S20865C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN8S20865C1C1Ev();
extern void _ZN8S20865C1D1Ev();
Name_Map name_map_S20865C1[] = {
  NSPAIR(_ZN8S20865C1C1Ev),
  NSPAIR(_ZN8S20865C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20865C3;
extern VTBL_ENTRY _ZTI8S20865C3[];
extern  VTBL_ENTRY _ZTV8S20865C3[];
extern Class_Descriptor cd_S20865C2;
extern VTBL_ENTRY _ZTI8S20865C2[];
extern  VTBL_ENTRY _ZTV8S20865C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C2[];
extern Class_Descriptor cd_S20865C4;
extern VTBL_ENTRY _ZTI8S20865C4[];
extern  VTBL_ENTRY _ZTV8S20865C4[];
extern Class_Descriptor cd_S20865C6;
extern VTBL_ENTRY _ZTI8S20865C6[];
extern  VTBL_ENTRY _ZTV8S20865C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C6[];
extern Class_Descriptor cd_S20865C4;
extern VTBL_ENTRY _ZTI8S20865C4[];
extern  VTBL_ENTRY _ZTV8S20865C4[];
extern Class_Descriptor cd_S20865C5;
extern VTBL_ENTRY _ZTI8S20865C5[];
extern  VTBL_ENTRY _ZTV8S20865C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C5[];
static Base_Class bases_S20865C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20865C3,    ABISELECT(40,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20865C2,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20865C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20865C6,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20865C4,    ABISELECT(72,36), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20865C5,    ABISELECT(56,28), //bcp->offset
    37, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20865C1[];
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C12v1Ev();
extern void _ZN8S20865C12v2Ev();
extern void _ZN8S20865C12v3Ev();
extern void _ZN8S20865C12v4Ev();
extern void _ZN8S20865C22v8Ev();
extern void _ZN8S20865C22v9Ev();
extern void _ZN8S20865C23v10Ev();
extern void _ZN8S20865C23v11Ev();
extern void _ZN8S20865C23v12Ev();
extern void _ZN8S20865C23v13Ev();
extern void _ZN8S20865C23v14Ev();
extern void _ZN8S20865C32v5Ev();
extern void _ZN8S20865C32v6Ev();
extern void _ZN8S20865C32v7Ev();
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C63v16Ev();
extern void _ZN8S20865C63v17Ev();
extern void _ZN8S20865C63v18Ev();
extern void _ZN8S20865C63v19Ev();
extern void _ZN8S20865C63v20Ev();
extern void _ZN8S20865C63v21Ev();
extern void _ZN8S20865C53v22Ev();
extern void _ZN8S20865C53v23Ev();
extern void _ZN8S20865C53v24Ev();
extern void _ZN8S20865C53v25Ev();
extern void _ZN8S20865C53v26Ev();
extern void _ZN8S20865C53v27Ev();
extern void _ZN8S20865C53v28Ev();
extern void _ZN8S20865C53v29Ev();
extern void _ZN8S20865C43v15Ev();
static  VTBL_ENTRY vtc_S20865C1[] = {
  0,
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C1[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20865C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20865C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20865C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20865C1[0]),
  (VTBL_ENTRY)&_ZN8S20865C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20865C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v14Ev,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20865C1[0]),
  (VTBL_ENTRY)&_ZN8S20865C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20865C1[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v25Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v29Ev,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20865C1[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
};
extern VTBL_ENTRY _ZTV8S20865C1[];
extern void _ZN8S20865C22v8Ev();
extern void _ZN8S20865C22v9Ev();
extern void _ZN8S20865C23v10Ev();
extern void _ZN8S20865C23v11Ev();
extern void _ZN8S20865C23v12Ev();
extern void _ZN8S20865C23v13Ev();
extern void _ZN8S20865C23v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C2__8S20865C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C2[0]),
  (VTBL_ENTRY)&_ZN8S20865C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20865C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20865C23v14Ev,
};
extern void _ZN8S20865C32v5Ev();
extern void _ZN8S20865C32v6Ev();
extern void _ZN8S20865C32v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C3__8S20865C2__8S20865C1[] = {
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20865C2[0]),
  (VTBL_ENTRY)&_ZN8S20865C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20865C32v7Ev,
};
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C63v16Ev();
extern void _ZN8S20865C63v17Ev();
extern void _ZN8S20865C63v18Ev();
extern void _ZN8S20865C63v19Ev();
extern void _ZN8S20865C63v20Ev();
extern void _ZN8S20865C63v21Ev();
extern void _ZN8S20865C53v22Ev();
extern void _ZN8S20865C53v23Ev();
extern void _ZN8S20865C53v24Ev();
extern void _ZN8S20865C53v25Ev();
extern void _ZN8S20865C53v26Ev();
extern void _ZN8S20865C53v27Ev();
extern void _ZN8S20865C53v28Ev();
extern void _ZN8S20865C53v29Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C5__8S20865C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C5[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v25Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20865C53v29Ev,
};
extern void _ZN8S20865C43v15Ev();
extern void _ZN8S20865C63v16Ev();
extern void _ZN8S20865C63v17Ev();
extern void _ZN8S20865C63v18Ev();
extern void _ZN8S20865C63v19Ev();
extern void _ZN8S20865C63v20Ev();
extern void _ZN8S20865C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C68S20865C5__8S20865C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20865C6[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20865C63v21Ev,
};
extern void _ZN8S20865C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C4__8S20865C68S20865C5__8S20865C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S20865C6[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
};
extern void _ZN8S20865C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20865C4__8S20865C5__8S20865C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S20865C5[0]),
  (VTBL_ENTRY)&_ZN8S20865C43v15Ev,
};
static  VTT_ENTRY vtt_S20865C1[] = {
  {&(_ZTV8S20865C1[7]),  7,73},
  {&(_ZTV8S20865C1[22]),  22,73},
  {&(_ZTV8S20865C1[34]),  34,73},
  {&(_ZTV8S20865C1[55]),  55,73},
  {&(_ZTV8S20865C1[7]),  7,73},
  {&(_ZTV8S20865C1[72]),  72,73},
  {&(_tg__ZTV8S20865C2__8S20865C1[3]),  3,10},
  {&(_tg__ZTV8S20865C3__8S20865C2__8S20865C1[5]),  5,8},
  {&(_tg__ZTV8S20865C5__8S20865C1[4]),  4,19},
  {&(_tg__ZTV8S20865C68S20865C5__8S20865C1[4]),  4,11},
  {&(_tg__ZTV8S20865C4__8S20865C68S20865C5__8S20865C1[3]),  3,4},
  {&(_tg__ZTV8S20865C4__8S20865C5__8S20865C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20865C1[];
extern  VTBL_ENTRY _ZTV8S20865C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20865C1[];
Class_Descriptor cd_S20865C1 = {  "S20865C1", // class name
  bases_S20865C1, 6,
  &(vtc_S20865C1[0]), // expected_vtbl_contents
  &(vtt_S20865C1[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI8S20865C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20865C1),73, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20865C1),12, //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  S873C5  {
  ::S16385C7 s873c5f0;
  int s873c5f1[2];
  char s873c5f2;
  virtual  ~S873C5(); // _ZN6S873C5D1Ev
  virtual void  v2(); // _ZN6S873C52v2Ev
  virtual void  v3(); // _ZN6S873C52v3Ev
  virtual void  v4(); // _ZN6S873C52v4Ev
  S873C5(); // tgen
};
//SIG(-1 S873C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S873C5 ::~S873C5(){ note_dtor("S873C5", this);}
void  S873C5 ::v2(){vfunc_called(this, "_ZN6S873C52v2Ev");}
void  S873C5 ::v3(){vfunc_called(this, "_ZN6S873C52v3Ev");}
void  S873C5 ::v4(){vfunc_called(this, "_ZN6S873C52v4Ev");}
S873C5 ::S873C5(){ note_ctor("S873C5", this);} // tgen

static void Test_S873C5()
{
  extern Class_Descriptor cd_S873C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S873C5, buf);
    S873C5 *dp, &lv = *(dp=new (buf) S873C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S873C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S873C5)");
    check_field_offset(lv, s873c5f0, ABISELECT(8,4), "S873C5.s873c5f0");
    check_field_offset(lv, s873c5f1, ABISELECT(24,16), "S873C5.s873c5f1");
    check_field_offset(lv, s873c5f2, ABISELECT(32,24), "S873C5.s873c5f2");
    test_class_info(&lv, &cd_S873C5);
    dp->~S873C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS873C5(Test_S873C5, "S873C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S873C5C1Ev();
extern void _ZN6S873C5D1Ev();
Name_Map name_map_S873C5[] = {
  NSPAIR(_ZN6S873C5C1Ev),
  NSPAIR(_ZN6S873C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S873C5[];
extern void _ZN6S873C5D1Ev();
extern void _ZN6S873C5D0Ev();
extern void _ZN6S873C52v2Ev();
extern void _ZN6S873C52v3Ev();
extern void _ZN6S873C52v4Ev();
static  VTBL_ENTRY vtc_S873C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S873C5[0]),
  (VTBL_ENTRY)&_ZN6S873C5D1Ev,
  (VTBL_ENTRY)&_ZN6S873C5D0Ev,
  (VTBL_ENTRY)&_ZN6S873C52v2Ev,
  (VTBL_ENTRY)&_ZN6S873C52v3Ev,
  (VTBL_ENTRY)&_ZN6S873C52v4Ev,
};
extern VTBL_ENTRY _ZTI6S873C5[];
extern  VTBL_ENTRY _ZTV6S873C5[];
Class_Descriptor cd_S873C5 = {  "S873C5", // class name
  0,0,//no base classes
  &(vtc_S873C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S873C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S873C5),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  S873C4  : S873C5 {
  void *s873c4f0[2];
  virtual  ~S873C4(); // _ZN6S873C4D1Ev
  virtual void  v5(); // _ZN6S873C42v5Ev
  virtual void  v6(); // _ZN6S873C42v6Ev
  virtual void  v7(); // _ZN6S873C42v7Ev
  virtual void  v8(); // _ZN6S873C42v8Ev
  virtual void  v9(); // _ZN6S873C42v9Ev
  virtual void  v10(); // _ZN6S873C43v10Ev
  virtual void  v11(); // _ZN6S873C43v11Ev
  virtual void  v12(); // _ZN6S873C43v12Ev
  virtual void  v13(); // _ZN6S873C43v13Ev
  S873C4(); // tgen
};
//SIG(-1 S873C4) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S873C4 ::~S873C4(){ note_dtor("S873C4", this);}
void  S873C4 ::v5(){vfunc_called(this, "_ZN6S873C42v5Ev");}
void  S873C4 ::v6(){vfunc_called(this, "_ZN6S873C42v6Ev");}
void  S873C4 ::v7(){vfunc_called(this, "_ZN6S873C42v7Ev");}
void  S873C4 ::v8(){vfunc_called(this, "_ZN6S873C42v8Ev");}
void  S873C4 ::v9(){vfunc_called(this, "_ZN6S873C42v9Ev");}
void  S873C4 ::v10(){vfunc_called(this, "_ZN6S873C43v10Ev");}
void  S873C4 ::v11(){vfunc_called(this, "_ZN6S873C43v11Ev");}
void  S873C4 ::v12(){vfunc_called(this, "_ZN6S873C43v12Ev");}
void  S873C4 ::v13(){vfunc_called(this, "_ZN6S873C43v13Ev");}
S873C4 ::S873C4(){ note_ctor("S873C4", this);} // tgen

static void Test_S873C4()
{
  extern Class_Descriptor cd_S873C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S873C4, buf);
    S873C4 *dp, &lv = *(dp=new (buf) S873C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S873C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S873C4)");
    check_base_class_offset(lv, (S873C5*), 0, "S873C4");
    check_field_offset(lv, s873c4f0, ABISELECT(40,28), "S873C4.s873c4f0");
    test_class_info(&lv, &cd_S873C4);
    dp->~S873C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS873C4(Test_S873C4, "S873C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN6S873C4C1Ev();
extern void _ZN6S873C4D1Ev();
Name_Map name_map_S873C4[] = {
  NSPAIR(_ZN6S873C4C1Ev),
  NSPAIR(_ZN6S873C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S873C5;
extern VTBL_ENTRY _ZTI6S873C5[];
extern  VTBL_ENTRY _ZTV6S873C5[];
static Base_Class bases_S873C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S873C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S873C4[];
extern void _ZN6S873C4D1Ev();
extern void _ZN6S873C4D0Ev();
extern void _ZN6S873C52v2Ev();
extern void _ZN6S873C52v3Ev();
extern void _ZN6S873C52v4Ev();
extern void _ZN6S873C42v5Ev();
extern void _ZN6S873C42v6Ev();
extern void _ZN6S873C42v7Ev();
extern void _ZN6S873C42v8Ev();
extern void _ZN6S873C42v9Ev();
extern void _ZN6S873C43v10Ev();
extern void _ZN6S873C43v11Ev();
extern void _ZN6S873C43v12Ev();
extern void _ZN6S873C43v13Ev();
static  VTBL_ENTRY vtc_S873C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S873C4[0]),
  (VTBL_ENTRY)&_ZN6S873C4D1Ev,
  (VTBL_ENTRY)&_ZN6S873C4D0Ev,
  (VTBL_ENTRY)&_ZN6S873C52v2Ev,
  (VTBL_ENTRY)&_ZN6S873C52v3Ev,
  (VTBL_ENTRY)&_ZN6S873C52v4Ev,
  (VTBL_ENTRY)&_ZN6S873C42v5Ev,
  (VTBL_ENTRY)&_ZN6S873C42v6Ev,
  (VTBL_ENTRY)&_ZN6S873C42v7Ev,
  (VTBL_ENTRY)&_ZN6S873C42v8Ev,
  (VTBL_ENTRY)&_ZN6S873C42v9Ev,
  (VTBL_ENTRY)&_ZN6S873C43v10Ev,
  (VTBL_ENTRY)&_ZN6S873C43v11Ev,
  (VTBL_ENTRY)&_ZN6S873C43v12Ev,
  (VTBL_ENTRY)&_ZN6S873C43v13Ev,
};
extern VTBL_ENTRY _ZTI6S873C4[];
extern  VTBL_ENTRY _ZTV6S873C4[];
Class_Descriptor cd_S873C4 = {  "S873C4", // class name
  bases_S873C4, 1,
  &(vtc_S873C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI6S873C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S873C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S873C3  : S873C4 {
  void *s873c3f0[4];
  int s873c3f1;
  virtual  ~S873C3(); // _ZN6S873C3D1Ev
  virtual void  v14(); // _ZN6S873C33v14Ev
  virtual void  v15(); // _ZN6S873C33v15Ev
  virtual void  v16(); // _ZN6S873C33v16Ev
  S873C3(); // tgen
};
//SIG(-1 S873C3) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S873C3 ::~S873C3(){ note_dtor("S873C3", this);}
void  S873C3 ::v14(){vfunc_called(this, "_ZN6S873C33v14Ev");}
void  S873C3 ::v15(){vfunc_called(this, "_ZN6S873C33v15Ev");}
void  S873C3 ::v16(){vfunc_called(this, "_ZN6S873C33v16Ev");}
S873C3 ::S873C3(){ note_ctor("S873C3", this);} // tgen

static void Test_S873C3()
{
  extern Class_Descriptor cd_S873C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S873C3, buf);
    S873C3 *dp, &lv = *(dp=new (buf) S873C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S873C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S873C3)");
    check_base_class_offset(lv, (S873C5*)(S873C4*), 0, "S873C3");
    check_base_class_offset(lv, (S873C4*), 0, "S873C3");
    check_field_offset(lv, s873c3f0, ABISELECT(56,36), "S873C3.s873c3f0");
    check_field_offset(lv, s873c3f1, ABISELECT(88,52), "S873C3.s873c3f1");
    test_class_info(&lv, &cd_S873C3);
    dp->~S873C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS873C3(Test_S873C3, "S873C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN6S873C3C1Ev();
extern void _ZN6S873C3D1Ev();
Name_Map name_map_S873C3[] = {
  NSPAIR(_ZN6S873C3C1Ev),
  NSPAIR(_ZN6S873C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S873C5;
extern VTBL_ENTRY _ZTI6S873C5[];
extern  VTBL_ENTRY _ZTV6S873C5[];
extern Class_Descriptor cd_S873C4;
extern VTBL_ENTRY _ZTI6S873C4[];
extern  VTBL_ENTRY _ZTV6S873C4[];
static Base_Class bases_S873C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S873C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S873C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI6S873C3[];
extern void _ZN6S873C3D1Ev();
extern void _ZN6S873C3D0Ev();
extern void _ZN6S873C52v2Ev();
extern void _ZN6S873C52v3Ev();
extern void _ZN6S873C52v4Ev();
extern void _ZN6S873C42v5Ev();
extern void _ZN6S873C42v6Ev();
extern void _ZN6S873C42v7Ev();
extern void _ZN6S873C42v8Ev();
extern void _ZN6S873C42v9Ev();
extern void _ZN6S873C43v10Ev();
extern void _ZN6S873C43v11Ev();
extern void _ZN6S873C43v12Ev();
extern void _ZN6S873C43v13Ev();
extern void _ZN6S873C33v14Ev();
extern void _ZN6S873C33v15Ev();
extern void _ZN6S873C33v16Ev();
static  VTBL_ENTRY vtc_S873C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S873C3[0]),
  (VTBL_ENTRY)&_ZN6S873C3D1Ev,
  (VTBL_ENTRY)&_ZN6S873C3D0Ev,
  (VTBL_ENTRY)&_ZN6S873C52v2Ev,
  (VTBL_ENTRY)&_ZN6S873C52v3Ev,
  (VTBL_ENTRY)&_ZN6S873C52v4Ev,
  (VTBL_ENTRY)&_ZN6S873C42v5Ev,
  (VTBL_ENTRY)&_ZN6S873C42v6Ev,
  (VTBL_ENTRY)&_ZN6S873C42v7Ev,
  (VTBL_ENTRY)&_ZN6S873C42v8Ev,
  (VTBL_ENTRY)&_ZN6S873C42v9Ev,
  (VTBL_ENTRY)&_ZN6S873C43v10Ev,
  (VTBL_ENTRY)&_ZN6S873C43v11Ev,
  (VTBL_ENTRY)&_ZN6S873C43v12Ev,
  (VTBL_ENTRY)&_ZN6S873C43v13Ev,
  (VTBL_ENTRY)&_ZN6S873C33v14Ev,
  (VTBL_ENTRY)&_ZN6S873C33v15Ev,
  (VTBL_ENTRY)&_ZN6S873C33v16Ev,
};
extern VTBL_ENTRY _ZTI6S873C3[];
extern  VTBL_ENTRY _ZTV6S873C3[];
Class_Descriptor cd_S873C3 = {  "S873C3", // class name
  bases_S873C3, 2,
  &(vtc_S873C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI6S873C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S873C3),19, //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  S873C2  : S873C3 {
  int s873c2f0;
  ::S16385C7 s873c2f1;
  ::S16385C7 s873c2f2;
  virtual  ~S873C2(); // _ZN6S873C2D1Ev
  virtual void  v17(); // _ZN6S873C23v17Ev
  virtual void  v18(); // _ZN6S873C23v18Ev
  virtual void  v19(); // _ZN6S873C23v19Ev
  S873C2(); // tgen
};
//SIG(-1 S873C2) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 Fi FC5 FC5}


 S873C2 ::~S873C2(){ note_dtor("S873C2", this);}
void  S873C2 ::v17(){vfunc_called(this, "_ZN6S873C23v17Ev");}
void  S873C2 ::v18(){vfunc_called(this, "_ZN6S873C23v18Ev");}
void  S873C2 ::v19(){vfunc_called(this, "_ZN6S873C23v19Ev");}
S873C2 ::S873C2(){ note_ctor("S873C2", this);} // tgen

static void Test_S873C2()
{
  extern Class_Descriptor cd_S873C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S873C2, buf);
    S873C2 *dp, &lv = *(dp=new (buf) S873C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S873C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S873C2)");
    check_base_class_offset(lv, (S873C5*)(S873C4*)(S873C3*), 0, "S873C2");
    check_base_class_offset(lv, (S873C4*)(S873C3*), 0, "S873C2");
    check_base_class_offset(lv, (S873C3*), 0, "S873C2");
    check_field_offset(lv, s873c2f0, ABISELECT(92,56), "S873C2.s873c2f0");
    check_field_offset(lv, s873c2f1, ABISELECT(96,60), "S873C2.s873c2f1");
    check_field_offset(lv, s873c2f2, ABISELECT(112,72), "S873C2.s873c2f2");
    test_class_info(&lv, &cd_S873C2);
    dp->~S873C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS873C2(Test_S873C2, "S873C2", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN6S873C2C1Ev();
extern void _ZN6S873C2D1Ev();
Name_Map name_map_S873C2[] = {
  NSPAIR(_ZN6S873C2C1Ev),
  NSPAIR(_ZN6S873C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S873C5;
extern VTBL_ENTRY _ZTI6S873C5[];
extern  VTBL_ENTRY _ZTV6S873C5[];
extern Class_Descriptor cd_S873C4;
extern VTBL_ENTRY _ZTI6S873C4[];
extern  VTBL_ENTRY _ZTV6S873C4[];
extern Class_Descriptor cd_S873C3;
extern VTBL_ENTRY _ZTI6S873C3[];
extern  VTBL_ENTRY _ZTV6S873C3[];
static Base_Class bases_S873C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S873C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S873C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S873C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S873C2[];
extern void _ZN6S873C2D1Ev();
extern void _ZN6S873C2D0Ev();
extern void _ZN6S873C52v2Ev();
extern void _ZN6S873C52v3Ev();
extern void _ZN6S873C52v4Ev();
extern void _ZN6S873C42v5Ev();
extern void _ZN6S873C42v6Ev();
extern void _ZN6S873C42v7Ev();
extern void _ZN6S873C42v8Ev();
extern void _ZN6S873C42v9Ev();
extern void _ZN6S873C43v10Ev();
extern void _ZN6S873C43v11Ev();
extern void _ZN6S873C43v12Ev();
extern void _ZN6S873C43v13Ev();
extern void _ZN6S873C33v14Ev();
extern void _ZN6S873C33v15Ev();
extern void _ZN6S873C33v16Ev();
extern void _ZN6S873C23v17Ev();
extern void _ZN6S873C23v18Ev();
extern void _ZN6S873C23v19Ev();
static  VTBL_ENTRY vtc_S873C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S873C2[0]),
  (VTBL_ENTRY)&_ZN6S873C2D1Ev,
  (VTBL_ENTRY)&_ZN6S873C2D0Ev,
  (VTBL_ENTRY)&_ZN6S873C52v2Ev,
  (VTBL_ENTRY)&_ZN6S873C52v3Ev,
  (VTBL_ENTRY)&_ZN6S873C52v4Ev,
  (VTBL_ENTRY)&_ZN6S873C42v5Ev,
  (VTBL_ENTRY)&_ZN6S873C42v6Ev,
  (VTBL_ENTRY)&_ZN6S873C42v7Ev,
  (VTBL_ENTRY)&_ZN6S873C42v8Ev,
  (VTBL_ENTRY)&_ZN6S873C42v9Ev,
  (VTBL_ENTRY)&_ZN6S873C43v10Ev,
  (VTBL_ENTRY)&_ZN6S873C43v11Ev,
  (VTBL_ENTRY)&_ZN6S873C43v12Ev,
  (VTBL_ENTRY)&_ZN6S873C43v13Ev,
  (VTBL_ENTRY)&_ZN6S873C33v14Ev,
  (VTBL_ENTRY)&_ZN6S873C33v15Ev,
  (VTBL_ENTRY)&_ZN6S873C33v16Ev,
  (VTBL_ENTRY)&_ZN6S873C23v17Ev,
  (VTBL_ENTRY)&_ZN6S873C23v18Ev,
  (VTBL_ENTRY)&_ZN6S873C23v19Ev,
};
extern VTBL_ENTRY _ZTI6S873C2[];
extern  VTBL_ENTRY _ZTV6S873C2[];
Class_Descriptor cd_S873C2 = {  "S873C2", // class name
  bases_S873C2, 3,
  &(vtc_S873C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI6S873C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S873C2),22, //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  S873C1  : S873C2 {
  virtual  ~S873C1(); // _ZN6S873C1D1Ev
  virtual void  v1(); // _ZN6S873C12v1Ev
  S873C1(); // tgen
};
//SIG(1 S873C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp[2]} vd v14 v15 v16 Fp[4] Fi} vd v17 v18 v19 Fi FC6 FC6} vd v1}


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

static void Test_S873C1()
{
  extern Class_Descriptor cd_S873C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S873C1, buf);
    S873C1 *dp, &lv = *(dp=new (buf) S873C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S873C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S873C1)");
    check_base_class_offset(lv, (S873C5*)(S873C4*)(S873C3*)(S873C2*), 0, "S873C1");
    check_base_class_offset(lv, (S873C4*)(S873C3*)(S873C2*), 0, "S873C1");
    check_base_class_offset(lv, (S873C3*)(S873C2*), 0, "S873C1");
    check_base_class_offset(lv, (S873C2*), 0, "S873C1");
    test_class_info(&lv, &cd_S873C1);
    dp->~S873C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS873C1(Test_S873C1, "S873C1", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN6S873C1C1Ev();
extern void _ZN6S873C1D1Ev();
Name_Map name_map_S873C1[] = {
  NSPAIR(_ZN6S873C1C1Ev),
  NSPAIR(_ZN6S873C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S873C5;
extern VTBL_ENTRY _ZTI6S873C5[];
extern  VTBL_ENTRY _ZTV6S873C5[];
extern Class_Descriptor cd_S873C4;
extern VTBL_ENTRY _ZTI6S873C4[];
extern  VTBL_ENTRY _ZTV6S873C4[];
extern Class_Descriptor cd_S873C3;
extern VTBL_ENTRY _ZTI6S873C3[];
extern  VTBL_ENTRY _ZTV6S873C3[];
extern Class_Descriptor cd_S873C2;
extern VTBL_ENTRY _ZTI6S873C2[];
extern  VTBL_ENTRY _ZTV6S873C2[];
static Base_Class bases_S873C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S873C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S873C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S873C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S873C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S873C1[];
extern void _ZN6S873C1D1Ev();
extern void _ZN6S873C1D0Ev();
extern void _ZN6S873C52v2Ev();
extern void _ZN6S873C52v3Ev();
extern void _ZN6S873C52v4Ev();
extern void _ZN6S873C42v5Ev();
extern void _ZN6S873C42v6Ev();
extern void _ZN6S873C42v7Ev();
extern void _ZN6S873C42v8Ev();
extern void _ZN6S873C42v9Ev();
extern void _ZN6S873C43v10Ev();
extern void _ZN6S873C43v11Ev();
extern void _ZN6S873C43v12Ev();
extern void _ZN6S873C43v13Ev();
extern void _ZN6S873C33v14Ev();
extern void _ZN6S873C33v15Ev();
extern void _ZN6S873C33v16Ev();
extern void _ZN6S873C23v17Ev();
extern void _ZN6S873C23v18Ev();
extern void _ZN6S873C23v19Ev();
extern void _ZN6S873C12v1Ev();
static  VTBL_ENTRY vtc_S873C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S873C1[0]),
  (VTBL_ENTRY)&_ZN6S873C1D1Ev,
  (VTBL_ENTRY)&_ZN6S873C1D0Ev,
  (VTBL_ENTRY)&_ZN6S873C52v2Ev,
  (VTBL_ENTRY)&_ZN6S873C52v3Ev,
  (VTBL_ENTRY)&_ZN6S873C52v4Ev,
  (VTBL_ENTRY)&_ZN6S873C42v5Ev,
  (VTBL_ENTRY)&_ZN6S873C42v6Ev,
  (VTBL_ENTRY)&_ZN6S873C42v7Ev,
  (VTBL_ENTRY)&_ZN6S873C42v8Ev,
  (VTBL_ENTRY)&_ZN6S873C42v9Ev,
  (VTBL_ENTRY)&_ZN6S873C43v10Ev,
  (VTBL_ENTRY)&_ZN6S873C43v11Ev,
  (VTBL_ENTRY)&_ZN6S873C43v12Ev,
  (VTBL_ENTRY)&_ZN6S873C43v13Ev,
  (VTBL_ENTRY)&_ZN6S873C33v14Ev,
  (VTBL_ENTRY)&_ZN6S873C33v15Ev,
  (VTBL_ENTRY)&_ZN6S873C33v16Ev,
  (VTBL_ENTRY)&_ZN6S873C23v17Ev,
  (VTBL_ENTRY)&_ZN6S873C23v18Ev,
  (VTBL_ENTRY)&_ZN6S873C23v19Ev,
  (VTBL_ENTRY)&_ZN6S873C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S873C1[];
extern  VTBL_ENTRY _ZTV6S873C1[];
Class_Descriptor cd_S873C1 = {  "S873C1", // class name
  bases_S873C1, 4,
  &(vtc_S873C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI6S873C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S873C1),23, //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  S7307C4  {
  long double s7307c4f0;
  long s7307c4f1;
  virtual void  v2(); // _ZN7S7307C42v2Ev
  virtual void  v3(); // _ZN7S7307C42v3Ev
  virtual void  v4(); // _ZN7S7307C42v4Ev
  virtual void  v5(); // _ZN7S7307C42v5Ev
  virtual void  v6(); // _ZN7S7307C42v6Ev
  virtual void  v7(); // _ZN7S7307C42v7Ev
  ~S7307C4(); // tgen
  S7307C4(); // tgen
};
//SIG(-1 S7307C4) C1{ v1 v2 v3 v4 v5 v6 FD Fl}


void  S7307C4 ::v2(){vfunc_called(this, "_ZN7S7307C42v2Ev");}
void  S7307C4 ::v3(){vfunc_called(this, "_ZN7S7307C42v3Ev");}
void  S7307C4 ::v4(){vfunc_called(this, "_ZN7S7307C42v4Ev");}
void  S7307C4 ::v5(){vfunc_called(this, "_ZN7S7307C42v5Ev");}
void  S7307C4 ::v6(){vfunc_called(this, "_ZN7S7307C42v6Ev");}
void  S7307C4 ::v7(){vfunc_called(this, "_ZN7S7307C42v7Ev");}
S7307C4 ::~S7307C4(){ note_dtor("S7307C4", this);} // tgen
S7307C4 ::S7307C4(){ note_ctor("S7307C4", this);} // tgen

static void Test_S7307C4()
{
  extern Class_Descriptor cd_S7307C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7307C4, buf);
    S7307C4 *dp, &lv = *(dp=new (buf) S7307C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S7307C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7307C4)");
    check_field_offset(lv, s7307c4f0, ABISELECT(16,4), "S7307C4.s7307c4f0");
    check_field_offset(lv, s7307c4f1, ABISELECT(32,16), "S7307C4.s7307c4f1");
    test_class_info(&lv, &cd_S7307C4);
    dp->~S7307C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7307C4(Test_S7307C4, "S7307C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S7307C4C1Ev();
extern void _ZN7S7307C4D1Ev();
Name_Map name_map_S7307C4[] = {
  NSPAIR(_ZN7S7307C4C1Ev),
  NSPAIR(_ZN7S7307C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7307C4[];
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
static  VTBL_ENTRY vtc_S7307C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7307C4[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
Class_Descriptor cd_S7307C4 = {  "S7307C4", // class name
  0,0,//no base classes
  &(vtc_S7307C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S7307C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7307C4),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  S7307C3  : S7307C4 {
  int s7307c3f0;
  virtual void  v8(); // _ZN7S7307C32v8Ev
  virtual void  v9(); // _ZN7S7307C32v9Ev
  virtual void  v10(); // _ZN7S7307C33v10Ev
  virtual void  v11(); // _ZN7S7307C33v11Ev
  virtual void  v12(); // _ZN7S7307C33v12Ev
  virtual void  v13(); // _ZN7S7307C33v13Ev
  virtual void  v14(); // _ZN7S7307C33v14Ev
  ~S7307C3(); // tgen
  S7307C3(); // tgen
};
//SIG(-1 S7307C3) C1{ BC2{ v8 v9 v10 v11 v12 v13 FD Fl} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7307C3 ::v8(){vfunc_called(this, "_ZN7S7307C32v8Ev");}
void  S7307C3 ::v9(){vfunc_called(this, "_ZN7S7307C32v9Ev");}
void  S7307C3 ::v10(){vfunc_called(this, "_ZN7S7307C33v10Ev");}
void  S7307C3 ::v11(){vfunc_called(this, "_ZN7S7307C33v11Ev");}
void  S7307C3 ::v12(){vfunc_called(this, "_ZN7S7307C33v12Ev");}
void  S7307C3 ::v13(){vfunc_called(this, "_ZN7S7307C33v13Ev");}
void  S7307C3 ::v14(){vfunc_called(this, "_ZN7S7307C33v14Ev");}
S7307C3 ::~S7307C3(){ note_dtor("S7307C3", this);} // tgen
S7307C3 ::S7307C3(){ note_ctor("S7307C3", this);} // tgen

static void Test_S7307C3()
{
  extern Class_Descriptor cd_S7307C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S7307C3, buf);
    S7307C3 *dp, &lv = *(dp=new (buf) S7307C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7307C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7307C3)");
    check_base_class_offset(lv, (S7307C4*), 0, "S7307C3");
    check_field_offset(lv, s7307c3f0, ABISELECT(40,20), "S7307C3.s7307c3f0");
    test_class_info(&lv, &cd_S7307C3);
    dp->~S7307C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7307C3(Test_S7307C3, "S7307C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7307C3C1Ev();
extern void _ZN7S7307C3D1Ev();
Name_Map name_map_S7307C3[] = {
  NSPAIR(_ZN7S7307C3C1Ev),
  NSPAIR(_ZN7S7307C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
static Base_Class bases_S7307C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7307C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7307C3[];
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C32v8Ev();
extern void _ZN7S7307C32v9Ev();
extern void _ZN7S7307C33v10Ev();
extern void _ZN7S7307C33v11Ev();
extern void _ZN7S7307C33v12Ev();
extern void _ZN7S7307C33v13Ev();
extern void _ZN7S7307C33v14Ev();
static  VTBL_ENTRY vtc_S7307C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7307C3[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S7307C3[];
extern  VTBL_ENTRY _ZTV7S7307C3[];
Class_Descriptor cd_S7307C3 = {  "S7307C3", // class name
  bases_S7307C3, 1,
  &(vtc_S7307C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7307C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7307C3),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  S7307C2  : virtual S7307C3 , S7307C4 {
  virtual void  v15(); // _ZN7S7307C23v15Ev
  virtual void  v16(); // _ZN7S7307C23v16Ev
  virtual void  v17(); // _ZN7S7307C23v17Ev
  virtual void  v18(); // _ZN7S7307C23v18Ev
  virtual void  v19(); // _ZN7S7307C23v19Ev
  virtual void  v20(); // _ZN7S7307C23v20Ev
  virtual void  v21(); // _ZN7S7307C23v21Ev
  ~S7307C2(); // tgen
  S7307C2(); // tgen
};
//SIG(-1 S7307C2) C1{ VBC2{ BC3{ v8 v9 v10 v11 v12 v13 FD Fl} v14 v15 v16 v17 v18 v19 v20 Fi} BC3 v1 v2 v3 v4 v5 v6 v7}


void  S7307C2 ::v15(){vfunc_called(this, "_ZN7S7307C23v15Ev");}
void  S7307C2 ::v16(){vfunc_called(this, "_ZN7S7307C23v16Ev");}
void  S7307C2 ::v17(){vfunc_called(this, "_ZN7S7307C23v17Ev");}
void  S7307C2 ::v18(){vfunc_called(this, "_ZN7S7307C23v18Ev");}
void  S7307C2 ::v19(){vfunc_called(this, "_ZN7S7307C23v19Ev");}
void  S7307C2 ::v20(){vfunc_called(this, "_ZN7S7307C23v20Ev");}
void  S7307C2 ::v21(){vfunc_called(this, "_ZN7S7307C23v21Ev");}
S7307C2 ::~S7307C2(){ note_dtor("S7307C2", this);} // tgen
S7307C2 ::S7307C2(){ note_ctor("S7307C2", this);} // tgen

static void Test_S7307C2()
{
  extern Class_Descriptor cd_S7307C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7307C2, buf);
    S7307C2 *dp, &lv = *(dp=new (buf) S7307C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S7307C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7307C2)");
    check_base_class_offset(lv, (S7307C4*)(S7307C3*), ABISELECT(48,20), "S7307C2");
    check_base_class_offset(lv, (S7307C3*), ABISELECT(48,20), "S7307C2");
    /*is_ambiguous_... S7307C2::S7307C4 */ AMB_check_base_class_offset(lv, (S7307C4*), 0, "S7307C2");
    test_class_info(&lv, &cd_S7307C2);
    dp->~S7307C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7307C2(Test_S7307C2, "S7307C2", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN7S7307C2C1Ev();
extern void _ZN7S7307C2D1Ev();
Name_Map name_map_S7307C2[] = {
  NSPAIR(_ZN7S7307C2C1Ev),
  NSPAIR(_ZN7S7307C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
extern Class_Descriptor cd_S7307C3;
extern VTBL_ENTRY _ZTI7S7307C3[];
extern  VTBL_ENTRY _ZTV7S7307C3[];
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
static Base_Class bases_S7307C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7307C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7307C3,    ABISELECT(48,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7307C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7307C2[];
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C23v15Ev();
extern void _ZN7S7307C23v16Ev();
extern void _ZN7S7307C23v17Ev();
extern void _ZN7S7307C23v18Ev();
extern void _ZN7S7307C23v19Ev();
extern void _ZN7S7307C23v20Ev();
extern void _ZN7S7307C23v21Ev();
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C32v8Ev();
extern void _ZN7S7307C32v9Ev();
extern void _ZN7S7307C33v10Ev();
extern void _ZN7S7307C33v11Ev();
extern void _ZN7S7307C33v12Ev();
extern void _ZN7S7307C33v13Ev();
extern void _ZN7S7307C33v14Ev();
static  VTBL_ENTRY vtc_S7307C2[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7307C2[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7307C2[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v14Ev,
};
extern VTBL_ENTRY _ZTV7S7307C2[];
static  VTT_ENTRY vtt_S7307C2[] = {
  {&(_ZTV7S7307C2[3]),  3,44},
  {&(_ZTV7S7307C2[31]),  31,44},
};
extern VTBL_ENTRY _ZTI7S7307C2[];
extern  VTBL_ENTRY _ZTV7S7307C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7307C2[];
Class_Descriptor cd_S7307C2 = {  "S7307C2", // class name
  bases_S7307C2, 3,
  &(vtc_S7307C2[0]), // expected_vtbl_contents
  &(vtt_S7307C2[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI7S7307C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7307C2),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7307C2),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  S7307C5  : S7307C3 {
  __tsi64 s7307c5f0[2];
  ::S7307C4 s7307c5f1;
  virtual  ~S7307C5(); // _ZN7S7307C5D1Ev
  virtual void  v22(); // _ZN7S7307C53v22Ev
  virtual void  v23(); // _ZN7S7307C53v23Ev
  virtual void  v24(); // _ZN7S7307C53v24Ev
  virtual void  v25(); // _ZN7S7307C53v25Ev
  S7307C5(); // tgen
};
//SIG(-1 S7307C5) C1{ BC2{ BC3{ v5 v6 v7 v8 v9 v10 FD Fl} v11 v12 v13 v14 v15 v16 v17 Fi} vd v1 v2 v3 v4 FL[2] FC3}


 S7307C5 ::~S7307C5(){ note_dtor("S7307C5", this);}
void  S7307C5 ::v22(){vfunc_called(this, "_ZN7S7307C53v22Ev");}
void  S7307C5 ::v23(){vfunc_called(this, "_ZN7S7307C53v23Ev");}
void  S7307C5 ::v24(){vfunc_called(this, "_ZN7S7307C53v24Ev");}
void  S7307C5 ::v25(){vfunc_called(this, "_ZN7S7307C53v25Ev");}
S7307C5 ::S7307C5(){ note_ctor("S7307C5", this);} // tgen

static void Test_S7307C5()
{
  extern Class_Descriptor cd_S7307C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S7307C5, buf);
    S7307C5 *dp, &lv = *(dp=new (buf) S7307C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7307C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7307C5)");
    check_base_class_offset(lv, (S7307C4*)(S7307C3*), 0, "S7307C5");
    check_base_class_offset(lv, (S7307C3*), 0, "S7307C5");
    check_field_offset(lv, s7307c5f0, ABISELECT(48,24), "S7307C5.s7307c5f0");
    check_field_offset(lv, s7307c5f1, ABISELECT(64,40), "S7307C5.s7307c5f1");
    test_class_info(&lv, &cd_S7307C5);
    dp->~S7307C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7307C5(Test_S7307C5, "S7307C5", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7307C5C1Ev();
extern void _ZN7S7307C5D1Ev();
Name_Map name_map_S7307C5[] = {
  NSPAIR(_ZN7S7307C5C1Ev),
  NSPAIR(_ZN7S7307C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
extern Class_Descriptor cd_S7307C3;
extern VTBL_ENTRY _ZTI7S7307C3[];
extern  VTBL_ENTRY _ZTV7S7307C3[];
static Base_Class bases_S7307C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7307C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7307C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7307C5[];
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C32v8Ev();
extern void _ZN7S7307C32v9Ev();
extern void _ZN7S7307C33v10Ev();
extern void _ZN7S7307C33v11Ev();
extern void _ZN7S7307C33v12Ev();
extern void _ZN7S7307C33v13Ev();
extern void _ZN7S7307C33v14Ev();
extern void _ZN7S7307C5D1Ev();
extern void _ZN7S7307C5D0Ev();
extern void _ZN7S7307C53v22Ev();
extern void _ZN7S7307C53v23Ev();
extern void _ZN7S7307C53v24Ev();
extern void _ZN7S7307C53v25Ev();
static  VTBL_ENTRY vtc_S7307C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7307C5[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7307C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7307C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v25Ev,
};
extern VTBL_ENTRY _ZTI7S7307C5[];
extern  VTBL_ENTRY _ZTV7S7307C5[];
Class_Descriptor cd_S7307C5 = {  "S7307C5", // class name
  bases_S7307C5, 2,
  &(vtc_S7307C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7307C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7307C5),21, //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  S7307C1  : S7307C2 , virtual S7307C4 , S7307C5 {
  ::S7150C10_nt s7307c1f0;
  virtual void  v1(); // _ZN7S7307C12v1Ev
  ~S7307C1(); // tgen
  S7307C1(); // tgen
};
//SIG(1 S7307C1) C1{ BC2{ VBC3{ BC4{ v2 v3 v4 v5 v6 v7 FD Fl} v8 v9 v10 v11 v12 v13 v14 Fi} BC4 v15 v16 v17 v18 v19 v20 v21} VBC4 BC5{ BC3 vd v22 v23 v24 v25 FL[2] FC4} v1 FU6{ m}}


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

static void Test_S7307C1()
{
  extern Class_Descriptor cd_S7307C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,33)];
    init_test(&cd_S7307C1, buf);
    S7307C1 *dp, &lv = *(dp=new (buf) S7307C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,128), "sizeof(S7307C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7307C1)");
    /*is_ambiguous_... S7307C1::S7307C3 */ AMB_check_base_class_offset(lv, (S7307C4*)(S7307C3*), ABISELECT(176,84), "S7307C1");
    check_base_class_offset(lv, (S7307C3*)(S7307C2*), ABISELECT(176,84), "S7307C1");
    /*is_ambiguous_... S7307C2::S7307C4 */ AMB_check_base_class_offset(lv, (S7307C4*)(S7307C2*), 0, "S7307C1");
    check_base_class_offset(lv, (S7307C2*), 0, "S7307C1");
    /*is_ambiguous_... S7307C1::S7307C4 */ AMB_check_base_class_offset(lv, (S7307C4*), ABISELECT(224,108), "S7307C1");
    check_base_class_offset(lv, (S7307C4*)(S7307C3*)(S7307C5*), ABISELECT(48,20), "S7307C1");
    check_base_class_offset(lv, (S7307C3*)(S7307C5*), ABISELECT(48,20), "S7307C1");
    check_base_class_offset(lv, (S7307C5*), ABISELECT(48,20), "S7307C1");
    check_field_offset(lv, s7307c1f0, ABISELECT(160,80), "S7307C1.s7307c1f0");
    test_class_info(&lv, &cd_S7307C1);
    dp->~S7307C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7307C1(Test_S7307C1, "S7307C1", ABISELECT(272,128));

#else // __cplusplus

extern void _ZN7S7307C1C1Ev();
extern void _ZN7S7307C1D1Ev();
Name_Map name_map_S7307C1[] = {
  NSPAIR(_ZN7S7307C1C1Ev),
  NSPAIR(_ZN7S7307C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
extern Class_Descriptor cd_S7307C3;
extern VTBL_ENTRY _ZTI7S7307C3[];
extern  VTBL_ENTRY _ZTV7S7307C3[];
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
extern Class_Descriptor cd_S7307C2;
extern VTBL_ENTRY _ZTI7S7307C2[];
extern  VTBL_ENTRY _ZTV7S7307C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7307C2[];
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
extern Class_Descriptor cd_S7307C4;
extern VTBL_ENTRY _ZTI7S7307C4[];
extern  VTBL_ENTRY _ZTV7S7307C4[];
extern Class_Descriptor cd_S7307C3;
extern VTBL_ENTRY _ZTI7S7307C3[];
extern  VTBL_ENTRY _ZTV7S7307C3[];
extern Class_Descriptor cd_S7307C5;
extern VTBL_ENTRY _ZTI7S7307C5[];
extern  VTBL_ENTRY _ZTV7S7307C5[];
static Base_Class bases_S7307C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7307C4,    ABISELECT(176,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7307C3,    ABISELECT(176,84), //bcp->offset
    41, //bcp->virtual_function_table_offset
    15, //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_S7307C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7307C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7307C4,    ABISELECT(224,108), //bcp->offset
    69, //bcp->virtual_function_table_offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7307C4,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7307C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7307C5,    ABISELECT(48,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7307C1[];
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C23v15Ev();
extern void _ZN7S7307C23v16Ev();
extern void _ZN7S7307C23v17Ev();
extern void _ZN7S7307C23v18Ev();
extern void _ZN7S7307C23v19Ev();
extern void _ZN7S7307C23v20Ev();
extern void _ZN7S7307C23v21Ev();
extern void _ZN7S7307C12v1Ev();
extern void _ZN7S7307C1D1Ev();
extern void _ZN7S7307C1D0Ev();
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C32v8Ev();
extern void _ZN7S7307C32v9Ev();
extern void _ZN7S7307C33v10Ev();
extern void _ZN7S7307C33v11Ev();
extern void _ZN7S7307C33v12Ev();
extern void _ZN7S7307C33v13Ev();
extern void _ZN7S7307C33v14Ev();
extern void ABISELECT(_ZThn48_N7S7307C1D1Ev,_ZThn20_N7S7307C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7307C1D0Ev,_ZThn20_N7S7307C1D0Ev)();
extern void _ZN7S7307C53v22Ev();
extern void _ZN7S7307C53v23Ev();
extern void _ZN7S7307C53v24Ev();
extern void _ZN7S7307C53v25Ev();
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C32v8Ev();
extern void _ZN7S7307C32v9Ev();
extern void _ZN7S7307C33v10Ev();
extern void _ZN7S7307C33v11Ev();
extern void _ZN7S7307C33v12Ev();
extern void _ZN7S7307C33v13Ev();
extern void _ZN7S7307C33v14Ev();
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
static  VTBL_ENTRY vtc_S7307C1[] = {
  ABISELECT(224,108),
  ABISELECT(176,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7307C1[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7307C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7307C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7307C1D0Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S7307C1[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7307C1D1Ev,_ZThn20_N7S7307C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7307C1D0Ev,_ZThn20_N7S7307C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7307C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7307C53v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-84),
  (VTBL_ENTRY)&(_ZTI7S7307C1[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-108),
  (VTBL_ENTRY)&(_ZTI7S7307C1[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
};
extern VTBL_ENTRY _ZTV7S7307C1[];
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C23v15Ev();
extern void _ZN7S7307C23v16Ev();
extern void _ZN7S7307C23v17Ev();
extern void _ZN7S7307C23v18Ev();
extern void _ZN7S7307C23v19Ev();
extern void _ZN7S7307C23v20Ev();
extern void _ZN7S7307C23v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7307C2__7S7307C1[] = {
  ABISELECT(176,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7307C2[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7307C23v21Ev,
};
extern void _ZN7S7307C42v2Ev();
extern void _ZN7S7307C42v3Ev();
extern void _ZN7S7307C42v4Ev();
extern void _ZN7S7307C42v5Ev();
extern void _ZN7S7307C42v6Ev();
extern void _ZN7S7307C42v7Ev();
extern void _ZN7S7307C32v8Ev();
extern void _ZN7S7307C32v9Ev();
extern void _ZN7S7307C33v10Ev();
extern void _ZN7S7307C33v11Ev();
extern void _ZN7S7307C33v12Ev();
extern void _ZN7S7307C33v13Ev();
extern void _ZN7S7307C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7307C3__7S7307C2__7S7307C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-84),
  (VTBL_ENTRY)&(_ZTI7S7307C2[0]),
  (VTBL_ENTRY)&_ZN7S7307C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7307C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7307C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7307C33v14Ev,
};
static  VTT_ENTRY vtt_S7307C1[] = {
  {&(_ZTV7S7307C1[4]),  4,83},
  {&(_tg__ZTV7S7307C2__7S7307C1[3]),  3,16},
  {&(_tg__ZTV7S7307C3__7S7307C2__7S7307C1[15]),  15,28},
  {&(_ZTV7S7307C1[56]),  56,83},
  {&(_ZTV7S7307C1[77]),  77,83},
};
extern VTBL_ENTRY _ZTI7S7307C1[];
extern  VTBL_ENTRY _ZTV7S7307C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7307C1[];
Class_Descriptor cd_S7307C1 = {  "S7307C1", // class name
  bases_S7307C1, 8,
  &(vtc_S7307C1[0]), // expected_vtbl_contents
  &(vtt_S7307C1[0]), // expected_vtt_contents
  ABISELECT(272,128), // object size
  NSPAIRA(_ZTI7S7307C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7307C1),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7307C1),5, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2242C4  {
  ::S16385C7 s2242c4f0;
  int s2242c4f1[2];
  char s2242c4f2;
  virtual  ~S2242C4(); // _ZN7S2242C4D1Ev
  virtual void  v4(); // _ZN7S2242C42v4Ev
  virtual void  v5(); // _ZN7S2242C42v5Ev
  virtual void  v6(); // _ZN7S2242C42v6Ev
  S2242C4(); // tgen
};
//SIG(-1 S2242C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2242C4 ::~S2242C4(){ note_dtor("S2242C4", this);}
void  S2242C4 ::v4(){vfunc_called(this, "_ZN7S2242C42v4Ev");}
void  S2242C4 ::v5(){vfunc_called(this, "_ZN7S2242C42v5Ev");}
void  S2242C4 ::v6(){vfunc_called(this, "_ZN7S2242C42v6Ev");}
S2242C4 ::S2242C4(){ note_ctor("S2242C4", this);} // tgen

static void Test_S2242C4()
{
  extern Class_Descriptor cd_S2242C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2242C4, buf);
    S2242C4 *dp, &lv = *(dp=new (buf) S2242C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2242C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2242C4)");
    check_field_offset(lv, s2242c4f0, ABISELECT(8,4), "S2242C4.s2242c4f0");
    check_field_offset(lv, s2242c4f1, ABISELECT(24,16), "S2242C4.s2242c4f1");
    check_field_offset(lv, s2242c4f2, ABISELECT(32,24), "S2242C4.s2242c4f2");
    test_class_info(&lv, &cd_S2242C4);
    dp->~S2242C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2242C4(Test_S2242C4, "S2242C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2242C4C1Ev();
extern void _ZN7S2242C4D1Ev();
Name_Map name_map_S2242C4[] = {
  NSPAIR(_ZN7S2242C4C1Ev),
  NSPAIR(_ZN7S2242C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2242C4[];
extern void _ZN7S2242C4D1Ev();
extern void _ZN7S2242C4D0Ev();
extern void _ZN7S2242C42v4Ev();
extern void _ZN7S2242C42v5Ev();
extern void _ZN7S2242C42v6Ev();
static  VTBL_ENTRY vtc_S2242C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2242C4[0]),
  (VTBL_ENTRY)&_ZN7S2242C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2242C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2242C4[];
extern  VTBL_ENTRY _ZTV7S2242C4[];
Class_Descriptor cd_S2242C4 = {  "S2242C4", // class name
  0,0,//no base classes
  &(vtc_S2242C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2242C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2242C4),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  S2242C3  : S2242C4 {
  void *s2242c3f0[2];
  virtual  ~S2242C3(); // _ZN7S2242C3D1Ev
  virtual void  v7(); // _ZN7S2242C32v7Ev
  virtual void  v8(); // _ZN7S2242C32v8Ev
  virtual void  v9(); // _ZN7S2242C32v9Ev
  virtual void  v10(); // _ZN7S2242C33v10Ev
  virtual void  v11(); // _ZN7S2242C33v11Ev
  virtual void  v12(); // _ZN7S2242C33v12Ev
  virtual void  v13(); // _ZN7S2242C33v13Ev
  virtual void  v14(); // _ZN7S2242C33v14Ev
  virtual void  v15(); // _ZN7S2242C33v15Ev
  S2242C3(); // tgen
};
//SIG(-1 S2242C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2242C3 ::~S2242C3(){ note_dtor("S2242C3", this);}
void  S2242C3 ::v7(){vfunc_called(this, "_ZN7S2242C32v7Ev");}
void  S2242C3 ::v8(){vfunc_called(this, "_ZN7S2242C32v8Ev");}
void  S2242C3 ::v9(){vfunc_called(this, "_ZN7S2242C32v9Ev");}
void  S2242C3 ::v10(){vfunc_called(this, "_ZN7S2242C33v10Ev");}
void  S2242C3 ::v11(){vfunc_called(this, "_ZN7S2242C33v11Ev");}
void  S2242C3 ::v12(){vfunc_called(this, "_ZN7S2242C33v12Ev");}
void  S2242C3 ::v13(){vfunc_called(this, "_ZN7S2242C33v13Ev");}
void  S2242C3 ::v14(){vfunc_called(this, "_ZN7S2242C33v14Ev");}
void  S2242C3 ::v15(){vfunc_called(this, "_ZN7S2242C33v15Ev");}
S2242C3 ::S2242C3(){ note_ctor("S2242C3", this);} // tgen

static void Test_S2242C3()
{
  extern Class_Descriptor cd_S2242C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2242C3, buf);
    S2242C3 *dp, &lv = *(dp=new (buf) S2242C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2242C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2242C3)");
    check_base_class_offset(lv, (S2242C4*), 0, "S2242C3");
    check_field_offset(lv, s2242c3f0, ABISELECT(40,28), "S2242C3.s2242c3f0");
    test_class_info(&lv, &cd_S2242C3);
    dp->~S2242C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2242C3(Test_S2242C3, "S2242C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2242C3C1Ev();
extern void _ZN7S2242C3D1Ev();
Name_Map name_map_S2242C3[] = {
  NSPAIR(_ZN7S2242C3C1Ev),
  NSPAIR(_ZN7S2242C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C4;
extern VTBL_ENTRY _ZTI7S2242C4[];
extern  VTBL_ENTRY _ZTV7S2242C4[];
static Base_Class bases_S2242C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2242C3[];
extern void _ZN7S2242C3D1Ev();
extern void _ZN7S2242C3D0Ev();
extern void _ZN7S2242C42v4Ev();
extern void _ZN7S2242C42v5Ev();
extern void _ZN7S2242C42v6Ev();
extern void _ZN7S2242C32v7Ev();
extern void _ZN7S2242C32v8Ev();
extern void _ZN7S2242C32v9Ev();
extern void _ZN7S2242C33v10Ev();
extern void _ZN7S2242C33v11Ev();
extern void _ZN7S2242C33v12Ev();
extern void _ZN7S2242C33v13Ev();
extern void _ZN7S2242C33v14Ev();
extern void _ZN7S2242C33v15Ev();
static  VTBL_ENTRY vtc_S2242C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2242C3[0]),
  (VTBL_ENTRY)&_ZN7S2242C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2242C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2242C3[];
extern  VTBL_ENTRY _ZTV7S2242C3[];
Class_Descriptor cd_S2242C3 = {  "S2242C3", // class name
  bases_S2242C3, 1,
  &(vtc_S2242C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2242C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2242C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2242C2  : S2242C3 {
  void *s2242c2f0[4];
  int s2242c2f1;
  virtual  ~S2242C2(); // _ZN7S2242C2D1Ev
  virtual void  v16(); // _ZN7S2242C23v16Ev
  virtual void  v17(); // _ZN7S2242C23v17Ev
  virtual void  v18(); // _ZN7S2242C23v18Ev
  S2242C2(); // tgen
};
//SIG(-1 S2242C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2242C2 ::~S2242C2(){ note_dtor("S2242C2", this);}
void  S2242C2 ::v16(){vfunc_called(this, "_ZN7S2242C23v16Ev");}
void  S2242C2 ::v17(){vfunc_called(this, "_ZN7S2242C23v17Ev");}
void  S2242C2 ::v18(){vfunc_called(this, "_ZN7S2242C23v18Ev");}
S2242C2 ::S2242C2(){ note_ctor("S2242C2", this);} // tgen

static void Test_S2242C2()
{
  extern Class_Descriptor cd_S2242C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2242C2, buf);
    S2242C2 *dp, &lv = *(dp=new (buf) S2242C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2242C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2242C2)");
    check_base_class_offset(lv, (S2242C4*)(S2242C3*), 0, "S2242C2");
    check_base_class_offset(lv, (S2242C3*), 0, "S2242C2");
    check_field_offset(lv, s2242c2f0, ABISELECT(56,36), "S2242C2.s2242c2f0");
    check_field_offset(lv, s2242c2f1, ABISELECT(88,52), "S2242C2.s2242c2f1");
    test_class_info(&lv, &cd_S2242C2);
    dp->~S2242C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2242C2(Test_S2242C2, "S2242C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2242C2C1Ev();
extern void _ZN7S2242C2D1Ev();
Name_Map name_map_S2242C2[] = {
  NSPAIR(_ZN7S2242C2C1Ev),
  NSPAIR(_ZN7S2242C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C4;
extern VTBL_ENTRY _ZTI7S2242C4[];
extern  VTBL_ENTRY _ZTV7S2242C4[];
extern Class_Descriptor cd_S2242C3;
extern VTBL_ENTRY _ZTI7S2242C3[];
extern  VTBL_ENTRY _ZTV7S2242C3[];
static Base_Class bases_S2242C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2242C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2242C2[];
extern void _ZN7S2242C2D1Ev();
extern void _ZN7S2242C2D0Ev();
extern void _ZN7S2242C42v4Ev();
extern void _ZN7S2242C42v5Ev();
extern void _ZN7S2242C42v6Ev();
extern void _ZN7S2242C32v7Ev();
extern void _ZN7S2242C32v8Ev();
extern void _ZN7S2242C32v9Ev();
extern void _ZN7S2242C33v10Ev();
extern void _ZN7S2242C33v11Ev();
extern void _ZN7S2242C33v12Ev();
extern void _ZN7S2242C33v13Ev();
extern void _ZN7S2242C33v14Ev();
extern void _ZN7S2242C33v15Ev();
extern void _ZN7S2242C23v16Ev();
extern void _ZN7S2242C23v17Ev();
extern void _ZN7S2242C23v18Ev();
static  VTBL_ENTRY vtc_S2242C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2242C2[0]),
  (VTBL_ENTRY)&_ZN7S2242C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2242C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2242C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2242C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2242C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S2242C2[];
extern  VTBL_ENTRY _ZTV7S2242C2[];
Class_Descriptor cd_S2242C2 = {  "S2242C2", // class name
  bases_S2242C2, 2,
  &(vtc_S2242C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2242C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2242C2),19, //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  S2242C7_nt  {
  int s2242c7f0;
  void  mf2242c7(); // _ZN10S2242C7_nt8mf2242c7Ev
  virtual  ~S2242C7_nt(); // _ZN10S2242C7_ntD1Ev
  S2242C7_nt(); // tgen
};
//SIG(-1 S2242C7_nt) C1{ vd m Fi}


void  S2242C7_nt ::mf2242c7(){}
 S2242C7_nt ::~S2242C7_nt(){ note_dtor("S2242C7_nt", this);}
S2242C7_nt ::S2242C7_nt(){ note_ctor("S2242C7_nt", this);} // tgen

//skip512 S2242C7_nt

#else // __cplusplus

extern void _ZN10S2242C7_ntC1Ev();
extern void _ZN10S2242C7_ntD1Ev();
Name_Map name_map_S2242C7_nt[] = {
  NSPAIR(_ZN10S2242C7_ntC1Ev),
  NSPAIR(_ZN10S2242C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern void _ZN10S2242C7_ntD1Ev();
extern void _ZN10S2242C7_ntD0Ev();
static  VTBL_ENTRY vtc_S2242C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2242C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S2242C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2242C7_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
VTBL_ENTRY *P__ZTI10S2242C7_nt = _ZTI10S2242C7_nt; 
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
Class_Descriptor cd_S2242C7_nt = {  "S2242C7_nt", // class name
  0,0,//no base classes
  &(vtc_S2242C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S2242C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2242C7_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  S2242C1  : S2242C2 {
  ::S2242C7_nt s2242c1f0;
  virtual  ~S2242C1(); // _ZN7S2242C1D1Ev
  virtual void  v1(); // _ZN7S2242C12v1Ev
  virtual void  v2(); // _ZN7S2242C12v2Ev
  virtual void  v3(); // _ZN7S2242C12v3Ev
  S2242C1(); // tgen
};
//SIG(1 S2242C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 FC7{ vd m Fi}}


 S2242C1 ::~S2242C1(){ note_dtor("S2242C1", this);}
void  S2242C1 ::v1(){vfunc_called(this, "_ZN7S2242C12v1Ev");}
void  S2242C1 ::v2(){vfunc_called(this, "_ZN7S2242C12v2Ev");}
void  S2242C1 ::v3(){vfunc_called(this, "_ZN7S2242C12v3Ev");}
S2242C1 ::S2242C1(){ note_ctor("S2242C1", this);} // tgen

static void Test_S2242C1()
{
  extern Class_Descriptor cd_S2242C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S2242C1, buf);
    S2242C1 *dp, &lv = *(dp=new (buf) S2242C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S2242C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2242C1)");
    check_base_class_offset(lv, (S2242C4*)(S2242C3*)(S2242C2*), 0, "S2242C1");
    check_base_class_offset(lv, (S2242C3*)(S2242C2*), 0, "S2242C1");
    check_base_class_offset(lv, (S2242C2*), 0, "S2242C1");
    check_field_offset(lv, s2242c1f0, ABISELECT(96,56), "S2242C1.s2242c1f0");
    test_class_info(&lv, &cd_S2242C1);
    dp->~S2242C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2242C1(Test_S2242C1, "S2242C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S2242C1C1Ev();
extern void _ZN7S2242C1D1Ev();
Name_Map name_map_S2242C1[] = {
  NSPAIR(_ZN7S2242C1C1Ev),
  NSPAIR(_ZN7S2242C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C4;
extern VTBL_ENTRY _ZTI7S2242C4[];
extern  VTBL_ENTRY _ZTV7S2242C4[];
extern Class_Descriptor cd_S2242C3;
extern VTBL_ENTRY _ZTI7S2242C3[];
extern  VTBL_ENTRY _ZTV7S2242C3[];
extern Class_Descriptor cd_S2242C2;
extern VTBL_ENTRY _ZTI7S2242C2[];
extern  VTBL_ENTRY _ZTV7S2242C2[];
static Base_Class bases_S2242C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2242C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2242C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2242C1[];
extern void _ZN7S2242C1D1Ev();
extern void _ZN7S2242C1D0Ev();
extern void _ZN7S2242C42v4Ev();
extern void _ZN7S2242C42v5Ev();
extern void _ZN7S2242C42v6Ev();
extern void _ZN7S2242C32v7Ev();
extern void _ZN7S2242C32v8Ev();
extern void _ZN7S2242C32v9Ev();
extern void _ZN7S2242C33v10Ev();
extern void _ZN7S2242C33v11Ev();
extern void _ZN7S2242C33v12Ev();
extern void _ZN7S2242C33v13Ev();
extern void _ZN7S2242C33v14Ev();
extern void _ZN7S2242C33v15Ev();
extern void _ZN7S2242C23v16Ev();
extern void _ZN7S2242C23v17Ev();
extern void _ZN7S2242C23v18Ev();
extern void _ZN7S2242C12v1Ev();
extern void _ZN7S2242C12v2Ev();
extern void _ZN7S2242C12v3Ev();
static  VTBL_ENTRY vtc_S2242C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2242C1[0]),
  (VTBL_ENTRY)&_ZN7S2242C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2242C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2242C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2242C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2242C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2242C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2242C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2242C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2242C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2242C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2242C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2242C1[];
extern  VTBL_ENTRY _ZTV7S2242C1[];
Class_Descriptor cd_S2242C1 = {  "S2242C1", // class name
  bases_S2242C1, 3,
  &(vtc_S2242C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S2242C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2242C1),22, //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  S2246C4  {
  ::S16385C7 s2246c4f0;
  int s2246c4f1[2];
  char s2246c4f2;
  virtual  ~S2246C4(); // _ZN7S2246C4D1Ev
  virtual void  v4(); // _ZN7S2246C42v4Ev
  virtual void  v5(); // _ZN7S2246C42v5Ev
  virtual void  v6(); // _ZN7S2246C42v6Ev
  S2246C4(); // tgen
};
//SIG(-1 S2246C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2246C4 ::~S2246C4(){ note_dtor("S2246C4", this);}
void  S2246C4 ::v4(){vfunc_called(this, "_ZN7S2246C42v4Ev");}
void  S2246C4 ::v5(){vfunc_called(this, "_ZN7S2246C42v5Ev");}
void  S2246C4 ::v6(){vfunc_called(this, "_ZN7S2246C42v6Ev");}
S2246C4 ::S2246C4(){ note_ctor("S2246C4", this);} // tgen

static void Test_S2246C4()
{
  extern Class_Descriptor cd_S2246C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2246C4, buf);
    S2246C4 *dp, &lv = *(dp=new (buf) S2246C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2246C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2246C4)");
    check_field_offset(lv, s2246c4f0, ABISELECT(8,4), "S2246C4.s2246c4f0");
    check_field_offset(lv, s2246c4f1, ABISELECT(24,16), "S2246C4.s2246c4f1");
    check_field_offset(lv, s2246c4f2, ABISELECT(32,24), "S2246C4.s2246c4f2");
    test_class_info(&lv, &cd_S2246C4);
    dp->~S2246C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2246C4(Test_S2246C4, "S2246C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2246C4C1Ev();
extern void _ZN7S2246C4D1Ev();
Name_Map name_map_S2246C4[] = {
  NSPAIR(_ZN7S2246C4C1Ev),
  NSPAIR(_ZN7S2246C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2246C4[];
extern void _ZN7S2246C4D1Ev();
extern void _ZN7S2246C4D0Ev();
extern void _ZN7S2246C42v4Ev();
extern void _ZN7S2246C42v5Ev();
extern void _ZN7S2246C42v6Ev();
static  VTBL_ENTRY vtc_S2246C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2246C4[0]),
  (VTBL_ENTRY)&_ZN7S2246C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2246C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2246C4[];
extern  VTBL_ENTRY _ZTV7S2246C4[];
Class_Descriptor cd_S2246C4 = {  "S2246C4", // class name
  0,0,//no base classes
  &(vtc_S2246C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2246C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2246C4),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  S2246C3  : S2246C4 {
  void *s2246c3f0[2];
  virtual  ~S2246C3(); // _ZN7S2246C3D1Ev
  virtual void  v7(); // _ZN7S2246C32v7Ev
  virtual void  v8(); // _ZN7S2246C32v8Ev
  virtual void  v9(); // _ZN7S2246C32v9Ev
  virtual void  v10(); // _ZN7S2246C33v10Ev
  virtual void  v11(); // _ZN7S2246C33v11Ev
  virtual void  v12(); // _ZN7S2246C33v12Ev
  virtual void  v13(); // _ZN7S2246C33v13Ev
  virtual void  v14(); // _ZN7S2246C33v14Ev
  virtual void  v15(); // _ZN7S2246C33v15Ev
  S2246C3(); // tgen
};
//SIG(-1 S2246C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2246C3 ::~S2246C3(){ note_dtor("S2246C3", this);}
void  S2246C3 ::v7(){vfunc_called(this, "_ZN7S2246C32v7Ev");}
void  S2246C3 ::v8(){vfunc_called(this, "_ZN7S2246C32v8Ev");}
void  S2246C3 ::v9(){vfunc_called(this, "_ZN7S2246C32v9Ev");}
void  S2246C3 ::v10(){vfunc_called(this, "_ZN7S2246C33v10Ev");}
void  S2246C3 ::v11(){vfunc_called(this, "_ZN7S2246C33v11Ev");}
void  S2246C3 ::v12(){vfunc_called(this, "_ZN7S2246C33v12Ev");}
void  S2246C3 ::v13(){vfunc_called(this, "_ZN7S2246C33v13Ev");}
void  S2246C3 ::v14(){vfunc_called(this, "_ZN7S2246C33v14Ev");}
void  S2246C3 ::v15(){vfunc_called(this, "_ZN7S2246C33v15Ev");}
S2246C3 ::S2246C3(){ note_ctor("S2246C3", this);} // tgen

static void Test_S2246C3()
{
  extern Class_Descriptor cd_S2246C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2246C3, buf);
    S2246C3 *dp, &lv = *(dp=new (buf) S2246C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2246C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2246C3)");
    check_base_class_offset(lv, (S2246C4*), 0, "S2246C3");
    check_field_offset(lv, s2246c3f0, ABISELECT(40,28), "S2246C3.s2246c3f0");
    test_class_info(&lv, &cd_S2246C3);
    dp->~S2246C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2246C3(Test_S2246C3, "S2246C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2246C3C1Ev();
extern void _ZN7S2246C3D1Ev();
Name_Map name_map_S2246C3[] = {
  NSPAIR(_ZN7S2246C3C1Ev),
  NSPAIR(_ZN7S2246C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2246C4;
extern VTBL_ENTRY _ZTI7S2246C4[];
extern  VTBL_ENTRY _ZTV7S2246C4[];
static Base_Class bases_S2246C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2246C3[];
extern void _ZN7S2246C3D1Ev();
extern void _ZN7S2246C3D0Ev();
extern void _ZN7S2246C42v4Ev();
extern void _ZN7S2246C42v5Ev();
extern void _ZN7S2246C42v6Ev();
extern void _ZN7S2246C32v7Ev();
extern void _ZN7S2246C32v8Ev();
extern void _ZN7S2246C32v9Ev();
extern void _ZN7S2246C33v10Ev();
extern void _ZN7S2246C33v11Ev();
extern void _ZN7S2246C33v12Ev();
extern void _ZN7S2246C33v13Ev();
extern void _ZN7S2246C33v14Ev();
extern void _ZN7S2246C33v15Ev();
static  VTBL_ENTRY vtc_S2246C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2246C3[0]),
  (VTBL_ENTRY)&_ZN7S2246C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2246C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2246C3[];
extern  VTBL_ENTRY _ZTV7S2246C3[];
Class_Descriptor cd_S2246C3 = {  "S2246C3", // class name
  bases_S2246C3, 1,
  &(vtc_S2246C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2246C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2246C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2246C2  : S2246C3 {
  void *s2246c2f0[4];
  int s2246c2f1;
  virtual  ~S2246C2(); // _ZN7S2246C2D1Ev
  virtual void  v16(); // _ZN7S2246C23v16Ev
  virtual void  v17(); // _ZN7S2246C23v17Ev
  virtual void  v18(); // _ZN7S2246C23v18Ev
  S2246C2(); // tgen
};
//SIG(-1 S2246C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2246C2 ::~S2246C2(){ note_dtor("S2246C2", this);}
void  S2246C2 ::v16(){vfunc_called(this, "_ZN7S2246C23v16Ev");}
void  S2246C2 ::v17(){vfunc_called(this, "_ZN7S2246C23v17Ev");}
void  S2246C2 ::v18(){vfunc_called(this, "_ZN7S2246C23v18Ev");}
S2246C2 ::S2246C2(){ note_ctor("S2246C2", this);} // tgen

static void Test_S2246C2()
{
  extern Class_Descriptor cd_S2246C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2246C2, buf);
    S2246C2 *dp, &lv = *(dp=new (buf) S2246C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2246C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2246C2)");
    check_base_class_offset(lv, (S2246C4*)(S2246C3*), 0, "S2246C2");
    check_base_class_offset(lv, (S2246C3*), 0, "S2246C2");
    check_field_offset(lv, s2246c2f0, ABISELECT(56,36), "S2246C2.s2246c2f0");
    check_field_offset(lv, s2246c2f1, ABISELECT(88,52), "S2246C2.s2246c2f1");
    test_class_info(&lv, &cd_S2246C2);
    dp->~S2246C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2246C2(Test_S2246C2, "S2246C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2246C2C1Ev();
extern void _ZN7S2246C2D1Ev();
Name_Map name_map_S2246C2[] = {
  NSPAIR(_ZN7S2246C2C1Ev),
  NSPAIR(_ZN7S2246C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2246C4;
extern VTBL_ENTRY _ZTI7S2246C4[];
extern  VTBL_ENTRY _ZTV7S2246C4[];
extern Class_Descriptor cd_S2246C3;
extern VTBL_ENTRY _ZTI7S2246C3[];
extern  VTBL_ENTRY _ZTV7S2246C3[];
static Base_Class bases_S2246C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2246C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2246C2[];
extern void _ZN7S2246C2D1Ev();
extern void _ZN7S2246C2D0Ev();
extern void _ZN7S2246C42v4Ev();
extern void _ZN7S2246C42v5Ev();
extern void _ZN7S2246C42v6Ev();
extern void _ZN7S2246C32v7Ev();
extern void _ZN7S2246C32v8Ev();
extern void _ZN7S2246C32v9Ev();
extern void _ZN7S2246C33v10Ev();
extern void _ZN7S2246C33v11Ev();
extern void _ZN7S2246C33v12Ev();
extern void _ZN7S2246C33v13Ev();
extern void _ZN7S2246C33v14Ev();
extern void _ZN7S2246C33v15Ev();
extern void _ZN7S2246C23v16Ev();
extern void _ZN7S2246C23v17Ev();
extern void _ZN7S2246C23v18Ev();
static  VTBL_ENTRY vtc_S2246C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2246C2[0]),
  (VTBL_ENTRY)&_ZN7S2246C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2246C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2246C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2246C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2246C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S2246C2[];
extern  VTBL_ENTRY _ZTV7S2246C2[];
Class_Descriptor cd_S2246C2 = {  "S2246C2", // class name
  bases_S2246C2, 2,
  &(vtc_S2246C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2246C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2246C2),19, //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  S2246C1  : S2246C2 {
  void *s2246c1f0[3];
  int s2246c1f1;
  char s2246c1f2;
  virtual  ~S2246C1(); // _ZN7S2246C1D1Ev
  virtual void  v1(); // _ZN7S2246C12v1Ev
  virtual void  v2(); // _ZN7S2246C12v2Ev
  virtual void  v3(); // _ZN7S2246C12v3Ev
  S2246C1(); // tgen
};
//SIG(1 S2246C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 Fp[3] Fi Fc}


 S2246C1 ::~S2246C1(){ note_dtor("S2246C1", this);}
void  S2246C1 ::v1(){vfunc_called(this, "_ZN7S2246C12v1Ev");}
void  S2246C1 ::v2(){vfunc_called(this, "_ZN7S2246C12v2Ev");}
void  S2246C1 ::v3(){vfunc_called(this, "_ZN7S2246C12v3Ev");}
S2246C1 ::S2246C1(){ note_ctor("S2246C1", this);} // tgen

static void Test_S2246C1()
{
  extern Class_Descriptor cd_S2246C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S2246C1, buf);
    S2246C1 *dp, &lv = *(dp=new (buf) S2246C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S2246C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2246C1)");
    check_base_class_offset(lv, (S2246C4*)(S2246C3*)(S2246C2*), 0, "S2246C1");
    check_base_class_offset(lv, (S2246C3*)(S2246C2*), 0, "S2246C1");
    check_base_class_offset(lv, (S2246C2*), 0, "S2246C1");
    check_field_offset(lv, s2246c1f0, ABISELECT(96,56), "S2246C1.s2246c1f0");
    check_field_offset(lv, s2246c1f1, ABISELECT(120,68), "S2246C1.s2246c1f1");
    check_field_offset(lv, s2246c1f2, ABISELECT(124,72), "S2246C1.s2246c1f2");
    test_class_info(&lv, &cd_S2246C1);
    dp->~S2246C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2246C1(Test_S2246C1, "S2246C1", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN7S2246C1C1Ev();
extern void _ZN7S2246C1D1Ev();
Name_Map name_map_S2246C1[] = {
  NSPAIR(_ZN7S2246C1C1Ev),
  NSPAIR(_ZN7S2246C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2246C4;
extern VTBL_ENTRY _ZTI7S2246C4[];
extern  VTBL_ENTRY _ZTV7S2246C4[];
extern Class_Descriptor cd_S2246C3;
extern VTBL_ENTRY _ZTI7S2246C3[];
extern  VTBL_ENTRY _ZTV7S2246C3[];
extern Class_Descriptor cd_S2246C2;
extern VTBL_ENTRY _ZTI7S2246C2[];
extern  VTBL_ENTRY _ZTV7S2246C2[];
static Base_Class bases_S2246C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2246C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2246C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2246C1[];
extern void _ZN7S2246C1D1Ev();
extern void _ZN7S2246C1D0Ev();
extern void _ZN7S2246C42v4Ev();
extern void _ZN7S2246C42v5Ev();
extern void _ZN7S2246C42v6Ev();
extern void _ZN7S2246C32v7Ev();
extern void _ZN7S2246C32v8Ev();
extern void _ZN7S2246C32v9Ev();
extern void _ZN7S2246C33v10Ev();
extern void _ZN7S2246C33v11Ev();
extern void _ZN7S2246C33v12Ev();
extern void _ZN7S2246C33v13Ev();
extern void _ZN7S2246C33v14Ev();
extern void _ZN7S2246C33v15Ev();
extern void _ZN7S2246C23v16Ev();
extern void _ZN7S2246C23v17Ev();
extern void _ZN7S2246C23v18Ev();
extern void _ZN7S2246C12v1Ev();
extern void _ZN7S2246C12v2Ev();
extern void _ZN7S2246C12v3Ev();
static  VTBL_ENTRY vtc_S2246C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2246C1[0]),
  (VTBL_ENTRY)&_ZN7S2246C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2246C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2246C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2246C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2246C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2246C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2246C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2246C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2246C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2246C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2246C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2246C1[];
extern  VTBL_ENTRY _ZTV7S2246C1[];
Class_Descriptor cd_S2246C1 = {  "S2246C1", // class name
  bases_S2246C1, 3,
  &(vtc_S2246C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI7S2246C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2246C1),22, //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  S2244C4  {
  ::S16385C7 s2244c4f0;
  int s2244c4f1[2];
  char s2244c4f2;
  virtual  ~S2244C4(); // _ZN7S2244C4D1Ev
  virtual void  v4(); // _ZN7S2244C42v4Ev
  virtual void  v5(); // _ZN7S2244C42v5Ev
  virtual void  v6(); // _ZN7S2244C42v6Ev
  S2244C4(); // tgen
};
//SIG(-1 S2244C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2244C4 ::~S2244C4(){ note_dtor("S2244C4", this);}
void  S2244C4 ::v4(){vfunc_called(this, "_ZN7S2244C42v4Ev");}
void  S2244C4 ::v5(){vfunc_called(this, "_ZN7S2244C42v5Ev");}
void  S2244C4 ::v6(){vfunc_called(this, "_ZN7S2244C42v6Ev");}
S2244C4 ::S2244C4(){ note_ctor("S2244C4", this);} // tgen

static void Test_S2244C4()
{
  extern Class_Descriptor cd_S2244C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2244C4, buf);
    S2244C4 *dp, &lv = *(dp=new (buf) S2244C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2244C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2244C4)");
    check_field_offset(lv, s2244c4f0, ABISELECT(8,4), "S2244C4.s2244c4f0");
    check_field_offset(lv, s2244c4f1, ABISELECT(24,16), "S2244C4.s2244c4f1");
    check_field_offset(lv, s2244c4f2, ABISELECT(32,24), "S2244C4.s2244c4f2");
    test_class_info(&lv, &cd_S2244C4);
    dp->~S2244C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2244C4(Test_S2244C4, "S2244C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2244C4C1Ev();
extern void _ZN7S2244C4D1Ev();
Name_Map name_map_S2244C4[] = {
  NSPAIR(_ZN7S2244C4C1Ev),
  NSPAIR(_ZN7S2244C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2244C4[];
extern void _ZN7S2244C4D1Ev();
extern void _ZN7S2244C4D0Ev();
extern void _ZN7S2244C42v4Ev();
extern void _ZN7S2244C42v5Ev();
extern void _ZN7S2244C42v6Ev();
static  VTBL_ENTRY vtc_S2244C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2244C4[0]),
  (VTBL_ENTRY)&_ZN7S2244C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2244C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2244C4[];
extern  VTBL_ENTRY _ZTV7S2244C4[];
Class_Descriptor cd_S2244C4 = {  "S2244C4", // class name
  0,0,//no base classes
  &(vtc_S2244C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2244C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2244C4),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  S2244C3  : S2244C4 {
  void *s2244c3f0[2];
  virtual  ~S2244C3(); // _ZN7S2244C3D1Ev
  virtual void  v7(); // _ZN7S2244C32v7Ev
  virtual void  v8(); // _ZN7S2244C32v8Ev
  virtual void  v9(); // _ZN7S2244C32v9Ev
  virtual void  v10(); // _ZN7S2244C33v10Ev
  virtual void  v11(); // _ZN7S2244C33v11Ev
  virtual void  v12(); // _ZN7S2244C33v12Ev
  virtual void  v13(); // _ZN7S2244C33v13Ev
  virtual void  v14(); // _ZN7S2244C33v14Ev
  virtual void  v15(); // _ZN7S2244C33v15Ev
  S2244C3(); // tgen
};
//SIG(-1 S2244C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2244C3 ::~S2244C3(){ note_dtor("S2244C3", this);}
void  S2244C3 ::v7(){vfunc_called(this, "_ZN7S2244C32v7Ev");}
void  S2244C3 ::v8(){vfunc_called(this, "_ZN7S2244C32v8Ev");}
void  S2244C3 ::v9(){vfunc_called(this, "_ZN7S2244C32v9Ev");}
void  S2244C3 ::v10(){vfunc_called(this, "_ZN7S2244C33v10Ev");}
void  S2244C3 ::v11(){vfunc_called(this, "_ZN7S2244C33v11Ev");}
void  S2244C3 ::v12(){vfunc_called(this, "_ZN7S2244C33v12Ev");}
void  S2244C3 ::v13(){vfunc_called(this, "_ZN7S2244C33v13Ev");}
void  S2244C3 ::v14(){vfunc_called(this, "_ZN7S2244C33v14Ev");}
void  S2244C3 ::v15(){vfunc_called(this, "_ZN7S2244C33v15Ev");}
S2244C3 ::S2244C3(){ note_ctor("S2244C3", this);} // tgen

static void Test_S2244C3()
{
  extern Class_Descriptor cd_S2244C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2244C3, buf);
    S2244C3 *dp, &lv = *(dp=new (buf) S2244C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2244C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2244C3)");
    check_base_class_offset(lv, (S2244C4*), 0, "S2244C3");
    check_field_offset(lv, s2244c3f0, ABISELECT(40,28), "S2244C3.s2244c3f0");
    test_class_info(&lv, &cd_S2244C3);
    dp->~S2244C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2244C3(Test_S2244C3, "S2244C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2244C3C1Ev();
extern void _ZN7S2244C3D1Ev();
Name_Map name_map_S2244C3[] = {
  NSPAIR(_ZN7S2244C3C1Ev),
  NSPAIR(_ZN7S2244C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2244C4;
extern VTBL_ENTRY _ZTI7S2244C4[];
extern  VTBL_ENTRY _ZTV7S2244C4[];
static Base_Class bases_S2244C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2244C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2244C3[];
extern void _ZN7S2244C3D1Ev();
extern void _ZN7S2244C3D0Ev();
extern void _ZN7S2244C42v4Ev();
extern void _ZN7S2244C42v5Ev();
extern void _ZN7S2244C42v6Ev();
extern void _ZN7S2244C32v7Ev();
extern void _ZN7S2244C32v8Ev();
extern void _ZN7S2244C32v9Ev();
extern void _ZN7S2244C33v10Ev();
extern void _ZN7S2244C33v11Ev();
extern void _ZN7S2244C33v12Ev();
extern void _ZN7S2244C33v13Ev();
extern void _ZN7S2244C33v14Ev();
extern void _ZN7S2244C33v15Ev();
static  VTBL_ENTRY vtc_S2244C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2244C3[0]),
  (VTBL_ENTRY)&_ZN7S2244C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2244C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2244C3[];
extern  VTBL_ENTRY _ZTV7S2244C3[];
Class_Descriptor cd_S2244C3 = {  "S2244C3", // class name
  bases_S2244C3, 1,
  &(vtc_S2244C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2244C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2244C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2244C2  : S2244C3 {
  void *s2244c2f0[4];
  int s2244c2f1;
  virtual  ~S2244C2(); // _ZN7S2244C2D1Ev
  virtual void  v16(); // _ZN7S2244C23v16Ev
  virtual void  v17(); // _ZN7S2244C23v17Ev
  virtual void  v18(); // _ZN7S2244C23v18Ev
  S2244C2(); // tgen
};
//SIG(-1 S2244C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2244C2 ::~S2244C2(){ note_dtor("S2244C2", this);}
void  S2244C2 ::v16(){vfunc_called(this, "_ZN7S2244C23v16Ev");}
void  S2244C2 ::v17(){vfunc_called(this, "_ZN7S2244C23v17Ev");}
void  S2244C2 ::v18(){vfunc_called(this, "_ZN7S2244C23v18Ev");}
S2244C2 ::S2244C2(){ note_ctor("S2244C2", this);} // tgen

static void Test_S2244C2()
{
  extern Class_Descriptor cd_S2244C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2244C2, buf);
    S2244C2 *dp, &lv = *(dp=new (buf) S2244C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2244C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2244C2)");
    check_base_class_offset(lv, (S2244C4*)(S2244C3*), 0, "S2244C2");
    check_base_class_offset(lv, (S2244C3*), 0, "S2244C2");
    check_field_offset(lv, s2244c2f0, ABISELECT(56,36), "S2244C2.s2244c2f0");
    check_field_offset(lv, s2244c2f1, ABISELECT(88,52), "S2244C2.s2244c2f1");
    test_class_info(&lv, &cd_S2244C2);
    dp->~S2244C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2244C2(Test_S2244C2, "S2244C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2244C2C1Ev();
extern void _ZN7S2244C2D1Ev();
Name_Map name_map_S2244C2[] = {
  NSPAIR(_ZN7S2244C2C1Ev),
  NSPAIR(_ZN7S2244C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2244C4;
extern VTBL_ENTRY _ZTI7S2244C4[];
extern  VTBL_ENTRY _ZTV7S2244C4[];
extern Class_Descriptor cd_S2244C3;
extern VTBL_ENTRY _ZTI7S2244C3[];
extern  VTBL_ENTRY _ZTV7S2244C3[];
static Base_Class bases_S2244C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2244C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2244C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2244C2[];
extern void _ZN7S2244C2D1Ev();
extern void _ZN7S2244C2D0Ev();
extern void _ZN7S2244C42v4Ev();
extern void _ZN7S2244C42v5Ev();
extern void _ZN7S2244C42v6Ev();
extern void _ZN7S2244C32v7Ev();
extern void _ZN7S2244C32v8Ev();
extern void _ZN7S2244C32v9Ev();
extern void _ZN7S2244C33v10Ev();
extern void _ZN7S2244C33v11Ev();
extern void _ZN7S2244C33v12Ev();
extern void _ZN7S2244C33v13Ev();
extern void _ZN7S2244C33v14Ev();
extern void _ZN7S2244C33v15Ev();
extern void _ZN7S2244C23v16Ev();
extern void _ZN7S2244C23v17Ev();
extern void _ZN7S2244C23v18Ev();
static  VTBL_ENTRY vtc_S2244C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2244C2[0]),
  (VTBL_ENTRY)&_ZN7S2244C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2244C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2244C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2244C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2244C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S2244C2[];
extern  VTBL_ENTRY _ZTV7S2244C2[];
Class_Descriptor cd_S2244C2 = {  "S2244C2", // class name
  bases_S2244C2, 2,
  &(vtc_S2244C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2244C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2244C2),19, //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  S2244C1  : S2244C2 {
  void *s2244c1f0[2];
  char s2244c1f1;
  __tsi64 s2244c1f2;
  virtual  ~S2244C1(); // _ZN7S2244C1D1Ev
  virtual void  v1(); // _ZN7S2244C12v1Ev
  virtual void  v2(); // _ZN7S2244C12v2Ev
  virtual void  v3(); // _ZN7S2244C12v3Ev
  S2244C1(); // tgen
};
//SIG(1 S2244C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 Fp[2] Fc FL}


 S2244C1 ::~S2244C1(){ note_dtor("S2244C1", this);}
void  S2244C1 ::v1(){vfunc_called(this, "_ZN7S2244C12v1Ev");}
void  S2244C1 ::v2(){vfunc_called(this, "_ZN7S2244C12v2Ev");}
void  S2244C1 ::v3(){vfunc_called(this, "_ZN7S2244C12v3Ev");}
S2244C1 ::S2244C1(){ note_ctor("S2244C1", this);} // tgen

static void Test_S2244C1()
{
  extern Class_Descriptor cd_S2244C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S2244C1, buf);
    S2244C1 *dp, &lv = *(dp=new (buf) S2244C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S2244C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2244C1)");
    check_base_class_offset(lv, (S2244C4*)(S2244C3*)(S2244C2*), 0, "S2244C1");
    check_base_class_offset(lv, (S2244C3*)(S2244C2*), 0, "S2244C1");
    check_base_class_offset(lv, (S2244C2*), 0, "S2244C1");
    check_field_offset(lv, s2244c1f0, ABISELECT(96,56), "S2244C1.s2244c1f0");
    check_field_offset(lv, s2244c1f1, ABISELECT(112,64), "S2244C1.s2244c1f1");
    check_field_offset(lv, s2244c1f2, ABISELECT(120,68), "S2244C1.s2244c1f2");
    test_class_info(&lv, &cd_S2244C1);
    dp->~S2244C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2244C1(Test_S2244C1, "S2244C1", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN7S2244C1C1Ev();
extern void _ZN7S2244C1D1Ev();
Name_Map name_map_S2244C1[] = {
  NSPAIR(_ZN7S2244C1C1Ev),
  NSPAIR(_ZN7S2244C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2244C4;
extern VTBL_ENTRY _ZTI7S2244C4[];
extern  VTBL_ENTRY _ZTV7S2244C4[];
extern Class_Descriptor cd_S2244C3;
extern VTBL_ENTRY _ZTI7S2244C3[];
extern  VTBL_ENTRY _ZTV7S2244C3[];
extern Class_Descriptor cd_S2244C2;
extern VTBL_ENTRY _ZTI7S2244C2[];
extern  VTBL_ENTRY _ZTV7S2244C2[];
static Base_Class bases_S2244C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2244C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2244C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2244C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2244C1[];
extern void _ZN7S2244C1D1Ev();
extern void _ZN7S2244C1D0Ev();
extern void _ZN7S2244C42v4Ev();
extern void _ZN7S2244C42v5Ev();
extern void _ZN7S2244C42v6Ev();
extern void _ZN7S2244C32v7Ev();
extern void _ZN7S2244C32v8Ev();
extern void _ZN7S2244C32v9Ev();
extern void _ZN7S2244C33v10Ev();
extern void _ZN7S2244C33v11Ev();
extern void _ZN7S2244C33v12Ev();
extern void _ZN7S2244C33v13Ev();
extern void _ZN7S2244C33v14Ev();
extern void _ZN7S2244C33v15Ev();
extern void _ZN7S2244C23v16Ev();
extern void _ZN7S2244C23v17Ev();
extern void _ZN7S2244C23v18Ev();
extern void _ZN7S2244C12v1Ev();
extern void _ZN7S2244C12v2Ev();
extern void _ZN7S2244C12v3Ev();
static  VTBL_ENTRY vtc_S2244C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2244C1[0]),
  (VTBL_ENTRY)&_ZN7S2244C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2244C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2244C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2244C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2244C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2244C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2244C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2244C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2244C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2244C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2244C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2244C1[];
extern  VTBL_ENTRY _ZTV7S2244C1[];
Class_Descriptor cd_S2244C1 = {  "S2244C1", // class name
  bases_S2244C1, 3,
  &(vtc_S2244C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI7S2244C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2244C1),22, //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  S2191C4  {
  ::S16385C7 s2191c4f0;
  int s2191c4f1[2];
  char s2191c4f2;
  virtual  ~S2191C4(); // _ZN7S2191C4D1Ev
  virtual void  v3(); // _ZN7S2191C42v3Ev
  virtual void  v4(); // _ZN7S2191C42v4Ev
  virtual void  v5(); // _ZN7S2191C42v5Ev
  S2191C4(); // tgen
};
//SIG(-1 S2191C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2191C4 ::~S2191C4(){ note_dtor("S2191C4", this);}
void  S2191C4 ::v3(){vfunc_called(this, "_ZN7S2191C42v3Ev");}
void  S2191C4 ::v4(){vfunc_called(this, "_ZN7S2191C42v4Ev");}
void  S2191C4 ::v5(){vfunc_called(this, "_ZN7S2191C42v5Ev");}
S2191C4 ::S2191C4(){ note_ctor("S2191C4", this);} // tgen

static void Test_S2191C4()
{
  extern Class_Descriptor cd_S2191C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2191C4, buf);
    S2191C4 *dp, &lv = *(dp=new (buf) S2191C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2191C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2191C4)");
    check_field_offset(lv, s2191c4f0, ABISELECT(8,4), "S2191C4.s2191c4f0");
    check_field_offset(lv, s2191c4f1, ABISELECT(24,16), "S2191C4.s2191c4f1");
    check_field_offset(lv, s2191c4f2, ABISELECT(32,24), "S2191C4.s2191c4f2");
    test_class_info(&lv, &cd_S2191C4);
    dp->~S2191C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2191C4(Test_S2191C4, "S2191C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2191C4C1Ev();
extern void _ZN7S2191C4D1Ev();
Name_Map name_map_S2191C4[] = {
  NSPAIR(_ZN7S2191C4C1Ev),
  NSPAIR(_ZN7S2191C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2191C4[];
extern void _ZN7S2191C4D1Ev();
extern void _ZN7S2191C4D0Ev();
extern void _ZN7S2191C42v3Ev();
extern void _ZN7S2191C42v4Ev();
extern void _ZN7S2191C42v5Ev();
static  VTBL_ENTRY vtc_S2191C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2191C4[0]),
  (VTBL_ENTRY)&_ZN7S2191C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2191C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2191C4[];
extern  VTBL_ENTRY _ZTV7S2191C4[];
Class_Descriptor cd_S2191C4 = {  "S2191C4", // class name
  0,0,//no base classes
  &(vtc_S2191C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2191C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2191C4),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  S2191C3  : S2191C4 {
  void *s2191c3f0[2];
  virtual  ~S2191C3(); // _ZN7S2191C3D1Ev
  virtual void  v6(); // _ZN7S2191C32v6Ev
  virtual void  v7(); // _ZN7S2191C32v7Ev
  virtual void  v8(); // _ZN7S2191C32v8Ev
  virtual void  v9(); // _ZN7S2191C32v9Ev
  virtual void  v10(); // _ZN7S2191C33v10Ev
  virtual void  v11(); // _ZN7S2191C33v11Ev
  virtual void  v12(); // _ZN7S2191C33v12Ev
  virtual void  v13(); // _ZN7S2191C33v13Ev
  virtual void  v14(); // _ZN7S2191C33v14Ev
  S2191C3(); // tgen
};
//SIG(-1 S2191C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2191C3 ::~S2191C3(){ note_dtor("S2191C3", this);}
void  S2191C3 ::v6(){vfunc_called(this, "_ZN7S2191C32v6Ev");}
void  S2191C3 ::v7(){vfunc_called(this, "_ZN7S2191C32v7Ev");}
void  S2191C3 ::v8(){vfunc_called(this, "_ZN7S2191C32v8Ev");}
void  S2191C3 ::v9(){vfunc_called(this, "_ZN7S2191C32v9Ev");}
void  S2191C3 ::v10(){vfunc_called(this, "_ZN7S2191C33v10Ev");}
void  S2191C3 ::v11(){vfunc_called(this, "_ZN7S2191C33v11Ev");}
void  S2191C3 ::v12(){vfunc_called(this, "_ZN7S2191C33v12Ev");}
void  S2191C3 ::v13(){vfunc_called(this, "_ZN7S2191C33v13Ev");}
void  S2191C3 ::v14(){vfunc_called(this, "_ZN7S2191C33v14Ev");}
S2191C3 ::S2191C3(){ note_ctor("S2191C3", this);} // tgen

static void Test_S2191C3()
{
  extern Class_Descriptor cd_S2191C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2191C3, buf);
    S2191C3 *dp, &lv = *(dp=new (buf) S2191C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2191C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2191C3)");
    check_base_class_offset(lv, (S2191C4*), 0, "S2191C3");
    check_field_offset(lv, s2191c3f0, ABISELECT(40,28), "S2191C3.s2191c3f0");
    test_class_info(&lv, &cd_S2191C3);
    dp->~S2191C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2191C3(Test_S2191C3, "S2191C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2191C3C1Ev();
extern void _ZN7S2191C3D1Ev();
Name_Map name_map_S2191C3[] = {
  NSPAIR(_ZN7S2191C3C1Ev),
  NSPAIR(_ZN7S2191C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2191C4;
extern VTBL_ENTRY _ZTI7S2191C4[];
extern  VTBL_ENTRY _ZTV7S2191C4[];
static Base_Class bases_S2191C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2191C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2191C3[];
extern void _ZN7S2191C3D1Ev();
extern void _ZN7S2191C3D0Ev();
extern void _ZN7S2191C42v3Ev();
extern void _ZN7S2191C42v4Ev();
extern void _ZN7S2191C42v5Ev();
extern void _ZN7S2191C32v6Ev();
extern void _ZN7S2191C32v7Ev();
extern void _ZN7S2191C32v8Ev();
extern void _ZN7S2191C32v9Ev();
extern void _ZN7S2191C33v10Ev();
extern void _ZN7S2191C33v11Ev();
extern void _ZN7S2191C33v12Ev();
extern void _ZN7S2191C33v13Ev();
extern void _ZN7S2191C33v14Ev();
static  VTBL_ENTRY vtc_S2191C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2191C3[0]),
  (VTBL_ENTRY)&_ZN7S2191C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2191C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2191C3[];
extern  VTBL_ENTRY _ZTV7S2191C3[];
Class_Descriptor cd_S2191C3 = {  "S2191C3", // class name
  bases_S2191C3, 1,
  &(vtc_S2191C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2191C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2191C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2191C2  : S2191C3 {
  void *s2191c2f0[4];
  int s2191c2f1;
  virtual  ~S2191C2(); // _ZN7S2191C2D1Ev
  virtual void  v15(); // _ZN7S2191C23v15Ev
  virtual void  v16(); // _ZN7S2191C23v16Ev
  virtual void  v17(); // _ZN7S2191C23v17Ev
  S2191C2(); // tgen
};
//SIG(-1 S2191C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2191C2 ::~S2191C2(){ note_dtor("S2191C2", this);}
void  S2191C2 ::v15(){vfunc_called(this, "_ZN7S2191C23v15Ev");}
void  S2191C2 ::v16(){vfunc_called(this, "_ZN7S2191C23v16Ev");}
void  S2191C2 ::v17(){vfunc_called(this, "_ZN7S2191C23v17Ev");}
S2191C2 ::S2191C2(){ note_ctor("S2191C2", this);} // tgen

static void Test_S2191C2()
{
  extern Class_Descriptor cd_S2191C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2191C2, buf);
    S2191C2 *dp, &lv = *(dp=new (buf) S2191C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2191C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2191C2)");
    check_base_class_offset(lv, (S2191C4*)(S2191C3*), 0, "S2191C2");
    check_base_class_offset(lv, (S2191C3*), 0, "S2191C2");
    check_field_offset(lv, s2191c2f0, ABISELECT(56,36), "S2191C2.s2191c2f0");
    check_field_offset(lv, s2191c2f1, ABISELECT(88,52), "S2191C2.s2191c2f1");
    test_class_info(&lv, &cd_S2191C2);
    dp->~S2191C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2191C2(Test_S2191C2, "S2191C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2191C2C1Ev();
extern void _ZN7S2191C2D1Ev();
Name_Map name_map_S2191C2[] = {
  NSPAIR(_ZN7S2191C2C1Ev),
  NSPAIR(_ZN7S2191C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2191C4;
extern VTBL_ENTRY _ZTI7S2191C4[];
extern  VTBL_ENTRY _ZTV7S2191C4[];
extern Class_Descriptor cd_S2191C3;
extern VTBL_ENTRY _ZTI7S2191C3[];
extern  VTBL_ENTRY _ZTV7S2191C3[];
static Base_Class bases_S2191C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2191C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2191C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2191C2[];
extern void _ZN7S2191C2D1Ev();
extern void _ZN7S2191C2D0Ev();
extern void _ZN7S2191C42v3Ev();
extern void _ZN7S2191C42v4Ev();
extern void _ZN7S2191C42v5Ev();
extern void _ZN7S2191C32v6Ev();
extern void _ZN7S2191C32v7Ev();
extern void _ZN7S2191C32v8Ev();
extern void _ZN7S2191C32v9Ev();
extern void _ZN7S2191C33v10Ev();
extern void _ZN7S2191C33v11Ev();
extern void _ZN7S2191C33v12Ev();
extern void _ZN7S2191C33v13Ev();
extern void _ZN7S2191C33v14Ev();
extern void _ZN7S2191C23v15Ev();
extern void _ZN7S2191C23v16Ev();
extern void _ZN7S2191C23v17Ev();
static  VTBL_ENTRY vtc_S2191C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2191C2[0]),
  (VTBL_ENTRY)&_ZN7S2191C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2191C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2191C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2191C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2191C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2191C2[];
extern  VTBL_ENTRY _ZTV7S2191C2[];
Class_Descriptor cd_S2191C2 = {  "S2191C2", // class name
  bases_S2191C2, 2,
  &(vtc_S2191C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2191C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2191C2),19, //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  S2191C7_nt  {
  __tsi64 s2191c7f0;
};
//SIG(-1 S2191C7_nt) C1{ FL}



//skip512 S2191C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2191C1  : S2191C2 {
  void *s2191c1f0[2];
  ::S2191C7_nt s2191c1f1;
  virtual  ~S2191C1(); // _ZN7S2191C1D1Ev
  virtual void  v1(); // _ZN7S2191C12v1Ev
  virtual void  v2(); // _ZN7S2191C12v2Ev
  S2191C1(); // tgen
};
//SIG(1 S2191C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fp[2] FC7{ FL}}


 S2191C1 ::~S2191C1(){ note_dtor("S2191C1", this);}
void  S2191C1 ::v1(){vfunc_called(this, "_ZN7S2191C12v1Ev");}
void  S2191C1 ::v2(){vfunc_called(this, "_ZN7S2191C12v2Ev");}
S2191C1 ::S2191C1(){ note_ctor("S2191C1", this);} // tgen

static void Test_S2191C1()
{
  extern Class_Descriptor cd_S2191C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S2191C1, buf);
    S2191C1 *dp, &lv = *(dp=new (buf) S2191C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S2191C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2191C1)");
    check_base_class_offset(lv, (S2191C4*)(S2191C3*)(S2191C2*), 0, "S2191C1");
    check_base_class_offset(lv, (S2191C3*)(S2191C2*), 0, "S2191C1");
    check_base_class_offset(lv, (S2191C2*), 0, "S2191C1");
    check_field_offset(lv, s2191c1f0, ABISELECT(96,56), "S2191C1.s2191c1f0");
    check_field_offset(lv, s2191c1f1, ABISELECT(112,64), "S2191C1.s2191c1f1");
    test_class_info(&lv, &cd_S2191C1);
    dp->~S2191C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2191C1(Test_S2191C1, "S2191C1", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN7S2191C1C1Ev();
extern void _ZN7S2191C1D1Ev();
Name_Map name_map_S2191C1[] = {
  NSPAIR(_ZN7S2191C1C1Ev),
  NSPAIR(_ZN7S2191C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2191C4;
extern VTBL_ENTRY _ZTI7S2191C4[];
extern  VTBL_ENTRY _ZTV7S2191C4[];
extern Class_Descriptor cd_S2191C3;
extern VTBL_ENTRY _ZTI7S2191C3[];
extern  VTBL_ENTRY _ZTV7S2191C3[];
extern Class_Descriptor cd_S2191C2;
extern VTBL_ENTRY _ZTI7S2191C2[];
extern  VTBL_ENTRY _ZTV7S2191C2[];
static Base_Class bases_S2191C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2191C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2191C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2191C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2191C1[];
extern void _ZN7S2191C1D1Ev();
extern void _ZN7S2191C1D0Ev();
extern void _ZN7S2191C42v3Ev();
extern void _ZN7S2191C42v4Ev();
extern void _ZN7S2191C42v5Ev();
extern void _ZN7S2191C32v6Ev();
extern void _ZN7S2191C32v7Ev();
extern void _ZN7S2191C32v8Ev();
extern void _ZN7S2191C32v9Ev();
extern void _ZN7S2191C33v10Ev();
extern void _ZN7S2191C33v11Ev();
extern void _ZN7S2191C33v12Ev();
extern void _ZN7S2191C33v13Ev();
extern void _ZN7S2191C33v14Ev();
extern void _ZN7S2191C23v15Ev();
extern void _ZN7S2191C23v16Ev();
extern void _ZN7S2191C23v17Ev();
extern void _ZN7S2191C12v1Ev();
extern void _ZN7S2191C12v2Ev();
static  VTBL_ENTRY vtc_S2191C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2191C1[0]),
  (VTBL_ENTRY)&_ZN7S2191C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2191C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2191C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2191C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2191C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2191C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2191C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2191C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2191C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2191C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2191C1[];
extern  VTBL_ENTRY _ZTV7S2191C1[];
Class_Descriptor cd_S2191C1 = {  "S2191C1", // class name
  bases_S2191C1, 3,
  &(vtc_S2191C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI7S2191C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2191C1),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  S2190C4  {
  ::S16385C7 s2190c4f0;
  int s2190c4f1[2];
  char s2190c4f2;
  virtual  ~S2190C4(); // _ZN7S2190C4D1Ev
  virtual void  v3(); // _ZN7S2190C42v3Ev
  virtual void  v4(); // _ZN7S2190C42v4Ev
  virtual void  v5(); // _ZN7S2190C42v5Ev
  S2190C4(); // tgen
};
//SIG(-1 S2190C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2190C4 ::~S2190C4(){ note_dtor("S2190C4", this);}
void  S2190C4 ::v3(){vfunc_called(this, "_ZN7S2190C42v3Ev");}
void  S2190C4 ::v4(){vfunc_called(this, "_ZN7S2190C42v4Ev");}
void  S2190C4 ::v5(){vfunc_called(this, "_ZN7S2190C42v5Ev");}
S2190C4 ::S2190C4(){ note_ctor("S2190C4", this);} // tgen

static void Test_S2190C4()
{
  extern Class_Descriptor cd_S2190C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2190C4, buf);
    S2190C4 *dp, &lv = *(dp=new (buf) S2190C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2190C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2190C4)");
    check_field_offset(lv, s2190c4f0, ABISELECT(8,4), "S2190C4.s2190c4f0");
    check_field_offset(lv, s2190c4f1, ABISELECT(24,16), "S2190C4.s2190c4f1");
    check_field_offset(lv, s2190c4f2, ABISELECT(32,24), "S2190C4.s2190c4f2");
    test_class_info(&lv, &cd_S2190C4);
    dp->~S2190C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2190C4(Test_S2190C4, "S2190C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2190C4C1Ev();
extern void _ZN7S2190C4D1Ev();
Name_Map name_map_S2190C4[] = {
  NSPAIR(_ZN7S2190C4C1Ev),
  NSPAIR(_ZN7S2190C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2190C4[];
extern void _ZN7S2190C4D1Ev();
extern void _ZN7S2190C4D0Ev();
extern void _ZN7S2190C42v3Ev();
extern void _ZN7S2190C42v4Ev();
extern void _ZN7S2190C42v5Ev();
static  VTBL_ENTRY vtc_S2190C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2190C4[0]),
  (VTBL_ENTRY)&_ZN7S2190C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2190C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2190C4[];
extern  VTBL_ENTRY _ZTV7S2190C4[];
Class_Descriptor cd_S2190C4 = {  "S2190C4", // class name
  0,0,//no base classes
  &(vtc_S2190C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2190C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2190C4),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  S2190C3  : S2190C4 {
  void *s2190c3f0[2];
  virtual  ~S2190C3(); // _ZN7S2190C3D1Ev
  virtual void  v6(); // _ZN7S2190C32v6Ev
  virtual void  v7(); // _ZN7S2190C32v7Ev
  virtual void  v8(); // _ZN7S2190C32v8Ev
  virtual void  v9(); // _ZN7S2190C32v9Ev
  virtual void  v10(); // _ZN7S2190C33v10Ev
  virtual void  v11(); // _ZN7S2190C33v11Ev
  virtual void  v12(); // _ZN7S2190C33v12Ev
  virtual void  v13(); // _ZN7S2190C33v13Ev
  virtual void  v14(); // _ZN7S2190C33v14Ev
  S2190C3(); // tgen
};
//SIG(-1 S2190C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2190C3 ::~S2190C3(){ note_dtor("S2190C3", this);}
void  S2190C3 ::v6(){vfunc_called(this, "_ZN7S2190C32v6Ev");}
void  S2190C3 ::v7(){vfunc_called(this, "_ZN7S2190C32v7Ev");}
void  S2190C3 ::v8(){vfunc_called(this, "_ZN7S2190C32v8Ev");}
void  S2190C3 ::v9(){vfunc_called(this, "_ZN7S2190C32v9Ev");}
void  S2190C3 ::v10(){vfunc_called(this, "_ZN7S2190C33v10Ev");}
void  S2190C3 ::v11(){vfunc_called(this, "_ZN7S2190C33v11Ev");}
void  S2190C3 ::v12(){vfunc_called(this, "_ZN7S2190C33v12Ev");}
void  S2190C3 ::v13(){vfunc_called(this, "_ZN7S2190C33v13Ev");}
void  S2190C3 ::v14(){vfunc_called(this, "_ZN7S2190C33v14Ev");}
S2190C3 ::S2190C3(){ note_ctor("S2190C3", this);} // tgen

static void Test_S2190C3()
{
  extern Class_Descriptor cd_S2190C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2190C3, buf);
    S2190C3 *dp, &lv = *(dp=new (buf) S2190C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2190C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2190C3)");
    check_base_class_offset(lv, (S2190C4*), 0, "S2190C3");
    check_field_offset(lv, s2190c3f0, ABISELECT(40,28), "S2190C3.s2190c3f0");
    test_class_info(&lv, &cd_S2190C3);
    dp->~S2190C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2190C3(Test_S2190C3, "S2190C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2190C3C1Ev();
extern void _ZN7S2190C3D1Ev();
Name_Map name_map_S2190C3[] = {
  NSPAIR(_ZN7S2190C3C1Ev),
  NSPAIR(_ZN7S2190C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2190C4;
extern VTBL_ENTRY _ZTI7S2190C4[];
extern  VTBL_ENTRY _ZTV7S2190C4[];
static Base_Class bases_S2190C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2190C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2190C3[];
extern void _ZN7S2190C3D1Ev();
extern void _ZN7S2190C3D0Ev();
extern void _ZN7S2190C42v3Ev();
extern void _ZN7S2190C42v4Ev();
extern void _ZN7S2190C42v5Ev();
extern void _ZN7S2190C32v6Ev();
extern void _ZN7S2190C32v7Ev();
extern void _ZN7S2190C32v8Ev();
extern void _ZN7S2190C32v9Ev();
extern void _ZN7S2190C33v10Ev();
extern void _ZN7S2190C33v11Ev();
extern void _ZN7S2190C33v12Ev();
extern void _ZN7S2190C33v13Ev();
extern void _ZN7S2190C33v14Ev();
static  VTBL_ENTRY vtc_S2190C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2190C3[0]),
  (VTBL_ENTRY)&_ZN7S2190C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2190C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2190C3[];
extern  VTBL_ENTRY _ZTV7S2190C3[];
Class_Descriptor cd_S2190C3 = {  "S2190C3", // class name
  bases_S2190C3, 1,
  &(vtc_S2190C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2190C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2190C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2190C2  : S2190C3 {
  void *s2190c2f0[4];
  int s2190c2f1;
  virtual  ~S2190C2(); // _ZN7S2190C2D1Ev
  virtual void  v15(); // _ZN7S2190C23v15Ev
  virtual void  v16(); // _ZN7S2190C23v16Ev
  virtual void  v17(); // _ZN7S2190C23v17Ev
  S2190C2(); // tgen
};
//SIG(-1 S2190C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2190C2 ::~S2190C2(){ note_dtor("S2190C2", this);}
void  S2190C2 ::v15(){vfunc_called(this, "_ZN7S2190C23v15Ev");}
void  S2190C2 ::v16(){vfunc_called(this, "_ZN7S2190C23v16Ev");}
void  S2190C2 ::v17(){vfunc_called(this, "_ZN7S2190C23v17Ev");}
S2190C2 ::S2190C2(){ note_ctor("S2190C2", this);} // tgen

static void Test_S2190C2()
{
  extern Class_Descriptor cd_S2190C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2190C2, buf);
    S2190C2 *dp, &lv = *(dp=new (buf) S2190C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2190C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2190C2)");
    check_base_class_offset(lv, (S2190C4*)(S2190C3*), 0, "S2190C2");
    check_base_class_offset(lv, (S2190C3*), 0, "S2190C2");
    check_field_offset(lv, s2190c2f0, ABISELECT(56,36), "S2190C2.s2190c2f0");
    check_field_offset(lv, s2190c2f1, ABISELECT(88,52), "S2190C2.s2190c2f1");
    test_class_info(&lv, &cd_S2190C2);
    dp->~S2190C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2190C2(Test_S2190C2, "S2190C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2190C2C1Ev();
extern void _ZN7S2190C2D1Ev();
Name_Map name_map_S2190C2[] = {
  NSPAIR(_ZN7S2190C2C1Ev),
  NSPAIR(_ZN7S2190C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2190C4;
extern VTBL_ENTRY _ZTI7S2190C4[];
extern  VTBL_ENTRY _ZTV7S2190C4[];
extern Class_Descriptor cd_S2190C3;
extern VTBL_ENTRY _ZTI7S2190C3[];
extern  VTBL_ENTRY _ZTV7S2190C3[];
static Base_Class bases_S2190C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2190C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2190C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2190C2[];
extern void _ZN7S2190C2D1Ev();
extern void _ZN7S2190C2D0Ev();
extern void _ZN7S2190C42v3Ev();
extern void _ZN7S2190C42v4Ev();
extern void _ZN7S2190C42v5Ev();
extern void _ZN7S2190C32v6Ev();
extern void _ZN7S2190C32v7Ev();
extern void _ZN7S2190C32v8Ev();
extern void _ZN7S2190C32v9Ev();
extern void _ZN7S2190C33v10Ev();
extern void _ZN7S2190C33v11Ev();
extern void _ZN7S2190C33v12Ev();
extern void _ZN7S2190C33v13Ev();
extern void _ZN7S2190C33v14Ev();
extern void _ZN7S2190C23v15Ev();
extern void _ZN7S2190C23v16Ev();
extern void _ZN7S2190C23v17Ev();
static  VTBL_ENTRY vtc_S2190C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2190C2[0]),
  (VTBL_ENTRY)&_ZN7S2190C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2190C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2190C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2190C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2190C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2190C2[];
extern  VTBL_ENTRY _ZTV7S2190C2[];
Class_Descriptor cd_S2190C2 = {  "S2190C2", // class name
  bases_S2190C2, 2,
  &(vtc_S2190C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2190C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2190C2),19, //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  S2190C7_nt  {
  long s2190c7f0;
};
//SIG(-1 S2190C7_nt) C1{ Fl}



//skip512 S2190C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2190C1  : S2190C2 {
  void *s2190c1f0[2];
  ::S2190C7_nt s2190c1f1;
  virtual  ~S2190C1(); // _ZN7S2190C1D1Ev
  virtual void  v1(); // _ZN7S2190C12v1Ev
  virtual void  v2(); // _ZN7S2190C12v2Ev
  S2190C1(); // tgen
};
//SIG(1 S2190C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fp[2] FC7{ Fl}}


 S2190C1 ::~S2190C1(){ note_dtor("S2190C1", this);}
void  S2190C1 ::v1(){vfunc_called(this, "_ZN7S2190C12v1Ev");}
void  S2190C1 ::v2(){vfunc_called(this, "_ZN7S2190C12v2Ev");}
S2190C1 ::S2190C1(){ note_ctor("S2190C1", this);} // tgen

static void Test_S2190C1()
{
  extern Class_Descriptor cd_S2190C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S2190C1, buf);
    S2190C1 *dp, &lv = *(dp=new (buf) S2190C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S2190C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2190C1)");
    check_base_class_offset(lv, (S2190C4*)(S2190C3*)(S2190C2*), 0, "S2190C1");
    check_base_class_offset(lv, (S2190C3*)(S2190C2*), 0, "S2190C1");
    check_base_class_offset(lv, (S2190C2*), 0, "S2190C1");
    check_field_offset(lv, s2190c1f0, ABISELECT(96,56), "S2190C1.s2190c1f0");
    check_field_offset(lv, s2190c1f1, ABISELECT(112,64), "S2190C1.s2190c1f1");
    test_class_info(&lv, &cd_S2190C1);
    dp->~S2190C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2190C1(Test_S2190C1, "S2190C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S2190C1C1Ev();
extern void _ZN7S2190C1D1Ev();
Name_Map name_map_S2190C1[] = {
  NSPAIR(_ZN7S2190C1C1Ev),
  NSPAIR(_ZN7S2190C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2190C4;
extern VTBL_ENTRY _ZTI7S2190C4[];
extern  VTBL_ENTRY _ZTV7S2190C4[];
extern Class_Descriptor cd_S2190C3;
extern VTBL_ENTRY _ZTI7S2190C3[];
extern  VTBL_ENTRY _ZTV7S2190C3[];
extern Class_Descriptor cd_S2190C2;
extern VTBL_ENTRY _ZTI7S2190C2[];
extern  VTBL_ENTRY _ZTV7S2190C2[];
static Base_Class bases_S2190C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2190C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2190C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2190C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2190C1[];
extern void _ZN7S2190C1D1Ev();
extern void _ZN7S2190C1D0Ev();
extern void _ZN7S2190C42v3Ev();
extern void _ZN7S2190C42v4Ev();
extern void _ZN7S2190C42v5Ev();
extern void _ZN7S2190C32v6Ev();
extern void _ZN7S2190C32v7Ev();
extern void _ZN7S2190C32v8Ev();
extern void _ZN7S2190C32v9Ev();
extern void _ZN7S2190C33v10Ev();
extern void _ZN7S2190C33v11Ev();
extern void _ZN7S2190C33v12Ev();
extern void _ZN7S2190C33v13Ev();
extern void _ZN7S2190C33v14Ev();
extern void _ZN7S2190C23v15Ev();
extern void _ZN7S2190C23v16Ev();
extern void _ZN7S2190C23v17Ev();
extern void _ZN7S2190C12v1Ev();
extern void _ZN7S2190C12v2Ev();
static  VTBL_ENTRY vtc_S2190C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2190C1[0]),
  (VTBL_ENTRY)&_ZN7S2190C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2190C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2190C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2190C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2190C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2190C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2190C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2190C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2190C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2190C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2190C1[];
extern  VTBL_ENTRY _ZTV7S2190C1[];
Class_Descriptor cd_S2190C1 = {  "S2190C1", // class name
  bases_S2190C1, 3,
  &(vtc_S2190C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S2190C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2190C1),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  S2243C4  {
  ::S16385C7 s2243c4f0;
  int s2243c4f1[2];
  char s2243c4f2;
  virtual  ~S2243C4(); // _ZN7S2243C4D1Ev
  virtual void  v4(); // _ZN7S2243C42v4Ev
  virtual void  v5(); // _ZN7S2243C42v5Ev
  virtual void  v6(); // _ZN7S2243C42v6Ev
  S2243C4(); // tgen
};
//SIG(-1 S2243C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2243C4 ::~S2243C4(){ note_dtor("S2243C4", this);}
void  S2243C4 ::v4(){vfunc_called(this, "_ZN7S2243C42v4Ev");}
void  S2243C4 ::v5(){vfunc_called(this, "_ZN7S2243C42v5Ev");}
void  S2243C4 ::v6(){vfunc_called(this, "_ZN7S2243C42v6Ev");}
S2243C4 ::S2243C4(){ note_ctor("S2243C4", this);} // tgen

static void Test_S2243C4()
{
  extern Class_Descriptor cd_S2243C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2243C4, buf);
    S2243C4 *dp, &lv = *(dp=new (buf) S2243C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2243C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2243C4)");
    check_field_offset(lv, s2243c4f0, ABISELECT(8,4), "S2243C4.s2243c4f0");
    check_field_offset(lv, s2243c4f1, ABISELECT(24,16), "S2243C4.s2243c4f1");
    check_field_offset(lv, s2243c4f2, ABISELECT(32,24), "S2243C4.s2243c4f2");
    test_class_info(&lv, &cd_S2243C4);
    dp->~S2243C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2243C4(Test_S2243C4, "S2243C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2243C4C1Ev();
extern void _ZN7S2243C4D1Ev();
Name_Map name_map_S2243C4[] = {
  NSPAIR(_ZN7S2243C4C1Ev),
  NSPAIR(_ZN7S2243C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2243C4[];
extern void _ZN7S2243C4D1Ev();
extern void _ZN7S2243C4D0Ev();
extern void _ZN7S2243C42v4Ev();
extern void _ZN7S2243C42v5Ev();
extern void _ZN7S2243C42v6Ev();
static  VTBL_ENTRY vtc_S2243C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2243C4[0]),
  (VTBL_ENTRY)&_ZN7S2243C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2243C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2243C4[];
extern  VTBL_ENTRY _ZTV7S2243C4[];
Class_Descriptor cd_S2243C4 = {  "S2243C4", // class name
  0,0,//no base classes
  &(vtc_S2243C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2243C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2243C4),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  S2243C3  : S2243C4 {
  void *s2243c3f0[2];
  virtual  ~S2243C3(); // _ZN7S2243C3D1Ev
  virtual void  v7(); // _ZN7S2243C32v7Ev
  virtual void  v8(); // _ZN7S2243C32v8Ev
  virtual void  v9(); // _ZN7S2243C32v9Ev
  virtual void  v10(); // _ZN7S2243C33v10Ev
  virtual void  v11(); // _ZN7S2243C33v11Ev
  virtual void  v12(); // _ZN7S2243C33v12Ev
  virtual void  v13(); // _ZN7S2243C33v13Ev
  virtual void  v14(); // _ZN7S2243C33v14Ev
  virtual void  v15(); // _ZN7S2243C33v15Ev
  S2243C3(); // tgen
};
//SIG(-1 S2243C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2243C3 ::~S2243C3(){ note_dtor("S2243C3", this);}
void  S2243C3 ::v7(){vfunc_called(this, "_ZN7S2243C32v7Ev");}
void  S2243C3 ::v8(){vfunc_called(this, "_ZN7S2243C32v8Ev");}
void  S2243C3 ::v9(){vfunc_called(this, "_ZN7S2243C32v9Ev");}
void  S2243C3 ::v10(){vfunc_called(this, "_ZN7S2243C33v10Ev");}
void  S2243C3 ::v11(){vfunc_called(this, "_ZN7S2243C33v11Ev");}
void  S2243C3 ::v12(){vfunc_called(this, "_ZN7S2243C33v12Ev");}
void  S2243C3 ::v13(){vfunc_called(this, "_ZN7S2243C33v13Ev");}
void  S2243C3 ::v14(){vfunc_called(this, "_ZN7S2243C33v14Ev");}
void  S2243C3 ::v15(){vfunc_called(this, "_ZN7S2243C33v15Ev");}
S2243C3 ::S2243C3(){ note_ctor("S2243C3", this);} // tgen

static void Test_S2243C3()
{
  extern Class_Descriptor cd_S2243C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2243C3, buf);
    S2243C3 *dp, &lv = *(dp=new (buf) S2243C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2243C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2243C3)");
    check_base_class_offset(lv, (S2243C4*), 0, "S2243C3");
    check_field_offset(lv, s2243c3f0, ABISELECT(40,28), "S2243C3.s2243c3f0");
    test_class_info(&lv, &cd_S2243C3);
    dp->~S2243C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2243C3(Test_S2243C3, "S2243C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2243C3C1Ev();
extern void _ZN7S2243C3D1Ev();
Name_Map name_map_S2243C3[] = {
  NSPAIR(_ZN7S2243C3C1Ev),
  NSPAIR(_ZN7S2243C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2243C4;
extern VTBL_ENTRY _ZTI7S2243C4[];
extern  VTBL_ENTRY _ZTV7S2243C4[];
static Base_Class bases_S2243C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2243C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2243C3[];
extern void _ZN7S2243C3D1Ev();
extern void _ZN7S2243C3D0Ev();
extern void _ZN7S2243C42v4Ev();
extern void _ZN7S2243C42v5Ev();
extern void _ZN7S2243C42v6Ev();
extern void _ZN7S2243C32v7Ev();
extern void _ZN7S2243C32v8Ev();
extern void _ZN7S2243C32v9Ev();
extern void _ZN7S2243C33v10Ev();
extern void _ZN7S2243C33v11Ev();
extern void _ZN7S2243C33v12Ev();
extern void _ZN7S2243C33v13Ev();
extern void _ZN7S2243C33v14Ev();
extern void _ZN7S2243C33v15Ev();
static  VTBL_ENTRY vtc_S2243C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2243C3[0]),
  (VTBL_ENTRY)&_ZN7S2243C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2243C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2243C3[];
extern  VTBL_ENTRY _ZTV7S2243C3[];
Class_Descriptor cd_S2243C3 = {  "S2243C3", // class name
  bases_S2243C3, 1,
  &(vtc_S2243C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2243C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2243C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2243C2  : S2243C3 {
  void *s2243c2f0[4];
  int s2243c2f1;
  virtual  ~S2243C2(); // _ZN7S2243C2D1Ev
  virtual void  v16(); // _ZN7S2243C23v16Ev
  virtual void  v17(); // _ZN7S2243C23v17Ev
  virtual void  v18(); // _ZN7S2243C23v18Ev
  S2243C2(); // tgen
};
//SIG(-1 S2243C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2243C2 ::~S2243C2(){ note_dtor("S2243C2", this);}
void  S2243C2 ::v16(){vfunc_called(this, "_ZN7S2243C23v16Ev");}
void  S2243C2 ::v17(){vfunc_called(this, "_ZN7S2243C23v17Ev");}
void  S2243C2 ::v18(){vfunc_called(this, "_ZN7S2243C23v18Ev");}
S2243C2 ::S2243C2(){ note_ctor("S2243C2", this);} // tgen

static void Test_S2243C2()
{
  extern Class_Descriptor cd_S2243C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2243C2, buf);
    S2243C2 *dp, &lv = *(dp=new (buf) S2243C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2243C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2243C2)");
    check_base_class_offset(lv, (S2243C4*)(S2243C3*), 0, "S2243C2");
    check_base_class_offset(lv, (S2243C3*), 0, "S2243C2");
    check_field_offset(lv, s2243c2f0, ABISELECT(56,36), "S2243C2.s2243c2f0");
    check_field_offset(lv, s2243c2f1, ABISELECT(88,52), "S2243C2.s2243c2f1");
    test_class_info(&lv, &cd_S2243C2);
    dp->~S2243C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2243C2(Test_S2243C2, "S2243C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2243C2C1Ev();
extern void _ZN7S2243C2D1Ev();
Name_Map name_map_S2243C2[] = {
  NSPAIR(_ZN7S2243C2C1Ev),
  NSPAIR(_ZN7S2243C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2243C4;
extern VTBL_ENTRY _ZTI7S2243C4[];
extern  VTBL_ENTRY _ZTV7S2243C4[];
extern Class_Descriptor cd_S2243C3;
extern VTBL_ENTRY _ZTI7S2243C3[];
extern  VTBL_ENTRY _ZTV7S2243C3[];
static Base_Class bases_S2243C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2243C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2243C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2243C2[];
extern void _ZN7S2243C2D1Ev();
extern void _ZN7S2243C2D0Ev();
extern void _ZN7S2243C42v4Ev();
extern void _ZN7S2243C42v5Ev();
extern void _ZN7S2243C42v6Ev();
extern void _ZN7S2243C32v7Ev();
extern void _ZN7S2243C32v8Ev();
extern void _ZN7S2243C32v9Ev();
extern void _ZN7S2243C33v10Ev();
extern void _ZN7S2243C33v11Ev();
extern void _ZN7S2243C33v12Ev();
extern void _ZN7S2243C33v13Ev();
extern void _ZN7S2243C33v14Ev();
extern void _ZN7S2243C33v15Ev();
extern void _ZN7S2243C23v16Ev();
extern void _ZN7S2243C23v17Ev();
extern void _ZN7S2243C23v18Ev();
static  VTBL_ENTRY vtc_S2243C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2243C2[0]),
  (VTBL_ENTRY)&_ZN7S2243C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2243C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2243C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2243C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2243C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S2243C2[];
extern  VTBL_ENTRY _ZTV7S2243C2[];
Class_Descriptor cd_S2243C2 = {  "S2243C2", // class name
  bases_S2243C2, 2,
  &(vtc_S2243C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2243C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2243C2),19, //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  S2243C1  : S2243C2 {
  void *s2243c1f0;
  int s2243c1f1;
  char s2243c1f2;
  virtual  ~S2243C1(); // _ZN7S2243C1D1Ev
  virtual void  v1(); // _ZN7S2243C12v1Ev
  virtual void  v2(); // _ZN7S2243C12v2Ev
  virtual void  v3(); // _ZN7S2243C12v3Ev
  S2243C1(); // tgen
};
//SIG(1 S2243C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 Fp Fi Fc}


 S2243C1 ::~S2243C1(){ note_dtor("S2243C1", this);}
void  S2243C1 ::v1(){vfunc_called(this, "_ZN7S2243C12v1Ev");}
void  S2243C1 ::v2(){vfunc_called(this, "_ZN7S2243C12v2Ev");}
void  S2243C1 ::v3(){vfunc_called(this, "_ZN7S2243C12v3Ev");}
S2243C1 ::S2243C1(){ note_ctor("S2243C1", this);} // tgen

static void Test_S2243C1()
{
  extern Class_Descriptor cd_S2243C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S2243C1, buf);
    S2243C1 *dp, &lv = *(dp=new (buf) S2243C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S2243C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2243C1)");
    check_base_class_offset(lv, (S2243C4*)(S2243C3*)(S2243C2*), 0, "S2243C1");
    check_base_class_offset(lv, (S2243C3*)(S2243C2*), 0, "S2243C1");
    check_base_class_offset(lv, (S2243C2*), 0, "S2243C1");
    check_field_offset(lv, s2243c1f0, ABISELECT(96,56), "S2243C1.s2243c1f0");
    check_field_offset(lv, s2243c1f1, ABISELECT(104,60), "S2243C1.s2243c1f1");
    check_field_offset(lv, s2243c1f2, ABISELECT(108,64), "S2243C1.s2243c1f2");
    test_class_info(&lv, &cd_S2243C1);
    dp->~S2243C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2243C1(Test_S2243C1, "S2243C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S2243C1C1Ev();
extern void _ZN7S2243C1D1Ev();
Name_Map name_map_S2243C1[] = {
  NSPAIR(_ZN7S2243C1C1Ev),
  NSPAIR(_ZN7S2243C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2243C4;
extern VTBL_ENTRY _ZTI7S2243C4[];
extern  VTBL_ENTRY _ZTV7S2243C4[];
extern Class_Descriptor cd_S2243C3;
extern VTBL_ENTRY _ZTI7S2243C3[];
extern  VTBL_ENTRY _ZTV7S2243C3[];
extern Class_Descriptor cd_S2243C2;
extern VTBL_ENTRY _ZTI7S2243C2[];
extern  VTBL_ENTRY _ZTV7S2243C2[];
static Base_Class bases_S2243C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2243C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2243C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2243C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2243C1[];
extern void _ZN7S2243C1D1Ev();
extern void _ZN7S2243C1D0Ev();
extern void _ZN7S2243C42v4Ev();
extern void _ZN7S2243C42v5Ev();
extern void _ZN7S2243C42v6Ev();
extern void _ZN7S2243C32v7Ev();
extern void _ZN7S2243C32v8Ev();
extern void _ZN7S2243C32v9Ev();
extern void _ZN7S2243C33v10Ev();
extern void _ZN7S2243C33v11Ev();
extern void _ZN7S2243C33v12Ev();
extern void _ZN7S2243C33v13Ev();
extern void _ZN7S2243C33v14Ev();
extern void _ZN7S2243C33v15Ev();
extern void _ZN7S2243C23v16Ev();
extern void _ZN7S2243C23v17Ev();
extern void _ZN7S2243C23v18Ev();
extern void _ZN7S2243C12v1Ev();
extern void _ZN7S2243C12v2Ev();
extern void _ZN7S2243C12v3Ev();
static  VTBL_ENTRY vtc_S2243C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2243C1[0]),
  (VTBL_ENTRY)&_ZN7S2243C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2243C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2243C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2243C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2243C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2243C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2243C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2243C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2243C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2243C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2243C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2243C1[];
extern  VTBL_ENTRY _ZTV7S2243C1[];
Class_Descriptor cd_S2243C1 = {  "S2243C1", // class name
  bases_S2243C1, 3,
  &(vtc_S2243C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S2243C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2243C1),22, //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  S2247C4  {
  ::S16385C7 s2247c4f0;
  int s2247c4f1[2];
  char s2247c4f2;
  virtual  ~S2247C4(); // _ZN7S2247C4D1Ev
  virtual void  v4(); // _ZN7S2247C42v4Ev
  virtual void  v5(); // _ZN7S2247C42v5Ev
  virtual void  v6(); // _ZN7S2247C42v6Ev
  S2247C4(); // tgen
};
//SIG(-1 S2247C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2247C4 ::~S2247C4(){ note_dtor("S2247C4", this);}
void  S2247C4 ::v4(){vfunc_called(this, "_ZN7S2247C42v4Ev");}
void  S2247C4 ::v5(){vfunc_called(this, "_ZN7S2247C42v5Ev");}
void  S2247C4 ::v6(){vfunc_called(this, "_ZN7S2247C42v6Ev");}
S2247C4 ::S2247C4(){ note_ctor("S2247C4", this);} // tgen

static void Test_S2247C4()
{
  extern Class_Descriptor cd_S2247C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2247C4, buf);
    S2247C4 *dp, &lv = *(dp=new (buf) S2247C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2247C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2247C4)");
    check_field_offset(lv, s2247c4f0, ABISELECT(8,4), "S2247C4.s2247c4f0");
    check_field_offset(lv, s2247c4f1, ABISELECT(24,16), "S2247C4.s2247c4f1");
    check_field_offset(lv, s2247c4f2, ABISELECT(32,24), "S2247C4.s2247c4f2");
    test_class_info(&lv, &cd_S2247C4);
    dp->~S2247C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2247C4(Test_S2247C4, "S2247C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2247C4C1Ev();
extern void _ZN7S2247C4D1Ev();
Name_Map name_map_S2247C4[] = {
  NSPAIR(_ZN7S2247C4C1Ev),
  NSPAIR(_ZN7S2247C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2247C4[];
extern void _ZN7S2247C4D1Ev();
extern void _ZN7S2247C4D0Ev();
extern void _ZN7S2247C42v4Ev();
extern void _ZN7S2247C42v5Ev();
extern void _ZN7S2247C42v6Ev();
static  VTBL_ENTRY vtc_S2247C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2247C4[0]),
  (VTBL_ENTRY)&_ZN7S2247C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2247C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2247C4[];
extern  VTBL_ENTRY _ZTV7S2247C4[];
Class_Descriptor cd_S2247C4 = {  "S2247C4", // class name
  0,0,//no base classes
  &(vtc_S2247C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2247C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2247C4),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  S2247C3  : S2247C4 {
  void *s2247c3f0[2];
  virtual  ~S2247C3(); // _ZN7S2247C3D1Ev
  virtual void  v7(); // _ZN7S2247C32v7Ev
  virtual void  v8(); // _ZN7S2247C32v8Ev
  virtual void  v9(); // _ZN7S2247C32v9Ev
  virtual void  v10(); // _ZN7S2247C33v10Ev
  virtual void  v11(); // _ZN7S2247C33v11Ev
  virtual void  v12(); // _ZN7S2247C33v12Ev
  virtual void  v13(); // _ZN7S2247C33v13Ev
  virtual void  v14(); // _ZN7S2247C33v14Ev
  virtual void  v15(); // _ZN7S2247C33v15Ev
  S2247C3(); // tgen
};
//SIG(-1 S2247C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2247C3 ::~S2247C3(){ note_dtor("S2247C3", this);}
void  S2247C3 ::v7(){vfunc_called(this, "_ZN7S2247C32v7Ev");}
void  S2247C3 ::v8(){vfunc_called(this, "_ZN7S2247C32v8Ev");}
void  S2247C3 ::v9(){vfunc_called(this, "_ZN7S2247C32v9Ev");}
void  S2247C3 ::v10(){vfunc_called(this, "_ZN7S2247C33v10Ev");}
void  S2247C3 ::v11(){vfunc_called(this, "_ZN7S2247C33v11Ev");}
void  S2247C3 ::v12(){vfunc_called(this, "_ZN7S2247C33v12Ev");}
void  S2247C3 ::v13(){vfunc_called(this, "_ZN7S2247C33v13Ev");}
void  S2247C3 ::v14(){vfunc_called(this, "_ZN7S2247C33v14Ev");}
void  S2247C3 ::v15(){vfunc_called(this, "_ZN7S2247C33v15Ev");}
S2247C3 ::S2247C3(){ note_ctor("S2247C3", this);} // tgen

static void Test_S2247C3()
{
  extern Class_Descriptor cd_S2247C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2247C3, buf);
    S2247C3 *dp, &lv = *(dp=new (buf) S2247C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2247C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2247C3)");
    check_base_class_offset(lv, (S2247C4*), 0, "S2247C3");
    check_field_offset(lv, s2247c3f0, ABISELECT(40,28), "S2247C3.s2247c3f0");
    test_class_info(&lv, &cd_S2247C3);
    dp->~S2247C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2247C3(Test_S2247C3, "S2247C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2247C3C1Ev();
extern void _ZN7S2247C3D1Ev();
Name_Map name_map_S2247C3[] = {
  NSPAIR(_ZN7S2247C3C1Ev),
  NSPAIR(_ZN7S2247C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2247C4;
extern VTBL_ENTRY _ZTI7S2247C4[];
extern  VTBL_ENTRY _ZTV7S2247C4[];
static Base_Class bases_S2247C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2247C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2247C3[];
extern void _ZN7S2247C3D1Ev();
extern void _ZN7S2247C3D0Ev();
extern void _ZN7S2247C42v4Ev();
extern void _ZN7S2247C42v5Ev();
extern void _ZN7S2247C42v6Ev();
extern void _ZN7S2247C32v7Ev();
extern void _ZN7S2247C32v8Ev();
extern void _ZN7S2247C32v9Ev();
extern void _ZN7S2247C33v10Ev();
extern void _ZN7S2247C33v11Ev();
extern void _ZN7S2247C33v12Ev();
extern void _ZN7S2247C33v13Ev();
extern void _ZN7S2247C33v14Ev();
extern void _ZN7S2247C33v15Ev();
static  VTBL_ENTRY vtc_S2247C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2247C3[0]),
  (VTBL_ENTRY)&_ZN7S2247C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2247C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2247C3[];
extern  VTBL_ENTRY _ZTV7S2247C3[];
Class_Descriptor cd_S2247C3 = {  "S2247C3", // class name
  bases_S2247C3, 1,
  &(vtc_S2247C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2247C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2247C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2247C2  : S2247C3 {
  void *s2247c2f0[4];
  int s2247c2f1;
  virtual  ~S2247C2(); // _ZN7S2247C2D1Ev
  virtual void  v16(); // _ZN7S2247C23v16Ev
  virtual void  v17(); // _ZN7S2247C23v17Ev
  virtual void  v18(); // _ZN7S2247C23v18Ev
  S2247C2(); // tgen
};
//SIG(-1 S2247C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2247C2 ::~S2247C2(){ note_dtor("S2247C2", this);}
void  S2247C2 ::v16(){vfunc_called(this, "_ZN7S2247C23v16Ev");}
void  S2247C2 ::v17(){vfunc_called(this, "_ZN7S2247C23v17Ev");}
void  S2247C2 ::v18(){vfunc_called(this, "_ZN7S2247C23v18Ev");}
S2247C2 ::S2247C2(){ note_ctor("S2247C2", this);} // tgen

static void Test_S2247C2()
{
  extern Class_Descriptor cd_S2247C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2247C2, buf);
    S2247C2 *dp, &lv = *(dp=new (buf) S2247C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2247C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2247C2)");
    check_base_class_offset(lv, (S2247C4*)(S2247C3*), 0, "S2247C2");
    check_base_class_offset(lv, (S2247C3*), 0, "S2247C2");
    check_field_offset(lv, s2247c2f0, ABISELECT(56,36), "S2247C2.s2247c2f0");
    check_field_offset(lv, s2247c2f1, ABISELECT(88,52), "S2247C2.s2247c2f1");
    test_class_info(&lv, &cd_S2247C2);
    dp->~S2247C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2247C2(Test_S2247C2, "S2247C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2247C2C1Ev();
extern void _ZN7S2247C2D1Ev();
Name_Map name_map_S2247C2[] = {
  NSPAIR(_ZN7S2247C2C1Ev),
  NSPAIR(_ZN7S2247C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2247C4;
extern VTBL_ENTRY _ZTI7S2247C4[];
extern  VTBL_ENTRY _ZTV7S2247C4[];
extern Class_Descriptor cd_S2247C3;
extern VTBL_ENTRY _ZTI7S2247C3[];
extern  VTBL_ENTRY _ZTV7S2247C3[];
static Base_Class bases_S2247C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2247C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2247C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2247C2[];
extern void _ZN7S2247C2D1Ev();
extern void _ZN7S2247C2D0Ev();
extern void _ZN7S2247C42v4Ev();
extern void _ZN7S2247C42v5Ev();
extern void _ZN7S2247C42v6Ev();
extern void _ZN7S2247C32v7Ev();
extern void _ZN7S2247C32v8Ev();
extern void _ZN7S2247C32v9Ev();
extern void _ZN7S2247C33v10Ev();
extern void _ZN7S2247C33v11Ev();
extern void _ZN7S2247C33v12Ev();
extern void _ZN7S2247C33v13Ev();
extern void _ZN7S2247C33v14Ev();
extern void _ZN7S2247C33v15Ev();
extern void _ZN7S2247C23v16Ev();
extern void _ZN7S2247C23v17Ev();
extern void _ZN7S2247C23v18Ev();
static  VTBL_ENTRY vtc_S2247C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2247C2[0]),
  (VTBL_ENTRY)&_ZN7S2247C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2247C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2247C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2247C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2247C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S2247C2[];
extern  VTBL_ENTRY _ZTV7S2247C2[];
Class_Descriptor cd_S2247C2 = {  "S2247C2", // class name
  bases_S2247C2, 2,
  &(vtc_S2247C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2247C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2247C2),19, //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  S2247C1  : S2247C2 {
  void *s2247c1f0[3];
  virtual  ~S2247C1(); // _ZN7S2247C1D1Ev
  virtual void  v1(); // _ZN7S2247C12v1Ev
  virtual void  v2(); // _ZN7S2247C12v2Ev
  virtual void  v3(); // _ZN7S2247C12v3Ev
  S2247C1(); // tgen
};
//SIG(1 S2247C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 Fp[3]}


 S2247C1 ::~S2247C1(){ note_dtor("S2247C1", this);}
void  S2247C1 ::v1(){vfunc_called(this, "_ZN7S2247C12v1Ev");}
void  S2247C1 ::v2(){vfunc_called(this, "_ZN7S2247C12v2Ev");}
void  S2247C1 ::v3(){vfunc_called(this, "_ZN7S2247C12v3Ev");}
S2247C1 ::S2247C1(){ note_ctor("S2247C1", this);} // tgen

static void Test_S2247C1()
{
  extern Class_Descriptor cd_S2247C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S2247C1, buf);
    S2247C1 *dp, &lv = *(dp=new (buf) S2247C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S2247C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2247C1)");
    check_base_class_offset(lv, (S2247C4*)(S2247C3*)(S2247C2*), 0, "S2247C1");
    check_base_class_offset(lv, (S2247C3*)(S2247C2*), 0, "S2247C1");
    check_base_class_offset(lv, (S2247C2*), 0, "S2247C1");
    check_field_offset(lv, s2247c1f0, ABISELECT(96,56), "S2247C1.s2247c1f0");
    test_class_info(&lv, &cd_S2247C1);
    dp->~S2247C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2247C1(Test_S2247C1, "S2247C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S2247C1C1Ev();
extern void _ZN7S2247C1D1Ev();
Name_Map name_map_S2247C1[] = {
  NSPAIR(_ZN7S2247C1C1Ev),
  NSPAIR(_ZN7S2247C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2247C4;
extern VTBL_ENTRY _ZTI7S2247C4[];
extern  VTBL_ENTRY _ZTV7S2247C4[];
extern Class_Descriptor cd_S2247C3;
extern VTBL_ENTRY _ZTI7S2247C3[];
extern  VTBL_ENTRY _ZTV7S2247C3[];
extern Class_Descriptor cd_S2247C2;
extern VTBL_ENTRY _ZTI7S2247C2[];
extern  VTBL_ENTRY _ZTV7S2247C2[];
static Base_Class bases_S2247C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2247C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2247C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2247C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2247C1[];
extern void _ZN7S2247C1D1Ev();
extern void _ZN7S2247C1D0Ev();
extern void _ZN7S2247C42v4Ev();
extern void _ZN7S2247C42v5Ev();
extern void _ZN7S2247C42v6Ev();
extern void _ZN7S2247C32v7Ev();
extern void _ZN7S2247C32v8Ev();
extern void _ZN7S2247C32v9Ev();
extern void _ZN7S2247C33v10Ev();
extern void _ZN7S2247C33v11Ev();
extern void _ZN7S2247C33v12Ev();
extern void _ZN7S2247C33v13Ev();
extern void _ZN7S2247C33v14Ev();
extern void _ZN7S2247C33v15Ev();
extern void _ZN7S2247C23v16Ev();
extern void _ZN7S2247C23v17Ev();
extern void _ZN7S2247C23v18Ev();
extern void _ZN7S2247C12v1Ev();
extern void _ZN7S2247C12v2Ev();
extern void _ZN7S2247C12v3Ev();
static  VTBL_ENTRY vtc_S2247C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2247C1[0]),
  (VTBL_ENTRY)&_ZN7S2247C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2247C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2247C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2247C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2247C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2247C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2247C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2247C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2247C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2247C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2247C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2247C1[];
extern  VTBL_ENTRY _ZTV7S2247C1[];
Class_Descriptor cd_S2247C1 = {  "S2247C1", // class name
  bases_S2247C1, 3,
  &(vtc_S2247C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S2247C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2247C1),22, //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  S2245C4  {
  ::S16385C7 s2245c4f0;
  int s2245c4f1[2];
  char s2245c4f2;
  virtual  ~S2245C4(); // _ZN7S2245C4D1Ev
  virtual void  v4(); // _ZN7S2245C42v4Ev
  virtual void  v5(); // _ZN7S2245C42v5Ev
  virtual void  v6(); // _ZN7S2245C42v6Ev
  S2245C4(); // tgen
};
//SIG(-1 S2245C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2245C4 ::~S2245C4(){ note_dtor("S2245C4", this);}
void  S2245C4 ::v4(){vfunc_called(this, "_ZN7S2245C42v4Ev");}
void  S2245C4 ::v5(){vfunc_called(this, "_ZN7S2245C42v5Ev");}
void  S2245C4 ::v6(){vfunc_called(this, "_ZN7S2245C42v6Ev");}
S2245C4 ::S2245C4(){ note_ctor("S2245C4", this);} // tgen

static void Test_S2245C4()
{
  extern Class_Descriptor cd_S2245C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2245C4, buf);
    S2245C4 *dp, &lv = *(dp=new (buf) S2245C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2245C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2245C4)");
    check_field_offset(lv, s2245c4f0, ABISELECT(8,4), "S2245C4.s2245c4f0");
    check_field_offset(lv, s2245c4f1, ABISELECT(24,16), "S2245C4.s2245c4f1");
    check_field_offset(lv, s2245c4f2, ABISELECT(32,24), "S2245C4.s2245c4f2");
    test_class_info(&lv, &cd_S2245C4);
    dp->~S2245C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2245C4(Test_S2245C4, "S2245C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2245C4C1Ev();
extern void _ZN7S2245C4D1Ev();
Name_Map name_map_S2245C4[] = {
  NSPAIR(_ZN7S2245C4C1Ev),
  NSPAIR(_ZN7S2245C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2245C4[];
extern void _ZN7S2245C4D1Ev();
extern void _ZN7S2245C4D0Ev();
extern void _ZN7S2245C42v4Ev();
extern void _ZN7S2245C42v5Ev();
extern void _ZN7S2245C42v6Ev();
static  VTBL_ENTRY vtc_S2245C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2245C4[0]),
  (VTBL_ENTRY)&_ZN7S2245C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2245C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2245C4[];
extern  VTBL_ENTRY _ZTV7S2245C4[];
Class_Descriptor cd_S2245C4 = {  "S2245C4", // class name
  0,0,//no base classes
  &(vtc_S2245C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2245C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2245C4),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  S2245C3  : S2245C4 {
  void *s2245c3f0[2];
  virtual  ~S2245C3(); // _ZN7S2245C3D1Ev
  virtual void  v7(); // _ZN7S2245C32v7Ev
  virtual void  v8(); // _ZN7S2245C32v8Ev
  virtual void  v9(); // _ZN7S2245C32v9Ev
  virtual void  v10(); // _ZN7S2245C33v10Ev
  virtual void  v11(); // _ZN7S2245C33v11Ev
  virtual void  v12(); // _ZN7S2245C33v12Ev
  virtual void  v13(); // _ZN7S2245C33v13Ev
  virtual void  v14(); // _ZN7S2245C33v14Ev
  virtual void  v15(); // _ZN7S2245C33v15Ev
  S2245C3(); // tgen
};
//SIG(-1 S2245C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2245C3 ::~S2245C3(){ note_dtor("S2245C3", this);}
void  S2245C3 ::v7(){vfunc_called(this, "_ZN7S2245C32v7Ev");}
void  S2245C3 ::v8(){vfunc_called(this, "_ZN7S2245C32v8Ev");}
void  S2245C3 ::v9(){vfunc_called(this, "_ZN7S2245C32v9Ev");}
void  S2245C3 ::v10(){vfunc_called(this, "_ZN7S2245C33v10Ev");}
void  S2245C3 ::v11(){vfunc_called(this, "_ZN7S2245C33v11Ev");}
void  S2245C3 ::v12(){vfunc_called(this, "_ZN7S2245C33v12Ev");}
void  S2245C3 ::v13(){vfunc_called(this, "_ZN7S2245C33v13Ev");}
void  S2245C3 ::v14(){vfunc_called(this, "_ZN7S2245C33v14Ev");}
void  S2245C3 ::v15(){vfunc_called(this, "_ZN7S2245C33v15Ev");}
S2245C3 ::S2245C3(){ note_ctor("S2245C3", this);} // tgen

static void Test_S2245C3()
{
  extern Class_Descriptor cd_S2245C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2245C3, buf);
    S2245C3 *dp, &lv = *(dp=new (buf) S2245C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2245C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2245C3)");
    check_base_class_offset(lv, (S2245C4*), 0, "S2245C3");
    check_field_offset(lv, s2245c3f0, ABISELECT(40,28), "S2245C3.s2245c3f0");
    test_class_info(&lv, &cd_S2245C3);
    dp->~S2245C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2245C3(Test_S2245C3, "S2245C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2245C3C1Ev();
extern void _ZN7S2245C3D1Ev();
Name_Map name_map_S2245C3[] = {
  NSPAIR(_ZN7S2245C3C1Ev),
  NSPAIR(_ZN7S2245C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2245C4;
extern VTBL_ENTRY _ZTI7S2245C4[];
extern  VTBL_ENTRY _ZTV7S2245C4[];
static Base_Class bases_S2245C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2245C3[];
extern void _ZN7S2245C3D1Ev();
extern void _ZN7S2245C3D0Ev();
extern void _ZN7S2245C42v4Ev();
extern void _ZN7S2245C42v5Ev();
extern void _ZN7S2245C42v6Ev();
extern void _ZN7S2245C32v7Ev();
extern void _ZN7S2245C32v8Ev();
extern void _ZN7S2245C32v9Ev();
extern void _ZN7S2245C33v10Ev();
extern void _ZN7S2245C33v11Ev();
extern void _ZN7S2245C33v12Ev();
extern void _ZN7S2245C33v13Ev();
extern void _ZN7S2245C33v14Ev();
extern void _ZN7S2245C33v15Ev();
static  VTBL_ENTRY vtc_S2245C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2245C3[0]),
  (VTBL_ENTRY)&_ZN7S2245C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2245C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S2245C3[];
extern  VTBL_ENTRY _ZTV7S2245C3[];
Class_Descriptor cd_S2245C3 = {  "S2245C3", // class name
  bases_S2245C3, 1,
  &(vtc_S2245C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2245C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2245C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2245C2  : S2245C3 {
  void *s2245c2f0[4];
  int s2245c2f1;
  virtual  ~S2245C2(); // _ZN7S2245C2D1Ev
  virtual void  v16(); // _ZN7S2245C23v16Ev
  virtual void  v17(); // _ZN7S2245C23v17Ev
  virtual void  v18(); // _ZN7S2245C23v18Ev
  S2245C2(); // tgen
};
//SIG(-1 S2245C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2245C2 ::~S2245C2(){ note_dtor("S2245C2", this);}
void  S2245C2 ::v16(){vfunc_called(this, "_ZN7S2245C23v16Ev");}
void  S2245C2 ::v17(){vfunc_called(this, "_ZN7S2245C23v17Ev");}
void  S2245C2 ::v18(){vfunc_called(this, "_ZN7S2245C23v18Ev");}
S2245C2 ::S2245C2(){ note_ctor("S2245C2", this);} // tgen

static void Test_S2245C2()
{
  extern Class_Descriptor cd_S2245C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2245C2, buf);
    S2245C2 *dp, &lv = *(dp=new (buf) S2245C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2245C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2245C2)");
    check_base_class_offset(lv, (S2245C4*)(S2245C3*), 0, "S2245C2");
    check_base_class_offset(lv, (S2245C3*), 0, "S2245C2");
    check_field_offset(lv, s2245c2f0, ABISELECT(56,36), "S2245C2.s2245c2f0");
    check_field_offset(lv, s2245c2f1, ABISELECT(88,52), "S2245C2.s2245c2f1");
    test_class_info(&lv, &cd_S2245C2);
    dp->~S2245C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2245C2(Test_S2245C2, "S2245C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2245C2C1Ev();
extern void _ZN7S2245C2D1Ev();
Name_Map name_map_S2245C2[] = {
  NSPAIR(_ZN7S2245C2C1Ev),
  NSPAIR(_ZN7S2245C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2245C4;
extern VTBL_ENTRY _ZTI7S2245C4[];
extern  VTBL_ENTRY _ZTV7S2245C4[];
extern Class_Descriptor cd_S2245C3;
extern VTBL_ENTRY _ZTI7S2245C3[];
extern  VTBL_ENTRY _ZTV7S2245C3[];
static Base_Class bases_S2245C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2245C2[];
extern void _ZN7S2245C2D1Ev();
extern void _ZN7S2245C2D0Ev();
extern void _ZN7S2245C42v4Ev();
extern void _ZN7S2245C42v5Ev();
extern void _ZN7S2245C42v6Ev();
extern void _ZN7S2245C32v7Ev();
extern void _ZN7S2245C32v8Ev();
extern void _ZN7S2245C32v9Ev();
extern void _ZN7S2245C33v10Ev();
extern void _ZN7S2245C33v11Ev();
extern void _ZN7S2245C33v12Ev();
extern void _ZN7S2245C33v13Ev();
extern void _ZN7S2245C33v14Ev();
extern void _ZN7S2245C33v15Ev();
extern void _ZN7S2245C23v16Ev();
extern void _ZN7S2245C23v17Ev();
extern void _ZN7S2245C23v18Ev();
static  VTBL_ENTRY vtc_S2245C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2245C2[0]),
  (VTBL_ENTRY)&_ZN7S2245C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2245C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2245C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2245C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2245C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S2245C2[];
extern  VTBL_ENTRY _ZTV7S2245C2[];
Class_Descriptor cd_S2245C2 = {  "S2245C2", // class name
  bases_S2245C2, 2,
  &(vtc_S2245C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2245C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2245C2),19, //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  S2245C1  : S2245C2 {
  void *s2245c1f0[2];
  virtual  ~S2245C1(); // _ZN7S2245C1D1Ev
  virtual void  v1(); // _ZN7S2245C12v1Ev
  virtual void  v2(); // _ZN7S2245C12v2Ev
  virtual void  v3(); // _ZN7S2245C12v3Ev
  S2245C1(); // tgen
};
//SIG(1 S2245C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 Fp[4] Fi} vd v1 v2 v3 Fp[2]}


 S2245C1 ::~S2245C1(){ note_dtor("S2245C1", this);}
void  S2245C1 ::v1(){vfunc_called(this, "_ZN7S2245C12v1Ev");}
void  S2245C1 ::v2(){vfunc_called(this, "_ZN7S2245C12v2Ev");}
void  S2245C1 ::v3(){vfunc_called(this, "_ZN7S2245C12v3Ev");}
S2245C1 ::S2245C1(){ note_ctor("S2245C1", this);} // tgen

static void Test_S2245C1()
{
  extern Class_Descriptor cd_S2245C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S2245C1, buf);
    S2245C1 *dp, &lv = *(dp=new (buf) S2245C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S2245C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2245C1)");
    check_base_class_offset(lv, (S2245C4*)(S2245C3*)(S2245C2*), 0, "S2245C1");
    check_base_class_offset(lv, (S2245C3*)(S2245C2*), 0, "S2245C1");
    check_base_class_offset(lv, (S2245C2*), 0, "S2245C1");
    check_field_offset(lv, s2245c1f0, ABISELECT(96,56), "S2245C1.s2245c1f0");
    test_class_info(&lv, &cd_S2245C1);
    dp->~S2245C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2245C1(Test_S2245C1, "S2245C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S2245C1C1Ev();
extern void _ZN7S2245C1D1Ev();
Name_Map name_map_S2245C1[] = {
  NSPAIR(_ZN7S2245C1C1Ev),
  NSPAIR(_ZN7S2245C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2245C4;
extern VTBL_ENTRY _ZTI7S2245C4[];
extern  VTBL_ENTRY _ZTV7S2245C4[];
extern Class_Descriptor cd_S2245C3;
extern VTBL_ENTRY _ZTI7S2245C3[];
extern  VTBL_ENTRY _ZTV7S2245C3[];
extern Class_Descriptor cd_S2245C2;
extern VTBL_ENTRY _ZTI7S2245C2[];
extern  VTBL_ENTRY _ZTV7S2245C2[];
static Base_Class bases_S2245C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2245C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2245C1[];
extern void _ZN7S2245C1D1Ev();
extern void _ZN7S2245C1D0Ev();
extern void _ZN7S2245C42v4Ev();
extern void _ZN7S2245C42v5Ev();
extern void _ZN7S2245C42v6Ev();
extern void _ZN7S2245C32v7Ev();
extern void _ZN7S2245C32v8Ev();
extern void _ZN7S2245C32v9Ev();
extern void _ZN7S2245C33v10Ev();
extern void _ZN7S2245C33v11Ev();
extern void _ZN7S2245C33v12Ev();
extern void _ZN7S2245C33v13Ev();
extern void _ZN7S2245C33v14Ev();
extern void _ZN7S2245C33v15Ev();
extern void _ZN7S2245C23v16Ev();
extern void _ZN7S2245C23v17Ev();
extern void _ZN7S2245C23v18Ev();
extern void _ZN7S2245C12v1Ev();
extern void _ZN7S2245C12v2Ev();
extern void _ZN7S2245C12v3Ev();
static  VTBL_ENTRY vtc_S2245C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2245C1[0]),
  (VTBL_ENTRY)&_ZN7S2245C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2245C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2245C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2245C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2245C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2245C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2245C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2245C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2245C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2245C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2245C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2245C1[];
extern  VTBL_ENTRY _ZTV7S2245C1[];
Class_Descriptor cd_S2245C1 = {  "S2245C1", // class name
  bases_S2245C1, 3,
  &(vtc_S2245C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S2245C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2245C1),22, //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  S2187C4  {
  ::S16385C7 s2187c4f0;
  int s2187c4f1[2];
  char s2187c4f2;
  virtual  ~S2187C4(); // _ZN7S2187C4D1Ev
  virtual void  v3(); // _ZN7S2187C42v3Ev
  virtual void  v4(); // _ZN7S2187C42v4Ev
  virtual void  v5(); // _ZN7S2187C42v5Ev
  S2187C4(); // tgen
};
//SIG(-1 S2187C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2187C4 ::~S2187C4(){ note_dtor("S2187C4", this);}
void  S2187C4 ::v3(){vfunc_called(this, "_ZN7S2187C42v3Ev");}
void  S2187C4 ::v4(){vfunc_called(this, "_ZN7S2187C42v4Ev");}
void  S2187C4 ::v5(){vfunc_called(this, "_ZN7S2187C42v5Ev");}
S2187C4 ::S2187C4(){ note_ctor("S2187C4", this);} // tgen

static void Test_S2187C4()
{
  extern Class_Descriptor cd_S2187C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2187C4, buf);
    S2187C4 *dp, &lv = *(dp=new (buf) S2187C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2187C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2187C4)");
    check_field_offset(lv, s2187c4f0, ABISELECT(8,4), "S2187C4.s2187c4f0");
    check_field_offset(lv, s2187c4f1, ABISELECT(24,16), "S2187C4.s2187c4f1");
    check_field_offset(lv, s2187c4f2, ABISELECT(32,24), "S2187C4.s2187c4f2");
    test_class_info(&lv, &cd_S2187C4);
    dp->~S2187C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2187C4(Test_S2187C4, "S2187C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2187C4C1Ev();
extern void _ZN7S2187C4D1Ev();
Name_Map name_map_S2187C4[] = {
  NSPAIR(_ZN7S2187C4C1Ev),
  NSPAIR(_ZN7S2187C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2187C4[];
extern void _ZN7S2187C4D1Ev();
extern void _ZN7S2187C4D0Ev();
extern void _ZN7S2187C42v3Ev();
extern void _ZN7S2187C42v4Ev();
extern void _ZN7S2187C42v5Ev();
static  VTBL_ENTRY vtc_S2187C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2187C4[0]),
  (VTBL_ENTRY)&_ZN7S2187C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2187C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2187C4[];
extern  VTBL_ENTRY _ZTV7S2187C4[];
Class_Descriptor cd_S2187C4 = {  "S2187C4", // class name
  0,0,//no base classes
  &(vtc_S2187C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2187C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2187C4),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  S2187C3  : S2187C4 {
  void *s2187c3f0[2];
  virtual  ~S2187C3(); // _ZN7S2187C3D1Ev
  virtual void  v6(); // _ZN7S2187C32v6Ev
  virtual void  v7(); // _ZN7S2187C32v7Ev
  virtual void  v8(); // _ZN7S2187C32v8Ev
  virtual void  v9(); // _ZN7S2187C32v9Ev
  virtual void  v10(); // _ZN7S2187C33v10Ev
  virtual void  v11(); // _ZN7S2187C33v11Ev
  virtual void  v12(); // _ZN7S2187C33v12Ev
  virtual void  v13(); // _ZN7S2187C33v13Ev
  virtual void  v14(); // _ZN7S2187C33v14Ev
  S2187C3(); // tgen
};
//SIG(-1 S2187C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2187C3 ::~S2187C3(){ note_dtor("S2187C3", this);}
void  S2187C3 ::v6(){vfunc_called(this, "_ZN7S2187C32v6Ev");}
void  S2187C3 ::v7(){vfunc_called(this, "_ZN7S2187C32v7Ev");}
void  S2187C3 ::v8(){vfunc_called(this, "_ZN7S2187C32v8Ev");}
void  S2187C3 ::v9(){vfunc_called(this, "_ZN7S2187C32v9Ev");}
void  S2187C3 ::v10(){vfunc_called(this, "_ZN7S2187C33v10Ev");}
void  S2187C3 ::v11(){vfunc_called(this, "_ZN7S2187C33v11Ev");}
void  S2187C3 ::v12(){vfunc_called(this, "_ZN7S2187C33v12Ev");}
void  S2187C3 ::v13(){vfunc_called(this, "_ZN7S2187C33v13Ev");}
void  S2187C3 ::v14(){vfunc_called(this, "_ZN7S2187C33v14Ev");}
S2187C3 ::S2187C3(){ note_ctor("S2187C3", this);} // tgen

static void Test_S2187C3()
{
  extern Class_Descriptor cd_S2187C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2187C3, buf);
    S2187C3 *dp, &lv = *(dp=new (buf) S2187C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2187C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2187C3)");
    check_base_class_offset(lv, (S2187C4*), 0, "S2187C3");
    check_field_offset(lv, s2187c3f0, ABISELECT(40,28), "S2187C3.s2187c3f0");
    test_class_info(&lv, &cd_S2187C3);
    dp->~S2187C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2187C3(Test_S2187C3, "S2187C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2187C3C1Ev();
extern void _ZN7S2187C3D1Ev();
Name_Map name_map_S2187C3[] = {
  NSPAIR(_ZN7S2187C3C1Ev),
  NSPAIR(_ZN7S2187C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2187C4;
extern VTBL_ENTRY _ZTI7S2187C4[];
extern  VTBL_ENTRY _ZTV7S2187C4[];
static Base_Class bases_S2187C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2187C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2187C3[];
extern void _ZN7S2187C3D1Ev();
extern void _ZN7S2187C3D0Ev();
extern void _ZN7S2187C42v3Ev();
extern void _ZN7S2187C42v4Ev();
extern void _ZN7S2187C42v5Ev();
extern void _ZN7S2187C32v6Ev();
extern void _ZN7S2187C32v7Ev();
extern void _ZN7S2187C32v8Ev();
extern void _ZN7S2187C32v9Ev();
extern void _ZN7S2187C33v10Ev();
extern void _ZN7S2187C33v11Ev();
extern void _ZN7S2187C33v12Ev();
extern void _ZN7S2187C33v13Ev();
extern void _ZN7S2187C33v14Ev();
static  VTBL_ENTRY vtc_S2187C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2187C3[0]),
  (VTBL_ENTRY)&_ZN7S2187C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2187C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2187C3[];
extern  VTBL_ENTRY _ZTV7S2187C3[];
Class_Descriptor cd_S2187C3 = {  "S2187C3", // class name
  bases_S2187C3, 1,
  &(vtc_S2187C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2187C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2187C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2187C2  : S2187C3 {
  void *s2187c2f0[4];
  int s2187c2f1;
  virtual  ~S2187C2(); // _ZN7S2187C2D1Ev
  virtual void  v15(); // _ZN7S2187C23v15Ev
  virtual void  v16(); // _ZN7S2187C23v16Ev
  virtual void  v17(); // _ZN7S2187C23v17Ev
  S2187C2(); // tgen
};
//SIG(-1 S2187C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2187C2 ::~S2187C2(){ note_dtor("S2187C2", this);}
void  S2187C2 ::v15(){vfunc_called(this, "_ZN7S2187C23v15Ev");}
void  S2187C2 ::v16(){vfunc_called(this, "_ZN7S2187C23v16Ev");}
void  S2187C2 ::v17(){vfunc_called(this, "_ZN7S2187C23v17Ev");}
S2187C2 ::S2187C2(){ note_ctor("S2187C2", this);} // tgen

static void Test_S2187C2()
{
  extern Class_Descriptor cd_S2187C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2187C2, buf);
    S2187C2 *dp, &lv = *(dp=new (buf) S2187C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2187C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2187C2)");
    check_base_class_offset(lv, (S2187C4*)(S2187C3*), 0, "S2187C2");
    check_base_class_offset(lv, (S2187C3*), 0, "S2187C2");
    check_field_offset(lv, s2187c2f0, ABISELECT(56,36), "S2187C2.s2187c2f0");
    check_field_offset(lv, s2187c2f1, ABISELECT(88,52), "S2187C2.s2187c2f1");
    test_class_info(&lv, &cd_S2187C2);
    dp->~S2187C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2187C2(Test_S2187C2, "S2187C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2187C2C1Ev();
extern void _ZN7S2187C2D1Ev();
Name_Map name_map_S2187C2[] = {
  NSPAIR(_ZN7S2187C2C1Ev),
  NSPAIR(_ZN7S2187C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2187C4;
extern VTBL_ENTRY _ZTI7S2187C4[];
extern  VTBL_ENTRY _ZTV7S2187C4[];
extern Class_Descriptor cd_S2187C3;
extern VTBL_ENTRY _ZTI7S2187C3[];
extern  VTBL_ENTRY _ZTV7S2187C3[];
static Base_Class bases_S2187C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2187C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2187C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2187C2[];
extern void _ZN7S2187C2D1Ev();
extern void _ZN7S2187C2D0Ev();
extern void _ZN7S2187C42v3Ev();
extern void _ZN7S2187C42v4Ev();
extern void _ZN7S2187C42v5Ev();
extern void _ZN7S2187C32v6Ev();
extern void _ZN7S2187C32v7Ev();
extern void _ZN7S2187C32v8Ev();
extern void _ZN7S2187C32v9Ev();
extern void _ZN7S2187C33v10Ev();
extern void _ZN7S2187C33v11Ev();
extern void _ZN7S2187C33v12Ev();
extern void _ZN7S2187C33v13Ev();
extern void _ZN7S2187C33v14Ev();
extern void _ZN7S2187C23v15Ev();
extern void _ZN7S2187C23v16Ev();
extern void _ZN7S2187C23v17Ev();
static  VTBL_ENTRY vtc_S2187C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2187C2[0]),
  (VTBL_ENTRY)&_ZN7S2187C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2187C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2187C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2187C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2187C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2187C2[];
extern  VTBL_ENTRY _ZTV7S2187C2[];
Class_Descriptor cd_S2187C2 = {  "S2187C2", // class name
  bases_S2187C2, 2,
  &(vtc_S2187C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2187C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2187C2),19, //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  S2187C1  : S2187C2 {
  ::S16385C7 s2187c1f0;
  void *s2187c1f1;
  virtual  ~S2187C1(); // _ZN7S2187C1D1Ev
  virtual void  v1(); // _ZN7S2187C12v1Ev
  virtual void  v2(); // _ZN7S2187C12v2Ev
  S2187C1(); // tgen
};
//SIG(1 S2187C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 FC5 Fp}


 S2187C1 ::~S2187C1(){ note_dtor("S2187C1", this);}
void  S2187C1 ::v1(){vfunc_called(this, "_ZN7S2187C12v1Ev");}
void  S2187C1 ::v2(){vfunc_called(this, "_ZN7S2187C12v2Ev");}
S2187C1 ::S2187C1(){ note_ctor("S2187C1", this);} // tgen

static void Test_S2187C1()
{
  extern Class_Descriptor cd_S2187C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S2187C1, buf);
    S2187C1 *dp, &lv = *(dp=new (buf) S2187C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S2187C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2187C1)");
    check_base_class_offset(lv, (S2187C4*)(S2187C3*)(S2187C2*), 0, "S2187C1");
    check_base_class_offset(lv, (S2187C3*)(S2187C2*), 0, "S2187C1");
    check_base_class_offset(lv, (S2187C2*), 0, "S2187C1");
    check_field_offset(lv, s2187c1f0, ABISELECT(96,56), "S2187C1.s2187c1f0");
    check_field_offset(lv, s2187c1f1, ABISELECT(112,68), "S2187C1.s2187c1f1");
    test_class_info(&lv, &cd_S2187C1);
    dp->~S2187C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2187C1(Test_S2187C1, "S2187C1", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN7S2187C1C1Ev();
extern void _ZN7S2187C1D1Ev();
Name_Map name_map_S2187C1[] = {
  NSPAIR(_ZN7S2187C1C1Ev),
  NSPAIR(_ZN7S2187C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2187C4;
extern VTBL_ENTRY _ZTI7S2187C4[];
extern  VTBL_ENTRY _ZTV7S2187C4[];
extern Class_Descriptor cd_S2187C3;
extern VTBL_ENTRY _ZTI7S2187C3[];
extern  VTBL_ENTRY _ZTV7S2187C3[];
extern Class_Descriptor cd_S2187C2;
extern VTBL_ENTRY _ZTI7S2187C2[];
extern  VTBL_ENTRY _ZTV7S2187C2[];
static Base_Class bases_S2187C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2187C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2187C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2187C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2187C1[];
extern void _ZN7S2187C1D1Ev();
extern void _ZN7S2187C1D0Ev();
extern void _ZN7S2187C42v3Ev();
extern void _ZN7S2187C42v4Ev();
extern void _ZN7S2187C42v5Ev();
extern void _ZN7S2187C32v6Ev();
extern void _ZN7S2187C32v7Ev();
extern void _ZN7S2187C32v8Ev();
extern void _ZN7S2187C32v9Ev();
extern void _ZN7S2187C33v10Ev();
extern void _ZN7S2187C33v11Ev();
extern void _ZN7S2187C33v12Ev();
extern void _ZN7S2187C33v13Ev();
extern void _ZN7S2187C33v14Ev();
extern void _ZN7S2187C23v15Ev();
extern void _ZN7S2187C23v16Ev();
extern void _ZN7S2187C23v17Ev();
extern void _ZN7S2187C12v1Ev();
extern void _ZN7S2187C12v2Ev();
static  VTBL_ENTRY vtc_S2187C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2187C1[0]),
  (VTBL_ENTRY)&_ZN7S2187C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2187C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2187C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2187C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2187C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2187C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2187C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2187C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2187C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2187C1[];
extern  VTBL_ENTRY _ZTV7S2187C1[];
Class_Descriptor cd_S2187C1 = {  "S2187C1", // class name
  bases_S2187C1, 3,
  &(vtc_S2187C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI7S2187C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2187C1),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  S2192C4  {
  ::S16385C7 s2192c4f0;
  int s2192c4f1[2];
  char s2192c4f2;
  virtual  ~S2192C4(); // _ZN7S2192C4D1Ev
  virtual void  v3(); // _ZN7S2192C42v3Ev
  virtual void  v4(); // _ZN7S2192C42v4Ev
  virtual void  v5(); // _ZN7S2192C42v5Ev
  S2192C4(); // tgen
};
//SIG(-1 S2192C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2192C4 ::~S2192C4(){ note_dtor("S2192C4", this);}
void  S2192C4 ::v3(){vfunc_called(this, "_ZN7S2192C42v3Ev");}
void  S2192C4 ::v4(){vfunc_called(this, "_ZN7S2192C42v4Ev");}
void  S2192C4 ::v5(){vfunc_called(this, "_ZN7S2192C42v5Ev");}
S2192C4 ::S2192C4(){ note_ctor("S2192C4", this);} // tgen

static void Test_S2192C4()
{
  extern Class_Descriptor cd_S2192C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2192C4, buf);
    S2192C4 *dp, &lv = *(dp=new (buf) S2192C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2192C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2192C4)");
    check_field_offset(lv, s2192c4f0, ABISELECT(8,4), "S2192C4.s2192c4f0");
    check_field_offset(lv, s2192c4f1, ABISELECT(24,16), "S2192C4.s2192c4f1");
    check_field_offset(lv, s2192c4f2, ABISELECT(32,24), "S2192C4.s2192c4f2");
    test_class_info(&lv, &cd_S2192C4);
    dp->~S2192C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2192C4(Test_S2192C4, "S2192C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2192C4C1Ev();
extern void _ZN7S2192C4D1Ev();
Name_Map name_map_S2192C4[] = {
  NSPAIR(_ZN7S2192C4C1Ev),
  NSPAIR(_ZN7S2192C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2192C4[];
extern void _ZN7S2192C4D1Ev();
extern void _ZN7S2192C4D0Ev();
extern void _ZN7S2192C42v3Ev();
extern void _ZN7S2192C42v4Ev();
extern void _ZN7S2192C42v5Ev();
static  VTBL_ENTRY vtc_S2192C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2192C4[0]),
  (VTBL_ENTRY)&_ZN7S2192C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2192C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2192C4[];
extern  VTBL_ENTRY _ZTV7S2192C4[];
Class_Descriptor cd_S2192C4 = {  "S2192C4", // class name
  0,0,//no base classes
  &(vtc_S2192C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2192C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2192C4),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  S2192C3  : S2192C4 {
  void *s2192c3f0[2];
  virtual  ~S2192C3(); // _ZN7S2192C3D1Ev
  virtual void  v6(); // _ZN7S2192C32v6Ev
  virtual void  v7(); // _ZN7S2192C32v7Ev
  virtual void  v8(); // _ZN7S2192C32v8Ev
  virtual void  v9(); // _ZN7S2192C32v9Ev
  virtual void  v10(); // _ZN7S2192C33v10Ev
  virtual void  v11(); // _ZN7S2192C33v11Ev
  virtual void  v12(); // _ZN7S2192C33v12Ev
  virtual void  v13(); // _ZN7S2192C33v13Ev
  virtual void  v14(); // _ZN7S2192C33v14Ev
  S2192C3(); // tgen
};
//SIG(-1 S2192C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2192C3 ::~S2192C3(){ note_dtor("S2192C3", this);}
void  S2192C3 ::v6(){vfunc_called(this, "_ZN7S2192C32v6Ev");}
void  S2192C3 ::v7(){vfunc_called(this, "_ZN7S2192C32v7Ev");}
void  S2192C3 ::v8(){vfunc_called(this, "_ZN7S2192C32v8Ev");}
void  S2192C3 ::v9(){vfunc_called(this, "_ZN7S2192C32v9Ev");}
void  S2192C3 ::v10(){vfunc_called(this, "_ZN7S2192C33v10Ev");}
void  S2192C3 ::v11(){vfunc_called(this, "_ZN7S2192C33v11Ev");}
void  S2192C3 ::v12(){vfunc_called(this, "_ZN7S2192C33v12Ev");}
void  S2192C3 ::v13(){vfunc_called(this, "_ZN7S2192C33v13Ev");}
void  S2192C3 ::v14(){vfunc_called(this, "_ZN7S2192C33v14Ev");}
S2192C3 ::S2192C3(){ note_ctor("S2192C3", this);} // tgen

static void Test_S2192C3()
{
  extern Class_Descriptor cd_S2192C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2192C3, buf);
    S2192C3 *dp, &lv = *(dp=new (buf) S2192C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2192C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2192C3)");
    check_base_class_offset(lv, (S2192C4*), 0, "S2192C3");
    check_field_offset(lv, s2192c3f0, ABISELECT(40,28), "S2192C3.s2192c3f0");
    test_class_info(&lv, &cd_S2192C3);
    dp->~S2192C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2192C3(Test_S2192C3, "S2192C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2192C3C1Ev();
extern void _ZN7S2192C3D1Ev();
Name_Map name_map_S2192C3[] = {
  NSPAIR(_ZN7S2192C3C1Ev),
  NSPAIR(_ZN7S2192C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2192C4;
extern VTBL_ENTRY _ZTI7S2192C4[];
extern  VTBL_ENTRY _ZTV7S2192C4[];
static Base_Class bases_S2192C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2192C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2192C3[];
extern void _ZN7S2192C3D1Ev();
extern void _ZN7S2192C3D0Ev();
extern void _ZN7S2192C42v3Ev();
extern void _ZN7S2192C42v4Ev();
extern void _ZN7S2192C42v5Ev();
extern void _ZN7S2192C32v6Ev();
extern void _ZN7S2192C32v7Ev();
extern void _ZN7S2192C32v8Ev();
extern void _ZN7S2192C32v9Ev();
extern void _ZN7S2192C33v10Ev();
extern void _ZN7S2192C33v11Ev();
extern void _ZN7S2192C33v12Ev();
extern void _ZN7S2192C33v13Ev();
extern void _ZN7S2192C33v14Ev();
static  VTBL_ENTRY vtc_S2192C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2192C3[0]),
  (VTBL_ENTRY)&_ZN7S2192C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2192C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2192C3[];
extern  VTBL_ENTRY _ZTV7S2192C3[];
Class_Descriptor cd_S2192C3 = {  "S2192C3", // class name
  bases_S2192C3, 1,
  &(vtc_S2192C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2192C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2192C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2192C2  : S2192C3 {
  void *s2192c2f0[4];
  int s2192c2f1;
  virtual  ~S2192C2(); // _ZN7S2192C2D1Ev
  virtual void  v15(); // _ZN7S2192C23v15Ev
  virtual void  v16(); // _ZN7S2192C23v16Ev
  virtual void  v17(); // _ZN7S2192C23v17Ev
  S2192C2(); // tgen
};
//SIG(-1 S2192C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2192C2 ::~S2192C2(){ note_dtor("S2192C2", this);}
void  S2192C2 ::v15(){vfunc_called(this, "_ZN7S2192C23v15Ev");}
void  S2192C2 ::v16(){vfunc_called(this, "_ZN7S2192C23v16Ev");}
void  S2192C2 ::v17(){vfunc_called(this, "_ZN7S2192C23v17Ev");}
S2192C2 ::S2192C2(){ note_ctor("S2192C2", this);} // tgen

static void Test_S2192C2()
{
  extern Class_Descriptor cd_S2192C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2192C2, buf);
    S2192C2 *dp, &lv = *(dp=new (buf) S2192C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2192C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2192C2)");
    check_base_class_offset(lv, (S2192C4*)(S2192C3*), 0, "S2192C2");
    check_base_class_offset(lv, (S2192C3*), 0, "S2192C2");
    check_field_offset(lv, s2192c2f0, ABISELECT(56,36), "S2192C2.s2192c2f0");
    check_field_offset(lv, s2192c2f1, ABISELECT(88,52), "S2192C2.s2192c2f1");
    test_class_info(&lv, &cd_S2192C2);
    dp->~S2192C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2192C2(Test_S2192C2, "S2192C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2192C2C1Ev();
extern void _ZN7S2192C2D1Ev();
Name_Map name_map_S2192C2[] = {
  NSPAIR(_ZN7S2192C2C1Ev),
  NSPAIR(_ZN7S2192C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2192C4;
extern VTBL_ENTRY _ZTI7S2192C4[];
extern  VTBL_ENTRY _ZTV7S2192C4[];
extern Class_Descriptor cd_S2192C3;
extern VTBL_ENTRY _ZTI7S2192C3[];
extern  VTBL_ENTRY _ZTV7S2192C3[];
static Base_Class bases_S2192C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2192C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2192C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2192C2[];
extern void _ZN7S2192C2D1Ev();
extern void _ZN7S2192C2D0Ev();
extern void _ZN7S2192C42v3Ev();
extern void _ZN7S2192C42v4Ev();
extern void _ZN7S2192C42v5Ev();
extern void _ZN7S2192C32v6Ev();
extern void _ZN7S2192C32v7Ev();
extern void _ZN7S2192C32v8Ev();
extern void _ZN7S2192C32v9Ev();
extern void _ZN7S2192C33v10Ev();
extern void _ZN7S2192C33v11Ev();
extern void _ZN7S2192C33v12Ev();
extern void _ZN7S2192C33v13Ev();
extern void _ZN7S2192C33v14Ev();
extern void _ZN7S2192C23v15Ev();
extern void _ZN7S2192C23v16Ev();
extern void _ZN7S2192C23v17Ev();
static  VTBL_ENTRY vtc_S2192C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2192C2[0]),
  (VTBL_ENTRY)&_ZN7S2192C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2192C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2192C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2192C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2192C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2192C2[];
extern  VTBL_ENTRY _ZTV7S2192C2[];
Class_Descriptor cd_S2192C2 = {  "S2192C2", // class name
  bases_S2192C2, 2,
  &(vtc_S2192C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2192C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2192C2),19, //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  S2192C1  : S2192C2 {
  void *s2192c1f0[2];
  virtual  ~S2192C1(); // _ZN7S2192C1D1Ev
  virtual void  v1(); // _ZN7S2192C12v1Ev
  virtual void  v2(); // _ZN7S2192C12v2Ev
  S2192C1(); // tgen
};
//SIG(1 S2192C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fp[2]}


 S2192C1 ::~S2192C1(){ note_dtor("S2192C1", this);}
void  S2192C1 ::v1(){vfunc_called(this, "_ZN7S2192C12v1Ev");}
void  S2192C1 ::v2(){vfunc_called(this, "_ZN7S2192C12v2Ev");}
S2192C1 ::S2192C1(){ note_ctor("S2192C1", this);} // tgen

static void Test_S2192C1()
{
  extern Class_Descriptor cd_S2192C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S2192C1, buf);
    S2192C1 *dp, &lv = *(dp=new (buf) S2192C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S2192C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2192C1)");
    check_base_class_offset(lv, (S2192C4*)(S2192C3*)(S2192C2*), 0, "S2192C1");
    check_base_class_offset(lv, (S2192C3*)(S2192C2*), 0, "S2192C1");
    check_base_class_offset(lv, (S2192C2*), 0, "S2192C1");
    check_field_offset(lv, s2192c1f0, ABISELECT(96,56), "S2192C1.s2192c1f0");
    test_class_info(&lv, &cd_S2192C1);
    dp->~S2192C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2192C1(Test_S2192C1, "S2192C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S2192C1C1Ev();
extern void _ZN7S2192C1D1Ev();
Name_Map name_map_S2192C1[] = {
  NSPAIR(_ZN7S2192C1C1Ev),
  NSPAIR(_ZN7S2192C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2192C4;
extern VTBL_ENTRY _ZTI7S2192C4[];
extern  VTBL_ENTRY _ZTV7S2192C4[];
extern Class_Descriptor cd_S2192C3;
extern VTBL_ENTRY _ZTI7S2192C3[];
extern  VTBL_ENTRY _ZTV7S2192C3[];
extern Class_Descriptor cd_S2192C2;
extern VTBL_ENTRY _ZTI7S2192C2[];
extern  VTBL_ENTRY _ZTV7S2192C2[];
static Base_Class bases_S2192C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2192C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2192C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2192C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2192C1[];
extern void _ZN7S2192C1D1Ev();
extern void _ZN7S2192C1D0Ev();
extern void _ZN7S2192C42v3Ev();
extern void _ZN7S2192C42v4Ev();
extern void _ZN7S2192C42v5Ev();
extern void _ZN7S2192C32v6Ev();
extern void _ZN7S2192C32v7Ev();
extern void _ZN7S2192C32v8Ev();
extern void _ZN7S2192C32v9Ev();
extern void _ZN7S2192C33v10Ev();
extern void _ZN7S2192C33v11Ev();
extern void _ZN7S2192C33v12Ev();
extern void _ZN7S2192C33v13Ev();
extern void _ZN7S2192C33v14Ev();
extern void _ZN7S2192C23v15Ev();
extern void _ZN7S2192C23v16Ev();
extern void _ZN7S2192C23v17Ev();
extern void _ZN7S2192C12v1Ev();
extern void _ZN7S2192C12v2Ev();
static  VTBL_ENTRY vtc_S2192C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2192C1[0]),
  (VTBL_ENTRY)&_ZN7S2192C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2192C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2192C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2192C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2192C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2192C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2192C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2192C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2192C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2192C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2192C1[];
extern  VTBL_ENTRY _ZTV7S2192C1[];
Class_Descriptor cd_S2192C1 = {  "S2192C1", // class name
  bases_S2192C1, 3,
  &(vtc_S2192C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S2192C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2192C1),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  S2188C4  {
  ::S16385C7 s2188c4f0;
  int s2188c4f1[2];
  char s2188c4f2;
  virtual  ~S2188C4(); // _ZN7S2188C4D1Ev
  virtual void  v3(); // _ZN7S2188C42v3Ev
  virtual void  v4(); // _ZN7S2188C42v4Ev
  virtual void  v5(); // _ZN7S2188C42v5Ev
  S2188C4(); // tgen
};
//SIG(-1 S2188C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2188C4 ::~S2188C4(){ note_dtor("S2188C4", this);}
void  S2188C4 ::v3(){vfunc_called(this, "_ZN7S2188C42v3Ev");}
void  S2188C4 ::v4(){vfunc_called(this, "_ZN7S2188C42v4Ev");}
void  S2188C4 ::v5(){vfunc_called(this, "_ZN7S2188C42v5Ev");}
S2188C4 ::S2188C4(){ note_ctor("S2188C4", this);} // tgen

static void Test_S2188C4()
{
  extern Class_Descriptor cd_S2188C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2188C4, buf);
    S2188C4 *dp, &lv = *(dp=new (buf) S2188C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2188C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2188C4)");
    check_field_offset(lv, s2188c4f0, ABISELECT(8,4), "S2188C4.s2188c4f0");
    check_field_offset(lv, s2188c4f1, ABISELECT(24,16), "S2188C4.s2188c4f1");
    check_field_offset(lv, s2188c4f2, ABISELECT(32,24), "S2188C4.s2188c4f2");
    test_class_info(&lv, &cd_S2188C4);
    dp->~S2188C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2188C4(Test_S2188C4, "S2188C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2188C4C1Ev();
extern void _ZN7S2188C4D1Ev();
Name_Map name_map_S2188C4[] = {
  NSPAIR(_ZN7S2188C4C1Ev),
  NSPAIR(_ZN7S2188C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2188C4[];
extern void _ZN7S2188C4D1Ev();
extern void _ZN7S2188C4D0Ev();
extern void _ZN7S2188C42v3Ev();
extern void _ZN7S2188C42v4Ev();
extern void _ZN7S2188C42v5Ev();
static  VTBL_ENTRY vtc_S2188C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2188C4[0]),
  (VTBL_ENTRY)&_ZN7S2188C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2188C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2188C4[];
extern  VTBL_ENTRY _ZTV7S2188C4[];
Class_Descriptor cd_S2188C4 = {  "S2188C4", // class name
  0,0,//no base classes
  &(vtc_S2188C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2188C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2188C4),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  S2188C3  : S2188C4 {
  void *s2188c3f0[2];
  virtual  ~S2188C3(); // _ZN7S2188C3D1Ev
  virtual void  v6(); // _ZN7S2188C32v6Ev
  virtual void  v7(); // _ZN7S2188C32v7Ev
  virtual void  v8(); // _ZN7S2188C32v8Ev
  virtual void  v9(); // _ZN7S2188C32v9Ev
  virtual void  v10(); // _ZN7S2188C33v10Ev
  virtual void  v11(); // _ZN7S2188C33v11Ev
  virtual void  v12(); // _ZN7S2188C33v12Ev
  virtual void  v13(); // _ZN7S2188C33v13Ev
  virtual void  v14(); // _ZN7S2188C33v14Ev
  S2188C3(); // tgen
};
//SIG(-1 S2188C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2188C3 ::~S2188C3(){ note_dtor("S2188C3", this);}
void  S2188C3 ::v6(){vfunc_called(this, "_ZN7S2188C32v6Ev");}
void  S2188C3 ::v7(){vfunc_called(this, "_ZN7S2188C32v7Ev");}
void  S2188C3 ::v8(){vfunc_called(this, "_ZN7S2188C32v8Ev");}
void  S2188C3 ::v9(){vfunc_called(this, "_ZN7S2188C32v9Ev");}
void  S2188C3 ::v10(){vfunc_called(this, "_ZN7S2188C33v10Ev");}
void  S2188C3 ::v11(){vfunc_called(this, "_ZN7S2188C33v11Ev");}
void  S2188C3 ::v12(){vfunc_called(this, "_ZN7S2188C33v12Ev");}
void  S2188C3 ::v13(){vfunc_called(this, "_ZN7S2188C33v13Ev");}
void  S2188C3 ::v14(){vfunc_called(this, "_ZN7S2188C33v14Ev");}
S2188C3 ::S2188C3(){ note_ctor("S2188C3", this);} // tgen

static void Test_S2188C3()
{
  extern Class_Descriptor cd_S2188C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2188C3, buf);
    S2188C3 *dp, &lv = *(dp=new (buf) S2188C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2188C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2188C3)");
    check_base_class_offset(lv, (S2188C4*), 0, "S2188C3");
    check_field_offset(lv, s2188c3f0, ABISELECT(40,28), "S2188C3.s2188c3f0");
    test_class_info(&lv, &cd_S2188C3);
    dp->~S2188C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2188C3(Test_S2188C3, "S2188C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2188C3C1Ev();
extern void _ZN7S2188C3D1Ev();
Name_Map name_map_S2188C3[] = {
  NSPAIR(_ZN7S2188C3C1Ev),
  NSPAIR(_ZN7S2188C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2188C4;
extern VTBL_ENTRY _ZTI7S2188C4[];
extern  VTBL_ENTRY _ZTV7S2188C4[];
static Base_Class bases_S2188C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2188C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2188C3[];
extern void _ZN7S2188C3D1Ev();
extern void _ZN7S2188C3D0Ev();
extern void _ZN7S2188C42v3Ev();
extern void _ZN7S2188C42v4Ev();
extern void _ZN7S2188C42v5Ev();
extern void _ZN7S2188C32v6Ev();
extern void _ZN7S2188C32v7Ev();
extern void _ZN7S2188C32v8Ev();
extern void _ZN7S2188C32v9Ev();
extern void _ZN7S2188C33v10Ev();
extern void _ZN7S2188C33v11Ev();
extern void _ZN7S2188C33v12Ev();
extern void _ZN7S2188C33v13Ev();
extern void _ZN7S2188C33v14Ev();
static  VTBL_ENTRY vtc_S2188C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2188C3[0]),
  (VTBL_ENTRY)&_ZN7S2188C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2188C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2188C3[];
extern  VTBL_ENTRY _ZTV7S2188C3[];
Class_Descriptor cd_S2188C3 = {  "S2188C3", // class name
  bases_S2188C3, 1,
  &(vtc_S2188C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2188C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2188C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2188C2  : S2188C3 {
  void *s2188c2f0[4];
  int s2188c2f1;
  virtual  ~S2188C2(); // _ZN7S2188C2D1Ev
  virtual void  v15(); // _ZN7S2188C23v15Ev
  virtual void  v16(); // _ZN7S2188C23v16Ev
  virtual void  v17(); // _ZN7S2188C23v17Ev
  S2188C2(); // tgen
};
//SIG(-1 S2188C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2188C2 ::~S2188C2(){ note_dtor("S2188C2", this);}
void  S2188C2 ::v15(){vfunc_called(this, "_ZN7S2188C23v15Ev");}
void  S2188C2 ::v16(){vfunc_called(this, "_ZN7S2188C23v16Ev");}
void  S2188C2 ::v17(){vfunc_called(this, "_ZN7S2188C23v17Ev");}
S2188C2 ::S2188C2(){ note_ctor("S2188C2", this);} // tgen

static void Test_S2188C2()
{
  extern Class_Descriptor cd_S2188C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2188C2, buf);
    S2188C2 *dp, &lv = *(dp=new (buf) S2188C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2188C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2188C2)");
    check_base_class_offset(lv, (S2188C4*)(S2188C3*), 0, "S2188C2");
    check_base_class_offset(lv, (S2188C3*), 0, "S2188C2");
    check_field_offset(lv, s2188c2f0, ABISELECT(56,36), "S2188C2.s2188c2f0");
    check_field_offset(lv, s2188c2f1, ABISELECT(88,52), "S2188C2.s2188c2f1");
    test_class_info(&lv, &cd_S2188C2);
    dp->~S2188C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2188C2(Test_S2188C2, "S2188C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2188C2C1Ev();
extern void _ZN7S2188C2D1Ev();
Name_Map name_map_S2188C2[] = {
  NSPAIR(_ZN7S2188C2C1Ev),
  NSPAIR(_ZN7S2188C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2188C4;
extern VTBL_ENTRY _ZTI7S2188C4[];
extern  VTBL_ENTRY _ZTV7S2188C4[];
extern Class_Descriptor cd_S2188C3;
extern VTBL_ENTRY _ZTI7S2188C3[];
extern  VTBL_ENTRY _ZTV7S2188C3[];
static Base_Class bases_S2188C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2188C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2188C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2188C2[];
extern void _ZN7S2188C2D1Ev();
extern void _ZN7S2188C2D0Ev();
extern void _ZN7S2188C42v3Ev();
extern void _ZN7S2188C42v4Ev();
extern void _ZN7S2188C42v5Ev();
extern void _ZN7S2188C32v6Ev();
extern void _ZN7S2188C32v7Ev();
extern void _ZN7S2188C32v8Ev();
extern void _ZN7S2188C32v9Ev();
extern void _ZN7S2188C33v10Ev();
extern void _ZN7S2188C33v11Ev();
extern void _ZN7S2188C33v12Ev();
extern void _ZN7S2188C33v13Ev();
extern void _ZN7S2188C33v14Ev();
extern void _ZN7S2188C23v15Ev();
extern void _ZN7S2188C23v16Ev();
extern void _ZN7S2188C23v17Ev();
static  VTBL_ENTRY vtc_S2188C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2188C2[0]),
  (VTBL_ENTRY)&_ZN7S2188C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2188C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2188C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2188C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2188C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2188C2[];
extern  VTBL_ENTRY _ZTV7S2188C2[];
Class_Descriptor cd_S2188C2 = {  "S2188C2", // class name
  bases_S2188C2, 2,
  &(vtc_S2188C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2188C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2188C2),19, //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  S2188C1  : S2188C2 {
  int s2188c1f0;
  void *s2188c1f1;
  virtual  ~S2188C1(); // _ZN7S2188C1D1Ev
  virtual void  v1(); // _ZN7S2188C12v1Ev
  virtual void  v2(); // _ZN7S2188C12v2Ev
  S2188C1(); // tgen
};
//SIG(1 S2188C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fi Fp}


 S2188C1 ::~S2188C1(){ note_dtor("S2188C1", this);}
void  S2188C1 ::v1(){vfunc_called(this, "_ZN7S2188C12v1Ev");}
void  S2188C1 ::v2(){vfunc_called(this, "_ZN7S2188C12v2Ev");}
S2188C1 ::S2188C1(){ note_ctor("S2188C1", this);} // tgen

static void Test_S2188C1()
{
  extern Class_Descriptor cd_S2188C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S2188C1, buf);
    S2188C1 *dp, &lv = *(dp=new (buf) S2188C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S2188C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2188C1)");
    check_base_class_offset(lv, (S2188C4*)(S2188C3*)(S2188C2*), 0, "S2188C1");
    check_base_class_offset(lv, (S2188C3*)(S2188C2*), 0, "S2188C1");
    check_base_class_offset(lv, (S2188C2*), 0, "S2188C1");
    check_field_offset(lv, s2188c1f0, ABISELECT(92,56), "S2188C1.s2188c1f0");
    check_field_offset(lv, s2188c1f1, ABISELECT(96,60), "S2188C1.s2188c1f1");
    test_class_info(&lv, &cd_S2188C1);
    dp->~S2188C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2188C1(Test_S2188C1, "S2188C1", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S2188C1C1Ev();
extern void _ZN7S2188C1D1Ev();
Name_Map name_map_S2188C1[] = {
  NSPAIR(_ZN7S2188C1C1Ev),
  NSPAIR(_ZN7S2188C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2188C4;
extern VTBL_ENTRY _ZTI7S2188C4[];
extern  VTBL_ENTRY _ZTV7S2188C4[];
extern Class_Descriptor cd_S2188C3;
extern VTBL_ENTRY _ZTI7S2188C3[];
extern  VTBL_ENTRY _ZTV7S2188C3[];
extern Class_Descriptor cd_S2188C2;
extern VTBL_ENTRY _ZTI7S2188C2[];
extern  VTBL_ENTRY _ZTV7S2188C2[];
static Base_Class bases_S2188C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2188C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2188C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2188C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2188C1[];
extern void _ZN7S2188C1D1Ev();
extern void _ZN7S2188C1D0Ev();
extern void _ZN7S2188C42v3Ev();
extern void _ZN7S2188C42v4Ev();
extern void _ZN7S2188C42v5Ev();
extern void _ZN7S2188C32v6Ev();
extern void _ZN7S2188C32v7Ev();
extern void _ZN7S2188C32v8Ev();
extern void _ZN7S2188C32v9Ev();
extern void _ZN7S2188C33v10Ev();
extern void _ZN7S2188C33v11Ev();
extern void _ZN7S2188C33v12Ev();
extern void _ZN7S2188C33v13Ev();
extern void _ZN7S2188C33v14Ev();
extern void _ZN7S2188C23v15Ev();
extern void _ZN7S2188C23v16Ev();
extern void _ZN7S2188C23v17Ev();
extern void _ZN7S2188C12v1Ev();
extern void _ZN7S2188C12v2Ev();
static  VTBL_ENTRY vtc_S2188C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2188C1[0]),
  (VTBL_ENTRY)&_ZN7S2188C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2188C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2188C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2188C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2188C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2188C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2188C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2188C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2188C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2188C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2188C1[];
extern  VTBL_ENTRY _ZTV7S2188C1[];
Class_Descriptor cd_S2188C1 = {  "S2188C1", // class name
  bases_S2188C1, 3,
  &(vtc_S2188C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S2188C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2188C1),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  S2189C4  {
  ::S16385C7 s2189c4f0;
  int s2189c4f1[2];
  char s2189c4f2;
  virtual  ~S2189C4(); // _ZN7S2189C4D1Ev
  virtual void  v3(); // _ZN7S2189C42v3Ev
  virtual void  v4(); // _ZN7S2189C42v4Ev
  virtual void  v5(); // _ZN7S2189C42v5Ev
  S2189C4(); // tgen
};
//SIG(-1 S2189C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2189C4 ::~S2189C4(){ note_dtor("S2189C4", this);}
void  S2189C4 ::v3(){vfunc_called(this, "_ZN7S2189C42v3Ev");}
void  S2189C4 ::v4(){vfunc_called(this, "_ZN7S2189C42v4Ev");}
void  S2189C4 ::v5(){vfunc_called(this, "_ZN7S2189C42v5Ev");}
S2189C4 ::S2189C4(){ note_ctor("S2189C4", this);} // tgen

static void Test_S2189C4()
{
  extern Class_Descriptor cd_S2189C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2189C4, buf);
    S2189C4 *dp, &lv = *(dp=new (buf) S2189C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2189C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2189C4)");
    check_field_offset(lv, s2189c4f0, ABISELECT(8,4), "S2189C4.s2189c4f0");
    check_field_offset(lv, s2189c4f1, ABISELECT(24,16), "S2189C4.s2189c4f1");
    check_field_offset(lv, s2189c4f2, ABISELECT(32,24), "S2189C4.s2189c4f2");
    test_class_info(&lv, &cd_S2189C4);
    dp->~S2189C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2189C4(Test_S2189C4, "S2189C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2189C4C1Ev();
extern void _ZN7S2189C4D1Ev();
Name_Map name_map_S2189C4[] = {
  NSPAIR(_ZN7S2189C4C1Ev),
  NSPAIR(_ZN7S2189C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2189C4[];
extern void _ZN7S2189C4D1Ev();
extern void _ZN7S2189C4D0Ev();
extern void _ZN7S2189C42v3Ev();
extern void _ZN7S2189C42v4Ev();
extern void _ZN7S2189C42v5Ev();
static  VTBL_ENTRY vtc_S2189C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2189C4[0]),
  (VTBL_ENTRY)&_ZN7S2189C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2189C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2189C4[];
extern  VTBL_ENTRY _ZTV7S2189C4[];
Class_Descriptor cd_S2189C4 = {  "S2189C4", // class name
  0,0,//no base classes
  &(vtc_S2189C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2189C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2189C4),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  S2189C3  : S2189C4 {
  void *s2189c3f0[2];
  virtual  ~S2189C3(); // _ZN7S2189C3D1Ev
  virtual void  v6(); // _ZN7S2189C32v6Ev
  virtual void  v7(); // _ZN7S2189C32v7Ev
  virtual void  v8(); // _ZN7S2189C32v8Ev
  virtual void  v9(); // _ZN7S2189C32v9Ev
  virtual void  v10(); // _ZN7S2189C33v10Ev
  virtual void  v11(); // _ZN7S2189C33v11Ev
  virtual void  v12(); // _ZN7S2189C33v12Ev
  virtual void  v13(); // _ZN7S2189C33v13Ev
  virtual void  v14(); // _ZN7S2189C33v14Ev
  S2189C3(); // tgen
};
//SIG(-1 S2189C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2189C3 ::~S2189C3(){ note_dtor("S2189C3", this);}
void  S2189C3 ::v6(){vfunc_called(this, "_ZN7S2189C32v6Ev");}
void  S2189C3 ::v7(){vfunc_called(this, "_ZN7S2189C32v7Ev");}
void  S2189C3 ::v8(){vfunc_called(this, "_ZN7S2189C32v8Ev");}
void  S2189C3 ::v9(){vfunc_called(this, "_ZN7S2189C32v9Ev");}
void  S2189C3 ::v10(){vfunc_called(this, "_ZN7S2189C33v10Ev");}
void  S2189C3 ::v11(){vfunc_called(this, "_ZN7S2189C33v11Ev");}
void  S2189C3 ::v12(){vfunc_called(this, "_ZN7S2189C33v12Ev");}
void  S2189C3 ::v13(){vfunc_called(this, "_ZN7S2189C33v13Ev");}
void  S2189C3 ::v14(){vfunc_called(this, "_ZN7S2189C33v14Ev");}
S2189C3 ::S2189C3(){ note_ctor("S2189C3", this);} // tgen

static void Test_S2189C3()
{
  extern Class_Descriptor cd_S2189C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2189C3, buf);
    S2189C3 *dp, &lv = *(dp=new (buf) S2189C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2189C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2189C3)");
    check_base_class_offset(lv, (S2189C4*), 0, "S2189C3");
    check_field_offset(lv, s2189c3f0, ABISELECT(40,28), "S2189C3.s2189c3f0");
    test_class_info(&lv, &cd_S2189C3);
    dp->~S2189C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2189C3(Test_S2189C3, "S2189C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2189C3C1Ev();
extern void _ZN7S2189C3D1Ev();
Name_Map name_map_S2189C3[] = {
  NSPAIR(_ZN7S2189C3C1Ev),
  NSPAIR(_ZN7S2189C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2189C4;
extern VTBL_ENTRY _ZTI7S2189C4[];
extern  VTBL_ENTRY _ZTV7S2189C4[];
static Base_Class bases_S2189C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2189C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2189C3[];
extern void _ZN7S2189C3D1Ev();
extern void _ZN7S2189C3D0Ev();
extern void _ZN7S2189C42v3Ev();
extern void _ZN7S2189C42v4Ev();
extern void _ZN7S2189C42v5Ev();
extern void _ZN7S2189C32v6Ev();
extern void _ZN7S2189C32v7Ev();
extern void _ZN7S2189C32v8Ev();
extern void _ZN7S2189C32v9Ev();
extern void _ZN7S2189C33v10Ev();
extern void _ZN7S2189C33v11Ev();
extern void _ZN7S2189C33v12Ev();
extern void _ZN7S2189C33v13Ev();
extern void _ZN7S2189C33v14Ev();
static  VTBL_ENTRY vtc_S2189C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2189C3[0]),
  (VTBL_ENTRY)&_ZN7S2189C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2189C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2189C3[];
extern  VTBL_ENTRY _ZTV7S2189C3[];
Class_Descriptor cd_S2189C3 = {  "S2189C3", // class name
  bases_S2189C3, 1,
  &(vtc_S2189C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2189C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2189C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2189C2  : S2189C3 {
  void *s2189c2f0[4];
  int s2189c2f1;
  virtual  ~S2189C2(); // _ZN7S2189C2D1Ev
  virtual void  v15(); // _ZN7S2189C23v15Ev
  virtual void  v16(); // _ZN7S2189C23v16Ev
  virtual void  v17(); // _ZN7S2189C23v17Ev
  S2189C2(); // tgen
};
//SIG(-1 S2189C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2189C2 ::~S2189C2(){ note_dtor("S2189C2", this);}
void  S2189C2 ::v15(){vfunc_called(this, "_ZN7S2189C23v15Ev");}
void  S2189C2 ::v16(){vfunc_called(this, "_ZN7S2189C23v16Ev");}
void  S2189C2 ::v17(){vfunc_called(this, "_ZN7S2189C23v17Ev");}
S2189C2 ::S2189C2(){ note_ctor("S2189C2", this);} // tgen

static void Test_S2189C2()
{
  extern Class_Descriptor cd_S2189C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2189C2, buf);
    S2189C2 *dp, &lv = *(dp=new (buf) S2189C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2189C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2189C2)");
    check_base_class_offset(lv, (S2189C4*)(S2189C3*), 0, "S2189C2");
    check_base_class_offset(lv, (S2189C3*), 0, "S2189C2");
    check_field_offset(lv, s2189c2f0, ABISELECT(56,36), "S2189C2.s2189c2f0");
    check_field_offset(lv, s2189c2f1, ABISELECT(88,52), "S2189C2.s2189c2f1");
    test_class_info(&lv, &cd_S2189C2);
    dp->~S2189C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2189C2(Test_S2189C2, "S2189C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2189C2C1Ev();
extern void _ZN7S2189C2D1Ev();
Name_Map name_map_S2189C2[] = {
  NSPAIR(_ZN7S2189C2C1Ev),
  NSPAIR(_ZN7S2189C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2189C4;
extern VTBL_ENTRY _ZTI7S2189C4[];
extern  VTBL_ENTRY _ZTV7S2189C4[];
extern Class_Descriptor cd_S2189C3;
extern VTBL_ENTRY _ZTI7S2189C3[];
extern  VTBL_ENTRY _ZTV7S2189C3[];
static Base_Class bases_S2189C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2189C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2189C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2189C2[];
extern void _ZN7S2189C2D1Ev();
extern void _ZN7S2189C2D0Ev();
extern void _ZN7S2189C42v3Ev();
extern void _ZN7S2189C42v4Ev();
extern void _ZN7S2189C42v5Ev();
extern void _ZN7S2189C32v6Ev();
extern void _ZN7S2189C32v7Ev();
extern void _ZN7S2189C32v8Ev();
extern void _ZN7S2189C32v9Ev();
extern void _ZN7S2189C33v10Ev();
extern void _ZN7S2189C33v11Ev();
extern void _ZN7S2189C33v12Ev();
extern void _ZN7S2189C33v13Ev();
extern void _ZN7S2189C33v14Ev();
extern void _ZN7S2189C23v15Ev();
extern void _ZN7S2189C23v16Ev();
extern void _ZN7S2189C23v17Ev();
static  VTBL_ENTRY vtc_S2189C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2189C2[0]),
  (VTBL_ENTRY)&_ZN7S2189C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2189C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2189C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2189C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2189C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2189C2[];
extern  VTBL_ENTRY _ZTV7S2189C2[];
Class_Descriptor cd_S2189C2 = {  "S2189C2", // class name
  bases_S2189C2, 2,
  &(vtc_S2189C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2189C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2189C2),19, //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  S2189C1  : S2189C2 {
  int s2189c1f0;
  virtual  ~S2189C1(); // _ZN7S2189C1D1Ev
  virtual void  v1(); // _ZN7S2189C12v1Ev
  virtual void  v2(); // _ZN7S2189C12v2Ev
  S2189C1(); // tgen
};
//SIG(1 S2189C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2 Fi}


 S2189C1 ::~S2189C1(){ note_dtor("S2189C1", this);}
void  S2189C1 ::v1(){vfunc_called(this, "_ZN7S2189C12v1Ev");}
void  S2189C1 ::v2(){vfunc_called(this, "_ZN7S2189C12v2Ev");}
S2189C1 ::S2189C1(){ note_ctor("S2189C1", this);} // tgen

static void Test_S2189C1()
{
  extern Class_Descriptor cd_S2189C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S2189C1, buf);
    S2189C1 *dp, &lv = *(dp=new (buf) S2189C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S2189C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2189C1)");
    check_base_class_offset(lv, (S2189C4*)(S2189C3*)(S2189C2*), 0, "S2189C1");
    check_base_class_offset(lv, (S2189C3*)(S2189C2*), 0, "S2189C1");
    check_base_class_offset(lv, (S2189C2*), 0, "S2189C1");
    check_field_offset(lv, s2189c1f0, ABISELECT(92,56), "S2189C1.s2189c1f0");
    test_class_info(&lv, &cd_S2189C1);
    dp->~S2189C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2189C1(Test_S2189C1, "S2189C1", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S2189C1C1Ev();
extern void _ZN7S2189C1D1Ev();
Name_Map name_map_S2189C1[] = {
  NSPAIR(_ZN7S2189C1C1Ev),
  NSPAIR(_ZN7S2189C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2189C4;
extern VTBL_ENTRY _ZTI7S2189C4[];
extern  VTBL_ENTRY _ZTV7S2189C4[];
extern Class_Descriptor cd_S2189C3;
extern VTBL_ENTRY _ZTI7S2189C3[];
extern  VTBL_ENTRY _ZTV7S2189C3[];
extern Class_Descriptor cd_S2189C2;
extern VTBL_ENTRY _ZTI7S2189C2[];
extern  VTBL_ENTRY _ZTV7S2189C2[];
static Base_Class bases_S2189C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2189C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2189C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2189C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2189C1[];
extern void _ZN7S2189C1D1Ev();
extern void _ZN7S2189C1D0Ev();
extern void _ZN7S2189C42v3Ev();
extern void _ZN7S2189C42v4Ev();
extern void _ZN7S2189C42v5Ev();
extern void _ZN7S2189C32v6Ev();
extern void _ZN7S2189C32v7Ev();
extern void _ZN7S2189C32v8Ev();
extern void _ZN7S2189C32v9Ev();
extern void _ZN7S2189C33v10Ev();
extern void _ZN7S2189C33v11Ev();
extern void _ZN7S2189C33v12Ev();
extern void _ZN7S2189C33v13Ev();
extern void _ZN7S2189C33v14Ev();
extern void _ZN7S2189C23v15Ev();
extern void _ZN7S2189C23v16Ev();
extern void _ZN7S2189C23v17Ev();
extern void _ZN7S2189C12v1Ev();
extern void _ZN7S2189C12v2Ev();
static  VTBL_ENTRY vtc_S2189C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2189C1[0]),
  (VTBL_ENTRY)&_ZN7S2189C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2189C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2189C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2189C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2189C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2189C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2189C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2189C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2189C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2189C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2189C1[];
extern  VTBL_ENTRY _ZTV7S2189C1[];
Class_Descriptor cd_S2189C1 = {  "S2189C1", // class name
  bases_S2189C1, 3,
  &(vtc_S2189C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S2189C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2189C1),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  S3499C3  : virtual S19490C26 {
  int s3499c3f0;
  ~S3499C3(); // tgen
  S3499C3(); // tgen
};
//SIG(-1 S3499C3) C1{ VBC2{ m} Fi}


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

static void Test_S3499C3()
{
  extern Class_Descriptor cd_S3499C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3499C3, buf);
    S3499C3 *dp, &lv = *(dp=new (buf) S3499C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3499C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C3)");
    check_base_class_offset(lv, (S19490C26*), 0, "S3499C3");
    check_field_offset(lv, s3499c3f0, ABISELECT(8,4), "S3499C3.s3499c3f0");
    test_class_info(&lv, &cd_S3499C3);
    dp->~S3499C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C3(Test_S3499C3, "S3499C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3499C3C1Ev();
extern void _ZN7S3499C3D1Ev();
Name_Map name_map_S3499C3[] = {
  NSPAIR(_ZN7S3499C3C1Ev),
  NSPAIR(_ZN7S3499C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S3499C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3499C3[];
static  VTBL_ENTRY vtc_S3499C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C3[0]),
};
extern VTBL_ENTRY _ZTV7S3499C3[];
static  VTT_ENTRY vtt_S3499C3[] = {
  {&(_ZTV7S3499C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3499C3[];
extern  VTBL_ENTRY _ZTV7S3499C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C3[];
Class_Descriptor cd_S3499C3 = {  "S3499C3", // class name
  bases_S3499C3, 1,
  &(vtc_S3499C3[0]), // expected_vtbl_contents
  &(vtt_S3499C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3499C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3499C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3499C3),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  S3499C2  : S3499C3 {
  void *s3499c2f0;
  ~S3499C2(); // tgen
  S3499C2(); // tgen
};
//SIG(-1 S3499C2) C1{ BC2{ VBC3{ m} Fi} Fp}


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

static void Test_S3499C2()
{
  extern Class_Descriptor cd_S3499C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3499C2, buf);
    S3499C2 *dp, &lv = *(dp=new (buf) S3499C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3499C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C2)");
    check_base_class_offset(lv, (S19490C26*)(S3499C3*), 0, "S3499C2");
    check_base_class_offset(lv, (S3499C3*), 0, "S3499C2");
    check_field_offset(lv, s3499c2f0, ABISELECT(16,8), "S3499C2.s3499c2f0");
    test_class_info(&lv, &cd_S3499C2);
    dp->~S3499C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C2(Test_S3499C2, "S3499C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3499C2C1Ev();
extern void _ZN7S3499C2D1Ev();
Name_Map name_map_S3499C2[] = {
  NSPAIR(_ZN7S3499C2C1Ev),
  NSPAIR(_ZN7S3499C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S3499C3;
extern VTBL_ENTRY _ZTI7S3499C3[];
extern  VTBL_ENTRY _ZTV7S3499C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C3[];
static Base_Class bases_S3499C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3499C3,    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 _ZTI7S3499C2[];
static  VTBL_ENTRY vtc_S3499C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C2[0]),
};
extern VTBL_ENTRY _ZTV7S3499C2[];
static  VTBL_ENTRY _tg__ZTV7S3499C3__7S3499C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C3[0]),
};
static  VTT_ENTRY vtt_S3499C2[] = {
  {&(_ZTV7S3499C2[3]),  3,3},
  {&(_tg__ZTV7S3499C3__7S3499C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3499C2[];
extern  VTBL_ENTRY _ZTV7S3499C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C2[];
Class_Descriptor cd_S3499C2 = {  "S3499C2", // class name
  bases_S3499C2, 2,
  &(vtc_S3499C2[0]), // expected_vtbl_contents
  &(vtt_S3499C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3499C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3499C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3499C2),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  S3499C10  : S19490C10_nt , S19490C18 , S19490C26 {
};
//SIG(-1 S3499C10) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S3499C10()
{
  extern Class_Descriptor cd_S3499C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3499C10, buf);
    S3499C10 &lv = *(new (buf) S3499C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3499C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C10)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S3499C10");
    check_base_class_offset(lv, (S19490C18*), 0, "S3499C10");
    check_base_class_offset(lv, (S19490C26*), 0, "S3499C10");
    test_class_info(&lv, &cd_S3499C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C10(Test_S3499C10, "S3499C10", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S3499C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3499C10[];
Class_Descriptor cd_S3499C10 = {  "S3499C10", // class name
  bases_S3499C10, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S3499C10),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3499C9  : virtual S3499C10 , virtual S19490C7 , S19490C18 {
  ~S3499C9(); // tgen
  S3499C9(); // tgen
};
//SIG(-1 S3499C9) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S3499C9()
{
  extern Class_Descriptor cd_S3499C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3499C9, buf);
    S3499C9 *dp, &lv = *(dp=new (buf) S3499C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3499C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C9)");
    check_base_class_offset(lv, (S19490C10_nt*)(S3499C10*), ABISELECT(8,4), "S3499C9");
    check_base_class_offset(lv, (S19490C18*)(S3499C10*), ABISELECT(8,4), "S3499C9");
    check_base_class_offset(lv, (S19490C26*)(S3499C10*), ABISELECT(8,4), "S3499C9");
    check_base_class_offset(lv, (S3499C10*), ABISELECT(8,4), "S3499C9");
    check_base_class_offset(lv, (S19490C7*), 0, "S3499C9");
    /*is_ambiguous_... S3499C9::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S3499C9");
    test_class_info(&lv, &cd_S3499C9);
    dp->~S3499C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C9(Test_S3499C9, "S3499C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3499C9C1Ev();
extern void _ZN7S3499C9D1Ev();
Name_Map name_map_S3499C9[] = {
  NSPAIR(_ZN7S3499C9C1Ev),
  NSPAIR(_ZN7S3499C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S3499C10;
extern VTBL_ENTRY _ZTI8S3499C10[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S3499C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3499C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3499C9[];
static  VTBL_ENTRY vtc_S3499C9[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C9[0]),
};
extern VTBL_ENTRY _ZTV7S3499C9[];
static  VTT_ENTRY vtt_S3499C9[] = {
  {&(_ZTV7S3499C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S3499C9[];
extern  VTBL_ENTRY _ZTV7S3499C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C9[];
Class_Descriptor cd_S3499C9 = {  "S3499C9", // class name
  bases_S3499C9, 6,
  &(vtc_S3499C9[0]), // expected_vtbl_contents
  &(vtt_S3499C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3499C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3499C9),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3499C9),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  S3499C6  : virtual S19490C12 , S19490C11 , virtual S3499C9 {
  __tsi64 s3499c6f0[5];
  virtual  ~S3499C6(); // _ZN7S3499C6D2Ev
  virtual void  v1(); // _ZN7S3499C62v1Ev
  S3499C6(); // tgen
};
//SIG(-1 S3499C6) C1{ VBC2{ m} BC3{ m} VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC8{ m}} VBC9{ m} BC7} vd v1 FL[5]}


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

static void Test_S3499C6()
{
  extern Class_Descriptor cd_S3499C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S3499C6, buf);
    S3499C6 *dp, &lv = *(dp=new (buf) S3499C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S3499C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C6)");
    check_base_class_offset(lv, (S19490C12*), 0, "S3499C6");
    check_base_class_offset(lv, (S19490C11*), 0, "S3499C6");
    check_base_class_offset(lv, (S19490C10_nt*)(S3499C10*), ABISELECT(48,44), "S3499C6");
    check_base_class_offset(lv, (S19490C18*)(S3499C10*), ABISELECT(48,44), "S3499C6");
    check_base_class_offset(lv, (S19490C26*)(S3499C10*), ABISELECT(48,44), "S3499C6");
    check_base_class_offset(lv, (S3499C10*)(S3499C9*), ABISELECT(48,44), "S3499C6");
    check_base_class_offset(lv, (S19490C7*)(S3499C9*), 0, "S3499C6");
    /*is_ambiguous_... S3499C9::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S3499C9*), 0, "S3499C6");
    check_base_class_offset(lv, (S3499C9*), 0, "S3499C6");
    check_field_offset(lv, s3499c6f0, ABISELECT(8,4), "S3499C6.s3499c6f0");
    test_class_info(&lv, &cd_S3499C6);
    dp->~S3499C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C6(Test_S3499C6, "S3499C6", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S3499C6C1Ev();
extern void _ZN7S3499C6D2Ev();
Name_Map name_map_S3499C6[] = {
  NSPAIR(_ZN7S3499C6C1Ev),
  NSPAIR(_ZN7S3499C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S3499C10;
extern VTBL_ENTRY _ZTI8S3499C10[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S3499C9;
extern VTBL_ENTRY _ZTI7S3499C9[];
extern  VTBL_ENTRY _ZTV7S3499C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C9[];
static Base_Class bases_S3499C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3499C10,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3499C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3499C6[];
extern void _ZN7S3499C6D1Ev();
extern void _ZN7S3499C6D0Ev();
extern void _ZN7S3499C62v1Ev();
static  VTBL_ENTRY vtc_S3499C6[] = {
  0,
  0,
  0,
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C6[0]),
  (VTBL_ENTRY)&_ZN7S3499C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3499C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3499C62v1Ev,
};
extern VTBL_ENTRY _ZTV7S3499C6[];
static  VTBL_ENTRY _tg__ZTV7S3499C9__7S3499C6[] = {
  0,
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C9[0]),
};
static  VTT_ENTRY vtt_S3499C6[] = {
  {&(_ZTV7S3499C6[6]),  6,9},
  {&(_ZTV7S3499C6[6]),  6,9},
  {&(_tg__ZTV7S3499C9__7S3499C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S3499C6[];
extern  VTBL_ENTRY _ZTV7S3499C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C6[];
Class_Descriptor cd_S3499C6 = {  "S3499C6", // class name
  bases_S3499C6, 9,
  &(vtc_S3499C6[0]), // expected_vtbl_contents
  &(vtt_S3499C6[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S3499C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3499C6),9, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3499C6),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  S3499C13  : virtual S3499C3 , virtual S19490C11 , S19490C6_nt {
  ::S3499C3 s3499c13f0;
  ~S3499C13(); // tgen
  S3499C13(); // tgen
};
//SIG(-1 S3499C13) C1{ VBC2{ VBC3{ m} Fi} VBC4{ m} BC5{ m} FC2}


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

static void Test_S3499C13()
{
  extern Class_Descriptor cd_S3499C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S3499C13, buf);
    S3499C13 *dp, &lv = *(dp=new (buf) S3499C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S3499C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C13)");
    check_base_class_offset(lv, (S19490C26*)(S3499C3*), 0, "S3499C13");
    check_base_class_offset(lv, (S3499C3*), ABISELECT(24,12), "S3499C13");
    check_base_class_offset(lv, (S19490C11*), 0, "S3499C13");
    check_base_class_offset(lv, (S19490C6_nt*), 0, "S3499C13");
    check_field_offset(lv, s3499c13f0, ABISELECT(8,4), "S3499C13.s3499c13f0");
    test_class_info(&lv, &cd_S3499C13);
    dp->~S3499C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C13(Test_S3499C13, "S3499C13", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S3499C13C1Ev();
extern void _ZN8S3499C13D1Ev();
Name_Map name_map_S3499C13[] = {
  NSPAIR(_ZN8S3499C13C1Ev),
  NSPAIR(_ZN8S3499C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S3499C3;
extern VTBL_ENTRY _ZTI7S3499C3[];
extern  VTBL_ENTRY _ZTV7S3499C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C3[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
static Base_Class bases_S3499C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3499C3,    ABISELECT(24,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3499C13[];
static  VTBL_ENTRY vtc_S3499C13[] = {
  0,
  0,
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3499C13[0]),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3499C13[0]),
};
extern VTBL_ENTRY _ZTV8S3499C13[];
static  VTBL_ENTRY _tg__ZTV7S3499C3__8S3499C13[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C3[0]),
};
static  VTT_ENTRY vtt_S3499C13[] = {
  {&(_ZTV8S3499C13[5]),  5,8},
  {&(_ZTV8S3499C13[8]),  8,8},
  {&(_tg__ZTV7S3499C3__8S3499C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S3499C13[];
extern  VTBL_ENTRY _ZTV8S3499C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3499C13[];
Class_Descriptor cd_S3499C13 = {  "S3499C13", // class name
  bases_S3499C13, 4,
  &(vtc_S3499C13[0]), // expected_vtbl_contents
  &(vtt_S3499C13[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S3499C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3499C13),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3499C13),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3499C1  : S3499C2 , virtual S19490C18 , S3499C6 , S3499C13 {
  virtual  ~S3499C1(); // _ZN7S3499C1D2Ev
  S3499C1(); // tgen
};
//SIG(1 S3499C1) C1{ BC2{ BC3{ VBC4{ m} Fi} Fp} VBC5{ m} BC6{ VBC7{ m} BC8{ m} VBC9{ VBC10{ BC11{ m Fp} BC5 BC4} VBC12{ m} BC5} vd v1 FL[5]} BC13{ VBC3 VBC8 BC14{ m} FC3} vd}


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

static void Test_S3499C1()
{
  extern Class_Descriptor cd_S3499C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S3499C1, buf);
    S3499C1 *dp, &lv = *(dp=new (buf) S3499C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S3499C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3499C1)");
    check_base_class_offset(lv, (S19490C26*)(S3499C3*)(S3499C2*), 0, "S3499C1");
    /*is_ambiguous_... S3499C1::S3499C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S3499C3*), 0, "S3499C1");
    check_base_class_offset(lv, (S3499C3*)(S3499C2*), 0, "S3499C1");
    check_base_class_offset(lv, (S3499C2*), 0, "S3499C1");
    /*is_ambiguous_... S3499C1::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S3499C1");
    check_base_class_offset(lv, (S19490C12*)(S3499C6*), 0, "S3499C1");
    check_base_class_offset(lv, (S19490C11*)(S3499C6*), ABISELECT(24,12), "S3499C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S3499C10*), ABISELECT(96,68), "S3499C1");
    check_base_class_offset(lv, (S19490C18*)(S3499C10*), ABISELECT(96,68), "S3499C1");
    check_base_class_offset(lv, (S19490C26*)(S3499C10*), ABISELECT(96,68), "S3499C1");
    check_base_class_offset(lv, (S3499C10*)(S3499C9*), ABISELECT(96,68), "S3499C1");
    check_base_class_offset(lv, (S19490C7*)(S3499C9*), 0, "S3499C1");
    /*is_ambiguous_... S3499C9::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S3499C9*), ABISELECT(24,12), "S3499C1");
    check_base_class_offset(lv, (S3499C9*)(S3499C6*), ABISELECT(24,12), "S3499C1");
    check_base_class_offset(lv, (S3499C6*), ABISELECT(24,12), "S3499C1");
    check_base_class_offset(lv, (S3499C3*)(S3499C13*), ABISELECT(104,72), "S3499C1");
    check_base_class_offset(lv, (S19490C11*)(S3499C13*), 0, "S3499C1");
    check_base_class_offset(lv, (S19490C6_nt*)(S3499C13*), ABISELECT(72,56), "S3499C1");
    check_base_class_offset(lv, (S3499C13*), ABISELECT(72,56), "S3499C1");
    test_class_info(&lv, &cd_S3499C1);
    dp->~S3499C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3499C1(Test_S3499C1, "S3499C1", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN7S3499C1C1Ev();
extern void _ZN7S3499C1D2Ev();
Name_Map name_map_S3499C1[] = {
  NSPAIR(_ZN7S3499C1C1Ev),
  NSPAIR(_ZN7S3499C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S3499C3;
extern VTBL_ENTRY _ZTI7S3499C3[];
extern  VTBL_ENTRY _ZTV7S3499C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C3[];
extern Class_Descriptor cd_S3499C2;
extern VTBL_ENTRY _ZTI7S3499C2[];
extern  VTBL_ENTRY _ZTV7S3499C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C2[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S3499C10;
extern VTBL_ENTRY _ZTI8S3499C10[];
extern Class_Descriptor cd_S19490C7;
extern VTBL_ENTRY _ZTI8S19490C7[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S3499C9;
extern VTBL_ENTRY _ZTI7S3499C9[];
extern  VTBL_ENTRY _ZTV7S3499C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C9[];
extern Class_Descriptor cd_S3499C6;
extern VTBL_ENTRY _ZTI7S3499C6[];
extern  VTBL_ENTRY _ZTV7S3499C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C6[];
extern Class_Descriptor cd_S3499C3;
extern VTBL_ENTRY _ZTI7S3499C3[];
extern  VTBL_ENTRY _ZTV7S3499C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C3[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C6_nt;
extern VTBL_ENTRY _ZTI11S19490C6_nt[];
extern Class_Descriptor cd_S3499C13;
extern VTBL_ENTRY _ZTI8S3499C13[];
extern  VTBL_ENTRY _ZTV8S3499C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3499C13[];
static Base_Class bases_S3499C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3499C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3499C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19490C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3499C10,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19490C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19490C18,    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
    12, //immediately_derived
  0, 0},
  {&cd_S3499C9,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3499C6,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3499C3,    ABISELECT(104,72), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19490C6_nt,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3499C13,    ABISELECT(72,56), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3499C1[];
extern void _ZN7S3499C1D1Ev();
extern void _ZN7S3499C1D0Ev();
extern void ABISELECT(_ZThn24_N7S3499C1D1Ev,_ZThn12_N7S3499C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S3499C1D0Ev,_ZThn12_N7S3499C1D0Ev)();
extern void _ZN7S3499C62v1Ev();
static  VTBL_ENTRY vtc_S3499C1[] = {
  0,
  ABISELECT(104,72),
  0,
  ABISELECT(96,68),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C1[0]),
  (VTBL_ENTRY)&_ZN7S3499C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3499C1D0Ev,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(72,56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3499C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S3499C1D1Ev,_ZThn12_N7S3499C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S3499C1D0Ev,_ZThn12_N7S3499C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3499C62v1Ev,
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  ABISELECT(32,16),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S3499C1[0]),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3499C1[0]),
};
extern VTBL_ENTRY _ZTV7S3499C1[];
static  VTBL_ENTRY _tg__ZTV7S3499C2__7S3499C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3499C37S3499C2__7S3499C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C3[0]),
};
extern void _ZN7S3499C6D1Ev();
extern void _ZN7S3499C6D0Ev();
extern void _ZN7S3499C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3499C6__7S3499C1[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C6[0]),
  (VTBL_ENTRY)&_ZN7S3499C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3499C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3499C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S3499C13__7S3499C1[] = {
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3499C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3499C3__8S3499C13__7S3499C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3499C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3499C9__7S3499C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3499C3__A1__7S3499C1[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3499C3[0]),
};
static  VTT_ENTRY vtt_S3499C1[] = {
  {&(_ZTV7S3499C1[10]),  10,29},
  {&(_tg__ZTV7S3499C2__7S3499C1[3]),  3,3},
  {&(_tg__ZTV7S3499C37S3499C2__7S3499C1[3]),  3,3},
  {&(_tg__ZTV7S3499C6__7S3499C1[6]),  6,9},
  {&(_tg__ZTV7S3499C6__7S3499C1[6]),  6,9},
  {&(_tg__ZTV8S3499C13__7S3499C1[5]),  5,5},
  {&(_tg__ZTV7S3499C3__8S3499C13__7S3499C1[3]),  3,3},
  {&(_ZTV7S3499C1[18]),  18,29},
  {&(_ZTV7S3499C1[18]),  18,29},
  {&(_ZTV7S3499C1[26]),  26,29},
  {&(_ZTV7S3499C1[29]),  29,29},
  {&(_tg__ZTV7S3499C9__7S3499C1[4]),  4,4},
  {&(_tg__ZTV7S3499C3__A1__7S3499C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3499C1[];
extern  VTBL_ENTRY _ZTV7S3499C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3499C1[];
Class_Descriptor cd_S3499C1 = {  "S3499C1", // class name
  bases_S3499C1, 18,
  &(vtc_S3499C1[0]), // expected_vtbl_contents
  &(vtt_S3499C1[0]), // expected_vtt_contents
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI7S3499C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3499C1),29, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3499C1),13, //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  S2193C4  {
  ::S16385C7 s2193c4f0;
  int s2193c4f1[2];
  char s2193c4f2;
  virtual  ~S2193C4(); // _ZN7S2193C4D1Ev
  virtual void  v3(); // _ZN7S2193C42v3Ev
  virtual void  v4(); // _ZN7S2193C42v4Ev
  virtual void  v5(); // _ZN7S2193C42v5Ev
  S2193C4(); // tgen
};
//SIG(-1 S2193C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2193C4 ::~S2193C4(){ note_dtor("S2193C4", this);}
void  S2193C4 ::v3(){vfunc_called(this, "_ZN7S2193C42v3Ev");}
void  S2193C4 ::v4(){vfunc_called(this, "_ZN7S2193C42v4Ev");}
void  S2193C4 ::v5(){vfunc_called(this, "_ZN7S2193C42v5Ev");}
S2193C4 ::S2193C4(){ note_ctor("S2193C4", this);} // tgen

static void Test_S2193C4()
{
  extern Class_Descriptor cd_S2193C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2193C4, buf);
    S2193C4 *dp, &lv = *(dp=new (buf) S2193C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2193C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2193C4)");
    check_field_offset(lv, s2193c4f0, ABISELECT(8,4), "S2193C4.s2193c4f0");
    check_field_offset(lv, s2193c4f1, ABISELECT(24,16), "S2193C4.s2193c4f1");
    check_field_offset(lv, s2193c4f2, ABISELECT(32,24), "S2193C4.s2193c4f2");
    test_class_info(&lv, &cd_S2193C4);
    dp->~S2193C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2193C4(Test_S2193C4, "S2193C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2193C4C1Ev();
extern void _ZN7S2193C4D1Ev();
Name_Map name_map_S2193C4[] = {
  NSPAIR(_ZN7S2193C4C1Ev),
  NSPAIR(_ZN7S2193C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2193C4[];
extern void _ZN7S2193C4D1Ev();
extern void _ZN7S2193C4D0Ev();
extern void _ZN7S2193C42v3Ev();
extern void _ZN7S2193C42v4Ev();
extern void _ZN7S2193C42v5Ev();
static  VTBL_ENTRY vtc_S2193C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2193C4[0]),
  (VTBL_ENTRY)&_ZN7S2193C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2193C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2193C4[];
extern  VTBL_ENTRY _ZTV7S2193C4[];
Class_Descriptor cd_S2193C4 = {  "S2193C4", // class name
  0,0,//no base classes
  &(vtc_S2193C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2193C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2193C4),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  S2193C3  : S2193C4 {
  void *s2193c3f0[2];
  virtual  ~S2193C3(); // _ZN7S2193C3D1Ev
  virtual void  v6(); // _ZN7S2193C32v6Ev
  virtual void  v7(); // _ZN7S2193C32v7Ev
  virtual void  v8(); // _ZN7S2193C32v8Ev
  virtual void  v9(); // _ZN7S2193C32v9Ev
  virtual void  v10(); // _ZN7S2193C33v10Ev
  virtual void  v11(); // _ZN7S2193C33v11Ev
  virtual void  v12(); // _ZN7S2193C33v12Ev
  virtual void  v13(); // _ZN7S2193C33v13Ev
  virtual void  v14(); // _ZN7S2193C33v14Ev
  S2193C3(); // tgen
};
//SIG(-1 S2193C3) C1{ BC2{ vd v10 v11 v12 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2]}


 S2193C3 ::~S2193C3(){ note_dtor("S2193C3", this);}
void  S2193C3 ::v6(){vfunc_called(this, "_ZN7S2193C32v6Ev");}
void  S2193C3 ::v7(){vfunc_called(this, "_ZN7S2193C32v7Ev");}
void  S2193C3 ::v8(){vfunc_called(this, "_ZN7S2193C32v8Ev");}
void  S2193C3 ::v9(){vfunc_called(this, "_ZN7S2193C32v9Ev");}
void  S2193C3 ::v10(){vfunc_called(this, "_ZN7S2193C33v10Ev");}
void  S2193C3 ::v11(){vfunc_called(this, "_ZN7S2193C33v11Ev");}
void  S2193C3 ::v12(){vfunc_called(this, "_ZN7S2193C33v12Ev");}
void  S2193C3 ::v13(){vfunc_called(this, "_ZN7S2193C33v13Ev");}
void  S2193C3 ::v14(){vfunc_called(this, "_ZN7S2193C33v14Ev");}
S2193C3 ::S2193C3(){ note_ctor("S2193C3", this);} // tgen

static void Test_S2193C3()
{
  extern Class_Descriptor cd_S2193C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2193C3, buf);
    S2193C3 *dp, &lv = *(dp=new (buf) S2193C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2193C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2193C3)");
    check_base_class_offset(lv, (S2193C4*), 0, "S2193C3");
    check_field_offset(lv, s2193c3f0, ABISELECT(40,28), "S2193C3.s2193c3f0");
    test_class_info(&lv, &cd_S2193C3);
    dp->~S2193C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2193C3(Test_S2193C3, "S2193C3", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S2193C3C1Ev();
extern void _ZN7S2193C3D1Ev();
Name_Map name_map_S2193C3[] = {
  NSPAIR(_ZN7S2193C3C1Ev),
  NSPAIR(_ZN7S2193C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2193C4;
extern VTBL_ENTRY _ZTI7S2193C4[];
extern  VTBL_ENTRY _ZTV7S2193C4[];
static Base_Class bases_S2193C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2193C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2193C3[];
extern void _ZN7S2193C3D1Ev();
extern void _ZN7S2193C3D0Ev();
extern void _ZN7S2193C42v3Ev();
extern void _ZN7S2193C42v4Ev();
extern void _ZN7S2193C42v5Ev();
extern void _ZN7S2193C32v6Ev();
extern void _ZN7S2193C32v7Ev();
extern void _ZN7S2193C32v8Ev();
extern void _ZN7S2193C32v9Ev();
extern void _ZN7S2193C33v10Ev();
extern void _ZN7S2193C33v11Ev();
extern void _ZN7S2193C33v12Ev();
extern void _ZN7S2193C33v13Ev();
extern void _ZN7S2193C33v14Ev();
static  VTBL_ENTRY vtc_S2193C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2193C3[0]),
  (VTBL_ENTRY)&_ZN7S2193C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2193C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S2193C3[];
extern  VTBL_ENTRY _ZTV7S2193C3[];
Class_Descriptor cd_S2193C3 = {  "S2193C3", // class name
  bases_S2193C3, 1,
  &(vtc_S2193C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S2193C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2193C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2193C2  : S2193C3 {
  void *s2193c2f0[4];
  int s2193c2f1;
  virtual  ~S2193C2(); // _ZN7S2193C2D1Ev
  virtual void  v15(); // _ZN7S2193C23v15Ev
  virtual void  v16(); // _ZN7S2193C23v16Ev
  virtual void  v17(); // _ZN7S2193C23v17Ev
  S2193C2(); // tgen
};
//SIG(-1 S2193C2) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v1 v2 v3 Fp[4] Fi}


 S2193C2 ::~S2193C2(){ note_dtor("S2193C2", this);}
void  S2193C2 ::v15(){vfunc_called(this, "_ZN7S2193C23v15Ev");}
void  S2193C2 ::v16(){vfunc_called(this, "_ZN7S2193C23v16Ev");}
void  S2193C2 ::v17(){vfunc_called(this, "_ZN7S2193C23v17Ev");}
S2193C2 ::S2193C2(){ note_ctor("S2193C2", this);} // tgen

static void Test_S2193C2()
{
  extern Class_Descriptor cd_S2193C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2193C2, buf);
    S2193C2 *dp, &lv = *(dp=new (buf) S2193C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2193C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2193C2)");
    check_base_class_offset(lv, (S2193C4*)(S2193C3*), 0, "S2193C2");
    check_base_class_offset(lv, (S2193C3*), 0, "S2193C2");
    check_field_offset(lv, s2193c2f0, ABISELECT(56,36), "S2193C2.s2193c2f0");
    check_field_offset(lv, s2193c2f1, ABISELECT(88,52), "S2193C2.s2193c2f1");
    test_class_info(&lv, &cd_S2193C2);
    dp->~S2193C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2193C2(Test_S2193C2, "S2193C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2193C2C1Ev();
extern void _ZN7S2193C2D1Ev();
Name_Map name_map_S2193C2[] = {
  NSPAIR(_ZN7S2193C2C1Ev),
  NSPAIR(_ZN7S2193C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2193C4;
extern VTBL_ENTRY _ZTI7S2193C4[];
extern  VTBL_ENTRY _ZTV7S2193C4[];
extern Class_Descriptor cd_S2193C3;
extern VTBL_ENTRY _ZTI7S2193C3[];
extern  VTBL_ENTRY _ZTV7S2193C3[];
static Base_Class bases_S2193C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2193C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2193C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2193C2[];
extern void _ZN7S2193C2D1Ev();
extern void _ZN7S2193C2D0Ev();
extern void _ZN7S2193C42v3Ev();
extern void _ZN7S2193C42v4Ev();
extern void _ZN7S2193C42v5Ev();
extern void _ZN7S2193C32v6Ev();
extern void _ZN7S2193C32v7Ev();
extern void _ZN7S2193C32v8Ev();
extern void _ZN7S2193C32v9Ev();
extern void _ZN7S2193C33v10Ev();
extern void _ZN7S2193C33v11Ev();
extern void _ZN7S2193C33v12Ev();
extern void _ZN7S2193C33v13Ev();
extern void _ZN7S2193C33v14Ev();
extern void _ZN7S2193C23v15Ev();
extern void _ZN7S2193C23v16Ev();
extern void _ZN7S2193C23v17Ev();
static  VTBL_ENTRY vtc_S2193C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2193C2[0]),
  (VTBL_ENTRY)&_ZN7S2193C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2193C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2193C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2193C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2193C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S2193C2[];
extern  VTBL_ENTRY _ZTV7S2193C2[];
Class_Descriptor cd_S2193C2 = {  "S2193C2", // class name
  bases_S2193C2, 2,
  &(vtc_S2193C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2193C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2193C2),19, //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  S2193C1  : S2193C2 {
  virtual  ~S2193C1(); // _ZN7S2193C1D1Ev
  virtual void  v1(); // _ZN7S2193C12v1Ev
  virtual void  v2(); // _ZN7S2193C12v2Ev
  S2193C1(); // tgen
};
//SIG(1 S2193C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2]} vd v15 v16 v17 Fp[4] Fi} vd v1 v2}


 S2193C1 ::~S2193C1(){ note_dtor("S2193C1", this);}
void  S2193C1 ::v1(){vfunc_called(this, "_ZN7S2193C12v1Ev");}
void  S2193C1 ::v2(){vfunc_called(this, "_ZN7S2193C12v2Ev");}
S2193C1 ::S2193C1(){ note_ctor("S2193C1", this);} // tgen

static void Test_S2193C1()
{
  extern Class_Descriptor cd_S2193C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S2193C1, buf);
    S2193C1 *dp, &lv = *(dp=new (buf) S2193C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S2193C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2193C1)");
    check_base_class_offset(lv, (S2193C4*)(S2193C3*)(S2193C2*), 0, "S2193C1");
    check_base_class_offset(lv, (S2193C3*)(S2193C2*), 0, "S2193C1");
    check_base_class_offset(lv, (S2193C2*), 0, "S2193C1");
    test_class_info(&lv, &cd_S2193C1);
    dp->~S2193C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2193C1(Test_S2193C1, "S2193C1", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S2193C1C1Ev();
extern void _ZN7S2193C1D1Ev();
Name_Map name_map_S2193C1[] = {
  NSPAIR(_ZN7S2193C1C1Ev),
  NSPAIR(_ZN7S2193C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2193C4;
extern VTBL_ENTRY _ZTI7S2193C4[];
extern  VTBL_ENTRY _ZTV7S2193C4[];
extern Class_Descriptor cd_S2193C3;
extern VTBL_ENTRY _ZTI7S2193C3[];
extern  VTBL_ENTRY _ZTV7S2193C3[];
extern Class_Descriptor cd_S2193C2;
extern VTBL_ENTRY _ZTI7S2193C2[];
extern  VTBL_ENTRY _ZTV7S2193C2[];
static Base_Class bases_S2193C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2193C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2193C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2193C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2193C1[];
extern void _ZN7S2193C1D1Ev();
extern void _ZN7S2193C1D0Ev();
extern void _ZN7S2193C42v3Ev();
extern void _ZN7S2193C42v4Ev();
extern void _ZN7S2193C42v5Ev();
extern void _ZN7S2193C32v6Ev();
extern void _ZN7S2193C32v7Ev();
extern void _ZN7S2193C32v8Ev();
extern void _ZN7S2193C32v9Ev();
extern void _ZN7S2193C33v10Ev();
extern void _ZN7S2193C33v11Ev();
extern void _ZN7S2193C33v12Ev();
extern void _ZN7S2193C33v13Ev();
extern void _ZN7S2193C33v14Ev();
extern void _ZN7S2193C23v15Ev();
extern void _ZN7S2193C23v16Ev();
extern void _ZN7S2193C23v17Ev();
extern void _ZN7S2193C12v1Ev();
extern void _ZN7S2193C12v2Ev();
static  VTBL_ENTRY vtc_S2193C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2193C1[0]),
  (VTBL_ENTRY)&_ZN7S2193C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2193C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2193C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2193C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2193C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2193C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2193C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2193C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2193C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2193C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2193C1[];
extern  VTBL_ENTRY _ZTV7S2193C1[];
Class_Descriptor cd_S2193C1 = {  "S2193C1", // class name
  bases_S2193C1, 3,
  &(vtc_S2193C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S2193C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2193C1),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  S19844C6  : virtual S19490C12 {
  void *s19844c6f0[2];
  ~S19844C6(); // tgen
  S19844C6(); // tgen
};
//SIG(-1 S19844C6) C1{ VBC2{ m} Fp[2]}


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

static void Test_S19844C6()
{
  extern Class_Descriptor cd_S19844C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19844C6, buf);
    S19844C6 *dp, &lv = *(dp=new (buf) S19844C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19844C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19844C6)");
    check_base_class_offset(lv, (S19490C12*), 0, "S19844C6");
    check_field_offset(lv, s19844c6f0, ABISELECT(8,4), "S19844C6.s19844c6f0");
    test_class_info(&lv, &cd_S19844C6);
    dp->~S19844C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19844C6(Test_S19844C6, "S19844C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19844C6C1Ev();
extern void _ZN8S19844C6D1Ev();
Name_Map name_map_S19844C6[] = {
  NSPAIR(_ZN8S19844C6C1Ev),
  NSPAIR(_ZN8S19844C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S19844C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19844C6[];
static  VTBL_ENTRY vtc_S19844C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C6[0]),
};
extern VTBL_ENTRY _ZTV8S19844C6[];
static  VTT_ENTRY vtt_S19844C6[] = {
  {&(_ZTV8S19844C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19844C6[];
extern  VTBL_ENTRY _ZTV8S19844C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C6[];
Class_Descriptor cd_S19844C6 = {  "S19844C6", // class name
  bases_S19844C6, 1,
  &(vtc_S19844C6[0]), // expected_vtbl_contents
  &(vtt_S19844C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19844C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19844C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19844C6),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  S19844C9  : S19490C10_nt , virtual S19490C12 , virtual S19490C18 {
  ~S19844C9(); // tgen
  S19844C9(); // tgen
};
//SIG(-1 S19844C9) C1{ BC2{ m Fp} VBC3{ m} VBC4{ m}}


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

static void Test_S19844C9()
{
  extern Class_Descriptor cd_S19844C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19844C9, buf);
    S19844C9 *dp, &lv = *(dp=new (buf) S19844C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19844C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19844C9)");
    check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19844C9");
    check_base_class_offset(lv, (S19490C12*), 0, "S19844C9");
    check_base_class_offset(lv, (S19490C18*), 0, "S19844C9");
    test_class_info(&lv, &cd_S19844C9);
    dp->~S19844C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19844C9(Test_S19844C9, "S19844C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19844C9C1Ev();
extern void _ZN8S19844C9D1Ev();
Name_Map name_map_S19844C9[] = {
  NSPAIR(_ZN8S19844C9C1Ev),
  NSPAIR(_ZN8S19844C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S19844C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19844C9[];
static  VTBL_ENTRY vtc_S19844C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C9[0]),
};
extern VTBL_ENTRY _ZTV8S19844C9[];
static  VTT_ENTRY vtt_S19844C9[] = {
  {&(_ZTV8S19844C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19844C9[];
extern  VTBL_ENTRY _ZTV8S19844C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C9[];
Class_Descriptor cd_S19844C9 = {  "S19844C9", // class name
  bases_S19844C9, 3,
  &(vtc_S19844C9[0]), // expected_vtbl_contents
  &(vtt_S19844C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19844C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19844C9),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19844C9),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  S19844C5  : virtual S19844C6 , S19490C10_nt , virtual S19844C9 {
  ::S19844C9 s19844c5f0;
  ~S19844C5(); // tgen
  S19844C5(); // tgen
};
//SIG(-1 S19844C5) C1{ VBC2{ VBC3{ m} Fp[2]} BC4{ m Fp} VBC5{ BC4 VBC3 VBC6{ m}} FC5}


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

static void Test_S19844C5()
{
  extern Class_Descriptor cd_S19844C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19844C5, buf);
    S19844C5 *dp, &lv = *(dp=new (buf) S19844C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19844C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19844C5)");
    check_base_class_offset(lv, (S19490C12*)(S19844C6*), 0, "S19844C5");
    check_base_class_offset(lv, (S19490C12*)(S19844C9*), 0, "S19844C5");
    check_base_class_offset(lv, (S19844C6*), ABISELECT(32,16), "S19844C5");
    /*is_ambiguous_... S19844C5::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S19844C5");
    check_base_class_offset(lv, (S19490C10_nt*)(S19844C9*), ABISELECT(64,32), "S19844C5");
    check_base_class_offset(lv, (S19490C18*)(S19844C9*), 0, "S19844C5");
    check_base_class_offset(lv, (S19844C9*), ABISELECT(56,28), "S19844C5");
    check_field_offset(lv, s19844c5f0, ABISELECT(16,8), "S19844C5.s19844c5f0");
    test_class_info(&lv, &cd_S19844C5);
    dp->~S19844C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19844C5(Test_S19844C5, "S19844C5", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S19844C5C1Ev();
extern void _ZN8S19844C5D1Ev();
Name_Map name_map_S19844C5[] = {
  NSPAIR(_ZN8S19844C5C1Ev),
  NSPAIR(_ZN8S19844C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19844C6;
extern VTBL_ENTRY _ZTI8S19844C6[];
extern  VTBL_ENTRY _ZTV8S19844C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C6[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19844C9;
extern VTBL_ENTRY _ZTI8S19844C9[];
extern  VTBL_ENTRY _ZTV8S19844C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C9[];
static Base_Class bases_S19844C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19844C6,    ABISELECT(32,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19844C9,    ABISELECT(56,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19844C5[];
static  VTBL_ENTRY vtc_S19844C5[] = {
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
extern VTBL_ENTRY _ZTV8S19844C5[];
static  VTBL_ENTRY _tg__ZTV8S19844C6__8S19844C5[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C9__8S19844C5[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C9[0]),
};
static  VTT_ENTRY vtt_S19844C5[] = {
  {&(_ZTV8S19844C5[6]),  6,13},
  {&(_ZTV8S19844C5[9]),  9,13},
  {&(_ZTV8S19844C5[13]),  13,13},
  {&(_tg__ZTV8S19844C6__8S19844C5[3]),  3,3},
  {&(_tg__ZTV8S19844C9__8S19844C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19844C5[];
extern  VTBL_ENTRY _ZTV8S19844C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C5[];
Class_Descriptor cd_S19844C5 = {  "S19844C5", // class name
  bases_S19844C5, 6,
  &(vtc_S19844C5[0]), // expected_vtbl_contents
  &(vtt_S19844C5[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S19844C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19844C5),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19844C5),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19844C10  : S19490C10_nt , S19490C18 , S19490C12 {
};
//SIG(-1 S19844C10) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S19844C10()
{
  extern Class_Descriptor cd_S19844C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19844C10, buf);
    S19844C10 &lv = *(new (buf) S19844C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19844C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19844C10)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S19844C10");
    check_base_class_offset(lv, (S19490C18*), 0, "S19844C10");
    check_base_class_offset(lv, (S19490C12*), 0, "S19844C10");
    test_class_info(&lv, &cd_S19844C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19844C10(Test_S19844C10, "S19844C10", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S19844C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19844C10[];
Class_Descriptor cd_S19844C10 = {  "S19844C10", // class name
  bases_S19844C10, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19844C10),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19844C3  : virtual S19490C18 , virtual S19844C5 , S19844C9 , virtual S19490C10_nt , virtual S19844C10 {
  char s19844c3f0;
  virtual  ~S19844C3(); // _ZN8S19844C3D2Ev
  S19844C3(); // tgen
};
//SIG(-1 S19844C3) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ m} Fp[2]} BC6{ m Fp} VBC7{ BC6 VBC5 VBC2} FC7} BC7 VBC6 VBC8{ BC6 BC2 BC5} vd Fc}


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

static void Test_S19844C3()
{
  extern Class_Descriptor cd_S19844C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19844C3, buf);
    S19844C3 *dp, &lv = *(dp=new (buf) S19844C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19844C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19844C3)");
    /*is_ambiguous_... S19844C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19844C9*), 0, "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19844C9*), 0, "S19844C3");
    check_base_class_offset(lv, (S19490C12*)(S19844C6*), 0, "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C12*)(S19844C9*), 0, "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C12*)(S19844C9*), 0, "S19844C3");
    check_base_class_offset(lv, (S19844C6*)(S19844C5*), ABISELECT(56,28), "S19844C3");
    /*is_ambiguous_... S19844C5::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C5*), ABISELECT(32,16), "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C9*), ABISELECT(88,44), "S19844C3");
    check_base_class_offset(lv, (S19844C9*)(S19844C5*), ABISELECT(80,40), "S19844C3");
    check_base_class_offset(lv, (S19844C5*), ABISELECT(24,12), "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C9*), ABISELECT(8,4), "S19844C3");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19844C9*), 0, "S19844C3");
    /*is_ambiguous_... S19844C3::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(96,48), "S19844C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S19844C10*), ABISELECT(104,52), "S19844C3");
    check_base_class_offset(lv, (S19490C18*)(S19844C10*), ABISELECT(104,52), "S19844C3");
    check_base_class_offset(lv, (S19490C12*)(S19844C10*), ABISELECT(104,52), "S19844C3");
    check_base_class_offset(lv, (S19844C10*), ABISELECT(104,52), "S19844C3");
    check_field_offset(lv, s19844c3f0, ABISELECT(16,8), "S19844C3.s19844c3f0");
    test_class_info(&lv, &cd_S19844C3);
    dp->~S19844C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19844C3(Test_S19844C3, "S19844C3", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S19844C3C1Ev();
extern void _ZN8S19844C3D2Ev();
Name_Map name_map_S19844C3[] = {
  NSPAIR(_ZN8S19844C3C1Ev),
  NSPAIR(_ZN8S19844C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19844C6;
extern VTBL_ENTRY _ZTI8S19844C6[];
extern  VTBL_ENTRY _ZTV8S19844C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C6[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19844C9;
extern VTBL_ENTRY _ZTI8S19844C9[];
extern  VTBL_ENTRY _ZTV8S19844C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C9[];
extern Class_Descriptor cd_S19844C5;
extern VTBL_ENTRY _ZTI8S19844C5[];
extern  VTBL_ENTRY _ZTV8S19844C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C5[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19844C9;
extern VTBL_ENTRY _ZTI8S19844C9[];
extern  VTBL_ENTRY _ZTV8S19844C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C9[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19844C10;
extern VTBL_ENTRY _ZTI9S19844C10[];
static Base_Class bases_S19844C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19844C6,    ABISELECT(56,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19844C9,    ABISELECT(80,40), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19844C5,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S19844C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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_S19490C12,    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_S19844C10,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19844C3[];
extern void _ZN8S19844C3D1Ev();
extern void _ZN8S19844C3D0Ev();
static  VTBL_ENTRY vtc_S19844C3[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
  (VTBL_ENTRY)&_ZN8S19844C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19844C3D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
};
extern VTBL_ENTRY _ZTV8S19844C3[];
static  VTBL_ENTRY _tg__ZTV8S19844C9__A__8S19844C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C5__8S19844C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C6__8S19844C5__8S19844C3[] = {
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C9__8S19844C5__8S19844C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C6__8S19844C3[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C9__8S19844C3[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C9[0]),
};
static  VTT_ENTRY vtt_S19844C3[] = {
  {&(_ZTV8S19844C3[9]),  9,24},
  {&(_tg__ZTV8S19844C9__A__8S19844C3[4]),  4,4},
  {&(_ZTV8S19844C3[17]),  17,24},
  {&(_ZTV8S19844C3[20]),  20,24},
  {&(_ZTV8S19844C3[24]),  24,24},
  {&(_tg__ZTV8S19844C5__8S19844C3[6]),  6,6},
  {&(_tg__ZTV8S19844C6__8S19844C5__8S19844C3[3]),  3,3},
  {&(_tg__ZTV8S19844C9__8S19844C5__8S19844C3[4]),  4,4},
  {&(_tg__ZTV8S19844C6__8S19844C3[3]),  3,3},
  {&(_tg__ZTV8S19844C9__8S19844C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19844C3[];
extern  VTBL_ENTRY _ZTV8S19844C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C3[];
Class_Descriptor cd_S19844C3 = {  "S19844C3", // class name
  bases_S19844C3, 14,
  &(vtc_S19844C3[0]), // expected_vtbl_contents
  &(vtt_S19844C3[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S19844C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19844C3),24, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19844C3),10, //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  S19844C1  : virtual S19490C26 , S19844C3 {
  virtual  ~S19844C1(); // _ZN8S19844C1D2Ev
  S19844C1(); // tgen
};
//SIG(1 S19844C1) C1{ VBC2{ m} BC3{ VBC4{ m} VBC5{ VBC6{ VBC7{ m} Fp[2]} BC8{ m Fp} VBC9{ BC8 VBC7 VBC4} FC9} BC9 VBC8 VBC10{ BC8 BC4 BC7} vd Fc} vd}


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

static void Test_S19844C1()
{
  extern Class_Descriptor cd_S19844C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19844C1, buf);
    S19844C1 *dp, &lv = *(dp=new (buf) S19844C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19844C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19844C1)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19844C1");
    /*is_ambiguous_... S19844C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19844C3*), 0, "S19844C1");
    /*is_ambiguous_... S19844C1::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19844C9*), 0, "S19844C1");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C18*)(S19844C9*)(S19844C3*), 0, "S19844C1");
    check_base_class_offset(lv, (S19490C12*)(S19844C6*), 0, "S19844C1");
    /*is_ambiguous_... S19844C1::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C12*)(S19844C9*), 0, "S19844C1");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C12*)(S19844C9*)(S19844C3*), 0, "S19844C1");
    check_base_class_offset(lv, (S19844C6*)(S19844C5*), ABISELECT(56,28), "S19844C1");
    /*is_ambiguous_... S19844C5::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C5*), ABISELECT(32,16), "S19844C1");
    /*is_ambiguous_... S19844C1::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C9*), ABISELECT(88,44), "S19844C1");
    check_base_class_offset(lv, (S19844C9*)(S19844C5*), ABISELECT(80,40), "S19844C1");
    check_base_class_offset(lv, (S19844C5*)(S19844C3*), ABISELECT(24,12), "S19844C1");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C9*)(S19844C3*), ABISELECT(8,4), "S19844C1");
    /*is_ambiguous_... S19844C3::S19844C9 */ AMB_check_base_class_offset(lv, (S19844C9*)(S19844C3*), 0, "S19844C1");
    /*is_ambiguous_... S19844C3::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S19844C3*), ABISELECT(96,48), "S19844C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S19844C10*), ABISELECT(104,52), "S19844C1");
    check_base_class_offset(lv, (S19490C18*)(S19844C10*), ABISELECT(104,52), "S19844C1");
    check_base_class_offset(lv, (S19490C12*)(S19844C10*), ABISELECT(104,52), "S19844C1");
    check_base_class_offset(lv, (S19844C10*)(S19844C3*), ABISELECT(104,52), "S19844C1");
    check_base_class_offset(lv, (S19844C3*), 0, "S19844C1");
    test_class_info(&lv, &cd_S19844C1);
    dp->~S19844C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19844C1(Test_S19844C1, "S19844C1", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S19844C1C1Ev();
extern void _ZN8S19844C1D2Ev();
Name_Map name_map_S19844C1[] = {
  NSPAIR(_ZN8S19844C1C1Ev),
  NSPAIR(_ZN8S19844C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19844C6;
extern VTBL_ENTRY _ZTI8S19844C6[];
extern  VTBL_ENTRY _ZTV8S19844C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C6[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19844C9;
extern VTBL_ENTRY _ZTI8S19844C9[];
extern  VTBL_ENTRY _ZTV8S19844C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C9[];
extern Class_Descriptor cd_S19844C5;
extern VTBL_ENTRY _ZTI8S19844C5[];
extern  VTBL_ENTRY _ZTV8S19844C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C5[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19844C9;
extern VTBL_ENTRY _ZTI8S19844C9[];
extern  VTBL_ENTRY _ZTV8S19844C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C9[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19844C10;
extern VTBL_ENTRY _ZTI9S19844C10[];
extern Class_Descriptor cd_S19844C3;
extern VTBL_ENTRY _ZTI8S19844C3[];
extern  VTBL_ENTRY _ZTV8S19844C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C3[];
static Base_Class bases_S19844C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19844C6,    ABISELECT(56,28), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19844C9,    ABISELECT(80,40), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //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
    7, //immediately_derived
  0, 1},
  {&cd_S19844C5,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19844C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    15, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    14, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    14, //immediately_derived
  0, 0},
  {&cd_S19490C12,    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
    14, //immediately_derived
  0, 0},
  {&cd_S19844C10,    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, 1},
  {&cd_S19844C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19844C1[];
extern void _ZN8S19844C1D1Ev();
extern void _ZN8S19844C1D0Ev();
static  VTBL_ENTRY vtc_S19844C1[] = {
  0,
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C1[0]),
  (VTBL_ENTRY)&_ZN8S19844C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19844C1D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19844C1[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19844C1[0]),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19844C1[0]),
};
extern VTBL_ENTRY _ZTV8S19844C1[];
extern void _ZN8S19844C3D1Ev();
extern void _ZN8S19844C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19844C3__8S19844C1[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
  (VTBL_ENTRY)&_ZN8S19844C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19844C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19844C98S19844C3__A1__8S19844C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C5__8S19844C3__8S19844C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C6__8S19844C3__8S19844C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C9__8S19844C3__8S19844C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19844C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C5__8S19844C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C6__8S19844C5__8S19844C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C9__8S19844C5__8S19844C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19844C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C6__8S19844C1[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19844C9__8S19844C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19844C9[0]),
};
static  VTT_ENTRY vtt_S19844C1[] = {
  {&(_ZTV8S19844C1[10]),  10,25},
  {&(_tg__ZTV8S19844C3__8S19844C1[9]),  9,11},
  {&(_tg__ZTV8S19844C98S19844C3__A1__8S19844C1[4]),  4,4},
  {&(_tg__ZTV8S19844C5__8S19844C3__8S19844C1[6]),  6,6},
  {&(_tg__ZTV8S19844C6__8S19844C3__8S19844C1[3]),  3,3},
  {&(_tg__ZTV8S19844C9__8S19844C3__8S19844C1[4]),  4,4},
  {&(_ZTV8S19844C1[18]),  18,25},
  {&(_ZTV8S19844C1[21]),  21,25},
  {&(_ZTV8S19844C1[25]),  25,25},
  {&(_tg__ZTV8S19844C5__8S19844C1[6]),  6,6},
  {&(_tg__ZTV8S19844C6__8S19844C5__8S19844C1[3]),  3,3},
  {&(_tg__ZTV8S19844C9__8S19844C5__8S19844C1[4]),  4,4},
  {&(_tg__ZTV8S19844C6__8S19844C1[3]),  3,3},
  {&(_tg__ZTV8S19844C9__8S19844C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19844C1[];
extern  VTBL_ENTRY _ZTV8S19844C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19844C1[];
Class_Descriptor cd_S19844C1 = {  "S19844C1", // class name
  bases_S19844C1, 16,
  &(vtc_S19844C1[0]), // expected_vtbl_contents
  &(vtt_S19844C1[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S19844C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19844C1),25, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19844C1),14, //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  S20752C5  : virtual S19490C18 {
  void *s20752c5f0[2];
  ~S20752C5(); // tgen
  S20752C5(); // tgen
};
//SIG(-1 S20752C5) C1{ VBC2{ m} Fp[2]}


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

static void Test_S20752C5()
{
  extern Class_Descriptor cd_S20752C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20752C5, buf);
    S20752C5 *dp, &lv = *(dp=new (buf) S20752C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20752C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20752C5)");
    check_base_class_offset(lv, (S19490C18*), 0, "S20752C5");
    check_field_offset(lv, s20752c5f0, ABISELECT(8,4), "S20752C5.s20752c5f0");
    test_class_info(&lv, &cd_S20752C5);
    dp->~S20752C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20752C5(Test_S20752C5, "S20752C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20752C5C1Ev();
extern void _ZN8S20752C5D1Ev();
Name_Map name_map_S20752C5[] = {
  NSPAIR(_ZN8S20752C5C1Ev),
  NSPAIR(_ZN8S20752C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S20752C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20752C5[];
static  VTBL_ENTRY vtc_S20752C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C5[0]),
};
extern VTBL_ENTRY _ZTV8S20752C5[];
static  VTT_ENTRY vtt_S20752C5[] = {
  {&(_ZTV8S20752C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20752C5[];
extern  VTBL_ENTRY _ZTV8S20752C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C5[];
Class_Descriptor cd_S20752C5 = {  "S20752C5", // class name
  bases_S20752C5, 1,
  &(vtc_S20752C5[0]), // expected_vtbl_contents
  &(vtt_S20752C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20752C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20752C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20752C5),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  S20752C8  : S19490C10_nt , virtual S19490C18 , virtual S19490C26 {
  ~S20752C8(); // tgen
  S20752C8(); // tgen
};
//SIG(-1 S20752C8) C1{ BC2{ m Fp} VBC3{ m} VBC4{ m}}


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

static void Test_S20752C8()
{
  extern Class_Descriptor cd_S20752C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20752C8, buf);
    S20752C8 *dp, &lv = *(dp=new (buf) S20752C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20752C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20752C8)");
    check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S20752C8");
    check_base_class_offset(lv, (S19490C18*), 0, "S20752C8");
    check_base_class_offset(lv, (S19490C26*), 0, "S20752C8");
    test_class_info(&lv, &cd_S20752C8);
    dp->~S20752C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20752C8(Test_S20752C8, "S20752C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20752C8C1Ev();
extern void _ZN8S20752C8D1Ev();
Name_Map name_map_S20752C8[] = {
  NSPAIR(_ZN8S20752C8C1Ev),
  NSPAIR(_ZN8S20752C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S20752C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20752C8[];
static  VTBL_ENTRY vtc_S20752C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C8[0]),
};
extern VTBL_ENTRY _ZTV8S20752C8[];
static  VTT_ENTRY vtt_S20752C8[] = {
  {&(_ZTV8S20752C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S20752C8[];
extern  VTBL_ENTRY _ZTV8S20752C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C8[];
Class_Descriptor cd_S20752C8 = {  "S20752C8", // class name
  bases_S20752C8, 3,
  &(vtc_S20752C8[0]), // expected_vtbl_contents
  &(vtt_S20752C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20752C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20752C8),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20752C8),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  S20752C4  : virtual S20752C5 , S19490C10_nt , virtual S20752C8 {
  ::S20752C8 s20752c4f0;
  ~S20752C4(); // tgen
  S20752C4(); // tgen
};
//SIG(-1 S20752C4) C1{ VBC2{ VBC3{ m} Fp[2]} BC4{ m Fp} VBC5{ BC4 VBC3 VBC6{ m}} FC5}


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

static void Test_S20752C4()
{
  extern Class_Descriptor cd_S20752C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20752C4, buf);
    S20752C4 *dp, &lv = *(dp=new (buf) S20752C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20752C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20752C4)");
    check_base_class_offset(lv, (S19490C18*)(S20752C5*), 0, "S20752C4");
    check_base_class_offset(lv, (S19490C18*)(S20752C8*), 0, "S20752C4");
    check_base_class_offset(lv, (S20752C5*), ABISELECT(32,16), "S20752C4");
    /*is_ambiguous_... S20752C4::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S20752C4");
    check_base_class_offset(lv, (S19490C10_nt*)(S20752C8*), ABISELECT(64,32), "S20752C4");
    check_base_class_offset(lv, (S19490C26*)(S20752C8*), 0, "S20752C4");
    check_base_class_offset(lv, (S20752C8*), ABISELECT(56,28), "S20752C4");
    check_field_offset(lv, s20752c4f0, ABISELECT(16,8), "S20752C4.s20752c4f0");
    test_class_info(&lv, &cd_S20752C4);
    dp->~S20752C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20752C4(Test_S20752C4, "S20752C4", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S20752C4C1Ev();
extern void _ZN8S20752C4D1Ev();
Name_Map name_map_S20752C4[] = {
  NSPAIR(_ZN8S20752C4C1Ev),
  NSPAIR(_ZN8S20752C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S20752C5;
extern VTBL_ENTRY _ZTI8S20752C5[];
extern  VTBL_ENTRY _ZTV8S20752C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C5[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20752C8;
extern VTBL_ENTRY _ZTI8S20752C8[];
extern  VTBL_ENTRY _ZTV8S20752C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C8[];
static Base_Class bases_S20752C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20752C5,    ABISELECT(32,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20752C8,    ABISELECT(56,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20752C4[];
static  VTBL_ENTRY vtc_S20752C4[] = {
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
extern VTBL_ENTRY _ZTV8S20752C4[];
static  VTBL_ENTRY _tg__ZTV8S20752C5__8S20752C4[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C8__8S20752C4[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C8[0]),
};
static  VTT_ENTRY vtt_S20752C4[] = {
  {&(_ZTV8S20752C4[6]),  6,13},
  {&(_ZTV8S20752C4[9]),  9,13},
  {&(_ZTV8S20752C4[13]),  13,13},
  {&(_tg__ZTV8S20752C5__8S20752C4[3]),  3,3},
  {&(_tg__ZTV8S20752C8__8S20752C4[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S20752C4[];
extern  VTBL_ENTRY _ZTV8S20752C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C4[];
Class_Descriptor cd_S20752C4 = {  "S20752C4", // class name
  bases_S20752C4, 6,
  &(vtc_S20752C4[0]), // expected_vtbl_contents
  &(vtt_S20752C4[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S20752C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20752C4),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20752C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20752C9  : S19490C10_nt , S19490C26 , S19490C18 {
};
//SIG(-1 S20752C9) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S20752C9()
{
  extern Class_Descriptor cd_S20752C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20752C9, buf);
    S20752C9 &lv = *(new (buf) S20752C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20752C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20752C9)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S20752C9");
    check_base_class_offset(lv, (S19490C26*), 0, "S20752C9");
    check_base_class_offset(lv, (S19490C18*), 0, "S20752C9");
    test_class_info(&lv, &cd_S20752C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20752C9(Test_S20752C9, "S20752C9", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S20752C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20752C9[];
Class_Descriptor cd_S20752C9 = {  "S20752C9", // class name
  bases_S20752C9, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20752C9),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20752C2  : virtual S19490C26 , virtual S20752C4 , S20752C8 , virtual S19490C10_nt , virtual S20752C9 {
  char s20752c2f0;
  virtual  ~S20752C2(); // _ZN8S20752C2D2Ev
  S20752C2(); // tgen
};
//SIG(-1 S20752C2) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ m} Fp[2]} BC6{ m Fp} VBC7{ BC6 VBC5 VBC2} FC7} BC7 VBC6 VBC8{ BC6 BC2 BC5} vd Fc}


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

static void Test_S20752C2()
{
  extern Class_Descriptor cd_S20752C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S20752C2, buf);
    S20752C2 *dp, &lv = *(dp=new (buf) S20752C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S20752C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20752C2)");
    /*is_ambiguous_... S20752C2::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S20752C8*), 0, "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S20752C8*), 0, "S20752C2");
    check_base_class_offset(lv, (S19490C18*)(S20752C5*), 0, "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C18*)(S20752C8*), 0, "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C18*)(S20752C8*), 0, "S20752C2");
    check_base_class_offset(lv, (S20752C5*)(S20752C4*), ABISELECT(56,28), "S20752C2");
    /*is_ambiguous_... S20752C4::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C4*), ABISELECT(32,16), "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C8*), ABISELECT(88,44), "S20752C2");
    check_base_class_offset(lv, (S20752C8*)(S20752C4*), ABISELECT(80,40), "S20752C2");
    check_base_class_offset(lv, (S20752C4*), ABISELECT(24,12), "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C8*), ABISELECT(8,4), "S20752C2");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S20752C8*), 0, "S20752C2");
    /*is_ambiguous_... S20752C2::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(96,48), "S20752C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S20752C9*), ABISELECT(104,52), "S20752C2");
    check_base_class_offset(lv, (S19490C26*)(S20752C9*), ABISELECT(104,52), "S20752C2");
    check_base_class_offset(lv, (S19490C18*)(S20752C9*), ABISELECT(104,52), "S20752C2");
    check_base_class_offset(lv, (S20752C9*), ABISELECT(104,52), "S20752C2");
    check_field_offset(lv, s20752c2f0, ABISELECT(16,8), "S20752C2.s20752c2f0");
    test_class_info(&lv, &cd_S20752C2);
    dp->~S20752C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20752C2(Test_S20752C2, "S20752C2", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S20752C2C1Ev();
extern void _ZN8S20752C2D2Ev();
Name_Map name_map_S20752C2[] = {
  NSPAIR(_ZN8S20752C2C1Ev),
  NSPAIR(_ZN8S20752C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S20752C5;
extern VTBL_ENTRY _ZTI8S20752C5[];
extern  VTBL_ENTRY _ZTV8S20752C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C5[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S20752C8;
extern VTBL_ENTRY _ZTI8S20752C8[];
extern  VTBL_ENTRY _ZTV8S20752C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C8[];
extern Class_Descriptor cd_S20752C4;
extern VTBL_ENTRY _ZTI8S20752C4[];
extern  VTBL_ENTRY _ZTV8S20752C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C4[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S20752C8;
extern VTBL_ENTRY _ZTI8S20752C8[];
extern  VTBL_ENTRY _ZTV8S20752C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S20752C9;
extern VTBL_ENTRY _ZTI8S20752C9[];
static Base_Class bases_S20752C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20752C5,    ABISELECT(56,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S20752C8,    ABISELECT(80,40), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20752C4,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S20752C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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_S19490C18,    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_S20752C9,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20752C2[];
extern void _ZN8S20752C2D1Ev();
extern void _ZN8S20752C2D0Ev();
static  VTBL_ENTRY vtc_S20752C2[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
  (VTBL_ENTRY)&_ZN8S20752C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20752C2D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
};
extern VTBL_ENTRY _ZTV8S20752C2[];
static  VTBL_ENTRY _tg__ZTV8S20752C8__A__8S20752C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C4__8S20752C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(56,28),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C5__8S20752C4__8S20752C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C8__8S20752C4__8S20752C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C5__8S20752C2[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C8__8S20752C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C8[0]),
};
static  VTT_ENTRY vtt_S20752C2[] = {
  {&(_ZTV8S20752C2[9]),  9,24},
  {&(_tg__ZTV8S20752C8__A__8S20752C2[4]),  4,4},
  {&(_ZTV8S20752C2[17]),  17,24},
  {&(_ZTV8S20752C2[20]),  20,24},
  {&(_ZTV8S20752C2[24]),  24,24},
  {&(_tg__ZTV8S20752C4__8S20752C2[6]),  6,6},
  {&(_tg__ZTV8S20752C5__8S20752C4__8S20752C2[3]),  3,3},
  {&(_tg__ZTV8S20752C8__8S20752C4__8S20752C2[4]),  4,4},
  {&(_tg__ZTV8S20752C5__8S20752C2[3]),  3,3},
  {&(_tg__ZTV8S20752C8__8S20752C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S20752C2[];
extern  VTBL_ENTRY _ZTV8S20752C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C2[];
Class_Descriptor cd_S20752C2 = {  "S20752C2", // class name
  bases_S20752C2, 14,
  &(vtc_S20752C2[0]), // expected_vtbl_contents
  &(vtt_S20752C2[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S20752C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20752C2),24, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20752C2),10, //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  S20752C1  : virtual S20752C2 {
  ~S20752C1(); // tgen
  S20752C1(); // tgen
};
//SIG(1 S20752C1) C1{ VBC2{ VBC3{ m} VBC4{ VBC5{ VBC6{ m} Fp[2]} BC7{ m Fp} VBC8{ BC7 VBC6 VBC3} FC8} BC8 VBC7 VBC9{ BC7 BC3 BC6} vd Fc}}


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

static void Test_S20752C1()
{
  extern Class_Descriptor cd_S20752C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[16];
    init_test(&cd_S20752C1, buf);
    S20752C1 *dp, &lv = *(dp=new (buf) S20752C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S20752C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20752C1)");
    /*is_ambiguous_... S20752C2::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S20752C2*), 0, "S20752C1");
    /*is_ambiguous_... S20752C1::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S20752C8*), 0, "S20752C1");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C26*)(S20752C8*)(S20752C2*), 0, "S20752C1");
    check_base_class_offset(lv, (S19490C18*)(S20752C5*), 0, "S20752C1");
    /*is_ambiguous_... S20752C1::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C18*)(S20752C8*), 0, "S20752C1");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C18*)(S20752C8*)(S20752C2*), 0, "S20752C1");
    check_base_class_offset(lv, (S20752C5*)(S20752C4*), ABISELECT(64,32), "S20752C1");
    /*is_ambiguous_... S20752C4::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C4*), ABISELECT(40,20), "S20752C1");
    /*is_ambiguous_... S20752C1::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C8*), ABISELECT(96,48), "S20752C1");
    check_base_class_offset(lv, (S20752C8*)(S20752C4*), ABISELECT(88,44), "S20752C1");
    check_base_class_offset(lv, (S20752C4*)(S20752C2*), ABISELECT(32,16), "S20752C1");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C8*)(S20752C2*), ABISELECT(16,8), "S20752C1");
    /*is_ambiguous_... S20752C2::S20752C8 */ AMB_check_base_class_offset(lv, (S20752C8*)(S20752C2*), ABISELECT(8,4), "S20752C1");
    /*is_ambiguous_... S20752C2::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S20752C2*), ABISELECT(104,52), "S20752C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S20752C9*), ABISELECT(112,56), "S20752C1");
    check_base_class_offset(lv, (S19490C26*)(S20752C9*), ABISELECT(112,56), "S20752C1");
    check_base_class_offset(lv, (S19490C18*)(S20752C9*), ABISELECT(112,56), "S20752C1");
    check_base_class_offset(lv, (S20752C9*)(S20752C2*), ABISELECT(112,56), "S20752C1");
    check_base_class_offset(lv, (S20752C2*), ABISELECT(8,4), "S20752C1");
    test_class_info(&lv, &cd_S20752C1);
    dp->~S20752C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20752C1(Test_S20752C1, "S20752C1", ABISELECT(120,60));

#else // __cplusplus

extern void _ZN8S20752C1C1Ev();
extern void _ZN8S20752C1D1Ev();
Name_Map name_map_S20752C1[] = {
  NSPAIR(_ZN8S20752C1C1Ev),
  NSPAIR(_ZN8S20752C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S20752C5;
extern VTBL_ENTRY _ZTI8S20752C5[];
extern  VTBL_ENTRY _ZTV8S20752C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C5[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S20752C8;
extern VTBL_ENTRY _ZTI8S20752C8[];
extern  VTBL_ENTRY _ZTV8S20752C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C8[];
extern Class_Descriptor cd_S20752C4;
extern VTBL_ENTRY _ZTI8S20752C4[];
extern  VTBL_ENTRY _ZTV8S20752C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C4[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S20752C8;
extern VTBL_ENTRY _ZTI8S20752C8[];
extern  VTBL_ENTRY _ZTV8S20752C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C8[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S20752C9;
extern VTBL_ENTRY _ZTI8S20752C9[];
extern Class_Descriptor cd_S20752C2;
extern VTBL_ENTRY _ZTI8S20752C2[];
extern  VTBL_ENTRY _ZTV8S20752C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C2[];
static Base_Class bases_S20752C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20752C5,    ABISELECT(64,32), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S20752C8,    ABISELECT(88,44), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20752C4,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S20752C8,    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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    14, //immediately_derived
  0, 1},
  {&cd_S19490C10_nt,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20752C9,    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, 1},
  {&cd_S20752C2,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20752C1[];
extern void _ZN8S20752C1D1Ev();
extern void _ZN8S20752C1D0Ev();
extern void ABISELECT(_ZTv0_n80_N8S20752C1D1Ev,_ZTv0_n40_N8S20752C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20752C1D1Ev,_ZThn4_N8S20752C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20752C1D0Ev,_ZTv0_n40_N8S20752C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20752C1D0Ev,_ZThn4_N8S20752C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20752C1[] = {
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(88,44),
  0,
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C1[0]),
  (VTBL_ENTRY)&_ZN8S20752C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20752C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20752C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20752C1D1Ev,_ZTv0_n40_N8S20752C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20752C1D0Ev,_ZTv0_n40_N8S20752C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20752C1[0]),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20752C1[0]),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20752C1[0]),
};
extern VTBL_ENTRY _ZTV8S20752C1[];
extern void _ZN8S20752C2D1Ev();
extern void _ZN8S20752C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20752C2__8S20752C1[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
  (VTBL_ENTRY)&_ZN8S20752C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20752C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20752C88S20752C2__A1__8S20752C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C4__8S20752C2__8S20752C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C5__8S20752C2__8S20752C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C8__8S20752C2__8S20752C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20752C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C4__8S20752C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(56,28),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C5__8S20752C4__8S20752C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C8__8S20752C4__8S20752C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20752C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C5__8S20752C1[] = {
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20752C8__8S20752C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20752C8[0]),
};
static  VTT_ENTRY vtt_S20752C1[] = {
  {&(_ZTV8S20752C1[10]),  10,37},
  {&(_ZTV8S20752C1[22]),  22,37},
  {&(_ZTV8S20752C1[30]),  30,37},
  {&(_ZTV8S20752C1[33]),  33,37},
  {&(_ZTV8S20752C1[37]),  37,37},
  {&(_tg__ZTV8S20752C2__8S20752C1[9]),  9,11},
  {&(_tg__ZTV8S20752C88S20752C2__A1__8S20752C1[4]),  4,4},
  {&(_tg__ZTV8S20752C4__8S20752C2__8S20752C1[6]),  6,6},
  {&(_tg__ZTV8S20752C5__8S20752C2__8S20752C1[3]),  3,3},
  {&(_tg__ZTV8S20752C8__8S20752C2__8S20752C1[4]),  4,4},
  {&(_tg__ZTV8S20752C4__8S20752C1[6]),  6,6},
  {&(_tg__ZTV8S20752C5__8S20752C4__8S20752C1[3]),  3,3},
  {&(_tg__ZTV8S20752C8__8S20752C4__8S20752C1[4]),  4,4},
  {&(_tg__ZTV8S20752C5__8S20752C1[3]),  3,3},
  {&(_tg__ZTV8S20752C8__8S20752C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S20752C1[];
extern  VTBL_ENTRY _ZTV8S20752C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20752C1[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20752C1D0Ev,_ZTv0_n40_N8S20752C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20752C1D0Ev,_ZThn4_N8S20752C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20752C1D1Ev,_ZTv0_n40_N8S20752C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20752C1D1Ev,_ZThn4_N8S20752C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20752C1 = {  "S20752C1", // class name
  bases_S20752C1, 15,
  &(vtc_S20752C1[0]), // expected_vtbl_contents
  &(vtt_S20752C1[0]), // expected_vtt_contents
  ABISELECT(120,60), // object size
  NSPAIRA(_ZTI8S20752C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20752C1),37, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20752C1),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S14964C2  {
  char s14964c2f0[16];
  short s14964c2f1[8];
  int s14964c2f2[4];
  __tsi64 s14964c2f3[2];
};
//SIG(1 S14964C2) U1{ Fc[16] Fs[8] Fi[4] FL[2]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S14964C1  {
  ::S14964C2 s14964c1f0[128];
  int s14964c1f1;
  ::S14964C2 s14964c1f2;
  int s14964c1f3;
  int s14964c1f4;
  __tsi64 s14964c1f5;
  int s14964c1f6;
  int s14964c1f7;
  int s14964c1f8[4];
  int s14964c1f9;
  __tsi64 s14964c1f10[96];
};
//SIG(1 S14964C1) C1{ FU2{ Fc[16] Fs[8] Fi[4] FL[2]}[128] Fi FU2 Fi Fi FL Fi Fi Fi[4] Fi FL[96]}



static void Test_S14964C1()
{
  {
    init_simple_test("S14964C1");
    S14964C1 lv;
    check2(sizeof(lv), ABISELECT(2888,2880), "sizeof(S14964C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14964C1)");
    check_field_offset(lv, s14964c1f0, 0, "S14964C1.s14964c1f0");
    check_field_offset(lv, s14964c1f1, 2048, "S14964C1.s14964c1f1");
    check_field_offset(lv, s14964c1f2, ABISELECT(2056,2052), "S14964C1.s14964c1f2");
    check_field_offset(lv, s14964c1f3, ABISELECT(2072,2068), "S14964C1.s14964c1f3");
    check_field_offset(lv, s14964c1f4, ABISELECT(2076,2072), "S14964C1.s14964c1f4");
    check_field_offset(lv, s14964c1f5, ABISELECT(2080,2076), "S14964C1.s14964c1f5");
    check_field_offset(lv, s14964c1f6, ABISELECT(2088,2084), "S14964C1.s14964c1f6");
    check_field_offset(lv, s14964c1f7, ABISELECT(2092,2088), "S14964C1.s14964c1f7");
    check_field_offset(lv, s14964c1f8, ABISELECT(2096,2092), "S14964C1.s14964c1f8");
    check_field_offset(lv, s14964c1f9, ABISELECT(2112,2108), "S14964C1.s14964c1f9");
    check_field_offset(lv, s14964c1f10, ABISELECT(2120,2112), "S14964C1.s14964c1f10");
  }
}
static Arrange_To_Call_Me vS14964C1(Test_S14964C1, "S14964C1", ABISELECT(2888,2880));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16432C3_nt  {
  void *s16432c3f0;
  void  mf16432c3(); // _ZN11S16432C3_nt9mf16432c3Ev
};
//SIG(-1 S16432C3_nt) C1{ m Fp}


void  S16432C3_nt ::mf16432c3(){}

//skip512 S16432C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16432C5  {
  void *s16432c5f0;
  void  mf16432c5(); // _ZN8S16432C59mf16432c5Ev
};
//SIG(-1 S16432C5) C1{ m Fp}


void  S16432C5 ::mf16432c5(){}

static void Test_S16432C5()
{
  {
    init_simple_test("S16432C5");
    S16432C5 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S16432C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16432C5)");
    check_field_offset(lv, s16432c5f0, 0, "S16432C5.s16432c5f0");
  }
}
static Arrange_To_Call_Me vS16432C5(Test_S16432C5, "S16432C5", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16432C7  {
  void *s16432c7f0;
  void  mf16432c7(); // _ZN8S16432C79mf16432c7Ev
};
//SIG(-1 S16432C7) C1{ m Fp}


void  S16432C7 ::mf16432c7(){}

static void Test_S16432C7()
{
  {
    init_simple_test("S16432C7");
    S16432C7 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S16432C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16432C7)");
    check_field_offset(lv, s16432c7f0, 0, "S16432C7.s16432c7f0");
  }
}
static Arrange_To_Call_Me vS16432C7(Test_S16432C7, "S16432C7", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16432C9_nt  : S7283C5_nt {
};
//SIG(-1 S16432C9_nt) C1{ BC2{ m Fp Fi}}



//skip512 S16432C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S7283C5_nt;
extern VTBL_ENTRY _ZTI10S7283C5_nt[];
static Base_Class bases_S16432C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7283C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S16432C8_nt  {
  int s16432c8f0;
  ::S16432C9_nt s16432c8f1;
  void  mf16432c8(); // _ZN11S16432C8_nt9mf16432c8Ev
};
//SIG(-1 S16432C8_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S16432C8_nt ::mf16432c8(){}

//skip512 S16432C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16432C1  {
  ::S19490C10_nt s16432c1f0;
  ::S16432C3_nt s16432c1f1;
  ::S16432C3_nt s16432c1f2;
  void *s16432c1f3[6];
  ::S16432C5 s16432c1f4;
  ::S16432C5 s16432c1f5;
  ::S16432C7 s16432c1f6;
  void *s16432c1f7[2];
  ::S16432C8_nt s16432c1f8;
  void  mf16432c1(); // _ZN8S16432C19mf16432c1Ev
};
//SIG(1 S16432C1) C1{ m FC2{ m Fp} FC3{ m Fp} FC3 Fp[6] FC4{ m Fp} FC4 FC5{ m Fp} Fp[2] FC6{ m Fi FC7{ BC8{ m Fp Fi}}}}


void  S16432C1 ::mf16432c1(){}

static void Test_S16432C1()
{
  {
    init_simple_test("S16432C1");
    S16432C1 lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S16432C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16432C1)");
    check_field_offset(lv, s16432c1f0, 0, "S16432C1.s16432c1f0");
    check_field_offset(lv, s16432c1f1, ABISELECT(8,4), "S16432C1.s16432c1f1");
    check_field_offset(lv, s16432c1f2, ABISELECT(16,8), "S16432C1.s16432c1f2");
    check_field_offset(lv, s16432c1f3, ABISELECT(24,12), "S16432C1.s16432c1f3");
    check_field_offset(lv, s16432c1f4, ABISELECT(72,36), "S16432C1.s16432c1f4");
    check_field_offset(lv, s16432c1f5, ABISELECT(80,40), "S16432C1.s16432c1f5");
    check_field_offset(lv, s16432c1f6, ABISELECT(88,44), "S16432C1.s16432c1f6");
    check_field_offset(lv, s16432c1f7, ABISELECT(96,48), "S16432C1.s16432c1f7");
    check_field_offset(lv, s16432c1f8, ABISELECT(112,56), "S16432C1.s16432c1f8");
  }
}
static Arrange_To_Call_Me vS16432C1(Test_S16432C1, "S16432C1", ABISELECT(136,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8120C1  : S2242C7_nt {
  int s8120c1f0;
  char s8120c1f1;
  int s8120c1f2[2];
  ::S2293C5_nt s8120c1f3;
  ::S2294C7_nt s8120c1f4;
  ::S5072C7_nt s8120c1f5;
  int s8120c1f6;
  __tsi64 s8120c1f7;
  int s8120c1f8;
  virtual  ~S8120C1(); // _ZN7S8120C1D1Ev
  S8120C1(); // tgen
};
//SIG(1 S8120C1) C1{ BC2{ vd m Fi} vd Fi Fc Fi[2] FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ FL[4]}} FC7{ m Fp FC8{ Fi[4]}} Fi FL Fi}


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

static void Test_S8120C1()
{
  extern Class_Descriptor cd_S8120C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S8120C1, buf);
    S8120C1 *dp, &lv = *(dp=new (buf) S8120C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S8120C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8120C1)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S8120C1");
    check_field_offset(lv, s8120c1f0, ABISELECT(12,8), "S8120C1.s8120c1f0");
    check_field_offset(lv, s8120c1f1, ABISELECT(16,12), "S8120C1.s8120c1f1");
    check_field_offset(lv, s8120c1f2, ABISELECT(20,16), "S8120C1.s8120c1f2");
    check_field_offset(lv, s8120c1f3, ABISELECT(32,24), "S8120C1.s8120c1f3");
    check_field_offset(lv, s8120c1f4, ABISELECT(56,40), "S8120C1.s8120c1f4");
    check_field_offset(lv, s8120c1f5, ABISELECT(88,72), "S8120C1.s8120c1f5");
    check_field_offset(lv, s8120c1f6, ABISELECT(112,92), "S8120C1.s8120c1f6");
    check_field_offset(lv, s8120c1f7, ABISELECT(120,96), "S8120C1.s8120c1f7");
    check_field_offset(lv, s8120c1f8, ABISELECT(128,104), "S8120C1.s8120c1f8");
    test_class_info(&lv, &cd_S8120C1);
    dp->~S8120C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8120C1(Test_S8120C1, "S8120C1", ABISELECT(136,108));

#else // __cplusplus

extern void _ZN7S8120C1C1Ev();
extern void _ZN7S8120C1D1Ev();
Name_Map name_map_S8120C1[] = {
  NSPAIR(_ZN7S8120C1C1Ev),
  NSPAIR(_ZN7S8120C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S8120C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8120C1[];
extern void _ZN7S8120C1D1Ev();
extern void _ZN7S8120C1D0Ev();
static  VTBL_ENTRY vtc_S8120C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8120C1[0]),
  (VTBL_ENTRY)&_ZN7S8120C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8120C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8120C1[];
extern  VTBL_ENTRY _ZTV7S8120C1[];
Class_Descriptor cd_S8120C1 = {  "S8120C1", // class name
  bases_S8120C1, 1,
  &(vtc_S8120C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,108), // object size
  NSPAIRA(_ZTI7S8120C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8120C1),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  S6744C2_nt  {
  virtual  ~S6744C2_nt(); // _ZN10S6744C2_ntD1Ev
  virtual void  v3(); // _ZN10S6744C2_nt2v3Ev
  virtual void  v4(); // _ZN10S6744C2_nt2v4Ev
  S6744C2_nt(); // tgen
};
//SIG(-1 S6744C2_nt) C1{ vd v1 v2}


 S6744C2_nt ::~S6744C2_nt(){ note_dtor("S6744C2_nt", this);}
void  S6744C2_nt ::v3(){vfunc_called(this, "_ZN10S6744C2_nt2v3Ev");}
void  S6744C2_nt ::v4(){vfunc_called(this, "_ZN10S6744C2_nt2v4Ev");}
S6744C2_nt ::S6744C2_nt(){ note_ctor("S6744C2_nt", this);} // tgen

//skip512 S6744C2_nt

#else // __cplusplus

extern void _ZN10S6744C2_ntC1Ev();
extern void _ZN10S6744C2_ntD1Ev();
Name_Map name_map_S6744C2_nt[] = {
  NSPAIR(_ZN10S6744C2_ntC1Ev),
  NSPAIR(_ZN10S6744C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6744C2_nt[];
extern void _ZN10S6744C2_ntD1Ev();
extern void _ZN10S6744C2_ntD0Ev();
extern void _ZN10S6744C2_nt2v3Ev();
extern void _ZN10S6744C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S6744C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6744C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6744C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6744C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6744C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S6744C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S6744C2_nt[];
VTBL_ENTRY *P__ZTI10S6744C2_nt = _ZTI10S6744C2_nt; 
extern  VTBL_ENTRY _ZTV10S6744C2_nt[];
Class_Descriptor cd_S6744C2_nt = {  "S6744C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6744C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6744C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6744C2_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  S6744C4_nt  {
  ::S16385C7 s6744c4f0;
  int s6744c4f1;
  void  mf6744c4(); // _ZN10S6744C4_nt8mf6744c4Ev
};
//SIG(-1 S6744C4_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S6744C4_nt ::mf6744c4(){}

//skip512 S6744C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6744C8_nt  {
  __tsi64 s6744c8f0[2];
  void  mf6744c8(); // _ZN10S6744C8_nt8mf6744c8Ev
};
//SIG(-1 S6744C8_nt) C1{ m FL[2]}


void  S6744C8_nt ::mf6744c8(){}

//skip512 S6744C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6744C7_nt  {
  ::S6744C8_nt s6744c7f0;
  void  mf6744c7(); // _ZN10S6744C7_nt8mf6744c7Ev
};
//SIG(-1 S6744C7_nt) C1{ m FC2{ m FL[2]}}


void  S6744C7_nt ::mf6744c7(){}

//skip512 S6744C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6744C3  {
  void *s6744c3f0;
  ::S6744C4_nt s6744c3f1;
  ::S6744C4_nt s6744c3f2;
  ::S6744C7_nt s6744c3f3;
  int s6744c3f4[2];
  void *s6744c3f5[4];
  void  mf6744c3(); // _ZN7S6744C38mf6744c3Ev
};
//SIG(-1 S6744C3) C1{ m Fp FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC5{ m FC6{ m FL[2]}} Fi[2] Fp[4]}


void  S6744C3 ::mf6744c3(){}

static void Test_S6744C3()
{
  {
    init_simple_test("S6744C3");
    S6744C3 lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S6744C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6744C3)");
    check_field_offset(lv, s6744c3f0, 0, "S6744C3.s6744c3f0");
    check_field_offset(lv, s6744c3f1, ABISELECT(8,4), "S6744C3.s6744c3f1");
    check_field_offset(lv, s6744c3f2, ABISELECT(32,20), "S6744C3.s6744c3f2");
    check_field_offset(lv, s6744c3f3, ABISELECT(56,36), "S6744C3.s6744c3f3");
    check_field_offset(lv, s6744c3f4, ABISELECT(72,52), "S6744C3.s6744c3f4");
    check_field_offset(lv, s6744c3f5, ABISELECT(80,60), "S6744C3.s6744c3f5");
  }
}
static Arrange_To_Call_Me vS6744C3(Test_S6744C3, "S6744C3", ABISELECT(112,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6744C1  : S6744C2_nt {
  ::S6744C3 s6744c1f0;
  void *s6744c1f1;
  virtual void  v1(); // _ZN7S6744C12v1Ev
  virtual void  v2(); // _ZN7S6744C12v2Ev
  ~S6744C1(); // tgen
  S6744C1(); // tgen
};
//SIG(1 S6744C1) C1{ BC2{ vd v3 v4} v1 v2 FC3{ m Fp FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} FC4 FC7{ m FC8{ m FL[2]}} Fi[2] Fp[4]} Fp}


void  S6744C1 ::v1(){vfunc_called(this, "_ZN7S6744C12v1Ev");}
void  S6744C1 ::v2(){vfunc_called(this, "_ZN7S6744C12v2Ev");}
S6744C1 ::~S6744C1(){ note_dtor("S6744C1", this);} // tgen
S6744C1 ::S6744C1(){ note_ctor("S6744C1", this);} // tgen

static void Test_S6744C1()
{
  extern Class_Descriptor cd_S6744C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S6744C1, buf);
    S6744C1 *dp, &lv = *(dp=new (buf) S6744C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S6744C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6744C1)");
    check_base_class_offset(lv, (S6744C2_nt*), 0, "S6744C1");
    check_field_offset(lv, s6744c1f0, ABISELECT(8,4), "S6744C1.s6744c1f0");
    check_field_offset(lv, s6744c1f1, ABISELECT(120,80), "S6744C1.s6744c1f1");
    test_class_info(&lv, &cd_S6744C1);
    dp->~S6744C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6744C1(Test_S6744C1, "S6744C1", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S6744C1C1Ev();
extern void _ZN7S6744C1D1Ev();
Name_Map name_map_S6744C1[] = {
  NSPAIR(_ZN7S6744C1C1Ev),
  NSPAIR(_ZN7S6744C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6744C2_nt;
extern VTBL_ENTRY _ZTI10S6744C2_nt[];
extern  VTBL_ENTRY _ZTV10S6744C2_nt[];
static Base_Class bases_S6744C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6744C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6744C1[];
extern void _ZN7S6744C1D1Ev();
extern void _ZN7S6744C1D0Ev();
extern void _ZN10S6744C2_nt2v3Ev();
extern void _ZN10S6744C2_nt2v4Ev();
extern void _ZN7S6744C12v1Ev();
extern void _ZN7S6744C12v2Ev();
static  VTBL_ENTRY vtc_S6744C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6744C1[0]),
  (VTBL_ENTRY)&_ZN7S6744C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6744C1D0Ev,
  (VTBL_ENTRY)&_ZN10S6744C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S6744C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S6744C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6744C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6744C1[];
extern  VTBL_ENTRY _ZTV7S6744C1[];
Class_Descriptor cd_S6744C1 = {  "S6744C1", // class name
  bases_S6744C1, 1,
  &(vtc_S6744C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S6744C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6744C1),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  S13585C2  {
  int s13585c2f0[6];
  char s13585c2f1[32];
  int s13585c2f2[4];
};
//SIG(-1 S13585C2) C1{ Fi[6] Fc[32] Fi[4]}



static void Test_S13585C2()
{
  {
    init_simple_test("S13585C2");
    S13585C2 lv;
    check2(sizeof(lv), 72, "sizeof(S13585C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13585C2)");
    check_field_offset(lv, s13585c2f0, 0, "S13585C2.s13585c2f0");
    check_field_offset(lv, s13585c2f1, 24, "S13585C2.s13585c2f1");
    check_field_offset(lv, s13585c2f2, 56, "S13585C2.s13585c2f2");
  }
}
static Arrange_To_Call_Me vS13585C2(Test_S13585C2, "S13585C2", 72);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13585C1  {
  int s13585c1f0[6];
  void *s13585c1f1;
  int s13585c1f2[5];
  void *s13585c1f3[3];
  int s13585c1f4[5];
  void *s13585c1f5[5];
  int s13585c1f6;
  char s13585c1f7[32];
  int s13585c1f8;
  char s13585c1f9[16];
  int s13585c1f10;
  char s13585c1f11[48];
  long s13585c1f12[2];
  ::S13585C2 s13585c1f13;
};
//SIG(1 S13585C1) C1{ Fi[6] Fp Fi[5] Fp[3] Fi[5] Fp[5] Fi Fc[32] Fi Fc[16] Fi Fc[48] Fl[2] FC2{ Fi[6] Fc[32] Fi[4]}}



static void Test_S13585C1()
{
  {
    init_simple_test("S13585C1");
    S13585C1 lv;
    check2(sizeof(lv), ABISELECT(344,288), "sizeof(S13585C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13585C1)");
    check_field_offset(lv, s13585c1f0, 0, "S13585C1.s13585c1f0");
    check_field_offset(lv, s13585c1f1, 24, "S13585C1.s13585c1f1");
    check_field_offset(lv, s13585c1f2, ABISELECT(32,28), "S13585C1.s13585c1f2");
    check_field_offset(lv, s13585c1f3, ABISELECT(56,48), "S13585C1.s13585c1f3");
    check_field_offset(lv, s13585c1f4, ABISELECT(80,60), "S13585C1.s13585c1f4");
    check_field_offset(lv, s13585c1f5, ABISELECT(104,80), "S13585C1.s13585c1f5");
    check_field_offset(lv, s13585c1f6, ABISELECT(144,100), "S13585C1.s13585c1f6");
    check_field_offset(lv, s13585c1f7, ABISELECT(148,104), "S13585C1.s13585c1f7");
    check_field_offset(lv, s13585c1f8, ABISELECT(180,136), "S13585C1.s13585c1f8");
    check_field_offset(lv, s13585c1f9, ABISELECT(184,140), "S13585C1.s13585c1f9");
    check_field_offset(lv, s13585c1f10, ABISELECT(200,156), "S13585C1.s13585c1f10");
    check_field_offset(lv, s13585c1f11, ABISELECT(204,160), "S13585C1.s13585c1f11");
    check_field_offset(lv, s13585c1f12, ABISELECT(256,208), "S13585C1.s13585c1f12");
    check_field_offset(lv, s13585c1f13, ABISELECT(272,216), "S13585C1.s13585c1f13");
  }
}
static Arrange_To_Call_Me vS13585C1(Test_S13585C1, "S13585C1", ABISELECT(344,288));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7757C3  : virtual S19490C26 {
  void *s7757c3f0[2];
  ~S7757C3(); // tgen
  S7757C3(); // tgen
};
//SIG(-1 S7757C3) C1{ VBC2{ m} Fp[2]}


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

static void Test_S7757C3()
{
  extern Class_Descriptor cd_S7757C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7757C3, buf);
    S7757C3 *dp, &lv = *(dp=new (buf) S7757C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7757C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7757C3)");
    check_base_class_offset(lv, (S19490C26*), 0, "S7757C3");
    check_field_offset(lv, s7757c3f0, ABISELECT(8,4), "S7757C3.s7757c3f0");
    test_class_info(&lv, &cd_S7757C3);
    dp->~S7757C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7757C3(Test_S7757C3, "S7757C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7757C3C1Ev();
extern void _ZN7S7757C3D1Ev();
Name_Map name_map_S7757C3[] = {
  NSPAIR(_ZN7S7757C3C1Ev),
  NSPAIR(_ZN7S7757C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S7757C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7757C3[];
static  VTBL_ENTRY vtc_S7757C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C3[0]),
};
extern VTBL_ENTRY _ZTV7S7757C3[];
static  VTT_ENTRY vtt_S7757C3[] = {
  {&(_ZTV7S7757C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7757C3[];
extern  VTBL_ENTRY _ZTV7S7757C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C3[];
Class_Descriptor cd_S7757C3 = {  "S7757C3", // class name
  bases_S7757C3, 1,
  &(vtc_S7757C3[0]), // expected_vtbl_contents
  &(vtt_S7757C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7757C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7757C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7757C3),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  S7757C6  : S19490C10_nt , virtual S19490C26 , virtual S19490C18 {
  ~S7757C6(); // tgen
  S7757C6(); // tgen
};
//SIG(-1 S7757C6) C1{ BC2{ m Fp} VBC3{ m} VBC4{ m}}


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

static void Test_S7757C6()
{
  extern Class_Descriptor cd_S7757C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7757C6, buf);
    S7757C6 *dp, &lv = *(dp=new (buf) S7757C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7757C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7757C6)");
    check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S7757C6");
    check_base_class_offset(lv, (S19490C26*), 0, "S7757C6");
    check_base_class_offset(lv, (S19490C18*), 0, "S7757C6");
    test_class_info(&lv, &cd_S7757C6);
    dp->~S7757C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7757C6(Test_S7757C6, "S7757C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7757C6C1Ev();
extern void _ZN7S7757C6D1Ev();
Name_Map name_map_S7757C6[] = {
  NSPAIR(_ZN7S7757C6C1Ev),
  NSPAIR(_ZN7S7757C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S7757C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7757C6[];
static  VTBL_ENTRY vtc_S7757C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C6[0]),
};
extern VTBL_ENTRY _ZTV7S7757C6[];
static  VTT_ENTRY vtt_S7757C6[] = {
  {&(_ZTV7S7757C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7757C6[];
extern  VTBL_ENTRY _ZTV7S7757C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C6[];
Class_Descriptor cd_S7757C6 = {  "S7757C6", // class name
  bases_S7757C6, 3,
  &(vtc_S7757C6[0]), // expected_vtbl_contents
  &(vtt_S7757C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7757C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7757C6),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7757C6),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  S7757C2  : virtual S7757C3 , S19490C10_nt , virtual S7757C6 {
  ::S7757C6 s7757c2f0;
  ~S7757C2(); // tgen
  S7757C2(); // tgen
};
//SIG(-1 S7757C2) C1{ VBC2{ VBC3{ m} Fp[2]} BC4{ m Fp} VBC5{ BC4 VBC3 VBC6{ m}} FC5}


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

static void Test_S7757C2()
{
  extern Class_Descriptor cd_S7757C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S7757C2, buf);
    S7757C2 *dp, &lv = *(dp=new (buf) S7757C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S7757C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7757C2)");
    check_base_class_offset(lv, (S19490C26*)(S7757C3*), 0, "S7757C2");
    check_base_class_offset(lv, (S19490C26*)(S7757C6*), 0, "S7757C2");
    check_base_class_offset(lv, (S7757C3*), ABISELECT(32,16), "S7757C2");
    /*is_ambiguous_... S7757C2::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(8,4), "S7757C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S7757C6*), ABISELECT(64,32), "S7757C2");
    check_base_class_offset(lv, (S19490C18*)(S7757C6*), 0, "S7757C2");
    check_base_class_offset(lv, (S7757C6*), ABISELECT(56,28), "S7757C2");
    check_field_offset(lv, s7757c2f0, ABISELECT(16,8), "S7757C2.s7757c2f0");
    test_class_info(&lv, &cd_S7757C2);
    dp->~S7757C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7757C2(Test_S7757C2, "S7757C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S7757C2C1Ev();
extern void _ZN7S7757C2D1Ev();
Name_Map name_map_S7757C2[] = {
  NSPAIR(_ZN7S7757C2C1Ev),
  NSPAIR(_ZN7S7757C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7757C3;
extern VTBL_ENTRY _ZTI7S7757C3[];
extern  VTBL_ENTRY _ZTV7S7757C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7757C6;
extern VTBL_ENTRY _ZTI7S7757C6[];
extern  VTBL_ENTRY _ZTV7S7757C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C6[];
static Base_Class bases_S7757C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7757C3,    ABISELECT(32,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C10_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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7757C6,    ABISELECT(56,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7757C2[];
static  VTBL_ENTRY vtc_S7757C2[] = {
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C2[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7757C2[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7757C2[0]),
};
extern VTBL_ENTRY _ZTV7S7757C2[];
static  VTBL_ENTRY _tg__ZTV7S7757C3__7S7757C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C6__7S7757C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C6[0]),
};
static  VTT_ENTRY vtt_S7757C2[] = {
  {&(_ZTV7S7757C2[6]),  6,13},
  {&(_ZTV7S7757C2[9]),  9,13},
  {&(_ZTV7S7757C2[13]),  13,13},
  {&(_tg__ZTV7S7757C3__7S7757C2[3]),  3,3},
  {&(_tg__ZTV7S7757C6__7S7757C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7757C2[];
extern  VTBL_ENTRY _ZTV7S7757C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C2[];
Class_Descriptor cd_S7757C2 = {  "S7757C2", // class name
  bases_S7757C2, 6,
  &(vtc_S7757C2[0]), // expected_vtbl_contents
  &(vtt_S7757C2[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S7757C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7757C2),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7757C2),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7757C8  : virtual S19490C26 {
  int s7757c8f0;
  ~S7757C8(); // tgen
  S7757C8(); // tgen
};
//SIG(-1 S7757C8) C1{ VBC2{ m} Fi}


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

static void Test_S7757C8()
{
  extern Class_Descriptor cd_S7757C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7757C8, buf);
    S7757C8 *dp, &lv = *(dp=new (buf) S7757C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7757C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7757C8)");
    check_base_class_offset(lv, (S19490C26*), 0, "S7757C8");
    check_field_offset(lv, s7757c8f0, ABISELECT(8,4), "S7757C8.s7757c8f0");
    test_class_info(&lv, &cd_S7757C8);
    dp->~S7757C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7757C8(Test_S7757C8, "S7757C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7757C8C1Ev();
extern void _ZN7S7757C8D1Ev();
Name_Map name_map_S7757C8[] = {
  NSPAIR(_ZN7S7757C8C1Ev),
  NSPAIR(_ZN7S7757C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S7757C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7757C8[];
static  VTBL_ENTRY vtc_S7757C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C8[0]),
};
extern VTBL_ENTRY _ZTV7S7757C8[];
static  VTT_ENTRY vtt_S7757C8[] = {
  {&(_ZTV7S7757C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7757C8[];
extern  VTBL_ENTRY _ZTV7S7757C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C8[];
Class_Descriptor cd_S7757C8 = {  "S7757C8", // class name
  bases_S7757C8, 1,
  &(vtc_S7757C8[0]), // expected_vtbl_contents
  &(vtt_S7757C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7757C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7757C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7757C8),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  S7757C9  : S7757C3 {
  ~S7757C9(); // tgen
  S7757C9(); // tgen
};
//SIG(-1 S7757C9) C1{ BC2{ VBC3{ m} Fp[2]}}


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

static void Test_S7757C9()
{
  extern Class_Descriptor cd_S7757C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7757C9, buf);
    S7757C9 *dp, &lv = *(dp=new (buf) S7757C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7757C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7757C9)");
    check_base_class_offset(lv, (S19490C26*)(S7757C3*), 0, "S7757C9");
    check_base_class_offset(lv, (S7757C3*), 0, "S7757C9");
    test_class_info(&lv, &cd_S7757C9);
    dp->~S7757C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7757C9(Test_S7757C9, "S7757C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7757C9C1Ev();
extern void _ZN7S7757C9D1Ev();
Name_Map name_map_S7757C9[] = {
  NSPAIR(_ZN7S7757C9C1Ev),
  NSPAIR(_ZN7S7757C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7757C3;
extern VTBL_ENTRY _ZTI7S7757C3[];
extern  VTBL_ENTRY _ZTV7S7757C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C3[];
static Base_Class bases_S7757C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7757C3,    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 _ZTI7S7757C9[];
static  VTBL_ENTRY vtc_S7757C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C9[0]),
};
extern VTBL_ENTRY _ZTV7S7757C9[];
static  VTBL_ENTRY _tg__ZTV7S7757C3__7S7757C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C3[0]),
};
static  VTT_ENTRY vtt_S7757C9[] = {
  {&(_ZTV7S7757C9[3]),  3,3},
  {&(_tg__ZTV7S7757C3__7S7757C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7757C9[];
extern  VTBL_ENTRY _ZTV7S7757C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C9[];
Class_Descriptor cd_S7757C9 = {  "S7757C9", // class name
  bases_S7757C9, 2,
  &(vtc_S7757C9[0]), // expected_vtbl_contents
  &(vtt_S7757C9[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7757C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7757C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7757C9),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  S7757C1  : S7757C2 , S7757C8 , S7757C9 , S7757C6 , virtual S19490C12 {
  virtual  ~S7757C1(); // _ZN7S7757C1D2Ev
  S7757C1(); // tgen
};
//SIG(1 S7757C1) C1{ BC2{ VBC3{ VBC4{ m} Fp[2]} BC5{ m Fp} VBC6{ BC5 VBC4 VBC7{ m}} FC6} BC8{ VBC4 Fi} BC9{ BC3} BC6 VBC10{ m} vd}


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

static void Test_S7757C1()
{
  extern Class_Descriptor cd_S7757C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[17];
    init_test(&cd_S7757C1, buf);
    S7757C1 *dp, &lv = *(dp=new (buf) S7757C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S7757C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7757C1)");
    /*is_ambiguous_... S7757C1::S7757C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7757C3*), 0, "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7757C6*), 0, "S7757C1");
    check_base_class_offset(lv, (S19490C26*)(S7757C8*), 0, "S7757C1");
    check_base_class_offset(lv, (S19490C26*)(S7757C3*)(S7757C9*), 0, "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7757C6*), 0, "S7757C1");
    check_base_class_offset(lv, (S7757C3*)(S7757C2*), ABISELECT(88,44), "S7757C1");
    /*is_ambiguous_... S7757C2::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S7757C2*), ABISELECT(8,4), "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S7757C6*), ABISELECT(120,60), "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S19490C18*)(S7757C6*), 0, "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S19490C18*)(S7757C6*), 0, "S7757C1");
    check_base_class_offset(lv, (S7757C6*)(S7757C2*), ABISELECT(112,56), "S7757C1");
    check_base_class_offset(lv, (S7757C2*), 0, "S7757C1");
    check_base_class_offset(lv, (S7757C8*), ABISELECT(32,16), "S7757C1");
    check_base_class_offset(lv, (S7757C3*)(S7757C9*), ABISELECT(48,24), "S7757C1");
    check_base_class_offset(lv, (S7757C9*), ABISELECT(48,24), "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S7757C6*), ABISELECT(80,40), "S7757C1");
    /*is_ambiguous_... S7757C1::S7757C6 */ AMB_check_base_class_offset(lv, (S7757C6*), ABISELECT(72,36), "S7757C1");
    check_base_class_offset(lv, (S19490C12*), 0, "S7757C1");
    test_class_info(&lv, &cd_S7757C1);
    dp->~S7757C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7757C1(Test_S7757C1, "S7757C1", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN7S7757C1C1Ev();
extern void _ZN7S7757C1D2Ev();
Name_Map name_map_S7757C1[] = {
  NSPAIR(_ZN7S7757C1C1Ev),
  NSPAIR(_ZN7S7757C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S7757C3;
extern VTBL_ENTRY _ZTI7S7757C3[];
extern  VTBL_ENTRY _ZTV7S7757C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C3[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7757C6;
extern VTBL_ENTRY _ZTI7S7757C6[];
extern  VTBL_ENTRY _ZTV7S7757C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C6[];
extern Class_Descriptor cd_S7757C2;
extern VTBL_ENTRY _ZTI7S7757C2[];
extern  VTBL_ENTRY _ZTV7S7757C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C2[];
extern Class_Descriptor cd_S7757C8;
extern VTBL_ENTRY _ZTI7S7757C8[];
extern  VTBL_ENTRY _ZTV7S7757C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C8[];
extern Class_Descriptor cd_S7757C3;
extern VTBL_ENTRY _ZTI7S7757C3[];
extern  VTBL_ENTRY _ZTV7S7757C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C3[];
extern Class_Descriptor cd_S7757C9;
extern VTBL_ENTRY _ZTI7S7757C9[];
extern  VTBL_ENTRY _ZTV7S7757C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C9[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S7757C6;
extern VTBL_ENTRY _ZTI7S7757C6[];
extern  VTBL_ENTRY _ZTV7S7757C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C6[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S7757C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7757C3,    ABISELECT(88,44), //bcp->offset
    19, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C10_nt,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7757C6,    ABISELECT(112,56), //bcp->offset
    22, //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7757C2,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7757C8,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7757C3,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7757C9,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C10_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
    11, //immediately_derived
  0, 0},
  {&cd_S7757C6,    ABISELECT(72,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7757C1[];
extern void _ZN7S7757C1D1Ev();
extern void _ZN7S7757C1D0Ev();
static  VTBL_ENTRY vtc_S7757C1[] = {
  0,
  0,
  ABISELECT(112,56),
  0,
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C1[0]),
  (VTBL_ENTRY)&_ZN7S7757C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7757C1D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7757C1[0]),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7757C1[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7757C1[0]),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7757C1[0]),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7757C1[0]),
};
extern VTBL_ENTRY _ZTV7S7757C1[];
static  VTBL_ENTRY _tg__ZTV7S7757C2__7S7757C1[] = {
  0,
  ABISELECT(112,56),
  0,
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C3__7S7757C2__7S7757C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7757C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C6__7S7757C2__7S7757C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7757C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C8__7S7757C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C9__7S7757C1[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C37S7757C9__A1__7S7757C1[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C6__A__7S7757C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C3__7S7757C1[] = {
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7757C6__7S7757C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7757C6[0]),
};
static  VTT_ENTRY vtt_S7757C1[] = {
  {&(_ZTV7S7757C1[7]),  7,26},
  {&(_tg__ZTV7S7757C2__7S7757C1[6]),  6,6},
  {&(_tg__ZTV7S7757C3__7S7757C2__7S7757C1[3]),  3,3},
  {&(_tg__ZTV7S7757C6__7S7757C2__7S7757C1[4]),  4,4},
  {&(_tg__ZTV7S7757C8__7S7757C1[3]),  3,3},
  {&(_tg__ZTV7S7757C9__7S7757C1[3]),  3,3},
  {&(_tg__ZTV7S7757C37S7757C9__A1__7S7757C1[3]),  3,3},
  {&(_tg__ZTV7S7757C6__A__7S7757C1[4]),  4,4},
  {&(_ZTV7S7757C1[22]),  22,26},
  {&(_ZTV7S7757C1[26]),  26,26},
  {&(_ZTV7S7757C1[12]),  12,26},
  {&(_ZTV7S7757C1[15]),  15,26},
  {&(_ZTV7S7757C1[19]),  19,26},
  {&(_tg__ZTV7S7757C3__7S7757C1[3]),  3,3},
  {&(_tg__ZTV7S7757C6__7S7757C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7757C1[];
extern  VTBL_ENTRY _ZTV7S7757C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7757C1[];
Class_Descriptor cd_S7757C1 = {  "S7757C1", // class name
  bases_S7757C1, 13,
  &(vtc_S7757C1[0]), // expected_vtbl_contents
  &(vtt_S7757C1[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI7S7757C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7757C1),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7757C1),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11367C3_nt  {
  void *s11367c3f0[3];
  char s11367c3f1[60];
  int s11367c3f2;
};
//SIG(-1 S11367C3_nt) C1{ Fp[3] Fc[60] Fi}



//skip512 S11367C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11367C2  {
  int s11367c2f0;
  ::S11367C3_nt s11367c2f1;
  int s11367c2f2[2];
  void *s11367c2f3;
  int s11367c2f4;
  void *s11367c2f5;
  char s11367c2f6[32];
};
//SIG(-1 S11367C2) C1{ Fi FC2{ Fp[3] Fc[60] Fi} Fi[2] Fp Fi Fp Fc[32]}



static void Test_S11367C2()
{
  {
    init_simple_test("S11367C2");
    S11367C2 lv;
    check2(sizeof(lv), ABISELECT(160,132), "sizeof(S11367C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11367C2)");
    check_field_offset(lv, s11367c2f0, 0, "S11367C2.s11367c2f0");
    check_field_offset(lv, s11367c2f1, ABISELECT(8,4), "S11367C2.s11367c2f1");
    check_field_offset(lv, s11367c2f2, ABISELECT(96,80), "S11367C2.s11367c2f2");
    check_field_offset(lv, s11367c2f3, ABISELECT(104,88), "S11367C2.s11367c2f3");
    check_field_offset(lv, s11367c2f4, ABISELECT(112,92), "S11367C2.s11367c2f4");
    check_field_offset(lv, s11367c2f5, ABISELECT(120,96), "S11367C2.s11367c2f5");
    check_field_offset(lv, s11367c2f6, ABISELECT(128,100), "S11367C2.s11367c2f6");
  }
}
static Arrange_To_Call_Me vS11367C2(Test_S11367C2, "S11367C2", ABISELECT(160,132));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11367C4_nt  {
  int s11367c4f0[2];
  char s11367c4f1[32];
};
//SIG(-1 S11367C4_nt) C1{ Fi[2] Fc[32]}



//skip512 S11367C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11367C5_nt  {
  char s11367c5f0[4];
};
//SIG(-1 S11367C5_nt) C1{ Fc[4]}



//skip512 S11367C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11367C1  {
  ::S11367C2 s11367c1f0;
  ::S11367C4_nt s11367c1f1;
  ::S11367C5_nt s11367c1f2;
  ::S11367C5_nt s11367c1f3;
  char s11367c1f4[1012];
};
//SIG(1 S11367C1) C1{ FC2{ Fi FC3{ Fp[3] Fc[60] Fi} Fi[2] Fp Fi Fp Fc[32]} FC4{ Fi[2] Fc[32]} FC5{ Fc[4]} FC5 Fc[1012]}



static void Test_S11367C1()
{
  {
    init_simple_test("S11367C1");
    S11367C1 lv;
    check2(sizeof(lv), ABISELECT(1224,1192), "sizeof(S11367C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11367C1)");
    check_field_offset(lv, s11367c1f0, 0, "S11367C1.s11367c1f0");
    check_field_offset(lv, s11367c1f1, ABISELECT(160,132), "S11367C1.s11367c1f1");
    check_field_offset(lv, s11367c1f2, ABISELECT(200,172), "S11367C1.s11367c1f2");
    check_field_offset(lv, s11367c1f3, ABISELECT(204,176), "S11367C1.s11367c1f3");
    check_field_offset(lv, s11367c1f4, ABISELECT(208,180), "S11367C1.s11367c1f4");
  }
}
static Arrange_To_Call_Me vS11367C1(Test_S11367C1, "S11367C1", ABISELECT(1224,1192));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7289C6  : S19490C10_nt , S19490C26 , S19490C18 {
};
//SIG(-1 S7289C6) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S7289C6()
{
  extern Class_Descriptor cd_S7289C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7289C6, buf);
    S7289C6 &lv = *(new (buf) S7289C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7289C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7289C6)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S7289C6");
    check_base_class_offset(lv, (S19490C26*), 0, "S7289C6");
    check_base_class_offset(lv, (S19490C18*), 0, "S7289C6");
    test_class_info(&lv, &cd_S7289C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7289C6(Test_S7289C6, "S7289C6", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S7289C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7289C6[];
Class_Descriptor cd_S7289C6 = {  "S7289C6", // class name
  bases_S7289C6, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7289C6),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7289C3  : S19490C26 , virtual S19490C18 , S7289C6 {
  ~S7289C3(); // tgen
  S7289C3(); // tgen
};
//SIG(-1 S7289C3) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S7289C3()
{
  extern Class_Descriptor cd_S7289C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7289C3, buf);
    S7289C3 *dp, &lv = *(dp=new (buf) S7289C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7289C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7289C3)");
    /*is_ambiguous_... S7289C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S7289C3");
    /*is_ambiguous_... S7289C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S7289C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S7289C6*), ABISELECT(8,4), "S7289C3");
    check_base_class_offset(lv, (S19490C26*)(S7289C6*), ABISELECT(8,4), "S7289C3");
    check_base_class_offset(lv, (S19490C18*)(S7289C6*), ABISELECT(8,4), "S7289C3");
    check_base_class_offset(lv, (S7289C6*), ABISELECT(8,4), "S7289C3");
    test_class_info(&lv, &cd_S7289C3);
    dp->~S7289C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7289C3(Test_S7289C3, "S7289C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7289C3C1Ev();
extern void _ZN7S7289C3D1Ev();
Name_Map name_map_S7289C3[] = {
  NSPAIR(_ZN7S7289C3C1Ev),
  NSPAIR(_ZN7S7289C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7289C6;
extern VTBL_ENTRY _ZTI7S7289C6[];
static Base_Class bases_S7289C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7289C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7289C3[];
static  VTBL_ENTRY vtc_S7289C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C3[0]),
};
extern VTBL_ENTRY _ZTV7S7289C3[];
static  VTT_ENTRY vtt_S7289C3[] = {
  {&(_ZTV7S7289C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7289C3[];
extern  VTBL_ENTRY _ZTV7S7289C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C3[];
Class_Descriptor cd_S7289C3 = {  "S7289C3", // class name
  bases_S7289C3, 6,
  &(vtc_S7289C3[0]), // expected_vtbl_contents
  &(vtt_S7289C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7289C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7289C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7289C3),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  S7289C8  : S19490C12 , virtual S7289C3 {
  virtual  ~S7289C8(); // _ZN7S7289C8D2Ev
  S7289C8(); // tgen
};
//SIG(-1 S7289C8) C1{ BC2{ m} VBC3{ BC4{ m} VBC5{ m} BC6{ BC7{ m Fp} BC4 BC5}} vd}


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

static void Test_S7289C8()
{
  extern Class_Descriptor cd_S7289C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7289C8, buf);
    S7289C8 *dp, &lv = *(dp=new (buf) S7289C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7289C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7289C8)");
    check_base_class_offset(lv, (S19490C12*), 0, "S7289C8");
    /*is_ambiguous_... S7289C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7289C3*), ABISELECT(8,4), "S7289C8");
    /*is_ambiguous_... S7289C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S7289C3*), 0, "S7289C8");
    check_base_class_offset(lv, (S19490C10_nt*)(S7289C6*)(S7289C3*), ABISELECT(16,8), "S7289C8");
    check_base_class_offset(lv, (S19490C26*)(S7289C6*)(S7289C3*), ABISELECT(16,8), "S7289C8");
    check_base_class_offset(lv, (S19490C18*)(S7289C6*)(S7289C3*), ABISELECT(16,8), "S7289C8");
    check_base_class_offset(lv, (S7289C6*)(S7289C3*), ABISELECT(16,8), "S7289C8");
    check_base_class_offset(lv, (S7289C3*), ABISELECT(8,4), "S7289C8");
    test_class_info(&lv, &cd_S7289C8);
    dp->~S7289C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7289C8(Test_S7289C8, "S7289C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7289C8C1Ev();
extern void _ZN7S7289C8D2Ev();
Name_Map name_map_S7289C8[] = {
  NSPAIR(_ZN7S7289C8C1Ev),
  NSPAIR(_ZN7S7289C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7289C6;
extern VTBL_ENTRY _ZTI7S7289C6[];
extern Class_Descriptor cd_S7289C3;
extern VTBL_ENTRY _ZTI7S7289C3[];
extern  VTBL_ENTRY _ZTV7S7289C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C3[];
static Base_Class bases_S7289C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7289C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7289C3,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7289C8[];
extern void _ZN7S7289C8D1Ev();
extern void _ZN7S7289C8D0Ev();
static  VTBL_ENTRY vtc_S7289C8[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C8[0]),
  (VTBL_ENTRY)&_ZN7S7289C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7289C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7289C8[0]),
};
extern VTBL_ENTRY _ZTV7S7289C8[];
static  VTBL_ENTRY _tg__ZTV7S7289C3__7S7289C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C3[0]),
};
static  VTT_ENTRY vtt_S7289C8[] = {
  {&(_ZTV7S7289C8[4]),  4,9},
  {&(_ZTV7S7289C8[9]),  9,9},
  {&(_tg__ZTV7S7289C3__7S7289C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7289C8[];
extern  VTBL_ENTRY _ZTV7S7289C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C8[];
Class_Descriptor cd_S7289C8 = {  "S7289C8", // class name
  bases_S7289C8, 8,
  &(vtc_S7289C8[0]), // expected_vtbl_contents
  &(vtt_S7289C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7289C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7289C8),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7289C8),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  S7289C10  : virtual S19490C18 {
  int s7289c10f0;
  ~S7289C10(); // tgen
  S7289C10(); // tgen
};
//SIG(-1 S7289C10) C1{ VBC2{ m} Fi}


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

static void Test_S7289C10()
{
  extern Class_Descriptor cd_S7289C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7289C10, buf);
    S7289C10 *dp, &lv = *(dp=new (buf) S7289C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7289C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7289C10)");
    check_base_class_offset(lv, (S19490C18*), 0, "S7289C10");
    check_field_offset(lv, s7289c10f0, ABISELECT(8,4), "S7289C10.s7289c10f0");
    test_class_info(&lv, &cd_S7289C10);
    dp->~S7289C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7289C10(Test_S7289C10, "S7289C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7289C10C1Ev();
extern void _ZN8S7289C10D1Ev();
Name_Map name_map_S7289C10[] = {
  NSPAIR(_ZN8S7289C10C1Ev),
  NSPAIR(_ZN8S7289C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S7289C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7289C10[];
static  VTBL_ENTRY vtc_S7289C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7289C10[0]),
};
extern VTBL_ENTRY _ZTV8S7289C10[];
static  VTT_ENTRY vtt_S7289C10[] = {
  {&(_ZTV8S7289C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7289C10[];
extern  VTBL_ENTRY _ZTV8S7289C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7289C10[];
Class_Descriptor cd_S7289C10 = {  "S7289C10", // class name
  bases_S7289C10, 1,
  &(vtc_S7289C10[0]), // expected_vtbl_contents
  &(vtt_S7289C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7289C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7289C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7289C10),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  S7289C2  : virtual S7289C3 , S7289C8 , virtual S7289C10 {
  int s7289c2f0;
  virtual  ~S7289C2(); // _ZN7S7289C2D2Ev
  S7289C2(); // tgen
};
//SIG(-1 S7289C2) C1{ VBC2{ BC3{ m} VBC4{ m} BC5{ BC6{ m Fp} BC3 BC4}} BC7{ BC8{ m} VBC2 vd} VBC9{ VBC4 Fi} vd Fi}


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

static void Test_S7289C2()
{
  extern Class_Descriptor cd_S7289C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7289C2, buf);
    S7289C2 *dp, &lv = *(dp=new (buf) S7289C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7289C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7289C2)");
    /*is_ambiguous_... S7289C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7289C3*), ABISELECT(16,8), "S7289C2");
    /*is_ambiguous_... S7289C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S7289C3*), 0, "S7289C2");
    check_base_class_offset(lv, (S19490C18*)(S7289C10*), 0, "S7289C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C2");
    check_base_class_offset(lv, (S19490C26*)(S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C2");
    check_base_class_offset(lv, (S19490C18*)(S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C2");
    check_base_class_offset(lv, (S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C2");
    check_base_class_offset(lv, (S7289C3*), ABISELECT(16,8), "S7289C2");
    check_base_class_offset(lv, (S7289C3*)(S7289C8*), ABISELECT(16,8), "S7289C2");
    check_base_class_offset(lv, (S19490C12*)(S7289C8*), 0, "S7289C2");
    check_base_class_offset(lv, (S7289C8*), 0, "S7289C2");
    check_base_class_offset(lv, (S7289C10*), ABISELECT(32,16), "S7289C2");
    check_field_offset(lv, s7289c2f0, ABISELECT(8,4), "S7289C2.s7289c2f0");
    test_class_info(&lv, &cd_S7289C2);
    dp->~S7289C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7289C2(Test_S7289C2, "S7289C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7289C2C1Ev();
extern void _ZN7S7289C2D2Ev();
Name_Map name_map_S7289C2[] = {
  NSPAIR(_ZN7S7289C2C1Ev),
  NSPAIR(_ZN7S7289C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7289C6;
extern VTBL_ENTRY _ZTI7S7289C6[];
extern Class_Descriptor cd_S7289C3;
extern VTBL_ENTRY _ZTI7S7289C3[];
extern  VTBL_ENTRY _ZTV7S7289C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C3[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S7289C8;
extern VTBL_ENTRY _ZTI7S7289C8[];
extern  VTBL_ENTRY _ZTV7S7289C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C8[];
extern Class_Descriptor cd_S7289C10;
extern VTBL_ENTRY _ZTI8S7289C10[];
extern  VTBL_ENTRY _ZTV8S7289C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7289C10[];
static Base_Class bases_S7289C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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, 0},
  {&cd_S19490C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7289C6,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7289C3,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7289C8,    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_S7289C10,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7289C2[];
extern void _ZN7S7289C2D1Ev();
extern void _ZN7S7289C2D0Ev();
static  VTBL_ENTRY vtc_S7289C2[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C2[0]),
  (VTBL_ENTRY)&_ZN7S7289C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7289C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7289C2[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7289C2[0]),
};
extern VTBL_ENTRY _ZTV7S7289C2[];
extern void _ZN7S7289C8D1Ev();
extern void _ZN7S7289C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7289C8__7S7289C2[] = {
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C8[0]),
  (VTBL_ENTRY)&_ZN7S7289C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7289C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7289C3__7S7289C8__7S7289C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7289C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7289C3__7S7289C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7289C10__7S7289C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7289C10[0]),
};
static  VTT_ENTRY vtt_S7289C2[] = {
  {&(_ZTV7S7289C2[5]),  5,13},
  {&(_tg__ZTV7S7289C8__7S7289C2[4]),  4,6},
  {&(_tg__ZTV7S7289C3__7S7289C8__7S7289C2[3]),  3,3},
  {&(_ZTV7S7289C2[10]),  10,13},
  {&(_ZTV7S7289C2[13]),  13,13},
  {&(_tg__ZTV7S7289C3__7S7289C2[3]),  3,3},
  {&(_tg__ZTV8S7289C10__7S7289C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7289C2[];
extern  VTBL_ENTRY _ZTV7S7289C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C2[];
Class_Descriptor cd_S7289C2 = {  "S7289C2", // class name
  bases_S7289C2, 10,
  &(vtc_S7289C2[0]), // expected_vtbl_contents
  &(vtt_S7289C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7289C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7289C2),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7289C2),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  S7289C1  : S7289C2 {
  virtual  ~S7289C1(); // _ZN7S7289C1D2Ev
  virtual void  v1(); // _ZN7S7289C12v1Ev
  S7289C1(); // tgen
};
//SIG(1 S7289C1) C1{ BC2{ VBC3{ BC4{ m} VBC5{ m} BC6{ BC7{ m Fp} BC4 BC5}} BC8{ BC9{ m} VBC3 vd} VBC10{ VBC5 Fi} vd Fi} vd v1}


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

static void Test_S7289C1()
{
  extern Class_Descriptor cd_S7289C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7289C1, buf);
    S7289C1 *dp, &lv = *(dp=new (buf) S7289C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7289C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7289C1)");
    /*is_ambiguous_... S7289C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S7289C3*), ABISELECT(16,8), "S7289C1");
    /*is_ambiguous_... S7289C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S7289C3*), 0, "S7289C1");
    check_base_class_offset(lv, (S19490C18*)(S7289C10*), 0, "S7289C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C1");
    check_base_class_offset(lv, (S19490C26*)(S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C1");
    check_base_class_offset(lv, (S19490C18*)(S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C1");
    check_base_class_offset(lv, (S7289C6*)(S7289C3*), ABISELECT(24,12), "S7289C1");
    check_base_class_offset(lv, (S7289C3*)(S7289C2*), ABISELECT(16,8), "S7289C1");
    check_base_class_offset(lv, (S7289C3*)(S7289C8*)(S7289C2*), ABISELECT(16,8), "S7289C1");
    check_base_class_offset(lv, (S19490C12*)(S7289C8*)(S7289C2*), 0, "S7289C1");
    check_base_class_offset(lv, (S7289C8*)(S7289C2*), 0, "S7289C1");
    check_base_class_offset(lv, (S7289C10*)(S7289C2*), ABISELECT(32,16), "S7289C1");
    check_base_class_offset(lv, (S7289C2*), 0, "S7289C1");
    test_class_info(&lv, &cd_S7289C1);
    dp->~S7289C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7289C1(Test_S7289C1, "S7289C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7289C1C1Ev();
extern void _ZN7S7289C1D2Ev();
Name_Map name_map_S7289C1[] = {
  NSPAIR(_ZN7S7289C1C1Ev),
  NSPAIR(_ZN7S7289C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S7289C6;
extern VTBL_ENTRY _ZTI7S7289C6[];
extern Class_Descriptor cd_S7289C3;
extern VTBL_ENTRY _ZTI7S7289C3[];
extern  VTBL_ENTRY _ZTV7S7289C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C3[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S7289C8;
extern VTBL_ENTRY _ZTI7S7289C8[];
extern  VTBL_ENTRY _ZTV7S7289C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C8[];
extern Class_Descriptor cd_S7289C10;
extern VTBL_ENTRY _ZTI8S7289C10[];
extern  VTBL_ENTRY _ZTV8S7289C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7289C10[];
extern Class_Descriptor cd_S7289C2;
extern VTBL_ENTRY _ZTI7S7289C2[];
extern  VTBL_ENTRY _ZTV7S7289C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C2[];
static Base_Class bases_S7289C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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, 0},
  {&cd_S19490C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7289C6,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7289C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7289C8,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7289C10,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7289C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7289C1[];
extern void _ZN7S7289C1D1Ev();
extern void _ZN7S7289C1D0Ev();
extern void _ZN7S7289C12v1Ev();
static  VTBL_ENTRY vtc_S7289C1[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C1[0]),
  (VTBL_ENTRY)&_ZN7S7289C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7289C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7289C12v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7289C1[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7289C1[0]),
};
extern VTBL_ENTRY _ZTV7S7289C1[];
extern void _ZN7S7289C2D1Ev();
extern void _ZN7S7289C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7289C2__7S7289C1[] = {
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C2[0]),
  (VTBL_ENTRY)&_ZN7S7289C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7289C2D0Ev,
};
extern void _ZN7S7289C8D1Ev();
extern void _ZN7S7289C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7289C87S7289C2__7S7289C1[] = {
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C8[0]),
  (VTBL_ENTRY)&_ZN7S7289C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7289C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7289C3__7S7289C87S7289C2__7S7289C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7289C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7289C3__7S7289C2__7S7289C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7289C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7289C10__7S7289C2__7S7289C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7289C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7289C3__7S7289C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7289C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7289C10__7S7289C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7289C10[0]),
};
static  VTT_ENTRY vtt_S7289C1[] = {
  {&(_ZTV7S7289C1[5]),  5,14},
  {&(_tg__ZTV7S7289C2__7S7289C1[5]),  5,7},
  {&(_tg__ZTV7S7289C87S7289C2__7S7289C1[4]),  4,6},
  {&(_tg__ZTV7S7289C3__7S7289C87S7289C2__7S7289C1[3]),  3,3},
  {&(_tg__ZTV7S7289C3__7S7289C2__7S7289C1[3]),  3,3},
  {&(_tg__ZTV8S7289C10__7S7289C2__7S7289C1[3]),  3,3},
  {&(_ZTV7S7289C1[11]),  11,14},
  {&(_ZTV7S7289C1[14]),  14,14},
  {&(_tg__ZTV7S7289C3__7S7289C1[3]),  3,3},
  {&(_tg__ZTV8S7289C10__7S7289C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7289C1[];
extern  VTBL_ENTRY _ZTV7S7289C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7289C1[];
Class_Descriptor cd_S7289C1 = {  "S7289C1", // class name
  bases_S7289C1, 11,
  &(vtc_S7289C1[0]), // expected_vtbl_contents
  &(vtt_S7289C1[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7289C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7289C1),14, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7289C1),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  S20720C2  : virtual S19490C26 {
  int s20720c2f0;
  ~S20720C2(); // tgen
  S20720C2(); // tgen
};
//SIG(-1 S20720C2) C1{ VBC2{ m} Fi}


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

static void Test_S20720C2()
{
  extern Class_Descriptor cd_S20720C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20720C2, buf);
    S20720C2 *dp, &lv = *(dp=new (buf) S20720C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20720C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20720C2)");
    check_base_class_offset(lv, (S19490C26*), 0, "S20720C2");
    check_field_offset(lv, s20720c2f0, ABISELECT(8,4), "S20720C2.s20720c2f0");
    test_class_info(&lv, &cd_S20720C2);
    dp->~S20720C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20720C2(Test_S20720C2, "S20720C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20720C2C1Ev();
extern void _ZN8S20720C2D1Ev();
Name_Map name_map_S20720C2[] = {
  NSPAIR(_ZN8S20720C2C1Ev),
  NSPAIR(_ZN8S20720C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S20720C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20720C2[];
static  VTBL_ENTRY vtc_S20720C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C2[0]),
};
extern VTBL_ENTRY _ZTV8S20720C2[];
static  VTT_ENTRY vtt_S20720C2[] = {
  {&(_ZTV8S20720C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20720C2[];
extern  VTBL_ENTRY _ZTV8S20720C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C2[];
Class_Descriptor cd_S20720C2 = {  "S20720C2", // class name
  bases_S20720C2, 1,
  &(vtc_S20720C2[0]), // expected_vtbl_contents
  &(vtt_S20720C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20720C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20720C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20720C2),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  S20720C4  : virtual S19490C26 {
  void *s20720c4f0[2];
  ~S20720C4(); // tgen
  S20720C4(); // tgen
};
//SIG(-1 S20720C4) C1{ VBC2{ m} Fp[2]}


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

static void Test_S20720C4()
{
  extern Class_Descriptor cd_S20720C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20720C4, buf);
    S20720C4 *dp, &lv = *(dp=new (buf) S20720C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20720C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20720C4)");
    check_base_class_offset(lv, (S19490C26*), 0, "S20720C4");
    check_field_offset(lv, s20720c4f0, ABISELECT(8,4), "S20720C4.s20720c4f0");
    test_class_info(&lv, &cd_S20720C4);
    dp->~S20720C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20720C4(Test_S20720C4, "S20720C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20720C4C1Ev();
extern void _ZN8S20720C4D1Ev();
Name_Map name_map_S20720C4[] = {
  NSPAIR(_ZN8S20720C4C1Ev),
  NSPAIR(_ZN8S20720C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S20720C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20720C4[];
static  VTBL_ENTRY vtc_S20720C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C4[0]),
};
extern VTBL_ENTRY _ZTV8S20720C4[];
static  VTT_ENTRY vtt_S20720C4[] = {
  {&(_ZTV8S20720C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20720C4[];
extern  VTBL_ENTRY _ZTV8S20720C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C4[];
Class_Descriptor cd_S20720C4 = {  "S20720C4", // class name
  bases_S20720C4, 1,
  &(vtc_S20720C4[0]), // expected_vtbl_contents
  &(vtt_S20720C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20720C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20720C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20720C4),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  S20720C8  : S19490C10_nt , S19490C12 , S19490C26 {
};
//SIG(-1 S20720C8) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S20720C8()
{
  extern Class_Descriptor cd_S20720C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20720C8, buf);
    S20720C8 &lv = *(new (buf) S20720C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20720C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20720C8)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S20720C8");
    check_base_class_offset(lv, (S19490C12*), 0, "S20720C8");
    check_base_class_offset(lv, (S19490C26*), 0, "S20720C8");
    test_class_info(&lv, &cd_S20720C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20720C8(Test_S20720C8, "S20720C8", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S20720C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20720C8[];
Class_Descriptor cd_S20720C8 = {  "S20720C8", // class name
  bases_S20720C8, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20720C8),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20720C6  : virtual S19490C18 , S20720C8 , S19490C11 , virtual S20720C2 {
  ~S20720C6(); // tgen
  S20720C6(); // tgen
};
//SIG(-1 S20720C6) C1{ VBC2{ m} BC3{ BC4{ m Fp} BC5{ m} BC6{ m}} BC7{ m} VBC8{ VBC6 Fi}}


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

static void Test_S20720C6()
{
  extern Class_Descriptor cd_S20720C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20720C6, buf);
    S20720C6 *dp, &lv = *(dp=new (buf) S20720C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20720C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20720C6)");
    check_base_class_offset(lv, (S19490C18*), 0, "S20720C6");
    check_base_class_offset(lv, (S19490C10_nt*)(S20720C8*), ABISELECT(8,4), "S20720C6");
    check_base_class_offset(lv, (S19490C12*)(S20720C8*), ABISELECT(8,4), "S20720C6");
    check_base_class_offset(lv, (S19490C26*)(S20720C8*), ABISELECT(8,4), "S20720C6");
    check_base_class_offset(lv, (S20720C8*), ABISELECT(8,4), "S20720C6");
    check_base_class_offset(lv, (S19490C11*), 0, "S20720C6");
    check_base_class_offset(lv, (S19490C26*)(S20720C2*), 0, "S20720C6");
    check_base_class_offset(lv, (S20720C2*), ABISELECT(16,8), "S20720C6");
    test_class_info(&lv, &cd_S20720C6);
    dp->~S20720C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20720C6(Test_S20720C6, "S20720C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20720C6C1Ev();
extern void _ZN8S20720C6D1Ev();
Name_Map name_map_S20720C6[] = {
  NSPAIR(_ZN8S20720C6C1Ev),
  NSPAIR(_ZN8S20720C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20720C8;
extern VTBL_ENTRY _ZTI8S20720C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20720C2;
extern VTBL_ENTRY _ZTI8S20720C2[];
extern  VTBL_ENTRY _ZTV8S20720C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C2[];
static Base_Class bases_S20720C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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, 0},
  {&cd_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20720C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20720C2,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20720C6[];
static  VTBL_ENTRY vtc_S20720C6[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C6[0]),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20720C6[0]),
};
extern VTBL_ENTRY _ZTV8S20720C6[];
static  VTBL_ENTRY _tg__ZTV8S20720C2__8S20720C6[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C2[0]),
};
static  VTT_ENTRY vtt_S20720C6[] = {
  {&(_ZTV8S20720C6[5]),  5,8},
  {&(_ZTV8S20720C6[8]),  8,8},
  {&(_tg__ZTV8S20720C2__8S20720C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20720C6[];
extern  VTBL_ENTRY _ZTV8S20720C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C6[];
Class_Descriptor cd_S20720C6 = {  "S20720C6", // class name
  bases_S20720C6, 8,
  &(vtc_S20720C6[0]), // expected_vtbl_contents
  &(vtt_S20720C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20720C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20720C6),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20720C6),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  S20720C1  : virtual S20720C2 , S20720C4 , S19490C10_nt , S20720C6 {
  void *s20720c1f0;
  virtual  ~S20720C1(); // _ZN8S20720C1D2Ev
  S20720C1(); // tgen
};
//SIG(1 S20720C1) C1{ VBC2{ VBC3{ m} Fi} BC4{ VBC3 Fp[2]} BC5{ m Fp} BC6{ VBC7{ m} BC8{ BC5 BC9{ m} BC3} BC10{ m} VBC2} vd Fp}


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

static void Test_S20720C1()
{
  extern Class_Descriptor cd_S20720C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20720C1, buf);
    S20720C1 *dp, &lv = *(dp=new (buf) S20720C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20720C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20720C1)");
    check_base_class_offset(lv, (S19490C26*)(S20720C2*), 0, "S20720C1");
    check_base_class_offset(lv, (S19490C26*)(S20720C4*), 0, "S20720C1");
    check_base_class_offset(lv, (S20720C2*), ABISELECT(56,28), "S20720C1");
    check_base_class_offset(lv, (S20720C2*)(S20720C6*), ABISELECT(56,28), "S20720C1");
    check_base_class_offset(lv, (S20720C4*), 0, "S20720C1");
    /*is_ambiguous_... S20720C1::S19490C10_nt */ AMB_check_base_class_offset(lv, (S19490C10_nt*), ABISELECT(24,12), "S20720C1");
    check_base_class_offset(lv, (S19490C18*)(S20720C6*), 0, "S20720C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S20720C8*)(S20720C6*), ABISELECT(40,20), "S20720C1");
    check_base_class_offset(lv, (S19490C12*)(S20720C8*)(S20720C6*), ABISELECT(40,20), "S20720C1");
    check_base_class_offset(lv, (S19490C26*)(S20720C8*)(S20720C6*), ABISELECT(40,20), "S20720C1");
    check_base_class_offset(lv, (S20720C8*)(S20720C6*), ABISELECT(40,20), "S20720C1");
    check_base_class_offset(lv, (S19490C11*)(S20720C6*), ABISELECT(32,16), "S20720C1");
    check_base_class_offset(lv, (S20720C6*), ABISELECT(32,16), "S20720C1");
    check_field_offset(lv, s20720c1f0, ABISELECT(48,24), "S20720C1.s20720c1f0");
    test_class_info(&lv, &cd_S20720C1);
    dp->~S20720C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20720C1(Test_S20720C1, "S20720C1", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S20720C1C1Ev();
extern void _ZN8S20720C1D2Ev();
Name_Map name_map_S20720C1[] = {
  NSPAIR(_ZN8S20720C1C1Ev),
  NSPAIR(_ZN8S20720C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20720C2;
extern VTBL_ENTRY _ZTI8S20720C2[];
extern  VTBL_ENTRY _ZTV8S20720C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C2[];
extern Class_Descriptor cd_S20720C4;
extern VTBL_ENTRY _ZTI8S20720C4[];
extern  VTBL_ENTRY _ZTV8S20720C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C4[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20720C8;
extern VTBL_ENTRY _ZTI8S20720C8[];
extern Class_Descriptor cd_S19490C11;
extern VTBL_ENTRY _ZTI9S19490C11[];
extern Class_Descriptor cd_S20720C6;
extern VTBL_ENTRY _ZTI8S20720C6[];
extern  VTBL_ENTRY _ZTV8S20720C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C6[];
static Base_Class bases_S20720C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20720C2,    ABISELECT(56,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20720C4,    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_S19490C10_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},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_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_S19490C12,    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_S19490C26,    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_S20720C8,    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_S19490C11,    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_S20720C6,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20720C1[];
extern void _ZN8S20720C1D1Ev();
extern void _ZN8S20720C1D0Ev();
static  VTBL_ENTRY vtc_S20720C1[] = {
  0,
  ABISELECT(56,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C1[0]),
  (VTBL_ENTRY)&_ZN8S20720C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20720C1D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20720C1[0]),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20720C1[0]),
};
extern VTBL_ENTRY _ZTV8S20720C1[];
static  VTBL_ENTRY _tg__ZTV8S20720C4__8S20720C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20720C6__8S20720C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20720C2__8S20720C6__8S20720C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20720C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20720C2__8S20720C1[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20720C2[0]),
};
static  VTT_ENTRY vtt_S20720C1[] = {
  {&(_ZTV8S20720C1[5]),  5,15},
  {&(_tg__ZTV8S20720C4__8S20720C1[3]),  3,3},
  {&(_tg__ZTV8S20720C6__8S20720C1[5]),  5,5},
  {&(_tg__ZTV8S20720C2__8S20720C6__8S20720C1[3]),  3,3},
  {&(_ZTV8S20720C1[15]),  15,15},
  {&(_ZTV8S20720C1[12]),  12,15},
  {&(_tg__ZTV8S20720C2__8S20720C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20720C1[];
extern  VTBL_ENTRY _ZTV8S20720C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20720C1[];
Class_Descriptor cd_S20720C1 = {  "S20720C1", // class name
  bases_S20720C1, 11,
  &(vtc_S20720C1[0]), // expected_vtbl_contents
  &(vtt_S20720C1[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S20720C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20720C1),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20720C1),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  S3844C2  : S2242C7_nt {
  char s3844c2f0;
  void *s3844c2f1;
  int s3844c2f2;
  virtual  ~S3844C2(); // _ZN7S3844C2D1Ev
  virtual void  v3(); // _ZN7S3844C22v3Ev
  virtual void  v4(); // _ZN7S3844C22v4Ev
  S3844C2(); // tgen
};
//SIG(-1 S3844C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3844C2 ::~S3844C2(){ note_dtor("S3844C2", this);}
void  S3844C2 ::v3(){vfunc_called(this, "_ZN7S3844C22v3Ev");}
void  S3844C2 ::v4(){vfunc_called(this, "_ZN7S3844C22v4Ev");}
S3844C2 ::S3844C2(){ note_ctor("S3844C2", this);} // tgen

static void Test_S3844C2()
{
  extern Class_Descriptor cd_S3844C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3844C2, buf);
    S3844C2 *dp, &lv = *(dp=new (buf) S3844C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3844C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3844C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3844C2");
    check_field_offset(lv, s3844c2f0, ABISELECT(12,8), "S3844C2.s3844c2f0");
    check_field_offset(lv, s3844c2f1, ABISELECT(16,12), "S3844C2.s3844c2f1");
    check_field_offset(lv, s3844c2f2, ABISELECT(24,16), "S3844C2.s3844c2f2");
    test_class_info(&lv, &cd_S3844C2);
    dp->~S3844C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3844C2(Test_S3844C2, "S3844C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3844C2C1Ev();
extern void _ZN7S3844C2D1Ev();
Name_Map name_map_S3844C2[] = {
  NSPAIR(_ZN7S3844C2C1Ev),
  NSPAIR(_ZN7S3844C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3844C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3844C2[];
extern void _ZN7S3844C2D1Ev();
extern void _ZN7S3844C2D0Ev();
extern void _ZN7S3844C22v3Ev();
extern void _ZN7S3844C22v4Ev();
static  VTBL_ENTRY vtc_S3844C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3844C2[0]),
  (VTBL_ENTRY)&_ZN7S3844C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3844C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3844C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3844C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3844C2[];
extern  VTBL_ENTRY _ZTV7S3844C2[];
Class_Descriptor cd_S3844C2 = {  "S3844C2", // class name
  bases_S3844C2, 1,
  &(vtc_S3844C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3844C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3844C2),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  S3844C1  : S3844C2 {
  ::S19490C10_nt s3844c1f0;
  ::S16432C7 s3844c1f1;
  int s3844c1f2;
  ::S16385C7 s3844c1f3;
  virtual  ~S3844C1(); // _ZN7S3844C1D1Ev
  virtual void  v1(); // _ZN7S3844C12v1Ev
  virtual void  v2(); // _ZN7S3844C12v2Ev
  S3844C1(); // tgen
};
//SIG(1 S3844C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} FC5{ m Fp} Fi FC6{ m Fp Fi FC7{ m}}}


 S3844C1 ::~S3844C1(){ note_dtor("S3844C1", this);}
void  S3844C1 ::v1(){vfunc_called(this, "_ZN7S3844C12v1Ev");}
void  S3844C1 ::v2(){vfunc_called(this, "_ZN7S3844C12v2Ev");}
S3844C1 ::S3844C1(){ note_ctor("S3844C1", this);} // tgen

static void Test_S3844C1()
{
  extern Class_Descriptor cd_S3844C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S3844C1, buf);
    S3844C1 *dp, &lv = *(dp=new (buf) S3844C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S3844C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3844C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3844C2*), 0, "S3844C1");
    check_base_class_offset(lv, (S3844C2*), 0, "S3844C1");
    check_field_offset(lv, s3844c1f0, ABISELECT(32,20), "S3844C1.s3844c1f0");
    check_field_offset(lv, s3844c1f1, ABISELECT(40,24), "S3844C1.s3844c1f1");
    check_field_offset(lv, s3844c1f2, ABISELECT(48,28), "S3844C1.s3844c1f2");
    check_field_offset(lv, s3844c1f3, ABISELECT(56,32), "S3844C1.s3844c1f3");
    test_class_info(&lv, &cd_S3844C1);
    dp->~S3844C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3844C1(Test_S3844C1, "S3844C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S3844C1C1Ev();
extern void _ZN7S3844C1D1Ev();
Name_Map name_map_S3844C1[] = {
  NSPAIR(_ZN7S3844C1C1Ev),
  NSPAIR(_ZN7S3844C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3844C2;
extern VTBL_ENTRY _ZTI7S3844C2[];
extern  VTBL_ENTRY _ZTV7S3844C2[];
static Base_Class bases_S3844C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3844C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3844C1[];
extern void _ZN7S3844C1D1Ev();
extern void _ZN7S3844C1D0Ev();
extern void _ZN7S3844C22v3Ev();
extern void _ZN7S3844C22v4Ev();
extern void _ZN7S3844C12v1Ev();
extern void _ZN7S3844C12v2Ev();
static  VTBL_ENTRY vtc_S3844C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3844C1[0]),
  (VTBL_ENTRY)&_ZN7S3844C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3844C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3844C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3844C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3844C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3844C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3844C1[];
extern  VTBL_ENTRY _ZTV7S3844C1[];
Class_Descriptor cd_S3844C1 = {  "S3844C1", // class name
  bases_S3844C1, 2,
  &(vtc_S3844C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S3844C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3844C1),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  S21819C1  {
  void *s21819c1f0[3];
  char s21819c1f1;
  ::S2293C5_nt s21819c1f2;
  int s21819c1f3;
  void *s21819c1f4;
  char s21819c1f5[3];
  int s21819c1f6;
  ::S16385C7 s21819c1f7;
  char s21819c1f8;
  ::S19490C10_nt s21819c1f9;
  void  mf21819c1(); // _ZN8S21819C19mf21819c1Ev
  virtual  ~S21819C1(); // _ZN8S21819C1D1Ev
  S21819C1(); // tgen
};
//SIG(1 S21819C1) C1{ vd m Fp[3] Fc FC2{ m Fp Fi[2] FC3{ m}} Fi Fp Fc[3] Fi FC4{ m Fp Fi FC5{ m}} Fc FC6{ m Fp}}


void  S21819C1 ::mf21819c1(){}
 S21819C1 ::~S21819C1(){ note_dtor("S21819C1", this);}
S21819C1 ::S21819C1(){ note_ctor("S21819C1", this);} // tgen

static void Test_S21819C1()
{
  extern Class_Descriptor cd_S21819C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S21819C1, buf);
    S21819C1 *dp, &lv = *(dp=new (buf) S21819C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S21819C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21819C1)");
    check_field_offset(lv, s21819c1f0, ABISELECT(8,4), "S21819C1.s21819c1f0");
    check_field_offset(lv, s21819c1f1, ABISELECT(32,16), "S21819C1.s21819c1f1");
    check_field_offset(lv, s21819c1f2, ABISELECT(40,20), "S21819C1.s21819c1f2");
    check_field_offset(lv, s21819c1f3, ABISELECT(64,36), "S21819C1.s21819c1f3");
    check_field_offset(lv, s21819c1f4, ABISELECT(72,40), "S21819C1.s21819c1f4");
    check_field_offset(lv, s21819c1f5, ABISELECT(80,44), "S21819C1.s21819c1f5");
    check_field_offset(lv, s21819c1f6, ABISELECT(84,48), "S21819C1.s21819c1f6");
    check_field_offset(lv, s21819c1f7, ABISELECT(88,52), "S21819C1.s21819c1f7");
    check_field_offset(lv, s21819c1f8, ABISELECT(104,64), "S21819C1.s21819c1f8");
    check_field_offset(lv, s21819c1f9, ABISELECT(112,68), "S21819C1.s21819c1f9");
    test_class_info(&lv, &cd_S21819C1);
    dp->~S21819C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21819C1(Test_S21819C1, "S21819C1", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN8S21819C1C1Ev();
extern void _ZN8S21819C1D1Ev();
Name_Map name_map_S21819C1[] = {
  NSPAIR(_ZN8S21819C1C1Ev),
  NSPAIR(_ZN8S21819C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21819C1[];
extern void _ZN8S21819C1D1Ev();
extern void _ZN8S21819C1D0Ev();
static  VTBL_ENTRY vtc_S21819C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21819C1[0]),
  (VTBL_ENTRY)&_ZN8S21819C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21819C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21819C1[];
extern  VTBL_ENTRY _ZTV8S21819C1[];
Class_Descriptor cd_S21819C1 = {  "S21819C1", // class name
  0,0,//no base classes
  &(vtc_S21819C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI8S21819C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21819C1),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  S9227C2  {
  ::S16385C7 s9227c2f0;
  int s9227c2f1[2];
  char s9227c2f2;
  virtual  ~S9227C2(); // _ZN7S9227C2D1Ev
  virtual void  v3(); // _ZN7S9227C22v3Ev
  virtual void  v4(); // _ZN7S9227C22v4Ev
  virtual void  v5(); // _ZN7S9227C22v5Ev
  S9227C2(); // tgen
};
//SIG(-1 S9227C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9227C2 ::~S9227C2(){ note_dtor("S9227C2", this);}
void  S9227C2 ::v3(){vfunc_called(this, "_ZN7S9227C22v3Ev");}
void  S9227C2 ::v4(){vfunc_called(this, "_ZN7S9227C22v4Ev");}
void  S9227C2 ::v5(){vfunc_called(this, "_ZN7S9227C22v5Ev");}
S9227C2 ::S9227C2(){ note_ctor("S9227C2", this);} // tgen

static void Test_S9227C2()
{
  extern Class_Descriptor cd_S9227C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9227C2, buf);
    S9227C2 *dp, &lv = *(dp=new (buf) S9227C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9227C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9227C2)");
    check_field_offset(lv, s9227c2f0, ABISELECT(8,4), "S9227C2.s9227c2f0");
    check_field_offset(lv, s9227c2f1, ABISELECT(24,16), "S9227C2.s9227c2f1");
    check_field_offset(lv, s9227c2f2, ABISELECT(32,24), "S9227C2.s9227c2f2");
    test_class_info(&lv, &cd_S9227C2);
    dp->~S9227C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9227C2(Test_S9227C2, "S9227C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9227C2C1Ev();
extern void _ZN7S9227C2D1Ev();
Name_Map name_map_S9227C2[] = {
  NSPAIR(_ZN7S9227C2C1Ev),
  NSPAIR(_ZN7S9227C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9227C2[];
extern void _ZN7S9227C2D1Ev();
extern void _ZN7S9227C2D0Ev();
extern void _ZN7S9227C22v3Ev();
extern void _ZN7S9227C22v4Ev();
extern void _ZN7S9227C22v5Ev();
static  VTBL_ENTRY vtc_S9227C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9227C2[0]),
  (VTBL_ENTRY)&_ZN7S9227C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9227C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9227C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9227C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9227C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9227C2[];
extern  VTBL_ENTRY _ZTV7S9227C2[];
Class_Descriptor cd_S9227C2 = {  "S9227C2", // class name
  0,0,//no base classes
  &(vtc_S9227C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9227C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9227C2),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  S9227C1  : S9227C2 {
  __tsi64 s9227c1f0[2];
  void *s9227c1f1;
  ::S5072C4_nt s9227c1f2;
  void *s9227c1f3;
  virtual void  v1(); // _ZN7S9227C12v1Ev
  virtual void  v2(); // _ZN7S9227C12v2Ev
  ~S9227C1(); // tgen
  S9227C1(); // tgen
};
//SIG(1 S9227C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 FL[2] Fp FC5{ m Fp Fi FC4} Fp}


void  S9227C1 ::v1(){vfunc_called(this, "_ZN7S9227C12v1Ev");}
void  S9227C1 ::v2(){vfunc_called(this, "_ZN7S9227C12v2Ev");}
S9227C1 ::~S9227C1(){ note_dtor("S9227C1", this);} // tgen
S9227C1 ::S9227C1(){ note_ctor("S9227C1", this);} // tgen

static void Test_S9227C1()
{
  extern Class_Descriptor cd_S9227C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S9227C1, buf);
    S9227C1 *dp, &lv = *(dp=new (buf) S9227C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S9227C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9227C1)");
    check_base_class_offset(lv, (S9227C2*), 0, "S9227C1");
    check_field_offset(lv, s9227c1f0, ABISELECT(40,28), "S9227C1.s9227c1f0");
    check_field_offset(lv, s9227c1f1, ABISELECT(56,44), "S9227C1.s9227c1f1");
    check_field_offset(lv, s9227c1f2, ABISELECT(64,48), "S9227C1.s9227c1f2");
    check_field_offset(lv, s9227c1f3, ABISELECT(80,60), "S9227C1.s9227c1f3");
    test_class_info(&lv, &cd_S9227C1);
    dp->~S9227C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9227C1(Test_S9227C1, "S9227C1", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S9227C1C1Ev();
extern void _ZN7S9227C1D1Ev();
Name_Map name_map_S9227C1[] = {
  NSPAIR(_ZN7S9227C1C1Ev),
  NSPAIR(_ZN7S9227C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9227C2;
extern VTBL_ENTRY _ZTI7S9227C2[];
extern  VTBL_ENTRY _ZTV7S9227C2[];
static Base_Class bases_S9227C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9227C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9227C1[];
extern void _ZN7S9227C1D1Ev();
extern void _ZN7S9227C1D0Ev();
extern void _ZN7S9227C22v3Ev();
extern void _ZN7S9227C22v4Ev();
extern void _ZN7S9227C22v5Ev();
extern void _ZN7S9227C12v1Ev();
extern void _ZN7S9227C12v2Ev();
static  VTBL_ENTRY vtc_S9227C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9227C1[0]),
  (VTBL_ENTRY)&_ZN7S9227C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9227C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9227C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9227C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9227C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9227C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9227C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9227C1[];
extern  VTBL_ENTRY _ZTV7S9227C1[];
Class_Descriptor cd_S9227C1 = {  "S9227C1", // class name
  bases_S9227C1, 1,
  &(vtc_S9227C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S9227C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9227C1),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  S12866C3  {
  __tsi64 s12866c3f0;
  void *s12866c3f1;
  void *s12866c3f2;
  void *s12866c3f3;
  void *s12866c3f4;
  void *s12866c3f5;
  int s12866c3f6;
  int s12866c3f7;
  int s12866c3f8;
  int s12866c3f9;
};
//SIG(1 S12866C3) C1{ FL Fp[5] Fi[4]}



static void Test_S12866C3()
{
  {
    init_simple_test("S12866C3");
    S12866C3 lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S12866C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12866C3)");
    check_field_offset(lv, s12866c3f0, 0, "S12866C3.s12866c3f0");
    check_field_offset(lv, s12866c3f1, 8, "S12866C3.s12866c3f1");
    check_field_offset(lv, s12866c3f2, ABISELECT(16,12), "S12866C3.s12866c3f2");
    check_field_offset(lv, s12866c3f3, ABISELECT(24,16), "S12866C3.s12866c3f3");
    check_field_offset(lv, s12866c3f4, ABISELECT(32,20), "S12866C3.s12866c3f4");
    check_field_offset(lv, s12866c3f5, ABISELECT(40,24), "S12866C3.s12866c3f5");
    check_field_offset(lv, s12866c3f6, ABISELECT(48,28), "S12866C3.s12866c3f6");
    check_field_offset(lv, s12866c3f7, ABISELECT(52,32), "S12866C3.s12866c3f7");
    check_field_offset(lv, s12866c3f8, ABISELECT(56,36), "S12866C3.s12866c3f8");
    check_field_offset(lv, s12866c3f9, ABISELECT(60,40), "S12866C3.s12866c3f9");
  }
}
static Arrange_To_Call_Me vS12866C3(Test_S12866C3, "S12866C3", ABISELECT(64,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12866C4  {
  __tsi64 s12866c4f0;
  __tsi64 s12866c4f1;
  __tsi64 s12866c4f2;
  __tsi64 s12866c4f3;
  __tsi64 s12866c4f4;
  void *s12866c4f5;
  int s12866c4f6;
  int s12866c4f7;
  int s12866c4f8;
  int s12866c4f9;
  int s12866c4f10;
};
//SIG(1 S12866C4) C1{ FL[5] Fp Fi[5]}



static void Test_S12866C4()
{
  {
    init_simple_test("S12866C4");
    S12866C4 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S12866C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12866C4)");
    check_field_offset(lv, s12866c4f0, 0, "S12866C4.s12866c4f0");
    check_field_offset(lv, s12866c4f1, 8, "S12866C4.s12866c4f1");
    check_field_offset(lv, s12866c4f2, 16, "S12866C4.s12866c4f2");
    check_field_offset(lv, s12866c4f3, 24, "S12866C4.s12866c4f3");
    check_field_offset(lv, s12866c4f4, 32, "S12866C4.s12866c4f4");
    check_field_offset(lv, s12866c4f5, 40, "S12866C4.s12866c4f5");
    check_field_offset(lv, s12866c4f6, ABISELECT(48,44), "S12866C4.s12866c4f6");
    check_field_offset(lv, s12866c4f7, ABISELECT(52,48), "S12866C4.s12866c4f7");
    check_field_offset(lv, s12866c4f8, ABISELECT(56,52), "S12866C4.s12866c4f8");
    check_field_offset(lv, s12866c4f9, ABISELECT(60,56), "S12866C4.s12866c4f9");
    check_field_offset(lv, s12866c4f10, ABISELECT(64,60), "S12866C4.s12866c4f10");
  }
}
static Arrange_To_Call_Me vS12866C4(Test_S12866C4, "S12866C4", ABISELECT(72,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S12866C2  {
  ::S12866C3 s12866c2f0;
  ::S12866C4 s12866c2f1;
};
//SIG(1 S12866C2) U1{ FC2{ FL Fp Fp Fp Fp Fp Fi Fi Fi Fi} FC3{ FL FL FL FL FL Fp Fi Fi Fi Fi Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S12866C1  {
  int s12866c1f0;
  ::S12866C2 s12866c1f1;
};
//SIG(1 S12866C1) C1{ Fi FU2{ FC3{ FL Fp Fp Fp Fp Fp Fi Fi Fi Fi} FC4{ FL FL FL FL FL Fp Fi Fi Fi Fi Fi}}}



static void Test_S12866C1()
{
  {
    init_simple_test("S12866C1");
    S12866C1 lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S12866C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12866C1)");
    check_field_offset(lv, s12866c1f0, 0, "S12866C1.s12866c1f0");
    check_field_offset(lv, s12866c1f1, ABISELECT(8,4), "S12866C1.s12866c1f1");
  }
}
static Arrange_To_Call_Me vS12866C1(Test_S12866C1, "S12866C1", ABISELECT(80,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9296C2  {
  ::S16385C7 s9296c2f0;
  int s9296c2f1[2];
  char s9296c2f2;
  virtual  ~S9296C2(); // _ZN7S9296C2D1Ev
  virtual void  v3(); // _ZN7S9296C22v3Ev
  virtual void  v4(); // _ZN7S9296C22v4Ev
  virtual void  v5(); // _ZN7S9296C22v5Ev
  S9296C2(); // tgen
};
//SIG(-1 S9296C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9296C2 ::~S9296C2(){ note_dtor("S9296C2", this);}
void  S9296C2 ::v3(){vfunc_called(this, "_ZN7S9296C22v3Ev");}
void  S9296C2 ::v4(){vfunc_called(this, "_ZN7S9296C22v4Ev");}
void  S9296C2 ::v5(){vfunc_called(this, "_ZN7S9296C22v5Ev");}
S9296C2 ::S9296C2(){ note_ctor("S9296C2", this);} // tgen

static void Test_S9296C2()
{
  extern Class_Descriptor cd_S9296C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9296C2, buf);
    S9296C2 *dp, &lv = *(dp=new (buf) S9296C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9296C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9296C2)");
    check_field_offset(lv, s9296c2f0, ABISELECT(8,4), "S9296C2.s9296c2f0");
    check_field_offset(lv, s9296c2f1, ABISELECT(24,16), "S9296C2.s9296c2f1");
    check_field_offset(lv, s9296c2f2, ABISELECT(32,24), "S9296C2.s9296c2f2");
    test_class_info(&lv, &cd_S9296C2);
    dp->~S9296C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9296C2(Test_S9296C2, "S9296C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9296C2C1Ev();
extern void _ZN7S9296C2D1Ev();
Name_Map name_map_S9296C2[] = {
  NSPAIR(_ZN7S9296C2C1Ev),
  NSPAIR(_ZN7S9296C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9296C2[];
extern void _ZN7S9296C2D1Ev();
extern void _ZN7S9296C2D0Ev();
extern void _ZN7S9296C22v3Ev();
extern void _ZN7S9296C22v4Ev();
extern void _ZN7S9296C22v5Ev();
static  VTBL_ENTRY vtc_S9296C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9296C2[0]),
  (VTBL_ENTRY)&_ZN7S9296C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9296C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9296C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9296C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9296C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9296C2[];
extern  VTBL_ENTRY _ZTV7S9296C2[];
Class_Descriptor cd_S9296C2 = {  "S9296C2", // class name
  0,0,//no base classes
  &(vtc_S9296C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9296C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9296C2),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  S9296C1  : S9296C2 {
  ::S2293C5_nt s9296c1f0;
  __tsi64 s9296c1f1;
  virtual  ~S9296C1(); // _ZN7S9296C1D1Ev
  virtual void  v1(); // _ZN7S9296C12v1Ev
  virtual void  v2(); // _ZN7S9296C12v2Ev
  S9296C1(); // tgen
};
//SIG(1 S9296C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ m Fp Fi[2] FC6{ m}} FL}


 S9296C1 ::~S9296C1(){ note_dtor("S9296C1", this);}
void  S9296C1 ::v1(){vfunc_called(this, "_ZN7S9296C12v1Ev");}
void  S9296C1 ::v2(){vfunc_called(this, "_ZN7S9296C12v2Ev");}
S9296C1 ::S9296C1(){ note_ctor("S9296C1", this);} // tgen

static void Test_S9296C1()
{
  extern Class_Descriptor cd_S9296C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S9296C1, buf);
    S9296C1 *dp, &lv = *(dp=new (buf) S9296C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S9296C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9296C1)");
    check_base_class_offset(lv, (S9296C2*), 0, "S9296C1");
    check_field_offset(lv, s9296c1f0, ABISELECT(40,28), "S9296C1.s9296c1f0");
    check_field_offset(lv, s9296c1f1, ABISELECT(64,44), "S9296C1.s9296c1f1");
    test_class_info(&lv, &cd_S9296C1);
    dp->~S9296C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9296C1(Test_S9296C1, "S9296C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S9296C1C1Ev();
extern void _ZN7S9296C1D1Ev();
Name_Map name_map_S9296C1[] = {
  NSPAIR(_ZN7S9296C1C1Ev),
  NSPAIR(_ZN7S9296C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9296C2;
extern VTBL_ENTRY _ZTI7S9296C2[];
extern  VTBL_ENTRY _ZTV7S9296C2[];
static Base_Class bases_S9296C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9296C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9296C1[];
extern void _ZN7S9296C1D1Ev();
extern void _ZN7S9296C1D0Ev();
extern void _ZN7S9296C22v3Ev();
extern void _ZN7S9296C22v4Ev();
extern void _ZN7S9296C22v5Ev();
extern void _ZN7S9296C12v1Ev();
extern void _ZN7S9296C12v2Ev();
static  VTBL_ENTRY vtc_S9296C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9296C1[0]),
  (VTBL_ENTRY)&_ZN7S9296C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9296C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9296C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9296C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9296C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9296C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9296C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9296C1[];
extern  VTBL_ENTRY _ZTV7S9296C1[];
Class_Descriptor cd_S9296C1 = {  "S9296C1", // class name
  bases_S9296C1, 1,
  &(vtc_S9296C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S9296C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9296C1),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  S9287C2  {
  ::S16385C7 s9287c2f0;
  int s9287c2f1[2];
  char s9287c2f2;
  virtual  ~S9287C2(); // _ZN7S9287C2D1Ev
  virtual void  v3(); // _ZN7S9287C22v3Ev
  virtual void  v4(); // _ZN7S9287C22v4Ev
  virtual void  v5(); // _ZN7S9287C22v5Ev
  S9287C2(); // tgen
};
//SIG(-1 S9287C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9287C2 ::~S9287C2(){ note_dtor("S9287C2", this);}
void  S9287C2 ::v3(){vfunc_called(this, "_ZN7S9287C22v3Ev");}
void  S9287C2 ::v4(){vfunc_called(this, "_ZN7S9287C22v4Ev");}
void  S9287C2 ::v5(){vfunc_called(this, "_ZN7S9287C22v5Ev");}
S9287C2 ::S9287C2(){ note_ctor("S9287C2", this);} // tgen

static void Test_S9287C2()
{
  extern Class_Descriptor cd_S9287C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9287C2, buf);
    S9287C2 *dp, &lv = *(dp=new (buf) S9287C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9287C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9287C2)");
    check_field_offset(lv, s9287c2f0, ABISELECT(8,4), "S9287C2.s9287c2f0");
    check_field_offset(lv, s9287c2f1, ABISELECT(24,16), "S9287C2.s9287c2f1");
    check_field_offset(lv, s9287c2f2, ABISELECT(32,24), "S9287C2.s9287c2f2");
    test_class_info(&lv, &cd_S9287C2);
    dp->~S9287C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9287C2(Test_S9287C2, "S9287C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9287C2C1Ev();
extern void _ZN7S9287C2D1Ev();
Name_Map name_map_S9287C2[] = {
  NSPAIR(_ZN7S9287C2C1Ev),
  NSPAIR(_ZN7S9287C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9287C2[];
extern void _ZN7S9287C2D1Ev();
extern void _ZN7S9287C2D0Ev();
extern void _ZN7S9287C22v3Ev();
extern void _ZN7S9287C22v4Ev();
extern void _ZN7S9287C22v5Ev();
static  VTBL_ENTRY vtc_S9287C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9287C2[0]),
  (VTBL_ENTRY)&_ZN7S9287C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9287C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9287C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9287C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9287C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9287C2[];
extern  VTBL_ENTRY _ZTV7S9287C2[];
Class_Descriptor cd_S9287C2 = {  "S9287C2", // class name
  0,0,//no base classes
  &(vtc_S9287C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9287C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9287C2),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  S9287C5_nt  {
  int s9287c5f0[2];
  void *s9287c5f1;
  int s9287c5f2[2];
};
//SIG(-1 S9287C5_nt) C1{ Fi[2] Fp Fi[2]}



//skip512 S9287C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9287C1  : S9287C2 {
  ::S9287C5_nt s9287c1f0;
  ::S9287C5_nt s9287c1f1;
  virtual  ~S9287C1(); // _ZN7S9287C1D1Ev
  virtual void  v1(); // _ZN7S9287C12v1Ev
  virtual void  v2(); // _ZN7S9287C12v2Ev
  S9287C1(); // tgen
};
//SIG(1 S9287C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ Fi[2] Fp Fi[2]} FC5}


 S9287C1 ::~S9287C1(){ note_dtor("S9287C1", this);}
void  S9287C1 ::v1(){vfunc_called(this, "_ZN7S9287C12v1Ev");}
void  S9287C1 ::v2(){vfunc_called(this, "_ZN7S9287C12v2Ev");}
S9287C1 ::S9287C1(){ note_ctor("S9287C1", this);} // tgen

static void Test_S9287C1()
{
  extern Class_Descriptor cd_S9287C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S9287C1, buf);
    S9287C1 *dp, &lv = *(dp=new (buf) S9287C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S9287C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9287C1)");
    check_base_class_offset(lv, (S9287C2*), 0, "S9287C1");
    check_field_offset(lv, s9287c1f0, ABISELECT(40,28), "S9287C1.s9287c1f0");
    check_field_offset(lv, s9287c1f1, ABISELECT(64,48), "S9287C1.s9287c1f1");
    test_class_info(&lv, &cd_S9287C1);
    dp->~S9287C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9287C1(Test_S9287C1, "S9287C1", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN7S9287C1C1Ev();
extern void _ZN7S9287C1D1Ev();
Name_Map name_map_S9287C1[] = {
  NSPAIR(_ZN7S9287C1C1Ev),
  NSPAIR(_ZN7S9287C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9287C2;
extern VTBL_ENTRY _ZTI7S9287C2[];
extern  VTBL_ENTRY _ZTV7S9287C2[];
static Base_Class bases_S9287C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9287C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9287C1[];
extern void _ZN7S9287C1D1Ev();
extern void _ZN7S9287C1D0Ev();
extern void _ZN7S9287C22v3Ev();
extern void _ZN7S9287C22v4Ev();
extern void _ZN7S9287C22v5Ev();
extern void _ZN7S9287C12v1Ev();
extern void _ZN7S9287C12v2Ev();
static  VTBL_ENTRY vtc_S9287C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9287C1[0]),
  (VTBL_ENTRY)&_ZN7S9287C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9287C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9287C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9287C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9287C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9287C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9287C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9287C1[];
extern  VTBL_ENTRY _ZTV7S9287C1[];
Class_Descriptor cd_S9287C1 = {  "S9287C1", // class name
  bases_S9287C1, 1,
  &(vtc_S9287C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI7S9287C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9287C1),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  S17464C1  {
  void *s17464c1f0;
  char s17464c1f1[2];
  int s17464c1f2[3];
  ::S16385C7 s17464c1f3;
  char s17464c1f4;
  int s17464c1f5;
  void *s17464c1f6;
  char s17464c1f7[2];
  void *s17464c1f8;
  char s17464c1f9;
  ::S2293C7_nt s17464c1f10;
  void  mf17464c1(); // _ZN8S17464C19mf17464c1Ev
};
//SIG(1 S17464C1) C1{ m Fp Fc[2] Fi[3] FC2{ m Fp Fi FC3{ m}} Fc Fi Fp Fc[2] Fp Fc FC4{ m FC5{ Fl[4]}}}


void  S17464C1 ::mf17464c1(){}

static void Test_S17464C1()
{
  {
    init_simple_test("S17464C1");
    S17464C1 lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S17464C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17464C1)");
    check_field_offset(lv, s17464c1f0, 0, "S17464C1.s17464c1f0");
    check_field_offset(lv, s17464c1f1, ABISELECT(8,4), "S17464C1.s17464c1f1");
    check_field_offset(lv, s17464c1f2, ABISELECT(12,8), "S17464C1.s17464c1f2");
    check_field_offset(lv, s17464c1f3, ABISELECT(24,20), "S17464C1.s17464c1f3");
    check_field_offset(lv, s17464c1f4, ABISELECT(40,32), "S17464C1.s17464c1f4");
    check_field_offset(lv, s17464c1f5, ABISELECT(44,36), "S17464C1.s17464c1f5");
    check_field_offset(lv, s17464c1f6, ABISELECT(48,40), "S17464C1.s17464c1f6");
    check_field_offset(lv, s17464c1f7, ABISELECT(56,44), "S17464C1.s17464c1f7");
    check_field_offset(lv, s17464c1f8, ABISELECT(64,48), "S17464C1.s17464c1f8");
    check_field_offset(lv, s17464c1f9, ABISELECT(72,52), "S17464C1.s17464c1f9");
    check_field_offset(lv, s17464c1f10, ABISELECT(80,56), "S17464C1.s17464c1f10");
  }
}
static Arrange_To_Call_Me vS17464C1(Test_S17464C1, "S17464C1", ABISELECT(112,72));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2939C2  : S19490C26 {
  int s2939c2f0;
  virtual  ~S2939C2(); // _ZN7S2939C2D1Ev
  virtual void  v6(); // _ZN7S2939C22v6Ev
  virtual void  v7(); // _ZN7S2939C22v7Ev
  virtual void  v8(); // _ZN7S2939C22v8Ev
  virtual void  v9(); // _ZN7S2939C22v9Ev
  virtual void  v10(); // _ZN7S2939C23v10Ev
  virtual void  v11(); // _ZN7S2939C23v11Ev
  virtual void  v12(); // _ZN7S2939C23v12Ev
  virtual void  v13(); // _ZN7S2939C23v13Ev
  S2939C2(); // tgen
};
//SIG(-1 S2939C2) C1{ BC2{ m} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi}


 S2939C2 ::~S2939C2(){ note_dtor("S2939C2", this);}
void  S2939C2 ::v6(){vfunc_called(this, "_ZN7S2939C22v6Ev");}
void  S2939C2 ::v7(){vfunc_called(this, "_ZN7S2939C22v7Ev");}
void  S2939C2 ::v8(){vfunc_called(this, "_ZN7S2939C22v8Ev");}
void  S2939C2 ::v9(){vfunc_called(this, "_ZN7S2939C22v9Ev");}
void  S2939C2 ::v10(){vfunc_called(this, "_ZN7S2939C23v10Ev");}
void  S2939C2 ::v11(){vfunc_called(this, "_ZN7S2939C23v11Ev");}
void  S2939C2 ::v12(){vfunc_called(this, "_ZN7S2939C23v12Ev");}
void  S2939C2 ::v13(){vfunc_called(this, "_ZN7S2939C23v13Ev");}
S2939C2 ::S2939C2(){ note_ctor("S2939C2", this);} // tgen

static void Test_S2939C2()
{
  extern Class_Descriptor cd_S2939C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2939C2, buf);
    S2939C2 *dp, &lv = *(dp=new (buf) S2939C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2939C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2939C2)");
    check_base_class_offset(lv, (S19490C26*), 0, "S2939C2");
    check_field_offset(lv, s2939c2f0, ABISELECT(8,4), "S2939C2.s2939c2f0");
    test_class_info(&lv, &cd_S2939C2);
    dp->~S2939C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2939C2(Test_S2939C2, "S2939C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2939C2C1Ev();
extern void _ZN7S2939C2D1Ev();
Name_Map name_map_S2939C2[] = {
  NSPAIR(_ZN7S2939C2C1Ev),
  NSPAIR(_ZN7S2939C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S2939C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2939C2[];
extern void _ZN7S2939C2D1Ev();
extern void _ZN7S2939C2D0Ev();
extern void _ZN7S2939C22v6Ev();
extern void _ZN7S2939C22v7Ev();
extern void _ZN7S2939C22v8Ev();
extern void _ZN7S2939C22v9Ev();
extern void _ZN7S2939C23v10Ev();
extern void _ZN7S2939C23v11Ev();
extern void _ZN7S2939C23v12Ev();
extern void _ZN7S2939C23v13Ev();
static  VTBL_ENTRY vtc_S2939C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2939C2[0]),
  (VTBL_ENTRY)&_ZN7S2939C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2939C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S2939C2[];
extern  VTBL_ENTRY _ZTV7S2939C2[];
Class_Descriptor cd_S2939C2 = {  "S2939C2", // class name
  bases_S2939C2, 1,
  &(vtc_S2939C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2939C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2939C2),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2939C1  : S2939C2 {
  void *s2939c1f0[2];
  int s2939c1f1[2];
  virtual  ~S2939C1(); // _ZN7S2939C1D1Ev
  virtual void  v1(); // _ZN7S2939C12v1Ev
  virtual void  v2(); // _ZN7S2939C12v2Ev
  virtual void  v3(); // _ZN7S2939C12v3Ev
  virtual void  v4(); // _ZN7S2939C12v4Ev
  virtual void  v5(); // _ZN7S2939C12v5Ev
  S2939C1(); // tgen
};
//SIG(1 S2939C1) C1{ BC2{ BC3{ m} vd v6 v7 v8 v9 v10 v11 v12 v13 Fi} vd v1 v2 v3 v4 v5 Fp[2] Fi[2]}


 S2939C1 ::~S2939C1(){ note_dtor("S2939C1", this);}
void  S2939C1 ::v1(){vfunc_called(this, "_ZN7S2939C12v1Ev");}
void  S2939C1 ::v2(){vfunc_called(this, "_ZN7S2939C12v2Ev");}
void  S2939C1 ::v3(){vfunc_called(this, "_ZN7S2939C12v3Ev");}
void  S2939C1 ::v4(){vfunc_called(this, "_ZN7S2939C12v4Ev");}
void  S2939C1 ::v5(){vfunc_called(this, "_ZN7S2939C12v5Ev");}
S2939C1 ::S2939C1(){ note_ctor("S2939C1", this);} // tgen

static void Test_S2939C1()
{
  extern Class_Descriptor cd_S2939C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S2939C1, buf);
    S2939C1 *dp, &lv = *(dp=new (buf) S2939C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S2939C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2939C1)");
    check_base_class_offset(lv, (S19490C26*)(S2939C2*), 0, "S2939C1");
    check_base_class_offset(lv, (S2939C2*), 0, "S2939C1");
    check_field_offset(lv, s2939c1f0, ABISELECT(16,8), "S2939C1.s2939c1f0");
    check_field_offset(lv, s2939c1f1, ABISELECT(32,16), "S2939C1.s2939c1f1");
    test_class_info(&lv, &cd_S2939C1);
    dp->~S2939C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2939C1(Test_S2939C1, "S2939C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S2939C1C1Ev();
extern void _ZN7S2939C1D1Ev();
Name_Map name_map_S2939C1[] = {
  NSPAIR(_ZN7S2939C1C1Ev),
  NSPAIR(_ZN7S2939C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S2939C2;
extern VTBL_ENTRY _ZTI7S2939C2[];
extern  VTBL_ENTRY _ZTV7S2939C2[];
static Base_Class bases_S2939C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2939C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2939C1[];
extern void _ZN7S2939C1D1Ev();
extern void _ZN7S2939C1D0Ev();
extern void _ZN7S2939C22v6Ev();
extern void _ZN7S2939C22v7Ev();
extern void _ZN7S2939C22v8Ev();
extern void _ZN7S2939C22v9Ev();
extern void _ZN7S2939C23v10Ev();
extern void _ZN7S2939C23v11Ev();
extern void _ZN7S2939C23v12Ev();
extern void _ZN7S2939C23v13Ev();
extern void _ZN7S2939C12v1Ev();
extern void _ZN7S2939C12v2Ev();
extern void _ZN7S2939C12v3Ev();
extern void _ZN7S2939C12v4Ev();
extern void _ZN7S2939C12v5Ev();
static  VTBL_ENTRY vtc_S2939C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2939C1[0]),
  (VTBL_ENTRY)&_ZN7S2939C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2939C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2939C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2939C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2939C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2939C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2939C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2939C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2939C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S2939C1[];
extern  VTBL_ENTRY _ZTV7S2939C1[];
Class_Descriptor cd_S2939C1 = {  "S2939C1", // class name
  bases_S2939C1, 2,
  &(vtc_S2939C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S2939C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2939C1),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  S5979C3  {
  void *s5979c3f0[2];
  int s5979c3f1[6];
  ::S16385C7 s5979c3f2;
  ::S16385C7 s5979c3f3;
  int s5979c3f4;
  void  mf5979c3(); // _ZN7S5979C38mf5979c3Ev
};
//SIG(-1 S5979C3) C1{ m Fp[2] Fi[6] FC2{ m Fp Fi FC3{ m}} FC2 Fi}


void  S5979C3 ::mf5979c3(){}

static void Test_S5979C3()
{
  {
    init_simple_test("S5979C3");
    S5979C3 lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S5979C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5979C3)");
    check_field_offset(lv, s5979c3f0, 0, "S5979C3.s5979c3f0");
    check_field_offset(lv, s5979c3f1, ABISELECT(16,8), "S5979C3.s5979c3f1");
    check_field_offset(lv, s5979c3f2, ABISELECT(40,32), "S5979C3.s5979c3f2");
    check_field_offset(lv, s5979c3f3, ABISELECT(56,44), "S5979C3.s5979c3f3");
    check_field_offset(lv, s5979c3f4, ABISELECT(72,56), "S5979C3.s5979c3f4");
  }
}
static Arrange_To_Call_Me vS5979C3(Test_S5979C3, "S5979C3", ABISELECT(80,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5979C6_nt  {
  int s5979c6f0[2];
};
//SIG(-1 S5979C6_nt) C1{ Fi[2]}



//skip512 S5979C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5979C2  {
  void *s5979c2f0;
  int s5979c2f1;
  char s5979c2f2;
  ::S5979C3 s5979c2f3;
  ::S5979C6_nt s5979c2f4;
  char s5979c2f5;
  void  mf5979c2(); // _ZN7S5979C28mf5979c2Ev
};
//SIG(-1 S5979C2) C1{ m Fp Fi Fc FC2{ m Fp[2] Fi[6] FC3{ m Fp Fi FC4{ m}} FC3 Fi} FC5{ Fi[2]} Fc}


void  S5979C2 ::mf5979c2(){}

static void Test_S5979C2()
{
  {
    init_simple_test("S5979C2");
    S5979C2 lv;
    check2(sizeof(lv), ABISELECT(112,84), "sizeof(S5979C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5979C2)");
    check_field_offset(lv, s5979c2f0, 0, "S5979C2.s5979c2f0");
    check_field_offset(lv, s5979c2f1, ABISELECT(8,4), "S5979C2.s5979c2f1");
    check_field_offset(lv, s5979c2f2, ABISELECT(12,8), "S5979C2.s5979c2f2");
    check_field_offset(lv, s5979c2f3, ABISELECT(16,12), "S5979C2.s5979c2f3");
    check_field_offset(lv, s5979c2f4, ABISELECT(96,72), "S5979C2.s5979c2f4");
    check_field_offset(lv, s5979c2f5, ABISELECT(104,80), "S5979C2.s5979c2f5");
  }
}
static Arrange_To_Call_Me vS5979C2(Test_S5979C2, "S5979C2", ABISELECT(112,84));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5979C1  : S5979C2 {
};
//SIG(1 S5979C1) C1{ BC2{ m Fp Fi Fc FC3{ m Fp[2] Fi[6] FC4{ m Fp Fi FC5{ m}} FC4 Fi} FC6{ Fi[2]} Fc}}



static void Test_S5979C1()
{
  extern Class_Descriptor cd_S5979C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,22)];
    init_test(&cd_S5979C1, buf);
    S5979C1 &lv = *(new (buf) S5979C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,84), "sizeof(S5979C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5979C1)");
    check_base_class_offset(lv, (S5979C2*), 0, "S5979C1");
    test_class_info(&lv, &cd_S5979C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5979C1(Test_S5979C1, "S5979C1", ABISELECT(112,84));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20721C2  : virtual S19490C26 {
  int s20721c2f0;
  ~S20721C2(); // tgen
  S20721C2(); // tgen
};
//SIG(-1 S20721C2) C1{ VBC2{ m} Fi}


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

static void Test_S20721C2()
{
  extern Class_Descriptor cd_S20721C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20721C2, buf);
    S20721C2 *dp, &lv = *(dp=new (buf) S20721C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20721C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20721C2)");
    check_base_class_offset(lv, (S19490C26*), 0, "S20721C2");
    check_field_offset(lv, s20721c2f0, ABISELECT(8,4), "S20721C2.s20721c2f0");
    test_class_info(&lv, &cd_S20721C2);
    dp->~S20721C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20721C2(Test_S20721C2, "S20721C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20721C2C1Ev();
extern void _ZN8S20721C2D1Ev();
Name_Map name_map_S20721C2[] = {
  NSPAIR(_ZN8S20721C2C1Ev),
  NSPAIR(_ZN8S20721C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S20721C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20721C2[];
static  VTBL_ENTRY vtc_S20721C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C2[0]),
};
extern VTBL_ENTRY _ZTV8S20721C2[];
static  VTT_ENTRY vtt_S20721C2[] = {
  {&(_ZTV8S20721C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20721C2[];
extern  VTBL_ENTRY _ZTV8S20721C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C2[];
Class_Descriptor cd_S20721C2 = {  "S20721C2", // class name
  bases_S20721C2, 1,
  &(vtc_S20721C2[0]), // expected_vtbl_contents
  &(vtt_S20721C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20721C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20721C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20721C2),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  S20721C5  : S19490C10_nt , S19490C18 , S19490C26 {
};
//SIG(-1 S20721C5) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S20721C5()
{
  extern Class_Descriptor cd_S20721C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20721C5, buf);
    S20721C5 &lv = *(new (buf) S20721C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20721C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20721C5)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S20721C5");
    check_base_class_offset(lv, (S19490C18*), 0, "S20721C5");
    check_base_class_offset(lv, (S19490C26*), 0, "S20721C5");
    test_class_info(&lv, &cd_S20721C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20721C5(Test_S20721C5, "S20721C5", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S20721C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20721C5[];
Class_Descriptor cd_S20721C5 = {  "S20721C5", // class name
  bases_S20721C5, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20721C5),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20721C4  : virtual S20721C5 , virtual S19490C12 , S19490C18 {
  ~S20721C4(); // tgen
  S20721C4(); // tgen
};
//SIG(-1 S20721C4) C1{ VBC2{ BC3{ m Fp} BC4{ m} BC5{ m}} VBC6{ m} BC4}


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

static void Test_S20721C4()
{
  extern Class_Descriptor cd_S20721C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20721C4, buf);
    S20721C4 *dp, &lv = *(dp=new (buf) S20721C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20721C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20721C4)");
    check_base_class_offset(lv, (S19490C10_nt*)(S20721C5*), ABISELECT(8,4), "S20721C4");
    check_base_class_offset(lv, (S19490C18*)(S20721C5*), ABISELECT(8,4), "S20721C4");
    check_base_class_offset(lv, (S19490C26*)(S20721C5*), ABISELECT(8,4), "S20721C4");
    check_base_class_offset(lv, (S20721C5*), ABISELECT(8,4), "S20721C4");
    check_base_class_offset(lv, (S19490C12*), 0, "S20721C4");
    /*is_ambiguous_... S20721C4::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S20721C4");
    test_class_info(&lv, &cd_S20721C4);
    dp->~S20721C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20721C4(Test_S20721C4, "S20721C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20721C4C1Ev();
extern void _ZN8S20721C4D1Ev();
Name_Map name_map_S20721C4[] = {
  NSPAIR(_ZN8S20721C4C1Ev),
  NSPAIR(_ZN8S20721C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20721C5;
extern VTBL_ENTRY _ZTI8S20721C5[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S20721C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_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
    3, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20721C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20721C4[];
static  VTBL_ENTRY vtc_S20721C4[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C4[0]),
};
extern VTBL_ENTRY _ZTV8S20721C4[];
static  VTT_ENTRY vtt_S20721C4[] = {
  {&(_ZTV8S20721C4[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S20721C4[];
extern  VTBL_ENTRY _ZTV8S20721C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C4[];
Class_Descriptor cd_S20721C4 = {  "S20721C4", // class name
  bases_S20721C4, 6,
  &(vtc_S20721C4[0]), // expected_vtbl_contents
  &(vtt_S20721C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20721C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20721C4),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20721C4),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  S20721C9  : virtual S19490C12 {
  virtual  ~S20721C9(); // _ZN8S20721C9D2Ev
  S20721C9(); // tgen
};
//SIG(-1 S20721C9) C1{ VBC2{ m} vd}


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

static void Test_S20721C9()
{
  extern Class_Descriptor cd_S20721C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20721C9, buf);
    S20721C9 *dp, &lv = *(dp=new (buf) S20721C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20721C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20721C9)");
    check_base_class_offset(lv, (S19490C12*), 0, "S20721C9");
    test_class_info(&lv, &cd_S20721C9);
    dp->~S20721C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20721C9(Test_S20721C9, "S20721C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20721C9C1Ev();
extern void _ZN8S20721C9D2Ev();
Name_Map name_map_S20721C9[] = {
  NSPAIR(_ZN8S20721C9C1Ev),
  NSPAIR(_ZN8S20721C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S20721C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20721C9[];
extern void _ZN8S20721C9D1Ev();
extern void _ZN8S20721C9D0Ev();
static  VTBL_ENTRY vtc_S20721C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C9[0]),
  (VTBL_ENTRY)&_ZN8S20721C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20721C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S20721C9[];
static  VTT_ENTRY vtt_S20721C9[] = {
  {&(_ZTV8S20721C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20721C9[];
extern  VTBL_ENTRY _ZTV8S20721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C9[];
Class_Descriptor cd_S20721C9 = {  "S20721C9", // class name
  bases_S20721C9, 1,
  &(vtc_S20721C9[0]), // expected_vtbl_contents
  &(vtt_S20721C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20721C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20721C9),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20721C9),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  S20721C1  : virtual S20721C2 , virtual S20721C4 , S20721C9 , virtual S19490C18 {
  ~S20721C1(); // tgen
  S20721C1(); // tgen
};
//SIG(1 S20721C1) C1{ VBC2{ VBC3{ m} Fi} VBC4{ VBC5{ BC6{ m Fp} BC7{ m} BC3} VBC8{ m} BC7} BC9{ VBC8 vd} VBC7}


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

static void Test_S20721C1()
{
  extern Class_Descriptor cd_S20721C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20721C1, buf);
    S20721C1 *dp, &lv = *(dp=new (buf) S20721C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20721C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20721C1)");
    check_base_class_offset(lv, (S19490C26*)(S20721C2*), 0, "S20721C1");
    check_base_class_offset(lv, (S20721C2*), ABISELECT(8,4), "S20721C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S20721C5*), ABISELECT(32,16), "S20721C1");
    check_base_class_offset(lv, (S19490C18*)(S20721C5*), ABISELECT(32,16), "S20721C1");
    check_base_class_offset(lv, (S19490C26*)(S20721C5*), ABISELECT(32,16), "S20721C1");
    check_base_class_offset(lv, (S20721C5*)(S20721C4*), ABISELECT(32,16), "S20721C1");
    check_base_class_offset(lv, (S19490C12*)(S20721C4*), 0, "S20721C1");
    check_base_class_offset(lv, (S19490C12*)(S20721C9*), 0, "S20721C1");
    /*is_ambiguous_... S20721C4::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S20721C4*), ABISELECT(24,12), "S20721C1");
    check_base_class_offset(lv, (S20721C4*), ABISELECT(24,12), "S20721C1");
    check_base_class_offset(lv, (S20721C9*), 0, "S20721C1");
    /*is_ambiguous_... S20721C1::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S20721C1");
    test_class_info(&lv, &cd_S20721C1);
    dp->~S20721C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20721C1(Test_S20721C1, "S20721C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20721C1C1Ev();
extern void _ZN8S20721C1D1Ev();
Name_Map name_map_S20721C1[] = {
  NSPAIR(_ZN8S20721C1C1Ev),
  NSPAIR(_ZN8S20721C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20721C2;
extern VTBL_ENTRY _ZTI8S20721C2[];
extern  VTBL_ENTRY _ZTV8S20721C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C2[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S20721C5;
extern VTBL_ENTRY _ZTI8S20721C5[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S20721C4;
extern VTBL_ENTRY _ZTI8S20721C4[];
extern  VTBL_ENTRY _ZTV8S20721C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C4[];
extern Class_Descriptor cd_S20721C9;
extern VTBL_ENTRY _ZTI8S20721C9[];
extern  VTBL_ENTRY _ZTV8S20721C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C9[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S20721C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20721C2,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_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_S19490C18,    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_S19490C26,    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_S20721C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C18,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20721C4,    ABISELECT(24,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20721C9,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20721C1[];
extern void _ZN8S20721C1D1Ev();
extern void _ZN8S20721C1D0Ev();
static  VTBL_ENTRY vtc_S20721C1[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C1[0]),
  (VTBL_ENTRY)&_ZN8S20721C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20721C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20721C1[0]),
  ABISELECT(-24,-12),
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20721C1[0]),
};
extern VTBL_ENTRY _ZTV8S20721C1[];
extern void _ZN8S20721C9D1Ev();
extern void _ZN8S20721C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20721C9__8S20721C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C9[0]),
  (VTBL_ENTRY)&_ZN8S20721C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20721C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20721C2__8S20721C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20721C4__8S20721C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20721C4[0]),
};
static  VTT_ENTRY vtt_S20721C1[] = {
  {&(_ZTV8S20721C1[8]),  8,17},
  {&(_tg__ZTV8S20721C9__8S20721C1[3]),  3,5},
  {&(_ZTV8S20721C1[13]),  13,17},
  {&(_ZTV8S20721C1[17]),  17,17},
  {&(_tg__ZTV8S20721C2__8S20721C1[3]),  3,3},
  {&(_tg__ZTV8S20721C4__8S20721C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S20721C1[];
extern  VTBL_ENTRY _ZTV8S20721C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20721C1[];
Class_Descriptor cd_S20721C1 = {  "S20721C1", // class name
  bases_S20721C1, 11,
  &(vtc_S20721C1[0]), // expected_vtbl_contents
  &(vtt_S20721C1[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20721C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20721C1),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20721C1),6, //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  S14963C1  {
  ::S14964C2 s14963c1f0[128];
  int s14963c1f1;
  int s14963c1f2;
  int s14963c1f3;
  int s14963c1f4;
  __tsi64 s14963c1f5;
  int s14963c1f6;
  int s14963c1f7;
  int s14963c1f8[4];
  int s14963c1f9;
  __tsi64 s14963c1f10[96];
};
//SIG(1 S14963C1) C1{ FU2{ Fc[16] Fs[8] Fi[4] FL[2]}[128] Fi Fi Fi Fi FL Fi Fi Fi[4] Fi FL[96]}



static void Test_S14963C1()
{
  {
    init_simple_test("S14963C1");
    S14963C1 lv;
    check2(sizeof(lv), ABISELECT(2872,2868), "sizeof(S14963C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14963C1)");
    check_field_offset(lv, s14963c1f0, 0, "S14963C1.s14963c1f0");
    check_field_offset(lv, s14963c1f1, 2048, "S14963C1.s14963c1f1");
    check_field_offset(lv, s14963c1f2, 2052, "S14963C1.s14963c1f2");
    check_field_offset(lv, s14963c1f3, 2056, "S14963C1.s14963c1f3");
    check_field_offset(lv, s14963c1f4, 2060, "S14963C1.s14963c1f4");
    check_field_offset(lv, s14963c1f5, 2064, "S14963C1.s14963c1f5");
    check_field_offset(lv, s14963c1f6, 2072, "S14963C1.s14963c1f6");
    check_field_offset(lv, s14963c1f7, 2076, "S14963C1.s14963c1f7");
    check_field_offset(lv, s14963c1f8, 2080, "S14963C1.s14963c1f8");
    check_field_offset(lv, s14963c1f9, 2096, "S14963C1.s14963c1f9");
    check_field_offset(lv, s14963c1f10, ABISELECT(2104,2100), "S14963C1.s14963c1f10");
  }
}
static Arrange_To_Call_Me vS14963C1(Test_S14963C1, "S14963C1", ABISELECT(2872,2868));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1180C6  : S19490C10_nt , S19490C26 , S19490C18 {
};
//SIG(-1 S1180C6) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S1180C6()
{
  extern Class_Descriptor cd_S1180C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1180C6, buf);
    S1180C6 &lv = *(new (buf) S1180C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1180C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1180C6)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S1180C6");
    check_base_class_offset(lv, (S19490C26*), 0, "S1180C6");
    check_base_class_offset(lv, (S19490C18*), 0, "S1180C6");
    test_class_info(&lv, &cd_S1180C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1180C6(Test_S1180C6, "S1180C6", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
static Base_Class bases_S1180C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1180C6[];
Class_Descriptor cd_S1180C6 = {  "S1180C6", // class name
  bases_S1180C6, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1180C6),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1180C3  : S19490C26 , virtual S19490C18 , S1180C6 {
  ~S1180C3(); // tgen
  S1180C3(); // tgen
};
//SIG(-1 S1180C3) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S1180C3()
{
  extern Class_Descriptor cd_S1180C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1180C3, buf);
    S1180C3 *dp, &lv = *(dp=new (buf) S1180C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1180C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1180C3)");
    /*is_ambiguous_... S1180C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*), 0, "S1180C3");
    /*is_ambiguous_... S1180C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S1180C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S1180C6*), ABISELECT(8,4), "S1180C3");
    check_base_class_offset(lv, (S19490C26*)(S1180C6*), ABISELECT(8,4), "S1180C3");
    check_base_class_offset(lv, (S19490C18*)(S1180C6*), ABISELECT(8,4), "S1180C3");
    check_base_class_offset(lv, (S1180C6*), ABISELECT(8,4), "S1180C3");
    test_class_info(&lv, &cd_S1180C3);
    dp->~S1180C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1180C3(Test_S1180C3, "S1180C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1180C3C1Ev();
extern void _ZN7S1180C3D1Ev();
Name_Map name_map_S1180C3[] = {
  NSPAIR(_ZN7S1180C3C1Ev),
  NSPAIR(_ZN7S1180C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1180C6;
extern VTBL_ENTRY _ZTI7S1180C6[];
static Base_Class bases_S1180C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1180C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1180C3[];
static  VTBL_ENTRY vtc_S1180C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C3[0]),
};
extern VTBL_ENTRY _ZTV7S1180C3[];
static  VTT_ENTRY vtt_S1180C3[] = {
  {&(_ZTV7S1180C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1180C3[];
extern  VTBL_ENTRY _ZTV7S1180C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C3[];
Class_Descriptor cd_S1180C3 = {  "S1180C3", // class name
  bases_S1180C3, 6,
  &(vtc_S1180C3[0]), // expected_vtbl_contents
  &(vtt_S1180C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1180C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1180C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1180C3),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  S1180C2  : S1180C3 , S19490C12 {
  virtual  ~S1180C2(); // _ZN7S1180C2D2Ev
  S1180C2(); // tgen
};
//SIG(-1 S1180C2) C1{ BC2{ BC3{ m} VBC4{ m} BC5{ BC6{ m Fp} BC3 BC4}} BC7{ m} vd}


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

static void Test_S1180C2()
{
  extern Class_Descriptor cd_S1180C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1180C2, buf);
    S1180C2 *dp, &lv = *(dp=new (buf) S1180C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1180C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1180C2)");
    /*is_ambiguous_... S1180C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1180C3*), 0, "S1180C2");
    /*is_ambiguous_... S1180C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1180C3*), 0, "S1180C2");
    check_base_class_offset(lv, (S19490C10_nt*)(S1180C6*)(S1180C3*), ABISELECT(8,4), "S1180C2");
    check_base_class_offset(lv, (S19490C26*)(S1180C6*)(S1180C3*), ABISELECT(8,4), "S1180C2");
    check_base_class_offset(lv, (S19490C18*)(S1180C6*)(S1180C3*), ABISELECT(8,4), "S1180C2");
    check_base_class_offset(lv, (S1180C6*)(S1180C3*), ABISELECT(8,4), "S1180C2");
    check_base_class_offset(lv, (S1180C3*), 0, "S1180C2");
    check_base_class_offset(lv, (S19490C12*), 0, "S1180C2");
    test_class_info(&lv, &cd_S1180C2);
    dp->~S1180C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1180C2(Test_S1180C2, "S1180C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1180C2C1Ev();
extern void _ZN7S1180C2D2Ev();
Name_Map name_map_S1180C2[] = {
  NSPAIR(_ZN7S1180C2C1Ev),
  NSPAIR(_ZN7S1180C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1180C6;
extern VTBL_ENTRY _ZTI7S1180C6[];
extern Class_Descriptor cd_S1180C3;
extern VTBL_ENTRY _ZTI7S1180C3[];
extern  VTBL_ENTRY _ZTV7S1180C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C3[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S1180C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1180C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1180C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1180C2[];
extern void _ZN7S1180C2D1Ev();
extern void _ZN7S1180C2D0Ev();
static  VTBL_ENTRY vtc_S1180C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C2[0]),
  (VTBL_ENTRY)&_ZN7S1180C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1180C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S1180C2[];
static  VTBL_ENTRY _tg__ZTV7S1180C3__7S1180C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C3[0]),
};
static  VTT_ENTRY vtt_S1180C2[] = {
  {&(_ZTV7S1180C2[3]),  3,5},
  {&(_tg__ZTV7S1180C3__7S1180C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1180C2[];
extern  VTBL_ENTRY _ZTV7S1180C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C2[];
Class_Descriptor cd_S1180C2 = {  "S1180C2", // class name
  bases_S1180C2, 8,
  &(vtc_S1180C2[0]), // expected_vtbl_contents
  &(vtt_S1180C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1180C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1180C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1180C2),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  S1180C9  : S19490C12 , virtual S1180C3 {
  virtual  ~S1180C9(); // _ZN7S1180C9D2Ev
  S1180C9(); // tgen
};
//SIG(-1 S1180C9) C1{ BC2{ m} VBC3{ BC4{ m} VBC5{ m} BC6{ BC7{ m Fp} BC4 BC5}} vd}


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

static void Test_S1180C9()
{
  extern Class_Descriptor cd_S1180C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1180C9, buf);
    S1180C9 *dp, &lv = *(dp=new (buf) S1180C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1180C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1180C9)");
    check_base_class_offset(lv, (S19490C12*), 0, "S1180C9");
    /*is_ambiguous_... S1180C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1180C3*), ABISELECT(8,4), "S1180C9");
    /*is_ambiguous_... S1180C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1180C3*), 0, "S1180C9");
    check_base_class_offset(lv, (S19490C10_nt*)(S1180C6*)(S1180C3*), ABISELECT(16,8), "S1180C9");
    check_base_class_offset(lv, (S19490C26*)(S1180C6*)(S1180C3*), ABISELECT(16,8), "S1180C9");
    check_base_class_offset(lv, (S19490C18*)(S1180C6*)(S1180C3*), ABISELECT(16,8), "S1180C9");
    check_base_class_offset(lv, (S1180C6*)(S1180C3*), ABISELECT(16,8), "S1180C9");
    check_base_class_offset(lv, (S1180C3*), ABISELECT(8,4), "S1180C9");
    test_class_info(&lv, &cd_S1180C9);
    dp->~S1180C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1180C9(Test_S1180C9, "S1180C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1180C9C1Ev();
extern void _ZN7S1180C9D2Ev();
Name_Map name_map_S1180C9[] = {
  NSPAIR(_ZN7S1180C9C1Ev),
  NSPAIR(_ZN7S1180C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1180C6;
extern VTBL_ENTRY _ZTI7S1180C6[];
extern Class_Descriptor cd_S1180C3;
extern VTBL_ENTRY _ZTI7S1180C3[];
extern  VTBL_ENTRY _ZTV7S1180C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C3[];
static Base_Class bases_S1180C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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_S19490C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1180C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1180C3,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1180C9[];
extern void _ZN7S1180C9D1Ev();
extern void _ZN7S1180C9D0Ev();
static  VTBL_ENTRY vtc_S1180C9[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C9[0]),
  (VTBL_ENTRY)&_ZN7S1180C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1180C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1180C9[0]),
};
extern VTBL_ENTRY _ZTV7S1180C9[];
static  VTBL_ENTRY _tg__ZTV7S1180C3__7S1180C9[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C3[0]),
};
static  VTT_ENTRY vtt_S1180C9[] = {
  {&(_ZTV7S1180C9[4]),  4,9},
  {&(_ZTV7S1180C9[9]),  9,9},
  {&(_tg__ZTV7S1180C3__7S1180C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1180C9[];
extern  VTBL_ENTRY _ZTV7S1180C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C9[];
Class_Descriptor cd_S1180C9 = {  "S1180C9", // class name
  bases_S1180C9, 8,
  &(vtc_S1180C9[0]), // expected_vtbl_contents
  &(vtt_S1180C9[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1180C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1180C9),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1180C9),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  S1180C1  : S1180C2 , S1180C9 {
  void *s1180c1f0;
  ~S1180C1(); // tgen
  S1180C1(); // tgen
};
//SIG(1 S1180C1) C1{ BC2{ BC3{ BC4{ m} VBC5{ m} BC6{ BC7{ m Fp} BC4 BC5}} BC8{ m} vd} BC9{ BC8 VBC3 vd} Fp}


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

static void Test_S1180C1()
{
  extern Class_Descriptor cd_S1180C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S1180C1, buf);
    S1180C1 *dp, &lv = *(dp=new (buf) S1180C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1180C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1180C1)");
    /*is_ambiguous_... S1180C3::S19490C26 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1180C3*)(S1180C2*), 0, "S1180C1");
    /*is_ambiguous_... S1180C3::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1180C3*)(S1180C2*), 0, "S1180C1");
    /*is_ambiguous_... S1180C1::S1180C3 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1180C3*), 0, "S1180C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S1180C6*)(S1180C3*)(S1180C2*), ABISELECT(8,4), "S1180C1");
    check_base_class_offset(lv, (S19490C26*)(S1180C6*)(S1180C3*)(S1180C2*), ABISELECT(8,4), "S1180C1");
    check_base_class_offset(lv, (S19490C18*)(S1180C6*)(S1180C3*)(S1180C2*), ABISELECT(8,4), "S1180C1");
    check_base_class_offset(lv, (S1180C6*)(S1180C3*)(S1180C2*), ABISELECT(8,4), "S1180C1");
    check_base_class_offset(lv, (S1180C3*)(S1180C2*), 0, "S1180C1");
    check_base_class_offset(lv, (S19490C12*)(S1180C2*), 0, "S1180C1");
    check_base_class_offset(lv, (S1180C2*), 0, "S1180C1");
    check_base_class_offset(lv, (S19490C12*)(S1180C9*), ABISELECT(16,8), "S1180C1");
    /*is_ambiguous_... S1180C1::S1180C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1180C3*), ABISELECT(32,16), "S1180C1");
    /*is_ambiguous_... S1180C1::S1180C3 */ AMB_check_base_class_offset(lv, (S19490C10_nt*)(S1180C6*)(S1180C3*), ABISELECT(40,20), "S1180C1");
    /*is_ambiguous_... S1180C1::S1180C3 */ AMB_check_base_class_offset(lv, (S19490C26*)(S1180C6*)(S1180C3*), ABISELECT(40,20), "S1180C1");
    /*is_ambiguous_... S1180C1::S1180C3 */ AMB_check_base_class_offset(lv, (S19490C18*)(S1180C6*)(S1180C3*), ABISELECT(40,20), "S1180C1");
    /*is_ambiguous_... S1180C1::S1180C3 */ AMB_check_base_class_offset(lv, (S1180C6*)(S1180C3*), ABISELECT(40,20), "S1180C1");
    check_base_class_offset(lv, (S1180C3*)(S1180C9*), ABISELECT(32,16), "S1180C1");
    check_base_class_offset(lv, (S1180C9*), ABISELECT(16,8), "S1180C1");
    check_field_offset(lv, s1180c1f0, ABISELECT(24,12), "S1180C1.s1180c1f0");
    test_class_info(&lv, &cd_S1180C1);
    dp->~S1180C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1180C1(Test_S1180C1, "S1180C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S1180C1C1Ev();
extern void _ZN7S1180C1D1Ev();
Name_Map name_map_S1180C1[] = {
  NSPAIR(_ZN7S1180C1C1Ev),
  NSPAIR(_ZN7S1180C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1180C6;
extern VTBL_ENTRY _ZTI7S1180C6[];
extern Class_Descriptor cd_S1180C3;
extern VTBL_ENTRY _ZTI7S1180C3[];
extern  VTBL_ENTRY _ZTV7S1180C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C3[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S1180C2;
extern VTBL_ENTRY _ZTI7S1180C2[];
extern  VTBL_ENTRY _ZTV7S1180C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C2[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S1180C6;
extern VTBL_ENTRY _ZTI7S1180C6[];
extern Class_Descriptor cd_S1180C3;
extern VTBL_ENTRY _ZTI7S1180C3[];
extern  VTBL_ENTRY _ZTV7S1180C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C3[];
extern Class_Descriptor cd_S1180C9;
extern VTBL_ENTRY _ZTI7S1180C9[];
extern  VTBL_ENTRY _ZTV7S1180C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C9[];
static Base_Class bases_S1180C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1180C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1180C3,    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
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1180C2,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C26,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19490C10_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
    14, //immediately_derived
  0, 0},
  {&cd_S19490C26,    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
    14, //immediately_derived
  0, 0},
  {&cd_S19490C18,    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
    14, //immediately_derived
  0, 0},
  {&cd_S1180C6,    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
    15, //immediately_derived
  0, 0},
  {&cd_S1180C3,    ABISELECT(32,16), //bcp->offset
    12, //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
    1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1180C9,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1180C1[];
extern void _ZN7S1180C1D1Ev();
extern void _ZN7S1180C1D0Ev();
extern void ABISELECT(_ZThn16_N7S1180C1D1Ev,_ZThn8_N7S1180C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S1180C1D0Ev,_ZThn8_N7S1180C1D0Ev)();
static  VTBL_ENTRY vtc_S1180C1[] = {
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C1[0]),
  (VTBL_ENTRY)&_ZN7S1180C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1180C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1180C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1180C1D1Ev,_ZThn8_N7S1180C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1180C1D0Ev,_ZThn8_N7S1180C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1180C1[0]),
};
extern VTBL_ENTRY _ZTV7S1180C1[];
extern void _ZN7S1180C2D1Ev();
extern void _ZN7S1180C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1180C2__7S1180C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C2[0]),
  (VTBL_ENTRY)&_ZN7S1180C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1180C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1180C37S1180C2__7S1180C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C3[0]),
};
extern void _ZN7S1180C9D1Ev();
extern void _ZN7S1180C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1180C9__7S1180C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C9[0]),
  (VTBL_ENTRY)&_ZN7S1180C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1180C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1180C3__7S1180C9__7S1180C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1180C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1180C3__A1__7S1180C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1180C3[0]),
};
static  VTT_ENTRY vtt_S1180C1[] = {
  {&(_ZTV7S1180C1[4]),  4,15},
  {&(_tg__ZTV7S1180C2__7S1180C1[3]),  3,5},
  {&(_tg__ZTV7S1180C37S1180C2__7S1180C1[3]),  3,3},
  {&(_tg__ZTV7S1180C9__7S1180C1[4]),  4,6},
  {&(_tg__ZTV7S1180C3__7S1180C9__7S1180C1[3]),  3,3},
  {&(_ZTV7S1180C1[10]),  10,15},
  {&(_ZTV7S1180C1[15]),  15,15},
  {&(_tg__ZTV7S1180C3__A1__7S1180C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1180C1[];
extern  VTBL_ENTRY _ZTV7S1180C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1180C1[];
Class_Descriptor cd_S1180C1 = {  "S1180C1", // class name
  bases_S1180C1, 17,
  &(vtc_S1180C1[0]), // expected_vtbl_contents
  &(vtt_S1180C1[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S1180C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1180C1),15, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1180C1),8, //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  S3845C2  : S2242C7_nt {
  char s3845c2f0;
  void *s3845c2f1;
  int s3845c2f2;
  virtual  ~S3845C2(); // _ZN7S3845C2D1Ev
  virtual void  v3(); // _ZN7S3845C22v3Ev
  virtual void  v4(); // _ZN7S3845C22v4Ev
  S3845C2(); // tgen
};
//SIG(-1 S3845C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3845C2 ::~S3845C2(){ note_dtor("S3845C2", this);}
void  S3845C2 ::v3(){vfunc_called(this, "_ZN7S3845C22v3Ev");}
void  S3845C2 ::v4(){vfunc_called(this, "_ZN7S3845C22v4Ev");}
S3845C2 ::S3845C2(){ note_ctor("S3845C2", this);} // tgen

static void Test_S3845C2()
{
  extern Class_Descriptor cd_S3845C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3845C2, buf);
    S3845C2 *dp, &lv = *(dp=new (buf) S3845C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3845C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3845C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3845C2");
    check_field_offset(lv, s3845c2f0, ABISELECT(12,8), "S3845C2.s3845c2f0");
    check_field_offset(lv, s3845c2f1, ABISELECT(16,12), "S3845C2.s3845c2f1");
    check_field_offset(lv, s3845c2f2, ABISELECT(24,16), "S3845C2.s3845c2f2");
    test_class_info(&lv, &cd_S3845C2);
    dp->~S3845C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3845C2(Test_S3845C2, "S3845C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3845C2C1Ev();
extern void _ZN7S3845C2D1Ev();
Name_Map name_map_S3845C2[] = {
  NSPAIR(_ZN7S3845C2C1Ev),
  NSPAIR(_ZN7S3845C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3845C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3845C2[];
extern void _ZN7S3845C2D1Ev();
extern void _ZN7S3845C2D0Ev();
extern void _ZN7S3845C22v3Ev();
extern void _ZN7S3845C22v4Ev();
static  VTBL_ENTRY vtc_S3845C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3845C2[0]),
  (VTBL_ENTRY)&_ZN7S3845C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3845C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3845C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3845C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3845C2[];
extern  VTBL_ENTRY _ZTV7S3845C2[];
Class_Descriptor cd_S3845C2 = {  "S3845C2", // class name
  bases_S3845C2, 1,
  &(vtc_S3845C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3845C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3845C2),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  S3845C1  : S3845C2 {
  ::S19490C10_nt s3845c1f0;
  int s3845c1f1[2];
  void *s3845c1f2;
  int s3845c1f3;
  void *s3845c1f4;
  int s3845c1f5;
  virtual  ~S3845C1(); // _ZN7S3845C1D1Ev
  virtual void  v1(); // _ZN7S3845C12v1Ev
  virtual void  v2(); // _ZN7S3845C12v2Ev
  S3845C1(); // tgen
};
//SIG(1 S3845C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} Fi[2] Fp Fi Fp Fi}


 S3845C1 ::~S3845C1(){ note_dtor("S3845C1", this);}
void  S3845C1 ::v1(){vfunc_called(this, "_ZN7S3845C12v1Ev");}
void  S3845C1 ::v2(){vfunc_called(this, "_ZN7S3845C12v2Ev");}
S3845C1 ::S3845C1(){ note_ctor("S3845C1", this);} // tgen

static void Test_S3845C1()
{
  extern Class_Descriptor cd_S3845C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S3845C1, buf);
    S3845C1 *dp, &lv = *(dp=new (buf) S3845C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S3845C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3845C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3845C2*), 0, "S3845C1");
    check_base_class_offset(lv, (S3845C2*), 0, "S3845C1");
    check_field_offset(lv, s3845c1f0, ABISELECT(32,20), "S3845C1.s3845c1f0");
    check_field_offset(lv, s3845c1f1, ABISELECT(40,24), "S3845C1.s3845c1f1");
    check_field_offset(lv, s3845c1f2, ABISELECT(48,32), "S3845C1.s3845c1f2");
    check_field_offset(lv, s3845c1f3, ABISELECT(56,36), "S3845C1.s3845c1f3");
    check_field_offset(lv, s3845c1f4, ABISELECT(64,40), "S3845C1.s3845c1f4");
    check_field_offset(lv, s3845c1f5, ABISELECT(72,44), "S3845C1.s3845c1f5");
    test_class_info(&lv, &cd_S3845C1);
    dp->~S3845C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3845C1(Test_S3845C1, "S3845C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S3845C1C1Ev();
extern void _ZN7S3845C1D1Ev();
Name_Map name_map_S3845C1[] = {
  NSPAIR(_ZN7S3845C1C1Ev),
  NSPAIR(_ZN7S3845C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3845C2;
extern VTBL_ENTRY _ZTI7S3845C2[];
extern  VTBL_ENTRY _ZTV7S3845C2[];
static Base_Class bases_S3845C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3845C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3845C1[];
extern void _ZN7S3845C1D1Ev();
extern void _ZN7S3845C1D0Ev();
extern void _ZN7S3845C22v3Ev();
extern void _ZN7S3845C22v4Ev();
extern void _ZN7S3845C12v1Ev();
extern void _ZN7S3845C12v2Ev();
static  VTBL_ENTRY vtc_S3845C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3845C1[0]),
  (VTBL_ENTRY)&_ZN7S3845C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3845C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3845C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3845C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3845C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3845C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3845C1[];
extern  VTBL_ENTRY _ZTV7S3845C1[];
Class_Descriptor cd_S3845C1 = {  "S3845C1", // class name
  bases_S3845C1, 2,
  &(vtc_S3845C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S3845C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3845C1),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  S7588C3_nt  {
  virtual void  v3(); // _ZN10S7588C3_nt2v3Ev
  virtual void  v4(); // _ZN10S7588C3_nt2v4Ev
  virtual void  v5(); // _ZN10S7588C3_nt2v5Ev
  ~S7588C3_nt(); // tgen
  S7588C3_nt(); // tgen
};
//SIG(-1 S7588C3_nt) C1{ v1 v2 v3}


void  S7588C3_nt ::v3(){vfunc_called(this, "_ZN10S7588C3_nt2v3Ev");}
void  S7588C3_nt ::v4(){vfunc_called(this, "_ZN10S7588C3_nt2v4Ev");}
void  S7588C3_nt ::v5(){vfunc_called(this, "_ZN10S7588C3_nt2v5Ev");}
S7588C3_nt ::~S7588C3_nt(){ note_dtor("S7588C3_nt", this);} // tgen
S7588C3_nt ::S7588C3_nt(){ note_ctor("S7588C3_nt", this);} // tgen

//skip512 S7588C3_nt

#else // __cplusplus

extern void _ZN10S7588C3_ntC1Ev();
extern void _ZN10S7588C3_ntD1Ev();
Name_Map name_map_S7588C3_nt[] = {
  NSPAIR(_ZN10S7588C3_ntC1Ev),
  NSPAIR(_ZN10S7588C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7588C3_nt[];
extern void _ZN10S7588C3_nt2v3Ev();
extern void _ZN10S7588C3_nt2v4Ev();
extern void _ZN10S7588C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S7588C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7588C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S7588C3_nt[];
VTBL_ENTRY *P__ZTI10S7588C3_nt = _ZTI10S7588C3_nt; 
extern  VTBL_ENTRY _ZTV10S7588C3_nt[];
Class_Descriptor cd_S7588C3_nt = {  "S7588C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7588C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7588C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7588C3_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  S7588C4  {
  int s7588c4f0[7];
  ::S7588C3_nt s7588c4f1;
  virtual void  v6(); // _ZN7S7588C42v6Ev
  virtual void  v7(); // _ZN7S7588C42v7Ev
  virtual void  v8(); // _ZN7S7588C42v8Ev
  ~S7588C4(); // tgen
  S7588C4(); // tgen
};
//SIG(-1 S7588C4) C1{ v1 v2 v3 Fi[7] FC2{ v4 v5 v6}}


void  S7588C4 ::v6(){vfunc_called(this, "_ZN7S7588C42v6Ev");}
void  S7588C4 ::v7(){vfunc_called(this, "_ZN7S7588C42v7Ev");}
void  S7588C4 ::v8(){vfunc_called(this, "_ZN7S7588C42v8Ev");}
S7588C4 ::~S7588C4(){ note_dtor("S7588C4", this);} // tgen
S7588C4 ::S7588C4(){ note_ctor("S7588C4", this);} // tgen

static void Test_S7588C4()
{
  extern Class_Descriptor cd_S7588C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S7588C4, buf);
    S7588C4 *dp, &lv = *(dp=new (buf) S7588C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S7588C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7588C4)");
    check_field_offset(lv, s7588c4f0, ABISELECT(8,4), "S7588C4.s7588c4f0");
    check_field_offset(lv, s7588c4f1, ABISELECT(40,32), "S7588C4.s7588c4f1");
    test_class_info(&lv, &cd_S7588C4);
    dp->~S7588C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7588C4(Test_S7588C4, "S7588C4", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S7588C4C1Ev();
extern void _ZN7S7588C4D1Ev();
Name_Map name_map_S7588C4[] = {
  NSPAIR(_ZN7S7588C4C1Ev),
  NSPAIR(_ZN7S7588C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7588C4[];
extern void _ZN7S7588C42v6Ev();
extern void _ZN7S7588C42v7Ev();
extern void _ZN7S7588C42v8Ev();
static  VTBL_ENTRY vtc_S7588C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7588C4[0]),
  (VTBL_ENTRY)&_ZN7S7588C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v8Ev,
};
extern VTBL_ENTRY _ZTI7S7588C4[];
extern  VTBL_ENTRY _ZTV7S7588C4[];
Class_Descriptor cd_S7588C4 = {  "S7588C4", // class name
  0,0,//no base classes
  &(vtc_S7588C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S7588C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7588C4),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  S7588C2  : virtual S7588C3_nt , S7588C4 {
  int s7588c2f0;
  virtual  ~S7588C2(); // _ZN7S7588C2D2Ev
  S7588C2(); // tgen
};
//SIG(-1 S7588C2) C1{ VBC2{ v1 v2 v3} BC3{ v4 v5 v6 Fi[7] FC2} vd Fi}


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

static void Test_S7588C2()
{
  extern Class_Descriptor cd_S7588C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7588C2, buf);
    S7588C2 *dp, &lv = *(dp=new (buf) S7588C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7588C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7588C2)");
    check_base_class_offset(lv, (S7588C3_nt*), ABISELECT(56,40), "S7588C2");
    check_base_class_offset(lv, (S7588C4*), 0, "S7588C2");
    check_field_offset(lv, s7588c2f0, ABISELECT(48,36), "S7588C2.s7588c2f0");
    test_class_info(&lv, &cd_S7588C2);
    dp->~S7588C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7588C2(Test_S7588C2, "S7588C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S7588C2C1Ev();
extern void _ZN7S7588C2D2Ev();
Name_Map name_map_S7588C2[] = {
  NSPAIR(_ZN7S7588C2C1Ev),
  NSPAIR(_ZN7S7588C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7588C3_nt;
extern VTBL_ENTRY _ZTI10S7588C3_nt[];
extern  VTBL_ENTRY _ZTV10S7588C3_nt[];
extern Class_Descriptor cd_S7588C4;
extern VTBL_ENTRY _ZTI7S7588C4[];
extern  VTBL_ENTRY _ZTV7S7588C4[];
static Base_Class bases_S7588C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7588C3_nt,    ABISELECT(56,40), //bcp->offset
    8, //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_S7588C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7588C2[];
extern void _ZN7S7588C42v6Ev();
extern void _ZN7S7588C42v7Ev();
extern void _ZN7S7588C42v8Ev();
extern void _ZN7S7588C2D1Ev();
extern void _ZN7S7588C2D0Ev();
extern void _ZN10S7588C3_nt2v3Ev();
extern void _ZN10S7588C3_nt2v4Ev();
extern void _ZN10S7588C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S7588C2[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7588C2[0]),
  (VTBL_ENTRY)&_ZN7S7588C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7588C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7588C2D0Ev,
  0,
  0,
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S7588C2[0]),
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV7S7588C2[];
static  VTT_ENTRY vtt_S7588C2[] = {
  {&(_ZTV7S7588C2[3]),  3,16},
  {&(_ZTV7S7588C2[13]),  13,16},
};
extern VTBL_ENTRY _ZTI7S7588C2[];
extern  VTBL_ENTRY _ZTV7S7588C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7588C2[];
Class_Descriptor cd_S7588C2 = {  "S7588C2", // class name
  bases_S7588C2, 2,
  &(vtc_S7588C2[0]), // expected_vtbl_contents
  &(vtt_S7588C2[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S7588C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7588C2),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7588C2),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7588C1  : S7588C2 , S7588C4 , S7588C3_nt {
  __tsi64 s7588c1f0;
  virtual  ~S7588C1(); // _ZN7S7588C1D2Ev
  virtual void  v1(); // _ZN7S7588C12v1Ev
  virtual void  v2(); // _ZN7S7588C12v2Ev
  S7588C1(); // tgen
};
//SIG(1 S7588C1) C1{ BC2{ VBC3{ v3 v4 v5} BC4{ v6 v7 v8 Fi[7] FC3} vd Fi} BC4 BC3 vd v1 v2 FL}


 S7588C1 ::~S7588C1(){ note_dtor("S7588C1", this);}
void  S7588C1 ::v1(){vfunc_called(this, "_ZN7S7588C12v1Ev");}
void  S7588C1 ::v2(){vfunc_called(this, "_ZN7S7588C12v2Ev");}
S7588C1 ::S7588C1(){ note_ctor("S7588C1", this);} // tgen

static void Test_S7588C1()
{
  extern Class_Descriptor cd_S7588C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S7588C1, buf);
    S7588C1 *dp, &lv = *(dp=new (buf) S7588C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S7588C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7588C1)");
    check_base_class_offset(lv, (S7588C3_nt*)(S7588C2*), ABISELECT(120,88), "S7588C1");
    check_base_class_offset(lv, (S7588C4*)(S7588C2*), 0, "S7588C1");
    check_base_class_offset(lv, (S7588C2*), 0, "S7588C1");
    /*is_ambiguous_... S7588C1::S7588C4 */ AMB_check_base_class_offset(lv, (S7588C4*), ABISELECT(56,40), "S7588C1");
    /*is_ambiguous_... S7588C1::S7588C3_nt */ AMB_check_base_class_offset(lv, (S7588C3_nt*), ABISELECT(104,76), "S7588C1");
    check_field_offset(lv, s7588c1f0, ABISELECT(112,80), "S7588C1.s7588c1f0");
    test_class_info(&lv, &cd_S7588C1);
    dp->~S7588C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7588C1(Test_S7588C1, "S7588C1", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN7S7588C1C1Ev();
extern void _ZN7S7588C1D2Ev();
Name_Map name_map_S7588C1[] = {
  NSPAIR(_ZN7S7588C1C1Ev),
  NSPAIR(_ZN7S7588C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7588C3_nt;
extern VTBL_ENTRY _ZTI10S7588C3_nt[];
extern  VTBL_ENTRY _ZTV10S7588C3_nt[];
extern Class_Descriptor cd_S7588C4;
extern VTBL_ENTRY _ZTI7S7588C4[];
extern  VTBL_ENTRY _ZTV7S7588C4[];
extern Class_Descriptor cd_S7588C2;
extern VTBL_ENTRY _ZTI7S7588C2[];
extern  VTBL_ENTRY _ZTV7S7588C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7588C2[];
extern Class_Descriptor cd_S7588C4;
extern VTBL_ENTRY _ZTI7S7588C4[];
extern  VTBL_ENTRY _ZTV7S7588C4[];
extern Class_Descriptor cd_S7588C3_nt;
extern VTBL_ENTRY _ZTI10S7588C3_nt[];
extern  VTBL_ENTRY _ZTV10S7588C3_nt[];
static Base_Class bases_S7588C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7588C3_nt,    ABISELECT(120,88), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7588C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7588C2,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7588C4,    ABISELECT(56,40), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7588C3_nt,    ABISELECT(104,76), //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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7588C1[];
extern void _ZN7S7588C42v6Ev();
extern void _ZN7S7588C42v7Ev();
extern void _ZN7S7588C42v8Ev();
extern void _ZN7S7588C1D1Ev();
extern void _ZN7S7588C1D0Ev();
extern void _ZN7S7588C12v1Ev();
extern void _ZN7S7588C12v2Ev();
extern void _ZN7S7588C42v6Ev();
extern void _ZN7S7588C42v7Ev();
extern void _ZN7S7588C42v8Ev();
extern void _ZN10S7588C3_nt2v3Ev();
extern void _ZN10S7588C3_nt2v4Ev();
extern void _ZN10S7588C3_nt2v5Ev();
extern void _ZN10S7588C3_nt2v3Ev();
extern void _ZN10S7588C3_nt2v4Ev();
extern void _ZN10S7588C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S7588C1[] = {
  ABISELECT(120,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7588C1[0]),
  (VTBL_ENTRY)&_ZN7S7588C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7588C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7588C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7588C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7588C12v2Ev,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S7588C1[0]),
  (VTBL_ENTRY)&_ZN7S7588C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v8Ev,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7588C1[0]),
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v5Ev,
  0,
  0,
  0,
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI7S7588C1[0]),
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV7S7588C1[];
extern void _ZN7S7588C42v6Ev();
extern void _ZN7S7588C42v7Ev();
extern void _ZN7S7588C42v8Ev();
extern void _ZN7S7588C2D1Ev();
extern void _ZN7S7588C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7588C2__7S7588C1[] = {
  ABISELECT(120,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7588C2[0]),
  (VTBL_ENTRY)&_ZN7S7588C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7588C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7588C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7588C2D0Ev,
};
extern void _ZN10S7588C3_nt2v3Ev();
extern void _ZN10S7588C3_nt2v4Ev();
extern void _ZN10S7588C3_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV10S7588C3_nt__7S7588C2__7S7588C1[] = {
  0,
  0,
  0,
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI7S7588C2[0]),
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7588C3_nt2v5Ev,
};
static  VTT_ENTRY vtt_S7588C1[] = {
  {&(_ZTV7S7588C1[3]),  3,28},
  {&(_tg__ZTV7S7588C2__7S7588C1[3]),  3,8},
  {&(_tg__ZTV10S7588C3_nt__7S7588C2__7S7588C1[5]),  5,8},
  {&(_ZTV7S7588C1[25]),  25,28},
};
extern VTBL_ENTRY _ZTI7S7588C1[];
extern  VTBL_ENTRY _ZTV7S7588C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7588C1[];
Class_Descriptor cd_S7588C1 = {  "S7588C1", // class name
  bases_S7588C1, 5,
  &(vtc_S7588C1[0]), // expected_vtbl_contents
  &(vtt_S7588C1[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI7S7588C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7588C1),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7588C1),4, //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  S3841C2  : S2242C7_nt {
  char s3841c2f0;
  void *s3841c2f1;
  int s3841c2f2;
  virtual  ~S3841C2(); // _ZN7S3841C2D1Ev
  virtual void  v3(); // _ZN7S3841C22v3Ev
  virtual void  v4(); // _ZN7S3841C22v4Ev
  S3841C2(); // tgen
};
//SIG(-1 S3841C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3841C2 ::~S3841C2(){ note_dtor("S3841C2", this);}
void  S3841C2 ::v3(){vfunc_called(this, "_ZN7S3841C22v3Ev");}
void  S3841C2 ::v4(){vfunc_called(this, "_ZN7S3841C22v4Ev");}
S3841C2 ::S3841C2(){ note_ctor("S3841C2", this);} // tgen

static void Test_S3841C2()
{
  extern Class_Descriptor cd_S3841C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3841C2, buf);
    S3841C2 *dp, &lv = *(dp=new (buf) S3841C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3841C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3841C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3841C2");
    check_field_offset(lv, s3841c2f0, ABISELECT(12,8), "S3841C2.s3841c2f0");
    check_field_offset(lv, s3841c2f1, ABISELECT(16,12), "S3841C2.s3841c2f1");
    check_field_offset(lv, s3841c2f2, ABISELECT(24,16), "S3841C2.s3841c2f2");
    test_class_info(&lv, &cd_S3841C2);
    dp->~S3841C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3841C2(Test_S3841C2, "S3841C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3841C2C1Ev();
extern void _ZN7S3841C2D1Ev();
Name_Map name_map_S3841C2[] = {
  NSPAIR(_ZN7S3841C2C1Ev),
  NSPAIR(_ZN7S3841C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3841C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3841C2[];
extern void _ZN7S3841C2D1Ev();
extern void _ZN7S3841C2D0Ev();
extern void _ZN7S3841C22v3Ev();
extern void _ZN7S3841C22v4Ev();
static  VTBL_ENTRY vtc_S3841C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3841C2[0]),
  (VTBL_ENTRY)&_ZN7S3841C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3841C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3841C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3841C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3841C2[];
extern  VTBL_ENTRY _ZTV7S3841C2[];
Class_Descriptor cd_S3841C2 = {  "S3841C2", // class name
  bases_S3841C2, 1,
  &(vtc_S3841C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3841C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3841C2),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  S3841C1  : S3841C2 {
  ::S16385C7 s3841c1f0;
  ::S16385C7 s3841c1f1;
  virtual  ~S3841C1(); // _ZN7S3841C1D1Ev
  virtual void  v1(); // _ZN7S3841C12v1Ev
  virtual void  v2(); // _ZN7S3841C12v2Ev
  S3841C1(); // tgen
};
//SIG(1 S3841C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp Fi FC5{ m}} FC4}


 S3841C1 ::~S3841C1(){ note_dtor("S3841C1", this);}
void  S3841C1 ::v1(){vfunc_called(this, "_ZN7S3841C12v1Ev");}
void  S3841C1 ::v2(){vfunc_called(this, "_ZN7S3841C12v2Ev");}
S3841C1 ::S3841C1(){ note_ctor("S3841C1", this);} // tgen

static void Test_S3841C1()
{
  extern Class_Descriptor cd_S3841C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S3841C1, buf);
    S3841C1 *dp, &lv = *(dp=new (buf) S3841C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S3841C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3841C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3841C2*), 0, "S3841C1");
    check_base_class_offset(lv, (S3841C2*), 0, "S3841C1");
    check_field_offset(lv, s3841c1f0, ABISELECT(32,20), "S3841C1.s3841c1f0");
    check_field_offset(lv, s3841c1f1, ABISELECT(48,32), "S3841C1.s3841c1f1");
    test_class_info(&lv, &cd_S3841C1);
    dp->~S3841C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3841C1(Test_S3841C1, "S3841C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S3841C1C1Ev();
extern void _ZN7S3841C1D1Ev();
Name_Map name_map_S3841C1[] = {
  NSPAIR(_ZN7S3841C1C1Ev),
  NSPAIR(_ZN7S3841C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3841C2;
extern VTBL_ENTRY _ZTI7S3841C2[];
extern  VTBL_ENTRY _ZTV7S3841C2[];
static Base_Class bases_S3841C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3841C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3841C1[];
extern void _ZN7S3841C1D1Ev();
extern void _ZN7S3841C1D0Ev();
extern void _ZN7S3841C22v3Ev();
extern void _ZN7S3841C22v4Ev();
extern void _ZN7S3841C12v1Ev();
extern void _ZN7S3841C12v2Ev();
static  VTBL_ENTRY vtc_S3841C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3841C1[0]),
  (VTBL_ENTRY)&_ZN7S3841C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3841C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3841C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3841C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3841C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3841C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3841C1[];
extern  VTBL_ENTRY _ZTV7S3841C1[];
Class_Descriptor cd_S3841C1 = {  "S3841C1", // class name
  bases_S3841C1, 2,
  &(vtc_S3841C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S3841C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3841C1),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  S5135C4_nt  {
  ::S5072C13_nt s5135c4f0;
  void  mf5135c4(); // _ZN10S5135C4_nt8mf5135c4Ev
};
//SIG(-1 S5135C4_nt) C1{ m FC2{ m FL}}


void  S5135C4_nt ::mf5135c4(){}

//skip512 S5135C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5135C3  {
  ::S5135C4_nt s5135c3f0;
  virtual  ~S5135C3(); // _ZN7S5135C3D1Ev
  virtual void  v4(); // _ZN7S5135C32v4Ev
  virtual void  v5(); // _ZN7S5135C32v5Ev
  virtual void  v6(); // _ZN7S5135C32v6Ev
  virtual void  v7(); // _ZN7S5135C32v7Ev
  S5135C3(); // tgen
};
//SIG(-1 S5135C3) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m FL}}}


 S5135C3 ::~S5135C3(){ note_dtor("S5135C3", this);}
void  S5135C3 ::v4(){vfunc_called(this, "_ZN7S5135C32v4Ev");}
void  S5135C3 ::v5(){vfunc_called(this, "_ZN7S5135C32v5Ev");}
void  S5135C3 ::v6(){vfunc_called(this, "_ZN7S5135C32v6Ev");}
void  S5135C3 ::v7(){vfunc_called(this, "_ZN7S5135C32v7Ev");}
S5135C3 ::S5135C3(){ note_ctor("S5135C3", this);} // tgen

static void Test_S5135C3()
{
  extern Class_Descriptor cd_S5135C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5135C3, buf);
    S5135C3 *dp, &lv = *(dp=new (buf) S5135C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5135C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5135C3)");
    check_field_offset(lv, s5135c3f0, ABISELECT(8,4), "S5135C3.s5135c3f0");
    test_class_info(&lv, &cd_S5135C3);
    dp->~S5135C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5135C3(Test_S5135C3, "S5135C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5135C3C1Ev();
extern void _ZN7S5135C3D1Ev();
Name_Map name_map_S5135C3[] = {
  NSPAIR(_ZN7S5135C3C1Ev),
  NSPAIR(_ZN7S5135C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5135C3[];
extern void _ZN7S5135C3D1Ev();
extern void _ZN7S5135C3D0Ev();
extern void _ZN7S5135C32v4Ev();
extern void _ZN7S5135C32v5Ev();
extern void _ZN7S5135C32v6Ev();
extern void _ZN7S5135C32v7Ev();
static  VTBL_ENTRY vtc_S5135C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5135C3[0]),
  (VTBL_ENTRY)&_ZN7S5135C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5135C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S5135C3[];
extern  VTBL_ENTRY _ZTV7S5135C3[];
Class_Descriptor cd_S5135C3 = {  "S5135C3", // class name
  0,0,//no base classes
  &(vtc_S5135C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5135C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5135C3),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  S5135C2  : S5135C3 {
  virtual void  v8(); // _ZN7S5135C22v8Ev
  virtual void  v9(); // _ZN7S5135C22v9Ev
  virtual void  v10(); // _ZN7S5135C23v10Ev
  ~S5135C2(); // tgen
  S5135C2(); // tgen
};
//SIG(-1 S5135C2) C1{ BC2{ vd v4 v5 v6 v7 FC3{ m FC4{ m FL}}} v1 v2 v3}


void  S5135C2 ::v8(){vfunc_called(this, "_ZN7S5135C22v8Ev");}
void  S5135C2 ::v9(){vfunc_called(this, "_ZN7S5135C22v9Ev");}
void  S5135C2 ::v10(){vfunc_called(this, "_ZN7S5135C23v10Ev");}
S5135C2 ::~S5135C2(){ note_dtor("S5135C2", this);} // tgen
S5135C2 ::S5135C2(){ note_ctor("S5135C2", this);} // tgen

static void Test_S5135C2()
{
  extern Class_Descriptor cd_S5135C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5135C2, buf);
    S5135C2 *dp, &lv = *(dp=new (buf) S5135C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5135C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5135C2)");
    check_base_class_offset(lv, (S5135C3*), 0, "S5135C2");
    test_class_info(&lv, &cd_S5135C2);
    dp->~S5135C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5135C2(Test_S5135C2, "S5135C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5135C2C1Ev();
extern void _ZN7S5135C2D1Ev();
Name_Map name_map_S5135C2[] = {
  NSPAIR(_ZN7S5135C2C1Ev),
  NSPAIR(_ZN7S5135C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5135C3;
extern VTBL_ENTRY _ZTI7S5135C3[];
extern  VTBL_ENTRY _ZTV7S5135C3[];
static Base_Class bases_S5135C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5135C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5135C2[];
extern void _ZN7S5135C2D1Ev();
extern void _ZN7S5135C2D0Ev();
extern void _ZN7S5135C32v4Ev();
extern void _ZN7S5135C32v5Ev();
extern void _ZN7S5135C32v6Ev();
extern void _ZN7S5135C32v7Ev();
extern void _ZN7S5135C22v8Ev();
extern void _ZN7S5135C22v9Ev();
extern void _ZN7S5135C23v10Ev();
static  VTBL_ENTRY vtc_S5135C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5135C2[0]),
  (VTBL_ENTRY)&_ZN7S5135C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5135C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5135C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5135C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5135C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S5135C2[];
extern  VTBL_ENTRY _ZTV7S5135C2[];
Class_Descriptor cd_S5135C2 = {  "S5135C2", // class name
  bases_S5135C2, 1,
  &(vtc_S5135C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5135C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5135C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5135C1  : S5135C2 {
  int s5135c1f0[4];
  virtual void  v1(); // _ZN7S5135C12v1Ev
  virtual void  v2(); // _ZN7S5135C12v2Ev
  virtual void  v3(); // _ZN7S5135C12v3Ev
  ~S5135C1(); // tgen
  S5135C1(); // tgen
};
//SIG(1 S5135C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 FC4{ m FC5{ m FL}}} v8 v9 v10} v1 v2 v3 Fi[4]}


void  S5135C1 ::v1(){vfunc_called(this, "_ZN7S5135C12v1Ev");}
void  S5135C1 ::v2(){vfunc_called(this, "_ZN7S5135C12v2Ev");}
void  S5135C1 ::v3(){vfunc_called(this, "_ZN7S5135C12v3Ev");}
S5135C1 ::~S5135C1(){ note_dtor("S5135C1", this);} // tgen
S5135C1 ::S5135C1(){ note_ctor("S5135C1", this);} // tgen

static void Test_S5135C1()
{
  extern Class_Descriptor cd_S5135C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S5135C1, buf);
    S5135C1 *dp, &lv = *(dp=new (buf) S5135C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S5135C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5135C1)");
    check_base_class_offset(lv, (S5135C3*)(S5135C2*), 0, "S5135C1");
    check_base_class_offset(lv, (S5135C2*), 0, "S5135C1");
    check_field_offset(lv, s5135c1f0, ABISELECT(16,12), "S5135C1.s5135c1f0");
    test_class_info(&lv, &cd_S5135C1);
    dp->~S5135C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5135C1(Test_S5135C1, "S5135C1", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S5135C1C1Ev();
extern void _ZN7S5135C1D1Ev();
Name_Map name_map_S5135C1[] = {
  NSPAIR(_ZN7S5135C1C1Ev),
  NSPAIR(_ZN7S5135C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5135C3;
extern VTBL_ENTRY _ZTI7S5135C3[];
extern  VTBL_ENTRY _ZTV7S5135C3[];
extern Class_Descriptor cd_S5135C2;
extern VTBL_ENTRY _ZTI7S5135C2[];
extern  VTBL_ENTRY _ZTV7S5135C2[];
static Base_Class bases_S5135C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5135C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5135C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S5135C1[];
extern void _ZN7S5135C1D1Ev();
extern void _ZN7S5135C1D0Ev();
extern void _ZN7S5135C32v4Ev();
extern void _ZN7S5135C32v5Ev();
extern void _ZN7S5135C32v6Ev();
extern void _ZN7S5135C32v7Ev();
extern void _ZN7S5135C22v8Ev();
extern void _ZN7S5135C22v9Ev();
extern void _ZN7S5135C23v10Ev();
extern void _ZN7S5135C12v1Ev();
extern void _ZN7S5135C12v2Ev();
extern void _ZN7S5135C12v3Ev();
static  VTBL_ENTRY vtc_S5135C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5135C1[0]),
  (VTBL_ENTRY)&_ZN7S5135C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5135C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5135C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5135C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5135C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5135C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5135C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5135C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5135C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5135C1[];
extern  VTBL_ENTRY _ZTV7S5135C1[];
Class_Descriptor cd_S5135C1 = {  "S5135C1", // class name
  bases_S5135C1, 2,
  &(vtc_S5135C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S5135C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5135C1),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  S3843C2  : S2242C7_nt {
  char s3843c2f0;
  void *s3843c2f1;
  int s3843c2f2;
  virtual  ~S3843C2(); // _ZN7S3843C2D1Ev
  virtual void  v3(); // _ZN7S3843C22v3Ev
  virtual void  v4(); // _ZN7S3843C22v4Ev
  S3843C2(); // tgen
};
//SIG(-1 S3843C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3843C2 ::~S3843C2(){ note_dtor("S3843C2", this);}
void  S3843C2 ::v3(){vfunc_called(this, "_ZN7S3843C22v3Ev");}
void  S3843C2 ::v4(){vfunc_called(this, "_ZN7S3843C22v4Ev");}
S3843C2 ::S3843C2(){ note_ctor("S3843C2", this);} // tgen

static void Test_S3843C2()
{
  extern Class_Descriptor cd_S3843C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3843C2, buf);
    S3843C2 *dp, &lv = *(dp=new (buf) S3843C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3843C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3843C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3843C2");
    check_field_offset(lv, s3843c2f0, ABISELECT(12,8), "S3843C2.s3843c2f0");
    check_field_offset(lv, s3843c2f1, ABISELECT(16,12), "S3843C2.s3843c2f1");
    check_field_offset(lv, s3843c2f2, ABISELECT(24,16), "S3843C2.s3843c2f2");
    test_class_info(&lv, &cd_S3843C2);
    dp->~S3843C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3843C2(Test_S3843C2, "S3843C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3843C2C1Ev();
extern void _ZN7S3843C2D1Ev();
Name_Map name_map_S3843C2[] = {
  NSPAIR(_ZN7S3843C2C1Ev),
  NSPAIR(_ZN7S3843C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3843C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3843C2[];
extern void _ZN7S3843C2D1Ev();
extern void _ZN7S3843C2D0Ev();
extern void _ZN7S3843C22v3Ev();
extern void _ZN7S3843C22v4Ev();
static  VTBL_ENTRY vtc_S3843C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3843C2[0]),
  (VTBL_ENTRY)&_ZN7S3843C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3843C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3843C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3843C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3843C2[];
extern  VTBL_ENTRY _ZTV7S3843C2[];
Class_Descriptor cd_S3843C2 = {  "S3843C2", // class name
  bases_S3843C2, 1,
  &(vtc_S3843C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3843C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3843C2),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  S3843C1  : S3843C2 {
  ::S19490C10_nt s3843c1f0;
  ::S16432C7 s3843c1f1;
  char s3843c1f2;
  virtual  ~S3843C1(); // _ZN7S3843C1D1Ev
  virtual void  v1(); // _ZN7S3843C12v1Ev
  virtual void  v2(); // _ZN7S3843C12v2Ev
  S3843C1(); // tgen
};
//SIG(1 S3843C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} FC5{ m Fp} Fc}


 S3843C1 ::~S3843C1(){ note_dtor("S3843C1", this);}
void  S3843C1 ::v1(){vfunc_called(this, "_ZN7S3843C12v1Ev");}
void  S3843C1 ::v2(){vfunc_called(this, "_ZN7S3843C12v2Ev");}
S3843C1 ::S3843C1(){ note_ctor("S3843C1", this);} // tgen

static void Test_S3843C1()
{
  extern Class_Descriptor cd_S3843C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3843C1, buf);
    S3843C1 *dp, &lv = *(dp=new (buf) S3843C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3843C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3843C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3843C2*), 0, "S3843C1");
    check_base_class_offset(lv, (S3843C2*), 0, "S3843C1");
    check_field_offset(lv, s3843c1f0, ABISELECT(32,20), "S3843C1.s3843c1f0");
    check_field_offset(lv, s3843c1f1, ABISELECT(40,24), "S3843C1.s3843c1f1");
    check_field_offset(lv, s3843c1f2, ABISELECT(48,28), "S3843C1.s3843c1f2");
    test_class_info(&lv, &cd_S3843C1);
    dp->~S3843C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3843C1(Test_S3843C1, "S3843C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3843C1C1Ev();
extern void _ZN7S3843C1D1Ev();
Name_Map name_map_S3843C1[] = {
  NSPAIR(_ZN7S3843C1C1Ev),
  NSPAIR(_ZN7S3843C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3843C2;
extern VTBL_ENTRY _ZTI7S3843C2[];
extern  VTBL_ENTRY _ZTV7S3843C2[];
static Base_Class bases_S3843C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3843C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3843C1[];
extern void _ZN7S3843C1D1Ev();
extern void _ZN7S3843C1D0Ev();
extern void _ZN7S3843C22v3Ev();
extern void _ZN7S3843C22v4Ev();
extern void _ZN7S3843C12v1Ev();
extern void _ZN7S3843C12v2Ev();
static  VTBL_ENTRY vtc_S3843C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3843C1[0]),
  (VTBL_ENTRY)&_ZN7S3843C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3843C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3843C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3843C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3843C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3843C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3843C1[];
extern  VTBL_ENTRY _ZTV7S3843C1[];
Class_Descriptor cd_S3843C1 = {  "S3843C1", // class name
  bases_S3843C1, 2,
  &(vtc_S3843C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3843C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3843C1),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  S9779C2  {
  void *s9779c2f0[2];
  char s9779c2f1[128];
  void *s9779c2f2[2];
  virtual  ~S9779C2(); // _ZN7S9779C2D1Ev
  virtual void  v4(); // _ZN7S9779C22v4Ev
  virtual void  v5(); // _ZN7S9779C22v5Ev
  virtual void  v6(); // _ZN7S9779C22v6Ev
  virtual void  v7(); // _ZN7S9779C22v7Ev
  S9779C2(); // tgen
};
//SIG(-1 S9779C2) C1{ vd v1 v2 v3 v4 Fp[2] Fc[128] Fp[2]}


 S9779C2 ::~S9779C2(){ note_dtor("S9779C2", this);}
void  S9779C2 ::v4(){vfunc_called(this, "_ZN7S9779C22v4Ev");}
void  S9779C2 ::v5(){vfunc_called(this, "_ZN7S9779C22v5Ev");}
void  S9779C2 ::v6(){vfunc_called(this, "_ZN7S9779C22v6Ev");}
void  S9779C2 ::v7(){vfunc_called(this, "_ZN7S9779C22v7Ev");}
S9779C2 ::S9779C2(){ note_ctor("S9779C2", this);} // tgen

static void Test_S9779C2()
{
  extern Class_Descriptor cd_S9779C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9779C2, buf);
    S9779C2 *dp, &lv = *(dp=new (buf) S9779C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9779C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9779C2)");
    check_field_offset(lv, s9779c2f0, ABISELECT(8,4), "S9779C2.s9779c2f0");
    check_field_offset(lv, s9779c2f1, ABISELECT(24,12), "S9779C2.s9779c2f1");
    check_field_offset(lv, s9779c2f2, ABISELECT(152,140), "S9779C2.s9779c2f2");
    test_class_info(&lv, &cd_S9779C2);
    dp->~S9779C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9779C2(Test_S9779C2, "S9779C2", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9779C2C1Ev();
extern void _ZN7S9779C2D1Ev();
Name_Map name_map_S9779C2[] = {
  NSPAIR(_ZN7S9779C2C1Ev),
  NSPAIR(_ZN7S9779C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9779C2[];
extern void _ZN7S9779C2D1Ev();
extern void _ZN7S9779C2D0Ev();
extern void _ZN7S9779C22v4Ev();
extern void _ZN7S9779C22v5Ev();
extern void _ZN7S9779C22v6Ev();
extern void _ZN7S9779C22v7Ev();
static  VTBL_ENTRY vtc_S9779C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9779C2[0]),
  (VTBL_ENTRY)&_ZN7S9779C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9779C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9779C2[];
extern  VTBL_ENTRY _ZTV7S9779C2[];
Class_Descriptor cd_S9779C2 = {  "S9779C2", // class name
  0,0,//no base classes
  &(vtc_S9779C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9779C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9779C2),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  S9779C1  : S9779C2 {
  int s9779c1f0[2];
  char s9779c1f1[2];
  virtual  ~S9779C1(); // _ZN7S9779C1D1Ev
  virtual void  v1(); // _ZN7S9779C12v1Ev
  virtual void  v2(); // _ZN7S9779C12v2Ev
  virtual void  v3(); // _ZN7S9779C12v3Ev
  S9779C1(); // tgen
};
//SIG(1 S9779C1) C1{ BC2{ vd v4 v5 v6 v7 Fp[2] Fc[128] Fp[2]} vd v1 v2 v3 Fi[2] Fc[2]}


 S9779C1 ::~S9779C1(){ note_dtor("S9779C1", this);}
void  S9779C1 ::v1(){vfunc_called(this, "_ZN7S9779C12v1Ev");}
void  S9779C1 ::v2(){vfunc_called(this, "_ZN7S9779C12v2Ev");}
void  S9779C1 ::v3(){vfunc_called(this, "_ZN7S9779C12v3Ev");}
S9779C1 ::S9779C1(){ note_ctor("S9779C1", this);} // tgen

static void Test_S9779C1()
{
  extern Class_Descriptor cd_S9779C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,41)];
    init_test(&cd_S9779C1, buf);
    S9779C1 *dp, &lv = *(dp=new (buf) S9779C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,160), "sizeof(S9779C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9779C1)");
    check_base_class_offset(lv, (S9779C2*), 0, "S9779C1");
    check_field_offset(lv, s9779c1f0, ABISELECT(168,148), "S9779C1.s9779c1f0");
    check_field_offset(lv, s9779c1f1, ABISELECT(176,156), "S9779C1.s9779c1f1");
    test_class_info(&lv, &cd_S9779C1);
    dp->~S9779C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9779C1(Test_S9779C1, "S9779C1", ABISELECT(184,160));

#else // __cplusplus

extern void _ZN7S9779C1C1Ev();
extern void _ZN7S9779C1D1Ev();
Name_Map name_map_S9779C1[] = {
  NSPAIR(_ZN7S9779C1C1Ev),
  NSPAIR(_ZN7S9779C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9779C2;
extern VTBL_ENTRY _ZTI7S9779C2[];
extern  VTBL_ENTRY _ZTV7S9779C2[];
static Base_Class bases_S9779C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9779C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9779C1[];
extern void _ZN7S9779C1D1Ev();
extern void _ZN7S9779C1D0Ev();
extern void _ZN7S9779C22v4Ev();
extern void _ZN7S9779C22v5Ev();
extern void _ZN7S9779C22v6Ev();
extern void _ZN7S9779C22v7Ev();
extern void _ZN7S9779C12v1Ev();
extern void _ZN7S9779C12v2Ev();
extern void _ZN7S9779C12v3Ev();
static  VTBL_ENTRY vtc_S9779C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9779C1[0]),
  (VTBL_ENTRY)&_ZN7S9779C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9779C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9779C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9779C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9779C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9779C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9779C1[];
extern  VTBL_ENTRY _ZTV7S9779C1[];
Class_Descriptor cd_S9779C1 = {  "S9779C1", // class name
  bases_S9779C1, 1,
  &(vtc_S9779C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,160), // object size
  NSPAIRA(_ZTI7S9779C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9779C1),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  S9618C2  {
  virtual  ~S9618C2(); // _ZN7S9618C2D1Ev
  virtual void  v3(); // _ZN7S9618C22v3Ev
  virtual void  v4(); // _ZN7S9618C22v4Ev
  S9618C2(); // tgen
};
//SIG(-1 S9618C2) C1{ vd v1 v2}


 S9618C2 ::~S9618C2(){ note_dtor("S9618C2", this);}
void  S9618C2 ::v3(){vfunc_called(this, "_ZN7S9618C22v3Ev");}
void  S9618C2 ::v4(){vfunc_called(this, "_ZN7S9618C22v4Ev");}
S9618C2 ::S9618C2(){ note_ctor("S9618C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9618C2C1Ev();
extern void _ZN7S9618C2D1Ev();
Name_Map name_map_S9618C2[] = {
  NSPAIR(_ZN7S9618C2C1Ev),
  NSPAIR(_ZN7S9618C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9618C2[];
extern void _ZN7S9618C2D1Ev();
extern void _ZN7S9618C2D0Ev();
extern void _ZN7S9618C22v3Ev();
extern void _ZN7S9618C22v4Ev();
static  VTBL_ENTRY vtc_S9618C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9618C2[0]),
  (VTBL_ENTRY)&_ZN7S9618C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9618C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9618C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9618C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9618C2[];
extern  VTBL_ENTRY _ZTV7S9618C2[];
Class_Descriptor cd_S9618C2 = {  "S9618C2", // class name
  0,0,//no base classes
  &(vtc_S9618C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9618C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9618C2),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  S9618C1  : S9618C2 {
  void *s9618c1f0[4];
  ::S16385C7 s9618c1f1;
  ::S16385C7 s9618c1f2;
  ::S2191C7_nt s9618c1f3;
  ::S2191C7_nt s9618c1f4;
  virtual  ~S9618C1(); // _ZN7S9618C1D1Ev
  virtual void  v1(); // _ZN7S9618C12v1Ev
  virtual void  v2(); // _ZN7S9618C12v2Ev
  S9618C1(); // tgen
};
//SIG(1 S9618C1) C1{ BC2{ vd v3 v4} vd v1 v2 Fp[4] FC3{ m Fp Fi FC4{ m}} FC3 FC5{ FL} FC5}


 S9618C1 ::~S9618C1(){ note_dtor("S9618C1", this);}
void  S9618C1 ::v1(){vfunc_called(this, "_ZN7S9618C12v1Ev");}
void  S9618C1 ::v2(){vfunc_called(this, "_ZN7S9618C12v2Ev");}
S9618C1 ::S9618C1(){ note_ctor("S9618C1", this);} // tgen

static void Test_S9618C1()
{
  extern Class_Descriptor cd_S9618C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S9618C1, buf);
    S9618C1 *dp, &lv = *(dp=new (buf) S9618C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S9618C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9618C1)");
    check_base_class_offset(lv, (S9618C2*), 0, "S9618C1");
    check_field_offset(lv, s9618c1f0, ABISELECT(8,4), "S9618C1.s9618c1f0");
    check_field_offset(lv, s9618c1f1, ABISELECT(40,20), "S9618C1.s9618c1f1");
    check_field_offset(lv, s9618c1f2, ABISELECT(56,32), "S9618C1.s9618c1f2");
    check_field_offset(lv, s9618c1f3, ABISELECT(72,44), "S9618C1.s9618c1f3");
    check_field_offset(lv, s9618c1f4, ABISELECT(80,52), "S9618C1.s9618c1f4");
    test_class_info(&lv, &cd_S9618C1);
    dp->~S9618C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9618C1(Test_S9618C1, "S9618C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S9618C1C1Ev();
extern void _ZN7S9618C1D1Ev();
Name_Map name_map_S9618C1[] = {
  NSPAIR(_ZN7S9618C1C1Ev),
  NSPAIR(_ZN7S9618C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9618C2;
extern VTBL_ENTRY _ZTI7S9618C2[];
extern  VTBL_ENTRY _ZTV7S9618C2[];
static Base_Class bases_S9618C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9618C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9618C1[];
extern void _ZN7S9618C1D1Ev();
extern void _ZN7S9618C1D0Ev();
extern void _ZN7S9618C22v3Ev();
extern void _ZN7S9618C22v4Ev();
extern void _ZN7S9618C12v1Ev();
extern void _ZN7S9618C12v2Ev();
static  VTBL_ENTRY vtc_S9618C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9618C1[0]),
  (VTBL_ENTRY)&_ZN7S9618C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9618C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9618C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9618C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9618C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9618C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9618C1[];
extern  VTBL_ENTRY _ZTV7S9618C1[];
Class_Descriptor cd_S9618C1 = {  "S9618C1", // class name
  bases_S9618C1, 1,
  &(vtc_S9618C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S9618C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9618C1),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  S3850C2  : S2242C7_nt {
  char s3850c2f0;
  void *s3850c2f1;
  int s3850c2f2;
  virtual  ~S3850C2(); // _ZN7S3850C2D1Ev
  virtual void  v3(); // _ZN7S3850C22v3Ev
  virtual void  v4(); // _ZN7S3850C22v4Ev
  S3850C2(); // tgen
};
//SIG(-1 S3850C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3850C2 ::~S3850C2(){ note_dtor("S3850C2", this);}
void  S3850C2 ::v3(){vfunc_called(this, "_ZN7S3850C22v3Ev");}
void  S3850C2 ::v4(){vfunc_called(this, "_ZN7S3850C22v4Ev");}
S3850C2 ::S3850C2(){ note_ctor("S3850C2", this);} // tgen

static void Test_S3850C2()
{
  extern Class_Descriptor cd_S3850C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3850C2, buf);
    S3850C2 *dp, &lv = *(dp=new (buf) S3850C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3850C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3850C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3850C2");
    check_field_offset(lv, s3850c2f0, ABISELECT(12,8), "S3850C2.s3850c2f0");
    check_field_offset(lv, s3850c2f1, ABISELECT(16,12), "S3850C2.s3850c2f1");
    check_field_offset(lv, s3850c2f2, ABISELECT(24,16), "S3850C2.s3850c2f2");
    test_class_info(&lv, &cd_S3850C2);
    dp->~S3850C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3850C2(Test_S3850C2, "S3850C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3850C2C1Ev();
extern void _ZN7S3850C2D1Ev();
Name_Map name_map_S3850C2[] = {
  NSPAIR(_ZN7S3850C2C1Ev),
  NSPAIR(_ZN7S3850C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3850C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3850C2[];
extern void _ZN7S3850C2D1Ev();
extern void _ZN7S3850C2D0Ev();
extern void _ZN7S3850C22v3Ev();
extern void _ZN7S3850C22v4Ev();
static  VTBL_ENTRY vtc_S3850C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3850C2[0]),
  (VTBL_ENTRY)&_ZN7S3850C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3850C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3850C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3850C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3850C2[];
extern  VTBL_ENTRY _ZTV7S3850C2[];
Class_Descriptor cd_S3850C2 = {  "S3850C2", // class name
  bases_S3850C2, 1,
  &(vtc_S3850C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3850C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3850C2),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  S3850C1  : S3850C2 {
  ::S19490C10_nt s3850c1f0;
  void *s3850c1f1;
  int s3850c1f2[2];
  virtual  ~S3850C1(); // _ZN7S3850C1D1Ev
  virtual void  v1(); // _ZN7S3850C12v1Ev
  virtual void  v2(); // _ZN7S3850C12v2Ev
  S3850C1(); // tgen
};
//SIG(1 S3850C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} Fp Fi[2]}


 S3850C1 ::~S3850C1(){ note_dtor("S3850C1", this);}
void  S3850C1 ::v1(){vfunc_called(this, "_ZN7S3850C12v1Ev");}
void  S3850C1 ::v2(){vfunc_called(this, "_ZN7S3850C12v2Ev");}
S3850C1 ::S3850C1(){ note_ctor("S3850C1", this);} // tgen

static void Test_S3850C1()
{
  extern Class_Descriptor cd_S3850C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S3850C1, buf);
    S3850C1 *dp, &lv = *(dp=new (buf) S3850C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3850C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3850C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3850C2*), 0, "S3850C1");
    check_base_class_offset(lv, (S3850C2*), 0, "S3850C1");
    check_field_offset(lv, s3850c1f0, ABISELECT(32,20), "S3850C1.s3850c1f0");
    check_field_offset(lv, s3850c1f1, ABISELECT(40,24), "S3850C1.s3850c1f1");
    check_field_offset(lv, s3850c1f2, ABISELECT(48,28), "S3850C1.s3850c1f2");
    test_class_info(&lv, &cd_S3850C1);
    dp->~S3850C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3850C1(Test_S3850C1, "S3850C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S3850C1C1Ev();
extern void _ZN7S3850C1D1Ev();
Name_Map name_map_S3850C1[] = {
  NSPAIR(_ZN7S3850C1C1Ev),
  NSPAIR(_ZN7S3850C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3850C2;
extern VTBL_ENTRY _ZTI7S3850C2[];
extern  VTBL_ENTRY _ZTV7S3850C2[];
static Base_Class bases_S3850C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3850C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3850C1[];
extern void _ZN7S3850C1D1Ev();
extern void _ZN7S3850C1D0Ev();
extern void _ZN7S3850C22v3Ev();
extern void _ZN7S3850C22v4Ev();
extern void _ZN7S3850C12v1Ev();
extern void _ZN7S3850C12v2Ev();
static  VTBL_ENTRY vtc_S3850C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3850C1[0]),
  (VTBL_ENTRY)&_ZN7S3850C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3850C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3850C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3850C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3850C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3850C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3850C1[];
extern  VTBL_ENTRY _ZTV7S3850C1[];
Class_Descriptor cd_S3850C1 = {  "S3850C1", // class name
  bases_S3850C1, 2,
  &(vtc_S3850C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S3850C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3850C1),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  S3849C2  : S2242C7_nt {
  char s3849c2f0;
  void *s3849c2f1;
  int s3849c2f2;
  virtual  ~S3849C2(); // _ZN7S3849C2D1Ev
  virtual void  v3(); // _ZN7S3849C22v3Ev
  virtual void  v4(); // _ZN7S3849C22v4Ev
  S3849C2(); // tgen
};
//SIG(-1 S3849C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3849C2 ::~S3849C2(){ note_dtor("S3849C2", this);}
void  S3849C2 ::v3(){vfunc_called(this, "_ZN7S3849C22v3Ev");}
void  S3849C2 ::v4(){vfunc_called(this, "_ZN7S3849C22v4Ev");}
S3849C2 ::S3849C2(){ note_ctor("S3849C2", this);} // tgen

static void Test_S3849C2()
{
  extern Class_Descriptor cd_S3849C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3849C2, buf);
    S3849C2 *dp, &lv = *(dp=new (buf) S3849C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3849C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3849C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3849C2");
    check_field_offset(lv, s3849c2f0, ABISELECT(12,8), "S3849C2.s3849c2f0");
    check_field_offset(lv, s3849c2f1, ABISELECT(16,12), "S3849C2.s3849c2f1");
    check_field_offset(lv, s3849c2f2, ABISELECT(24,16), "S3849C2.s3849c2f2");
    test_class_info(&lv, &cd_S3849C2);
    dp->~S3849C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3849C2(Test_S3849C2, "S3849C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3849C2C1Ev();
extern void _ZN7S3849C2D1Ev();
Name_Map name_map_S3849C2[] = {
  NSPAIR(_ZN7S3849C2C1Ev),
  NSPAIR(_ZN7S3849C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3849C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3849C2[];
extern void _ZN7S3849C2D1Ev();
extern void _ZN7S3849C2D0Ev();
extern void _ZN7S3849C22v3Ev();
extern void _ZN7S3849C22v4Ev();
static  VTBL_ENTRY vtc_S3849C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3849C2[0]),
  (VTBL_ENTRY)&_ZN7S3849C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3849C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3849C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3849C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3849C2[];
extern  VTBL_ENTRY _ZTV7S3849C2[];
Class_Descriptor cd_S3849C2 = {  "S3849C2", // class name
  bases_S3849C2, 1,
  &(vtc_S3849C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3849C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3849C2),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  S3849C1  : S3849C2 {
  ::S19490C10_nt s3849c1f0;
  __tsi64 s3849c1f1;
  void *s3849c1f2;
  int s3849c1f3;
  virtual  ~S3849C1(); // _ZN7S3849C1D1Ev
  virtual void  v1(); // _ZN7S3849C12v1Ev
  virtual void  v2(); // _ZN7S3849C12v2Ev
  S3849C1(); // tgen
};
//SIG(1 S3849C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} FL Fp Fi}


 S3849C1 ::~S3849C1(){ note_dtor("S3849C1", this);}
void  S3849C1 ::v1(){vfunc_called(this, "_ZN7S3849C12v1Ev");}
void  S3849C1 ::v2(){vfunc_called(this, "_ZN7S3849C12v2Ev");}
S3849C1 ::S3849C1(){ note_ctor("S3849C1", this);} // tgen

static void Test_S3849C1()
{
  extern Class_Descriptor cd_S3849C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S3849C1, buf);
    S3849C1 *dp, &lv = *(dp=new (buf) S3849C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S3849C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3849C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3849C2*), 0, "S3849C1");
    check_base_class_offset(lv, (S3849C2*), 0, "S3849C1");
    check_field_offset(lv, s3849c1f0, ABISELECT(32,20), "S3849C1.s3849c1f0");
    check_field_offset(lv, s3849c1f1, ABISELECT(40,24), "S3849C1.s3849c1f1");
    check_field_offset(lv, s3849c1f2, ABISELECT(48,32), "S3849C1.s3849c1f2");
    check_field_offset(lv, s3849c1f3, ABISELECT(56,36), "S3849C1.s3849c1f3");
    test_class_info(&lv, &cd_S3849C1);
    dp->~S3849C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3849C1(Test_S3849C1, "S3849C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S3849C1C1Ev();
extern void _ZN7S3849C1D1Ev();
Name_Map name_map_S3849C1[] = {
  NSPAIR(_ZN7S3849C1C1Ev),
  NSPAIR(_ZN7S3849C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3849C2;
extern VTBL_ENTRY _ZTI7S3849C2[];
extern  VTBL_ENTRY _ZTV7S3849C2[];
static Base_Class bases_S3849C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3849C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3849C1[];
extern void _ZN7S3849C1D1Ev();
extern void _ZN7S3849C1D0Ev();
extern void _ZN7S3849C22v3Ev();
extern void _ZN7S3849C22v4Ev();
extern void _ZN7S3849C12v1Ev();
extern void _ZN7S3849C12v2Ev();
static  VTBL_ENTRY vtc_S3849C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3849C1[0]),
  (VTBL_ENTRY)&_ZN7S3849C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3849C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3849C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3849C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3849C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3849C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3849C1[];
extern  VTBL_ENTRY _ZTV7S3849C1[];
Class_Descriptor cd_S3849C1 = {  "S3849C1", // class name
  bases_S3849C1, 2,
  &(vtc_S3849C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S3849C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3849C1),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  S3848C2  : S2242C7_nt {
  char s3848c2f0;
  void *s3848c2f1;
  int s3848c2f2;
  virtual  ~S3848C2(); // _ZN7S3848C2D1Ev
  virtual void  v3(); // _ZN7S3848C22v3Ev
  virtual void  v4(); // _ZN7S3848C22v4Ev
  S3848C2(); // tgen
};
//SIG(-1 S3848C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3848C2 ::~S3848C2(){ note_dtor("S3848C2", this);}
void  S3848C2 ::v3(){vfunc_called(this, "_ZN7S3848C22v3Ev");}
void  S3848C2 ::v4(){vfunc_called(this, "_ZN7S3848C22v4Ev");}
S3848C2 ::S3848C2(){ note_ctor("S3848C2", this);} // tgen

static void Test_S3848C2()
{
  extern Class_Descriptor cd_S3848C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3848C2, buf);
    S3848C2 *dp, &lv = *(dp=new (buf) S3848C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3848C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3848C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3848C2");
    check_field_offset(lv, s3848c2f0, ABISELECT(12,8), "S3848C2.s3848c2f0");
    check_field_offset(lv, s3848c2f1, ABISELECT(16,12), "S3848C2.s3848c2f1");
    check_field_offset(lv, s3848c2f2, ABISELECT(24,16), "S3848C2.s3848c2f2");
    test_class_info(&lv, &cd_S3848C2);
    dp->~S3848C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3848C2(Test_S3848C2, "S3848C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3848C2C1Ev();
extern void _ZN7S3848C2D1Ev();
Name_Map name_map_S3848C2[] = {
  NSPAIR(_ZN7S3848C2C1Ev),
  NSPAIR(_ZN7S3848C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3848C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3848C2[];
extern void _ZN7S3848C2D1Ev();
extern void _ZN7S3848C2D0Ev();
extern void _ZN7S3848C22v3Ev();
extern void _ZN7S3848C22v4Ev();
static  VTBL_ENTRY vtc_S3848C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3848C2[0]),
  (VTBL_ENTRY)&_ZN7S3848C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3848C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3848C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3848C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3848C2[];
extern  VTBL_ENTRY _ZTV7S3848C2[];
Class_Descriptor cd_S3848C2 = {  "S3848C2", // class name
  bases_S3848C2, 1,
  &(vtc_S3848C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3848C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3848C2),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  S3848C1  : S3848C2 {
  ::S19490C10_nt s3848c1f0;
  __tsi64 s3848c1f1;
  int s3848c1f2;
  char s3848c1f3;
  virtual  ~S3848C1(); // _ZN7S3848C1D1Ev
  virtual void  v1(); // _ZN7S3848C12v1Ev
  virtual void  v2(); // _ZN7S3848C12v2Ev
  S3848C1(); // tgen
};
//SIG(1 S3848C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} FL Fi Fc}


 S3848C1 ::~S3848C1(){ note_dtor("S3848C1", this);}
void  S3848C1 ::v1(){vfunc_called(this, "_ZN7S3848C12v1Ev");}
void  S3848C1 ::v2(){vfunc_called(this, "_ZN7S3848C12v2Ev");}
S3848C1 ::S3848C1(){ note_ctor("S3848C1", this);} // tgen

static void Test_S3848C1()
{
  extern Class_Descriptor cd_S3848C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S3848C1, buf);
    S3848C1 *dp, &lv = *(dp=new (buf) S3848C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S3848C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3848C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3848C2*), 0, "S3848C1");
    check_base_class_offset(lv, (S3848C2*), 0, "S3848C1");
    check_field_offset(lv, s3848c1f0, ABISELECT(32,20), "S3848C1.s3848c1f0");
    check_field_offset(lv, s3848c1f1, ABISELECT(40,24), "S3848C1.s3848c1f1");
    check_field_offset(lv, s3848c1f2, ABISELECT(48,32), "S3848C1.s3848c1f2");
    check_field_offset(lv, s3848c1f3, ABISELECT(52,36), "S3848C1.s3848c1f3");
    test_class_info(&lv, &cd_S3848C1);
    dp->~S3848C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3848C1(Test_S3848C1, "S3848C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S3848C1C1Ev();
extern void _ZN7S3848C1D1Ev();
Name_Map name_map_S3848C1[] = {
  NSPAIR(_ZN7S3848C1C1Ev),
  NSPAIR(_ZN7S3848C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3848C2;
extern VTBL_ENTRY _ZTI7S3848C2[];
extern  VTBL_ENTRY _ZTV7S3848C2[];
static Base_Class bases_S3848C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3848C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3848C1[];
extern void _ZN7S3848C1D1Ev();
extern void _ZN7S3848C1D0Ev();
extern void _ZN7S3848C22v3Ev();
extern void _ZN7S3848C22v4Ev();
extern void _ZN7S3848C12v1Ev();
extern void _ZN7S3848C12v2Ev();
static  VTBL_ENTRY vtc_S3848C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3848C1[0]),
  (VTBL_ENTRY)&_ZN7S3848C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3848C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3848C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3848C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3848C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3848C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3848C1[];
extern  VTBL_ENTRY _ZTV7S3848C1[];
Class_Descriptor cd_S3848C1 = {  "S3848C1", // class name
  bases_S3848C1, 2,
  &(vtc_S3848C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S3848C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3848C1),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  S4893C3  {
  ::S5135C4_nt s4893c3f0;
  virtual  ~S4893C3(); // _ZN7S4893C3D1Ev
  virtual void  v3(); // _ZN7S4893C32v3Ev
  virtual void  v4(); // _ZN7S4893C32v4Ev
  virtual void  v5(); // _ZN7S4893C32v5Ev
  virtual void  v6(); // _ZN7S4893C32v6Ev
  S4893C3(); // tgen
};
//SIG(-1 S4893C3) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m FL}}}


 S4893C3 ::~S4893C3(){ note_dtor("S4893C3", this);}
void  S4893C3 ::v3(){vfunc_called(this, "_ZN7S4893C32v3Ev");}
void  S4893C3 ::v4(){vfunc_called(this, "_ZN7S4893C32v4Ev");}
void  S4893C3 ::v5(){vfunc_called(this, "_ZN7S4893C32v5Ev");}
void  S4893C3 ::v6(){vfunc_called(this, "_ZN7S4893C32v6Ev");}
S4893C3 ::S4893C3(){ note_ctor("S4893C3", this);} // tgen

static void Test_S4893C3()
{
  extern Class_Descriptor cd_S4893C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4893C3, buf);
    S4893C3 *dp, &lv = *(dp=new (buf) S4893C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4893C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4893C3)");
    check_field_offset(lv, s4893c3f0, ABISELECT(8,4), "S4893C3.s4893c3f0");
    test_class_info(&lv, &cd_S4893C3);
    dp->~S4893C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4893C3(Test_S4893C3, "S4893C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4893C3C1Ev();
extern void _ZN7S4893C3D1Ev();
Name_Map name_map_S4893C3[] = {
  NSPAIR(_ZN7S4893C3C1Ev),
  NSPAIR(_ZN7S4893C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4893C3[];
extern void _ZN7S4893C3D1Ev();
extern void _ZN7S4893C3D0Ev();
extern void _ZN7S4893C32v3Ev();
extern void _ZN7S4893C32v4Ev();
extern void _ZN7S4893C32v5Ev();
extern void _ZN7S4893C32v6Ev();
static  VTBL_ENTRY vtc_S4893C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4893C3[0]),
  (VTBL_ENTRY)&_ZN7S4893C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4893C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S4893C3[];
extern  VTBL_ENTRY _ZTV7S4893C3[];
Class_Descriptor cd_S4893C3 = {  "S4893C3", // class name
  0,0,//no base classes
  &(vtc_S4893C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4893C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4893C3),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  S4893C2  : S4893C3 {
  virtual void  v7(); // _ZN7S4893C22v7Ev
  virtual void  v8(); // _ZN7S4893C22v8Ev
  virtual void  v9(); // _ZN7S4893C22v9Ev
  ~S4893C2(); // tgen
  S4893C2(); // tgen
};
//SIG(-1 S4893C2) C1{ BC2{ vd v4 v5 v6 v7 FC3{ m FC4{ m FL}}} v1 v2 v3}


void  S4893C2 ::v7(){vfunc_called(this, "_ZN7S4893C22v7Ev");}
void  S4893C2 ::v8(){vfunc_called(this, "_ZN7S4893C22v8Ev");}
void  S4893C2 ::v9(){vfunc_called(this, "_ZN7S4893C22v9Ev");}
S4893C2 ::~S4893C2(){ note_dtor("S4893C2", this);} // tgen
S4893C2 ::S4893C2(){ note_ctor("S4893C2", this);} // tgen

static void Test_S4893C2()
{
  extern Class_Descriptor cd_S4893C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4893C2, buf);
    S4893C2 *dp, &lv = *(dp=new (buf) S4893C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4893C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4893C2)");
    check_base_class_offset(lv, (S4893C3*), 0, "S4893C2");
    test_class_info(&lv, &cd_S4893C2);
    dp->~S4893C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4893C2(Test_S4893C2, "S4893C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4893C2C1Ev();
extern void _ZN7S4893C2D1Ev();
Name_Map name_map_S4893C2[] = {
  NSPAIR(_ZN7S4893C2C1Ev),
  NSPAIR(_ZN7S4893C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4893C3;
extern VTBL_ENTRY _ZTI7S4893C3[];
extern  VTBL_ENTRY _ZTV7S4893C3[];
static Base_Class bases_S4893C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4893C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4893C2[];
extern void _ZN7S4893C2D1Ev();
extern void _ZN7S4893C2D0Ev();
extern void _ZN7S4893C32v3Ev();
extern void _ZN7S4893C32v4Ev();
extern void _ZN7S4893C32v5Ev();
extern void _ZN7S4893C32v6Ev();
extern void _ZN7S4893C22v7Ev();
extern void _ZN7S4893C22v8Ev();
extern void _ZN7S4893C22v9Ev();
static  VTBL_ENTRY vtc_S4893C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4893C2[0]),
  (VTBL_ENTRY)&_ZN7S4893C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4893C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4893C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4893C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4893C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S4893C2[];
extern  VTBL_ENTRY _ZTV7S4893C2[];
Class_Descriptor cd_S4893C2 = {  "S4893C2", // class name
  bases_S4893C2, 1,
  &(vtc_S4893C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4893C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4893C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4893C1  : S4893C2 {
  int s4893c1f0[2];
  virtual void  v1(); // _ZN7S4893C12v1Ev
  virtual void  v2(); // _ZN7S4893C12v2Ev
  ~S4893C1(); // tgen
  S4893C1(); // tgen
};
//SIG(1 S4893C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 FC4{ m FC5{ m FL}}} v7 v8 v9} v1 v2 Fi[2]}


void  S4893C1 ::v1(){vfunc_called(this, "_ZN7S4893C12v1Ev");}
void  S4893C1 ::v2(){vfunc_called(this, "_ZN7S4893C12v2Ev");}
S4893C1 ::~S4893C1(){ note_dtor("S4893C1", this);} // tgen
S4893C1 ::S4893C1(){ note_ctor("S4893C1", this);} // tgen

static void Test_S4893C1()
{
  extern Class_Descriptor cd_S4893C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S4893C1, buf);
    S4893C1 *dp, &lv = *(dp=new (buf) S4893C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S4893C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4893C1)");
    check_base_class_offset(lv, (S4893C3*)(S4893C2*), 0, "S4893C1");
    check_base_class_offset(lv, (S4893C2*), 0, "S4893C1");
    check_field_offset(lv, s4893c1f0, ABISELECT(16,12), "S4893C1.s4893c1f0");
    test_class_info(&lv, &cd_S4893C1);
    dp->~S4893C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4893C1(Test_S4893C1, "S4893C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S4893C1C1Ev();
extern void _ZN7S4893C1D1Ev();
Name_Map name_map_S4893C1[] = {
  NSPAIR(_ZN7S4893C1C1Ev),
  NSPAIR(_ZN7S4893C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4893C3;
extern VTBL_ENTRY _ZTI7S4893C3[];
extern  VTBL_ENTRY _ZTV7S4893C3[];
extern Class_Descriptor cd_S4893C2;
extern VTBL_ENTRY _ZTI7S4893C2[];
extern  VTBL_ENTRY _ZTV7S4893C2[];
static Base_Class bases_S4893C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4893C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4893C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4893C1[];
extern void _ZN7S4893C1D1Ev();
extern void _ZN7S4893C1D0Ev();
extern void _ZN7S4893C32v3Ev();
extern void _ZN7S4893C32v4Ev();
extern void _ZN7S4893C32v5Ev();
extern void _ZN7S4893C32v6Ev();
extern void _ZN7S4893C22v7Ev();
extern void _ZN7S4893C22v8Ev();
extern void _ZN7S4893C22v9Ev();
extern void _ZN7S4893C12v1Ev();
extern void _ZN7S4893C12v2Ev();
static  VTBL_ENTRY vtc_S4893C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4893C1[0]),
  (VTBL_ENTRY)&_ZN7S4893C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4893C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4893C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4893C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4893C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4893C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4893C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4893C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4893C1[];
extern  VTBL_ENTRY _ZTV7S4893C1[];
Class_Descriptor cd_S4893C1 = {  "S4893C1", // class name
  bases_S4893C1, 2,
  &(vtc_S4893C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S4893C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4893C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9778C2  {
  void *s9778c2f0[2];
  char s9778c2f1[128];
  void *s9778c2f2[2];
  virtual  ~S9778C2(); // _ZN7S9778C2D1Ev
  virtual void  v4(); // _ZN7S9778C22v4Ev
  virtual void  v5(); // _ZN7S9778C22v5Ev
  virtual void  v6(); // _ZN7S9778C22v6Ev
  virtual void  v7(); // _ZN7S9778C22v7Ev
  S9778C2(); // tgen
};
//SIG(-1 S9778C2) C1{ vd v1 v2 v3 v4 Fp[2] Fc[128] Fp[2]}


 S9778C2 ::~S9778C2(){ note_dtor("S9778C2", this);}
void  S9778C2 ::v4(){vfunc_called(this, "_ZN7S9778C22v4Ev");}
void  S9778C2 ::v5(){vfunc_called(this, "_ZN7S9778C22v5Ev");}
void  S9778C2 ::v6(){vfunc_called(this, "_ZN7S9778C22v6Ev");}
void  S9778C2 ::v7(){vfunc_called(this, "_ZN7S9778C22v7Ev");}
S9778C2 ::S9778C2(){ note_ctor("S9778C2", this);} // tgen

static void Test_S9778C2()
{
  extern Class_Descriptor cd_S9778C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9778C2, buf);
    S9778C2 *dp, &lv = *(dp=new (buf) S9778C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9778C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9778C2)");
    check_field_offset(lv, s9778c2f0, ABISELECT(8,4), "S9778C2.s9778c2f0");
    check_field_offset(lv, s9778c2f1, ABISELECT(24,12), "S9778C2.s9778c2f1");
    check_field_offset(lv, s9778c2f2, ABISELECT(152,140), "S9778C2.s9778c2f2");
    test_class_info(&lv, &cd_S9778C2);
    dp->~S9778C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9778C2(Test_S9778C2, "S9778C2", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9778C2C1Ev();
extern void _ZN7S9778C2D1Ev();
Name_Map name_map_S9778C2[] = {
  NSPAIR(_ZN7S9778C2C1Ev),
  NSPAIR(_ZN7S9778C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9778C2[];
extern void _ZN7S9778C2D1Ev();
extern void _ZN7S9778C2D0Ev();
extern void _ZN7S9778C22v4Ev();
extern void _ZN7S9778C22v5Ev();
extern void _ZN7S9778C22v6Ev();
extern void _ZN7S9778C22v7Ev();
static  VTBL_ENTRY vtc_S9778C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9778C2[0]),
  (VTBL_ENTRY)&_ZN7S9778C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9778C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9778C2[];
extern  VTBL_ENTRY _ZTV7S9778C2[];
Class_Descriptor cd_S9778C2 = {  "S9778C2", // class name
  0,0,//no base classes
  &(vtc_S9778C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9778C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9778C2),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  S9778C1  : S9778C2 {
  char s9778c1f0;
  __tsi64 s9778c1f1[2];
  virtual  ~S9778C1(); // _ZN7S9778C1D1Ev
  virtual void  v1(); // _ZN7S9778C12v1Ev
  virtual void  v2(); // _ZN7S9778C12v2Ev
  virtual void  v3(); // _ZN7S9778C12v3Ev
  S9778C1(); // tgen
};
//SIG(1 S9778C1) C1{ BC2{ vd v4 v5 v6 v7 Fp[2] Fc[128] Fp[2]} vd v1 v2 v3 Fc FL[2]}


 S9778C1 ::~S9778C1(){ note_dtor("S9778C1", this);}
void  S9778C1 ::v1(){vfunc_called(this, "_ZN7S9778C12v1Ev");}
void  S9778C1 ::v2(){vfunc_called(this, "_ZN7S9778C12v2Ev");}
void  S9778C1 ::v3(){vfunc_called(this, "_ZN7S9778C12v3Ev");}
S9778C1 ::S9778C1(){ note_ctor("S9778C1", this);} // tgen

static void Test_S9778C1()
{
  extern Class_Descriptor cd_S9778C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,43)];
    init_test(&cd_S9778C1, buf);
    S9778C1 *dp, &lv = *(dp=new (buf) S9778C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,168), "sizeof(S9778C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9778C1)");
    check_base_class_offset(lv, (S9778C2*), 0, "S9778C1");
    check_field_offset(lv, s9778c1f0, ABISELECT(168,148), "S9778C1.s9778c1f0");
    check_field_offset(lv, s9778c1f1, ABISELECT(176,152), "S9778C1.s9778c1f1");
    test_class_info(&lv, &cd_S9778C1);
    dp->~S9778C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9778C1(Test_S9778C1, "S9778C1", ABISELECT(192,168));

#else // __cplusplus

extern void _ZN7S9778C1C1Ev();
extern void _ZN7S9778C1D1Ev();
Name_Map name_map_S9778C1[] = {
  NSPAIR(_ZN7S9778C1C1Ev),
  NSPAIR(_ZN7S9778C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9778C2;
extern VTBL_ENTRY _ZTI7S9778C2[];
extern  VTBL_ENTRY _ZTV7S9778C2[];
static Base_Class bases_S9778C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9778C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9778C1[];
extern void _ZN7S9778C1D1Ev();
extern void _ZN7S9778C1D0Ev();
extern void _ZN7S9778C22v4Ev();
extern void _ZN7S9778C22v5Ev();
extern void _ZN7S9778C22v6Ev();
extern void _ZN7S9778C22v7Ev();
extern void _ZN7S9778C12v1Ev();
extern void _ZN7S9778C12v2Ev();
extern void _ZN7S9778C12v3Ev();
static  VTBL_ENTRY vtc_S9778C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9778C1[0]),
  (VTBL_ENTRY)&_ZN7S9778C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9778C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9778C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9778C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9778C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9778C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9778C1[];
extern  VTBL_ENTRY _ZTV7S9778C1[];
Class_Descriptor cd_S9778C1 = {  "S9778C1", // class name
  bases_S9778C1, 1,
  &(vtc_S9778C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,168), // object size
  NSPAIRA(_ZTI7S9778C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9778C1),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  S13999C1  {
  __tsi64 s13999c1f0[32];
  int s13999c1f1;
  __tsi64 s13999c1f2[36];
  int s13999c1f3;
  ::S14964C2 s13999c1f4[32];
  ::S14964C2 s13999c1f5;
};
//SIG(1 S13999C1) C1{ FL[32] Fi FL[36] Fi FU2{ Fc[16] Fs[8] Fi[4] FL[2]}[32] FU2}



static void Test_S13999C1()
{
  {
    init_simple_test("S13999C1");
    S13999C1 lv;
    check2(sizeof(lv), ABISELECT(1088,1080), "sizeof(S13999C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13999C1)");
    check_field_offset(lv, s13999c1f0, 0, "S13999C1.s13999c1f0");
    check_field_offset(lv, s13999c1f1, 256, "S13999C1.s13999c1f1");
    check_field_offset(lv, s13999c1f2, ABISELECT(264,260), "S13999C1.s13999c1f2");
    check_field_offset(lv, s13999c1f3, ABISELECT(552,548), "S13999C1.s13999c1f3");
    check_field_offset(lv, s13999c1f4, ABISELECT(560,552), "S13999C1.s13999c1f4");
    check_field_offset(lv, s13999c1f5, ABISELECT(1072,1064), "S13999C1.s13999c1f5");
  }
}
static Arrange_To_Call_Me vS13999C1(Test_S13999C1, "S13999C1", ABISELECT(1088,1080));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3851C2  : S2242C7_nt {
  char s3851c2f0;
  void *s3851c2f1;
  int s3851c2f2;
  virtual  ~S3851C2(); // _ZN7S3851C2D1Ev
  virtual void  v3(); // _ZN7S3851C22v3Ev
  virtual void  v4(); // _ZN7S3851C22v4Ev
  S3851C2(); // tgen
};
//SIG(-1 S3851C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3851C2 ::~S3851C2(){ note_dtor("S3851C2", this);}
void  S3851C2 ::v3(){vfunc_called(this, "_ZN7S3851C22v3Ev");}
void  S3851C2 ::v4(){vfunc_called(this, "_ZN7S3851C22v4Ev");}
S3851C2 ::S3851C2(){ note_ctor("S3851C2", this);} // tgen

static void Test_S3851C2()
{
  extern Class_Descriptor cd_S3851C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3851C2, buf);
    S3851C2 *dp, &lv = *(dp=new (buf) S3851C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3851C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3851C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3851C2");
    check_field_offset(lv, s3851c2f0, ABISELECT(12,8), "S3851C2.s3851c2f0");
    check_field_offset(lv, s3851c2f1, ABISELECT(16,12), "S3851C2.s3851c2f1");
    check_field_offset(lv, s3851c2f2, ABISELECT(24,16), "S3851C2.s3851c2f2");
    test_class_info(&lv, &cd_S3851C2);
    dp->~S3851C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3851C2(Test_S3851C2, "S3851C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3851C2C1Ev();
extern void _ZN7S3851C2D1Ev();
Name_Map name_map_S3851C2[] = {
  NSPAIR(_ZN7S3851C2C1Ev),
  NSPAIR(_ZN7S3851C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3851C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3851C2[];
extern void _ZN7S3851C2D1Ev();
extern void _ZN7S3851C2D0Ev();
extern void _ZN7S3851C22v3Ev();
extern void _ZN7S3851C22v4Ev();
static  VTBL_ENTRY vtc_S3851C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3851C2[0]),
  (VTBL_ENTRY)&_ZN7S3851C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3851C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3851C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3851C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3851C2[];
extern  VTBL_ENTRY _ZTV7S3851C2[];
Class_Descriptor cd_S3851C2 = {  "S3851C2", // class name
  bases_S3851C2, 1,
  &(vtc_S3851C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3851C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3851C2),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  S3851C1  : S3851C2 {
  ::S19490C10_nt s3851c1f0;
  void *s3851c1f1;
  int s3851c1f2;
  virtual  ~S3851C1(); // _ZN7S3851C1D1Ev
  virtual void  v1(); // _ZN7S3851C12v1Ev
  virtual void  v2(); // _ZN7S3851C12v2Ev
  S3851C1(); // tgen
};
//SIG(1 S3851C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} Fp Fi}


 S3851C1 ::~S3851C1(){ note_dtor("S3851C1", this);}
void  S3851C1 ::v1(){vfunc_called(this, "_ZN7S3851C12v1Ev");}
void  S3851C1 ::v2(){vfunc_called(this, "_ZN7S3851C12v2Ev");}
S3851C1 ::S3851C1(){ note_ctor("S3851C1", this);} // tgen

static void Test_S3851C1()
{
  extern Class_Descriptor cd_S3851C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3851C1, buf);
    S3851C1 *dp, &lv = *(dp=new (buf) S3851C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3851C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3851C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3851C2*), 0, "S3851C1");
    check_base_class_offset(lv, (S3851C2*), 0, "S3851C1");
    check_field_offset(lv, s3851c1f0, ABISELECT(32,20), "S3851C1.s3851c1f0");
    check_field_offset(lv, s3851c1f1, ABISELECT(40,24), "S3851C1.s3851c1f1");
    check_field_offset(lv, s3851c1f2, ABISELECT(48,28), "S3851C1.s3851c1f2");
    test_class_info(&lv, &cd_S3851C1);
    dp->~S3851C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3851C1(Test_S3851C1, "S3851C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3851C1C1Ev();
extern void _ZN7S3851C1D1Ev();
Name_Map name_map_S3851C1[] = {
  NSPAIR(_ZN7S3851C1C1Ev),
  NSPAIR(_ZN7S3851C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3851C2;
extern VTBL_ENTRY _ZTI7S3851C2[];
extern  VTBL_ENTRY _ZTV7S3851C2[];
static Base_Class bases_S3851C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3851C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3851C1[];
extern void _ZN7S3851C1D1Ev();
extern void _ZN7S3851C1D0Ev();
extern void _ZN7S3851C22v3Ev();
extern void _ZN7S3851C22v4Ev();
extern void _ZN7S3851C12v1Ev();
extern void _ZN7S3851C12v2Ev();
static  VTBL_ENTRY vtc_S3851C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3851C1[0]),
  (VTBL_ENTRY)&_ZN7S3851C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3851C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3851C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3851C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3851C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3851C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3851C1[];
extern  VTBL_ENTRY _ZTV7S3851C1[];
Class_Descriptor cd_S3851C1 = {  "S3851C1", // class name
  bases_S3851C1, 2,
  &(vtc_S3851C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3851C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3851C1),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  S3847C2  : S2242C7_nt {
  char s3847c2f0;
  void *s3847c2f1;
  int s3847c2f2;
  virtual  ~S3847C2(); // _ZN7S3847C2D1Ev
  virtual void  v3(); // _ZN7S3847C22v3Ev
  virtual void  v4(); // _ZN7S3847C22v4Ev
  S3847C2(); // tgen
};
//SIG(-1 S3847C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3847C2 ::~S3847C2(){ note_dtor("S3847C2", this);}
void  S3847C2 ::v3(){vfunc_called(this, "_ZN7S3847C22v3Ev");}
void  S3847C2 ::v4(){vfunc_called(this, "_ZN7S3847C22v4Ev");}
S3847C2 ::S3847C2(){ note_ctor("S3847C2", this);} // tgen

static void Test_S3847C2()
{
  extern Class_Descriptor cd_S3847C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3847C2, buf);
    S3847C2 *dp, &lv = *(dp=new (buf) S3847C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3847C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3847C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3847C2");
    check_field_offset(lv, s3847c2f0, ABISELECT(12,8), "S3847C2.s3847c2f0");
    check_field_offset(lv, s3847c2f1, ABISELECT(16,12), "S3847C2.s3847c2f1");
    check_field_offset(lv, s3847c2f2, ABISELECT(24,16), "S3847C2.s3847c2f2");
    test_class_info(&lv, &cd_S3847C2);
    dp->~S3847C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3847C2(Test_S3847C2, "S3847C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3847C2C1Ev();
extern void _ZN7S3847C2D1Ev();
Name_Map name_map_S3847C2[] = {
  NSPAIR(_ZN7S3847C2C1Ev),
  NSPAIR(_ZN7S3847C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3847C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3847C2[];
extern void _ZN7S3847C2D1Ev();
extern void _ZN7S3847C2D0Ev();
extern void _ZN7S3847C22v3Ev();
extern void _ZN7S3847C22v4Ev();
static  VTBL_ENTRY vtc_S3847C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3847C2[0]),
  (VTBL_ENTRY)&_ZN7S3847C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3847C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3847C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3847C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3847C2[];
extern  VTBL_ENTRY _ZTV7S3847C2[];
Class_Descriptor cd_S3847C2 = {  "S3847C2", // class name
  bases_S3847C2, 1,
  &(vtc_S3847C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3847C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3847C2),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  S3847C1  : S3847C2 {
  ::S19490C10_nt s3847c1f0;
  __tsi64 s3847c1f1;
  char s3847c1f2;
  virtual  ~S3847C1(); // _ZN7S3847C1D1Ev
  virtual void  v1(); // _ZN7S3847C12v1Ev
  virtual void  v2(); // _ZN7S3847C12v2Ev
  S3847C1(); // tgen
};
//SIG(1 S3847C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} FL Fc}


 S3847C1 ::~S3847C1(){ note_dtor("S3847C1", this);}
void  S3847C1 ::v1(){vfunc_called(this, "_ZN7S3847C12v1Ev");}
void  S3847C1 ::v2(){vfunc_called(this, "_ZN7S3847C12v2Ev");}
S3847C1 ::S3847C1(){ note_ctor("S3847C1", this);} // tgen

static void Test_S3847C1()
{
  extern Class_Descriptor cd_S3847C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S3847C1, buf);
    S3847C1 *dp, &lv = *(dp=new (buf) S3847C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3847C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3847C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3847C2*), 0, "S3847C1");
    check_base_class_offset(lv, (S3847C2*), 0, "S3847C1");
    check_field_offset(lv, s3847c1f0, ABISELECT(32,20), "S3847C1.s3847c1f0");
    check_field_offset(lv, s3847c1f1, ABISELECT(40,24), "S3847C1.s3847c1f1");
    check_field_offset(lv, s3847c1f2, ABISELECT(48,32), "S3847C1.s3847c1f2");
    test_class_info(&lv, &cd_S3847C1);
    dp->~S3847C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3847C1(Test_S3847C1, "S3847C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S3847C1C1Ev();
extern void _ZN7S3847C1D1Ev();
Name_Map name_map_S3847C1[] = {
  NSPAIR(_ZN7S3847C1C1Ev),
  NSPAIR(_ZN7S3847C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3847C2;
extern VTBL_ENTRY _ZTI7S3847C2[];
extern  VTBL_ENTRY _ZTV7S3847C2[];
static Base_Class bases_S3847C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3847C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3847C1[];
extern void _ZN7S3847C1D1Ev();
extern void _ZN7S3847C1D0Ev();
extern void _ZN7S3847C22v3Ev();
extern void _ZN7S3847C22v4Ev();
extern void _ZN7S3847C12v1Ev();
extern void _ZN7S3847C12v2Ev();
static  VTBL_ENTRY vtc_S3847C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3847C1[0]),
  (VTBL_ENTRY)&_ZN7S3847C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3847C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3847C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3847C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3847C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3847C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3847C1[];
extern  VTBL_ENTRY _ZTV7S3847C1[];
Class_Descriptor cd_S3847C1 = {  "S3847C1", // class name
  bases_S3847C1, 2,
  &(vtc_S3847C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S3847C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3847C1),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  S3842C2  : S2242C7_nt {
  char s3842c2f0;
  void *s3842c2f1;
  int s3842c2f2;
  virtual  ~S3842C2(); // _ZN7S3842C2D1Ev
  virtual void  v3(); // _ZN7S3842C22v3Ev
  virtual void  v4(); // _ZN7S3842C22v4Ev
  S3842C2(); // tgen
};
//SIG(-1 S3842C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3842C2 ::~S3842C2(){ note_dtor("S3842C2", this);}
void  S3842C2 ::v3(){vfunc_called(this, "_ZN7S3842C22v3Ev");}
void  S3842C2 ::v4(){vfunc_called(this, "_ZN7S3842C22v4Ev");}
S3842C2 ::S3842C2(){ note_ctor("S3842C2", this);} // tgen

static void Test_S3842C2()
{
  extern Class_Descriptor cd_S3842C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3842C2, buf);
    S3842C2 *dp, &lv = *(dp=new (buf) S3842C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3842C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3842C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3842C2");
    check_field_offset(lv, s3842c2f0, ABISELECT(12,8), "S3842C2.s3842c2f0");
    check_field_offset(lv, s3842c2f1, ABISELECT(16,12), "S3842C2.s3842c2f1");
    check_field_offset(lv, s3842c2f2, ABISELECT(24,16), "S3842C2.s3842c2f2");
    test_class_info(&lv, &cd_S3842C2);
    dp->~S3842C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3842C2(Test_S3842C2, "S3842C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3842C2C1Ev();
extern void _ZN7S3842C2D1Ev();
Name_Map name_map_S3842C2[] = {
  NSPAIR(_ZN7S3842C2C1Ev),
  NSPAIR(_ZN7S3842C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3842C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3842C2[];
extern void _ZN7S3842C2D1Ev();
extern void _ZN7S3842C2D0Ev();
extern void _ZN7S3842C22v3Ev();
extern void _ZN7S3842C22v4Ev();
static  VTBL_ENTRY vtc_S3842C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3842C2[0]),
  (VTBL_ENTRY)&_ZN7S3842C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3842C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3842C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3842C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3842C2[];
extern  VTBL_ENTRY _ZTV7S3842C2[];
Class_Descriptor cd_S3842C2 = {  "S3842C2", // class name
  bases_S3842C2, 1,
  &(vtc_S3842C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3842C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3842C2),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  S3842C1  : S3842C2 {
  ::S19490C10_nt s3842c1f0;
  char s3842c1f1[2];
  virtual  ~S3842C1(); // _ZN7S3842C1D1Ev
  virtual void  v1(); // _ZN7S3842C12v1Ev
  virtual void  v2(); // _ZN7S3842C12v2Ev
  S3842C1(); // tgen
};
//SIG(1 S3842C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} Fc[2]}


 S3842C1 ::~S3842C1(){ note_dtor("S3842C1", this);}
void  S3842C1 ::v1(){vfunc_called(this, "_ZN7S3842C12v1Ev");}
void  S3842C1 ::v2(){vfunc_called(this, "_ZN7S3842C12v2Ev");}
S3842C1 ::S3842C1(){ note_ctor("S3842C1", this);} // tgen

static void Test_S3842C1()
{
  extern Class_Descriptor cd_S3842C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3842C1, buf);
    S3842C1 *dp, &lv = *(dp=new (buf) S3842C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3842C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3842C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3842C2*), 0, "S3842C1");
    check_base_class_offset(lv, (S3842C2*), 0, "S3842C1");
    check_field_offset(lv, s3842c1f0, ABISELECT(32,20), "S3842C1.s3842c1f0");
    check_field_offset(lv, s3842c1f1, ABISELECT(40,24), "S3842C1.s3842c1f1");
    test_class_info(&lv, &cd_S3842C1);
    dp->~S3842C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3842C1(Test_S3842C1, "S3842C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3842C1C1Ev();
extern void _ZN7S3842C1D1Ev();
Name_Map name_map_S3842C1[] = {
  NSPAIR(_ZN7S3842C1C1Ev),
  NSPAIR(_ZN7S3842C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3842C2;
extern VTBL_ENTRY _ZTI7S3842C2[];
extern  VTBL_ENTRY _ZTV7S3842C2[];
static Base_Class bases_S3842C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3842C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3842C1[];
extern void _ZN7S3842C1D1Ev();
extern void _ZN7S3842C1D0Ev();
extern void _ZN7S3842C22v3Ev();
extern void _ZN7S3842C22v4Ev();
extern void _ZN7S3842C12v1Ev();
extern void _ZN7S3842C12v2Ev();
static  VTBL_ENTRY vtc_S3842C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3842C1[0]),
  (VTBL_ENTRY)&_ZN7S3842C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3842C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3842C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3842C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3842C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3842C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3842C1[];
extern  VTBL_ENTRY _ZTV7S3842C1[];
Class_Descriptor cd_S3842C1 = {  "S3842C1", // class name
  bases_S3842C1, 2,
  &(vtc_S3842C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3842C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3842C1),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  S9780C2  {
  void *s9780c2f0[2];
  char s9780c2f1[128];
  void *s9780c2f2[2];
  virtual  ~S9780C2(); // _ZN7S9780C2D1Ev
  virtual void  v4(); // _ZN7S9780C22v4Ev
  virtual void  v5(); // _ZN7S9780C22v5Ev
  virtual void  v6(); // _ZN7S9780C22v6Ev
  virtual void  v7(); // _ZN7S9780C22v7Ev
  S9780C2(); // tgen
};
//SIG(-1 S9780C2) C1{ vd v1 v2 v3 v4 Fp[2] Fc[128] Fp[2]}


 S9780C2 ::~S9780C2(){ note_dtor("S9780C2", this);}
void  S9780C2 ::v4(){vfunc_called(this, "_ZN7S9780C22v4Ev");}
void  S9780C2 ::v5(){vfunc_called(this, "_ZN7S9780C22v5Ev");}
void  S9780C2 ::v6(){vfunc_called(this, "_ZN7S9780C22v6Ev");}
void  S9780C2 ::v7(){vfunc_called(this, "_ZN7S9780C22v7Ev");}
S9780C2 ::S9780C2(){ note_ctor("S9780C2", this);} // tgen

static void Test_S9780C2()
{
  extern Class_Descriptor cd_S9780C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9780C2, buf);
    S9780C2 *dp, &lv = *(dp=new (buf) S9780C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9780C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9780C2)");
    check_field_offset(lv, s9780c2f0, ABISELECT(8,4), "S9780C2.s9780c2f0");
    check_field_offset(lv, s9780c2f1, ABISELECT(24,12), "S9780C2.s9780c2f1");
    check_field_offset(lv, s9780c2f2, ABISELECT(152,140), "S9780C2.s9780c2f2");
    test_class_info(&lv, &cd_S9780C2);
    dp->~S9780C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9780C2(Test_S9780C2, "S9780C2", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9780C2C1Ev();
extern void _ZN7S9780C2D1Ev();
Name_Map name_map_S9780C2[] = {
  NSPAIR(_ZN7S9780C2C1Ev),
  NSPAIR(_ZN7S9780C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9780C2[];
extern void _ZN7S9780C2D1Ev();
extern void _ZN7S9780C2D0Ev();
extern void _ZN7S9780C22v4Ev();
extern void _ZN7S9780C22v5Ev();
extern void _ZN7S9780C22v6Ev();
extern void _ZN7S9780C22v7Ev();
static  VTBL_ENTRY vtc_S9780C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9780C2[0]),
  (VTBL_ENTRY)&_ZN7S9780C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9780C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9780C2[];
extern  VTBL_ENTRY _ZTV7S9780C2[];
Class_Descriptor cd_S9780C2 = {  "S9780C2", // class name
  0,0,//no base classes
  &(vtc_S9780C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9780C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9780C2),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  S9780C1  : S9780C2 {
  void *s9780c1f0;
  char s9780c1f1;
  virtual  ~S9780C1(); // _ZN7S9780C1D1Ev
  virtual void  v1(); // _ZN7S9780C12v1Ev
  virtual void  v2(); // _ZN7S9780C12v2Ev
  virtual void  v3(); // _ZN7S9780C12v3Ev
  S9780C1(); // tgen
};
//SIG(1 S9780C1) C1{ BC2{ vd v4 v5 v6 v7 Fp[2] Fc[128] Fp[2]} vd v1 v2 v3 Fp Fc}


 S9780C1 ::~S9780C1(){ note_dtor("S9780C1", this);}
void  S9780C1 ::v1(){vfunc_called(this, "_ZN7S9780C12v1Ev");}
void  S9780C1 ::v2(){vfunc_called(this, "_ZN7S9780C12v2Ev");}
void  S9780C1 ::v3(){vfunc_called(this, "_ZN7S9780C12v3Ev");}
S9780C1 ::S9780C1(){ note_ctor("S9780C1", this);} // tgen

static void Test_S9780C1()
{
  extern Class_Descriptor cd_S9780C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,40)];
    init_test(&cd_S9780C1, buf);
    S9780C1 *dp, &lv = *(dp=new (buf) S9780C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,156), "sizeof(S9780C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9780C1)");
    check_base_class_offset(lv, (S9780C2*), 0, "S9780C1");
    check_field_offset(lv, s9780c1f0, ABISELECT(168,148), "S9780C1.s9780c1f0");
    check_field_offset(lv, s9780c1f1, ABISELECT(176,152), "S9780C1.s9780c1f1");
    test_class_info(&lv, &cd_S9780C1);
    dp->~S9780C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9780C1(Test_S9780C1, "S9780C1", ABISELECT(184,156));

#else // __cplusplus

extern void _ZN7S9780C1C1Ev();
extern void _ZN7S9780C1D1Ev();
Name_Map name_map_S9780C1[] = {
  NSPAIR(_ZN7S9780C1C1Ev),
  NSPAIR(_ZN7S9780C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9780C2;
extern VTBL_ENTRY _ZTI7S9780C2[];
extern  VTBL_ENTRY _ZTV7S9780C2[];
static Base_Class bases_S9780C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9780C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9780C1[];
extern void _ZN7S9780C1D1Ev();
extern void _ZN7S9780C1D0Ev();
extern void _ZN7S9780C22v4Ev();
extern void _ZN7S9780C22v5Ev();
extern void _ZN7S9780C22v6Ev();
extern void _ZN7S9780C22v7Ev();
extern void _ZN7S9780C12v1Ev();
extern void _ZN7S9780C12v2Ev();
extern void _ZN7S9780C12v3Ev();
static  VTBL_ENTRY vtc_S9780C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9780C1[0]),
  (VTBL_ENTRY)&_ZN7S9780C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9780C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9780C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9780C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9780C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9780C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9780C1[];
extern  VTBL_ENTRY _ZTV7S9780C1[];
Class_Descriptor cd_S9780C1 = {  "S9780C1", // class name
  bases_S9780C1, 1,
  &(vtc_S9780C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,156), // object size
  NSPAIRA(_ZTI7S9780C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9780C1),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  S3846C2  : S2242C7_nt {
  char s3846c2f0;
  void *s3846c2f1;
  int s3846c2f2;
  virtual  ~S3846C2(); // _ZN7S3846C2D1Ev
  virtual void  v3(); // _ZN7S3846C22v3Ev
  virtual void  v4(); // _ZN7S3846C22v4Ev
  S3846C2(); // tgen
};
//SIG(-1 S3846C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3846C2 ::~S3846C2(){ note_dtor("S3846C2", this);}
void  S3846C2 ::v3(){vfunc_called(this, "_ZN7S3846C22v3Ev");}
void  S3846C2 ::v4(){vfunc_called(this, "_ZN7S3846C22v4Ev");}
S3846C2 ::S3846C2(){ note_ctor("S3846C2", this);} // tgen

static void Test_S3846C2()
{
  extern Class_Descriptor cd_S3846C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3846C2, buf);
    S3846C2 *dp, &lv = *(dp=new (buf) S3846C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3846C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3846C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3846C2");
    check_field_offset(lv, s3846c2f0, ABISELECT(12,8), "S3846C2.s3846c2f0");
    check_field_offset(lv, s3846c2f1, ABISELECT(16,12), "S3846C2.s3846c2f1");
    check_field_offset(lv, s3846c2f2, ABISELECT(24,16), "S3846C2.s3846c2f2");
    test_class_info(&lv, &cd_S3846C2);
    dp->~S3846C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3846C2(Test_S3846C2, "S3846C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3846C2C1Ev();
extern void _ZN7S3846C2D1Ev();
Name_Map name_map_S3846C2[] = {
  NSPAIR(_ZN7S3846C2C1Ev),
  NSPAIR(_ZN7S3846C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3846C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3846C2[];
extern void _ZN7S3846C2D1Ev();
extern void _ZN7S3846C2D0Ev();
extern void _ZN7S3846C22v3Ev();
extern void _ZN7S3846C22v4Ev();
static  VTBL_ENTRY vtc_S3846C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3846C2[0]),
  (VTBL_ENTRY)&_ZN7S3846C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3846C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3846C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3846C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3846C2[];
extern  VTBL_ENTRY _ZTV7S3846C2[];
Class_Descriptor cd_S3846C2 = {  "S3846C2", // class name
  bases_S3846C2, 1,
  &(vtc_S3846C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3846C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3846C2),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  S3846C1  : S3846C2 {
  ::S19490C10_nt s3846c1f0;
  int s3846c1f1;
  virtual  ~S3846C1(); // _ZN7S3846C1D1Ev
  virtual void  v1(); // _ZN7S3846C12v1Ev
  virtual void  v2(); // _ZN7S3846C12v2Ev
  S3846C1(); // tgen
};
//SIG(1 S3846C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp} Fi}


 S3846C1 ::~S3846C1(){ note_dtor("S3846C1", this);}
void  S3846C1 ::v1(){vfunc_called(this, "_ZN7S3846C12v1Ev");}
void  S3846C1 ::v2(){vfunc_called(this, "_ZN7S3846C12v2Ev");}
S3846C1 ::S3846C1(){ note_ctor("S3846C1", this);} // tgen

static void Test_S3846C1()
{
  extern Class_Descriptor cd_S3846C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3846C1, buf);
    S3846C1 *dp, &lv = *(dp=new (buf) S3846C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3846C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3846C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3846C2*), 0, "S3846C1");
    check_base_class_offset(lv, (S3846C2*), 0, "S3846C1");
    check_field_offset(lv, s3846c1f0, ABISELECT(32,20), "S3846C1.s3846c1f0");
    check_field_offset(lv, s3846c1f1, ABISELECT(40,24), "S3846C1.s3846c1f1");
    test_class_info(&lv, &cd_S3846C1);
    dp->~S3846C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3846C1(Test_S3846C1, "S3846C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3846C1C1Ev();
extern void _ZN7S3846C1D1Ev();
Name_Map name_map_S3846C1[] = {
  NSPAIR(_ZN7S3846C1C1Ev),
  NSPAIR(_ZN7S3846C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3846C2;
extern VTBL_ENTRY _ZTI7S3846C2[];
extern  VTBL_ENTRY _ZTV7S3846C2[];
static Base_Class bases_S3846C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3846C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3846C1[];
extern void _ZN7S3846C1D1Ev();
extern void _ZN7S3846C1D0Ev();
extern void _ZN7S3846C22v3Ev();
extern void _ZN7S3846C22v4Ev();
extern void _ZN7S3846C12v1Ev();
extern void _ZN7S3846C12v2Ev();
static  VTBL_ENTRY vtc_S3846C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3846C1[0]),
  (VTBL_ENTRY)&_ZN7S3846C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3846C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3846C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3846C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3846C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3846C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3846C1[];
extern  VTBL_ENTRY _ZTV7S3846C1[];
Class_Descriptor cd_S3846C1 = {  "S3846C1", // class name
  bases_S3846C1, 2,
  &(vtc_S3846C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3846C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3846C1),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  S3852C2  : S2242C7_nt {
  char s3852c2f0;
  void *s3852c2f1;
  int s3852c2f2;
  virtual  ~S3852C2(); // _ZN7S3852C2D1Ev
  virtual void  v3(); // _ZN7S3852C22v3Ev
  virtual void  v4(); // _ZN7S3852C22v4Ev
  S3852C2(); // tgen
};
//SIG(-1 S3852C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3852C2 ::~S3852C2(){ note_dtor("S3852C2", this);}
void  S3852C2 ::v3(){vfunc_called(this, "_ZN7S3852C22v3Ev");}
void  S3852C2 ::v4(){vfunc_called(this, "_ZN7S3852C22v4Ev");}
S3852C2 ::S3852C2(){ note_ctor("S3852C2", this);} // tgen

static void Test_S3852C2()
{
  extern Class_Descriptor cd_S3852C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3852C2, buf);
    S3852C2 *dp, &lv = *(dp=new (buf) S3852C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3852C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3852C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3852C2");
    check_field_offset(lv, s3852c2f0, ABISELECT(12,8), "S3852C2.s3852c2f0");
    check_field_offset(lv, s3852c2f1, ABISELECT(16,12), "S3852C2.s3852c2f1");
    check_field_offset(lv, s3852c2f2, ABISELECT(24,16), "S3852C2.s3852c2f2");
    test_class_info(&lv, &cd_S3852C2);
    dp->~S3852C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3852C2(Test_S3852C2, "S3852C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3852C2C1Ev();
extern void _ZN7S3852C2D1Ev();
Name_Map name_map_S3852C2[] = {
  NSPAIR(_ZN7S3852C2C1Ev),
  NSPAIR(_ZN7S3852C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3852C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3852C2[];
extern void _ZN7S3852C2D1Ev();
extern void _ZN7S3852C2D0Ev();
extern void _ZN7S3852C22v3Ev();
extern void _ZN7S3852C22v4Ev();
static  VTBL_ENTRY vtc_S3852C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3852C2[0]),
  (VTBL_ENTRY)&_ZN7S3852C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3852C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3852C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3852C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3852C2[];
extern  VTBL_ENTRY _ZTV7S3852C2[];
Class_Descriptor cd_S3852C2 = {  "S3852C2", // class name
  bases_S3852C2, 1,
  &(vtc_S3852C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3852C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3852C2),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  S3852C1  : S3852C2 {
  ::S19490C10_nt s3852c1f0;
  virtual  ~S3852C1(); // _ZN7S3852C1D1Ev
  virtual void  v1(); // _ZN7S3852C12v1Ev
  virtual void  v2(); // _ZN7S3852C12v2Ev
  S3852C1(); // tgen
};
//SIG(1 S3852C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 FC4{ m Fp}}


 S3852C1 ::~S3852C1(){ note_dtor("S3852C1", this);}
void  S3852C1 ::v1(){vfunc_called(this, "_ZN7S3852C12v1Ev");}
void  S3852C1 ::v2(){vfunc_called(this, "_ZN7S3852C12v2Ev");}
S3852C1 ::S3852C1(){ note_ctor("S3852C1", this);} // tgen

static void Test_S3852C1()
{
  extern Class_Descriptor cd_S3852C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S3852C1, buf);
    S3852C1 *dp, &lv = *(dp=new (buf) S3852C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3852C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3852C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3852C2*), 0, "S3852C1");
    check_base_class_offset(lv, (S3852C2*), 0, "S3852C1");
    check_field_offset(lv, s3852c1f0, ABISELECT(32,20), "S3852C1.s3852c1f0");
    test_class_info(&lv, &cd_S3852C1);
    dp->~S3852C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3852C1(Test_S3852C1, "S3852C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S3852C1C1Ev();
extern void _ZN7S3852C1D1Ev();
Name_Map name_map_S3852C1[] = {
  NSPAIR(_ZN7S3852C1C1Ev),
  NSPAIR(_ZN7S3852C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3852C2;
extern VTBL_ENTRY _ZTI7S3852C2[];
extern  VTBL_ENTRY _ZTV7S3852C2[];
static Base_Class bases_S3852C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3852C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3852C1[];
extern void _ZN7S3852C1D1Ev();
extern void _ZN7S3852C1D0Ev();
extern void _ZN7S3852C22v3Ev();
extern void _ZN7S3852C22v4Ev();
extern void _ZN7S3852C12v1Ev();
extern void _ZN7S3852C12v2Ev();
static  VTBL_ENTRY vtc_S3852C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3852C1[0]),
  (VTBL_ENTRY)&_ZN7S3852C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3852C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3852C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3852C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3852C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3852C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3852C1[];
extern  VTBL_ENTRY _ZTV7S3852C1[];
Class_Descriptor cd_S3852C1 = {  "S3852C1", // class name
  bases_S3852C1, 2,
  &(vtc_S3852C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3852C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3852C1),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  S6096C7  : S19490C10_nt , S19490C18 , S19490C12 {
};
//SIG(-1 S6096C7) C1{ BC2{ m Fp} BC3{ m} BC4{ m}}



static void Test_S6096C7()
{
  extern Class_Descriptor cd_S6096C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6096C7, buf);
    S6096C7 &lv = *(new (buf) S6096C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6096C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6096C7)");
    check_base_class_offset(lv, (S19490C10_nt*), 0, "S6096C7");
    check_base_class_offset(lv, (S19490C18*), 0, "S6096C7");
    check_base_class_offset(lv, (S19490C12*), 0, "S6096C7");
    test_class_info(&lv, &cd_S6096C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6096C7(Test_S6096C7, "S6096C7", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
static Base_Class bases_S6096C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6096C7[];
Class_Descriptor cd_S6096C7 = {  "S6096C7", // class name
  bases_S6096C7, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6096C7),ABISELECT(72,40), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6096C4  : S19490C18 , virtual S19490C12 , S6096C7 {
  ~S6096C4(); // tgen
  S6096C4(); // tgen
};
//SIG(-1 S6096C4) C1{ BC2{ m} VBC3{ m} BC4{ BC5{ m Fp} BC2 BC3}}


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

static void Test_S6096C4()
{
  extern Class_Descriptor cd_S6096C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6096C4, buf);
    S6096C4 *dp, &lv = *(dp=new (buf) S6096C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6096C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6096C4)");
    /*is_ambiguous_... S6096C4::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*), 0, "S6096C4");
    /*is_ambiguous_... S6096C4::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*), 0, "S6096C4");
    check_base_class_offset(lv, (S19490C10_nt*)(S6096C7*), ABISELECT(8,4), "S6096C4");
    check_base_class_offset(lv, (S19490C18*)(S6096C7*), ABISELECT(8,4), "S6096C4");
    check_base_class_offset(lv, (S19490C12*)(S6096C7*), ABISELECT(8,4), "S6096C4");
    check_base_class_offset(lv, (S6096C7*), ABISELECT(8,4), "S6096C4");
    test_class_info(&lv, &cd_S6096C4);
    dp->~S6096C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6096C4(Test_S6096C4, "S6096C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6096C4C1Ev();
extern void _ZN7S6096C4D1Ev();
Name_Map name_map_S6096C4[] = {
  NSPAIR(_ZN7S6096C4C1Ev),
  NSPAIR(_ZN7S6096C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6096C7;
extern VTBL_ENTRY _ZTI7S6096C7[];
static Base_Class bases_S6096C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6096C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6096C4[];
static  VTBL_ENTRY vtc_S6096C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6096C4[0]),
};
extern VTBL_ENTRY _ZTV7S6096C4[];
static  VTT_ENTRY vtt_S6096C4[] = {
  {&(_ZTV7S6096C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6096C4[];
extern  VTBL_ENTRY _ZTV7S6096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6096C4[];
Class_Descriptor cd_S6096C4 = {  "S6096C4", // class name
  bases_S6096C4, 6,
  &(vtc_S6096C4[0]), // expected_vtbl_contents
  &(vtt_S6096C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6096C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6096C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6096C4),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  S6096C3  : S6096C4 {
  virtual  ~S6096C3(); // _ZN7S6096C3D2Ev
  S6096C3(); // tgen
};
//SIG(-1 S6096C3) C1{ BC2{ BC3{ m} VBC4{ m} BC5{ BC6{ m Fp} BC3 BC4}} vd}


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

static void Test_S6096C3()
{
  extern Class_Descriptor cd_S6096C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6096C3, buf);
    S6096C3 *dp, &lv = *(dp=new (buf) S6096C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6096C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6096C3)");
    /*is_ambiguous_... S6096C4::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6096C4*), 0, "S6096C3");
    /*is_ambiguous_... S6096C4::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6096C4*), 0, "S6096C3");
    check_base_class_offset(lv, (S19490C10_nt*)(S6096C7*)(S6096C4*), ABISELECT(8,4), "S6096C3");
    check_base_class_offset(lv, (S19490C18*)(S6096C7*)(S6096C4*), ABISELECT(8,4), "S6096C3");
    check_base_class_offset(lv, (S19490C12*)(S6096C7*)(S6096C4*), ABISELECT(8,4), "S6096C3");
    check_base_class_offset(lv, (S6096C7*)(S6096C4*), ABISELECT(8,4), "S6096C3");
    check_base_class_offset(lv, (S6096C4*), 0, "S6096C3");
    test_class_info(&lv, &cd_S6096C3);
    dp->~S6096C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6096C3(Test_S6096C3, "S6096C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6096C3C1Ev();
extern void _ZN7S6096C3D2Ev();
Name_Map name_map_S6096C3[] = {
  NSPAIR(_ZN7S6096C3C1Ev),
  NSPAIR(_ZN7S6096C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6096C7;
extern VTBL_ENTRY _ZTI7S6096C7[];
extern Class_Descriptor cd_S6096C4;
extern VTBL_ENTRY _ZTI7S6096C4[];
extern  VTBL_ENTRY _ZTV7S6096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6096C4[];
static Base_Class bases_S6096C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6096C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6096C4,    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 _ZTI7S6096C3[];
extern void _ZN7S6096C3D1Ev();
extern void _ZN7S6096C3D0Ev();
static  VTBL_ENTRY vtc_S6096C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6096C3[0]),
  (VTBL_ENTRY)&_ZN7S6096C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6096C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S6096C3[];
static  VTBL_ENTRY _tg__ZTV7S6096C4__7S6096C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6096C4[0]),
};
static  VTT_ENTRY vtt_S6096C3[] = {
  {&(_ZTV7S6096C3[3]),  3,5},
  {&(_tg__ZTV7S6096C4__7S6096C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6096C3[];
extern  VTBL_ENTRY _ZTV7S6096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6096C3[];
Class_Descriptor cd_S6096C3 = {  "S6096C3", // class name
  bases_S6096C3, 7,
  &(vtc_S6096C3[0]), // expected_vtbl_contents
  &(vtt_S6096C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6096C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6096C3),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6096C3),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  S6096C1  : S19490C26 , S6096C3 {
  ~S6096C1(); // tgen
  S6096C1(); // tgen
};
//SIG(1 S6096C1) C1{ BC2{ m} BC3{ BC4{ BC5{ m} VBC6{ m} BC7{ BC8{ m Fp} BC5 BC6}} vd}}


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

static void Test_S6096C1()
{
  extern Class_Descriptor cd_S6096C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6096C1, buf);
    S6096C1 *dp, &lv = *(dp=new (buf) S6096C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6096C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6096C1)");
    check_base_class_offset(lv, (S19490C26*), 0, "S6096C1");
    /*is_ambiguous_... S6096C4::S19490C18 */ AMB_check_base_class_offset(lv, (S19490C18*)(S6096C4*)(S6096C3*), 0, "S6096C1");
    /*is_ambiguous_... S6096C4::S19490C12 */ AMB_check_base_class_offset(lv, (S19490C12*)(S6096C4*)(S6096C3*), 0, "S6096C1");
    check_base_class_offset(lv, (S19490C10_nt*)(S6096C7*)(S6096C4*)(S6096C3*), ABISELECT(8,4), "S6096C1");
    check_base_class_offset(lv, (S19490C18*)(S6096C7*)(S6096C4*)(S6096C3*), ABISELECT(8,4), "S6096C1");
    check_base_class_offset(lv, (S19490C12*)(S6096C7*)(S6096C4*)(S6096C3*), ABISELECT(8,4), "S6096C1");
    check_base_class_offset(lv, (S6096C7*)(S6096C4*)(S6096C3*), ABISELECT(8,4), "S6096C1");
    check_base_class_offset(lv, (S6096C4*)(S6096C3*), 0, "S6096C1");
    check_base_class_offset(lv, (S6096C3*), 0, "S6096C1");
    test_class_info(&lv, &cd_S6096C1);
    dp->~S6096C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6096C1(Test_S6096C1, "S6096C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6096C1C1Ev();
extern void _ZN7S6096C1D1Ev();
Name_Map name_map_S6096C1[] = {
  NSPAIR(_ZN7S6096C1C1Ev),
  NSPAIR(_ZN7S6096C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S19490C10_nt;
extern VTBL_ENTRY _ZTI12S19490C10_nt[];
extern Class_Descriptor cd_S19490C18;
extern VTBL_ENTRY _ZTI9S19490C18[];
extern Class_Descriptor cd_S19490C12;
extern VTBL_ENTRY _ZTI9S19490C12[];
extern Class_Descriptor cd_S6096C7;
extern VTBL_ENTRY _ZTI7S6096C7[];
extern Class_Descriptor cd_S6096C4;
extern VTBL_ENTRY _ZTI7S6096C4[];
extern  VTBL_ENTRY _ZTV7S6096C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6096C4[];
extern Class_Descriptor cd_S6096C3;
extern VTBL_ENTRY _ZTI7S6096C3[];
extern  VTBL_ENTRY _ZTV7S6096C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6096C3[];
static Base_Class bases_S6096C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19490C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19490C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S19490C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19490C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6096C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6096C4,    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
    1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6096C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6096C1[];
extern void _ZN7S6096C1D1Ev();
extern void _ZN7S6096C1D0Ev();
static  VTBL_ENTRY vtc_S6096C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6096C1[0]),
  (VTBL_ENTRY)&_ZN7S6096C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6096C1D0Ev,
};
extern VTBL_ENTRY _ZTV7S6096C1[];
extern void _ZN7S6096C3D1Ev();
extern void _ZN7S6096C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6096C3__7S6096C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6096C3[0]),
  (VTBL_ENTRY)&_ZN7S6096C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6096C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6096C47S6096C3__7S6096C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6096C4[0]),
};
static  VTT_ENTRY vtt_S6096C1[] = {
  {&(_ZTV7S6096C1[3]),  3,5},
  {&(_tg__ZTV7S6096C3__7S6096C1[3]),  3,5},
  {&(_tg__ZTV7S6096C47S6096C3__7S6096C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6096C1[];
extern  VTBL_ENTRY _ZTV7S6096C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6096C1[];
Class_Descriptor cd_S6096C1 = {  "S6096C1", // class name
  bases_S6096C1, 9,
  &(vtc_S6096C1[0]), // expected_vtbl_contents
  &(vtt_S6096C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6096C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6096C1),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6096C1),3, //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  S3853C2  : S2242C7_nt {
  char s3853c2f0;
  void *s3853c2f1;
  int s3853c2f2;
  virtual  ~S3853C2(); // _ZN7S3853C2D1Ev
  virtual void  v3(); // _ZN7S3853C22v3Ev
  virtual void  v4(); // _ZN7S3853C22v4Ev
  S3853C2(); // tgen
};
//SIG(-1 S3853C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3853C2 ::~S3853C2(){ note_dtor("S3853C2", this);}
void  S3853C2 ::v3(){vfunc_called(this, "_ZN7S3853C22v3Ev");}
void  S3853C2 ::v4(){vfunc_called(this, "_ZN7S3853C22v4Ev");}
S3853C2 ::S3853C2(){ note_ctor("S3853C2", this);} // tgen

static void Test_S3853C2()
{
  extern Class_Descriptor cd_S3853C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3853C2, buf);
    S3853C2 *dp, &lv = *(dp=new (buf) S3853C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3853C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3853C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3853C2");
    check_field_offset(lv, s3853c2f0, ABISELECT(12,8), "S3853C2.s3853c2f0");
    check_field_offset(lv, s3853c2f1, ABISELECT(16,12), "S3853C2.s3853c2f1");
    check_field_offset(lv, s3853c2f2, ABISELECT(24,16), "S3853C2.s3853c2f2");
    test_class_info(&lv, &cd_S3853C2);
    dp->~S3853C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3853C2(Test_S3853C2, "S3853C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3853C2C1Ev();
extern void _ZN7S3853C2D1Ev();
Name_Map name_map_S3853C2[] = {
  NSPAIR(_ZN7S3853C2C1Ev),
  NSPAIR(_ZN7S3853C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3853C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3853C2[];
extern void _ZN7S3853C2D1Ev();
extern void _ZN7S3853C2D0Ev();
extern void _ZN7S3853C22v3Ev();
extern void _ZN7S3853C22v4Ev();
static  VTBL_ENTRY vtc_S3853C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3853C2[0]),
  (VTBL_ENTRY)&_ZN7S3853C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3853C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3853C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3853C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3853C2[];
extern  VTBL_ENTRY _ZTV7S3853C2[];
Class_Descriptor cd_S3853C2 = {  "S3853C2", // class name
  bases_S3853C2, 1,
  &(vtc_S3853C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3853C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3853C2),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  S3853C1  : S3853C2 {
  int s3853c1f0;
  void *s3853c1f1;
  int s3853c1f2;
  virtual  ~S3853C1(); // _ZN7S3853C1D1Ev
  virtual void  v1(); // _ZN7S3853C12v1Ev
  virtual void  v2(); // _ZN7S3853C12v2Ev
  S3853C1(); // tgen
};
//SIG(1 S3853C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 Fi Fp Fi}


 S3853C1 ::~S3853C1(){ note_dtor("S3853C1", this);}
void  S3853C1 ::v1(){vfunc_called(this, "_ZN7S3853C12v1Ev");}
void  S3853C1 ::v2(){vfunc_called(this, "_ZN7S3853C12v2Ev");}
S3853C1 ::S3853C1(){ note_ctor("S3853C1", this);} // tgen

static void Test_S3853C1()
{
  extern Class_Descriptor cd_S3853C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S3853C1, buf);
    S3853C1 *dp, &lv = *(dp=new (buf) S3853C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S3853C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3853C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3853C2*), 0, "S3853C1");
    check_base_class_offset(lv, (S3853C2*), 0, "S3853C1");
    check_field_offset(lv, s3853c1f0, ABISELECT(28,20), "S3853C1.s3853c1f0");
    check_field_offset(lv, s3853c1f1, ABISELECT(32,24), "S3853C1.s3853c1f1");
    check_field_offset(lv, s3853c1f2, ABISELECT(40,28), "S3853C1.s3853c1f2");
    test_class_info(&lv, &cd_S3853C1);
    dp->~S3853C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3853C1(Test_S3853C1, "S3853C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S3853C1C1Ev();
extern void _ZN7S3853C1D1Ev();
Name_Map name_map_S3853C1[] = {
  NSPAIR(_ZN7S3853C1C1Ev),
  NSPAIR(_ZN7S3853C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3853C2;
extern VTBL_ENTRY _ZTI7S3853C2[];
extern  VTBL_ENTRY _ZTV7S3853C2[];
static Base_Class bases_S3853C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3853C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3853C1[];
extern void _ZN7S3853C1D1Ev();
extern void _ZN7S3853C1D0Ev();
extern void _ZN7S3853C22v3Ev();
extern void _ZN7S3853C22v4Ev();
extern void _ZN7S3853C12v1Ev();
extern void _ZN7S3853C12v2Ev();
static  VTBL_ENTRY vtc_S3853C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3853C1[0]),
  (VTBL_ENTRY)&_ZN7S3853C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3853C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3853C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3853C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3853C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3853C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3853C1[];
extern  VTBL_ENTRY _ZTV7S3853C1[];
Class_Descriptor cd_S3853C1 = {  "S3853C1", // class name
  bases_S3853C1, 2,
  &(vtc_S3853C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S3853C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3853C1),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  S20847C3  {
  virtual void  v3(); // _ZN8S20847C32v3Ev
  ~S20847C3(); // tgen
  S20847C3(); // tgen
};
//SIG(-1 S20847C3) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20847C3C1Ev();
extern void _ZN8S20847C3D1Ev();
Name_Map name_map_S20847C3[] = {
  NSPAIR(_ZN8S20847C3C1Ev),
  NSPAIR(_ZN8S20847C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20847C3[];
extern void _ZN8S20847C32v3Ev();
static  VTBL_ENTRY vtc_S20847C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20847C3[0]),
  (VTBL_ENTRY)&_ZN8S20847C32v3Ev,
};
extern VTBL_ENTRY _ZTI8S20847C3[];
extern  VTBL_ENTRY _ZTV8S20847C3[];
Class_Descriptor cd_S20847C3 = {  "S20847C3", // class name
  0,0,//no base classes
  &(vtc_S20847C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20847C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20847C3),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  S20847C2  : virtual S20847C3 {
  char s20847c2f0;
  virtual void  v4(); // _ZN8S20847C22v4Ev
  virtual void  v5(); // _ZN8S20847C22v5Ev
  virtual void  v6(); // _ZN8S20847C22v6Ev
  virtual void  v7(); // _ZN8S20847C22v7Ev
  virtual void  v8(); // _ZN8S20847C22v8Ev
  virtual void  v9(); // _ZN8S20847C22v9Ev
  ~S20847C2(); // tgen
  S20847C2(); // tgen
};
//SIG(-1 S20847C2) C1{ VBC2{ v7} v1 v2 v3 v4 v5 v6 Fc}


void  S20847C2 ::v4(){vfunc_called(this, "_ZN8S20847C22v4Ev");}
void  S20847C2 ::v5(){vfunc_called(this, "_ZN8S20847C22v5Ev");}
void  S20847C2 ::v6(){vfunc_called(this, "_ZN8S20847C22v6Ev");}
void  S20847C2 ::v7(){vfunc_called(this, "_ZN8S20847C22v7Ev");}
void  S20847C2 ::v8(){vfunc_called(this, "_ZN8S20847C22v8Ev");}
void  S20847C2 ::v9(){vfunc_called(this, "_ZN8S20847C22v9Ev");}
S20847C2 ::~S20847C2(){ note_dtor("S20847C2", this);} // tgen
S20847C2 ::S20847C2(){ note_ctor("S20847C2", this);} // tgen

static void Test_S20847C2()
{
  extern Class_Descriptor cd_S20847C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20847C2, buf);
    S20847C2 *dp, &lv = *(dp=new (buf) S20847C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20847C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20847C2)");
    check_base_class_offset(lv, (S20847C3*), 0, "S20847C2");
    check_field_offset(lv, s20847c2f0, ABISELECT(8,4), "S20847C2.s20847c2f0");
    test_class_info(&lv, &cd_S20847C2);
    dp->~S20847C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20847C2(Test_S20847C2, "S20847C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20847C2C1Ev();
extern void _ZN8S20847C2D1Ev();
Name_Map name_map_S20847C2[] = {
  NSPAIR(_ZN8S20847C2C1Ev),
  NSPAIR(_ZN8S20847C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20847C3;
extern VTBL_ENTRY _ZTI8S20847C3[];
extern  VTBL_ENTRY _ZTV8S20847C3[];
static Base_Class bases_S20847C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20847C3,    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 _ZTI8S20847C2[];
extern void _ZN8S20847C32v3Ev();
extern void _ZN8S20847C22v4Ev();
extern void _ZN8S20847C22v5Ev();
extern void _ZN8S20847C22v6Ev();
extern void _ZN8S20847C22v7Ev();
extern void _ZN8S20847C22v8Ev();
extern void _ZN8S20847C22v9Ev();
static  VTBL_ENTRY vtc_S20847C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20847C2[0]),
  (VTBL_ENTRY)&_ZN8S20847C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S20847C2[];
static  VTT_ENTRY vtt_S20847C2[] = {
  {&(_ZTV8S20847C2[4]),  4,11},
  {&(_ZTV8S20847C2[4]),  4,11},
};
extern VTBL_ENTRY _ZTI8S20847C2[];
extern  VTBL_ENTRY _ZTV8S20847C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20847C2[];
Class_Descriptor cd_S20847C2 = {  "S20847C2", // class name
  bases_S20847C2, 1,
  &(vtc_S20847C2[0]), // expected_vtbl_contents
  &(vtt_S20847C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20847C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20847C2),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20847C2),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  S20847C1  : virtual S20847C2 {
  long double s20847c1f0;
  int s20847c1f1;
  void *s20847c1f2;
  virtual  ~S20847C1(); // _ZN8S20847C1D2Ev
  virtual void  v1(); // _ZN8S20847C12v1Ev
  virtual void  v2(); // _ZN8S20847C12v2Ev
  S20847C1(); // tgen
};
//SIG(1 S20847C1) C1{ VBC2{ VBC3{ v3} v4 v5 v6 v7 v8 v9 Fc} vd v1 v2 FD Fi Fp}


 S20847C1 ::~S20847C1(){ note_dtor("S20847C1", this);}
void  S20847C1 ::v1(){vfunc_called(this, "_ZN8S20847C12v1Ev");}
void  S20847C1 ::v2(){vfunc_called(this, "_ZN8S20847C12v2Ev");}
S20847C1 ::S20847C1(){ note_ctor("S20847C1", this);} // tgen

static void Test_S20847C1()
{
  extern Class_Descriptor cd_S20847C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20847C1, buf);
    S20847C1 *dp, &lv = *(dp=new (buf) S20847C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20847C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20847C1)");
    check_base_class_offset(lv, (S20847C3*)(S20847C2*), 0, "S20847C1");
    check_base_class_offset(lv, (S20847C2*), ABISELECT(48,24), "S20847C1");
    check_field_offset(lv, s20847c1f0, ABISELECT(16,4), "S20847C1.s20847c1f0");
    check_field_offset(lv, s20847c1f1, ABISELECT(32,16), "S20847C1.s20847c1f1");
    check_field_offset(lv, s20847c1f2, ABISELECT(40,20), "S20847C1.s20847c1f2");
    test_class_info(&lv, &cd_S20847C1);
    dp->~S20847C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20847C1(Test_S20847C1, "S20847C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20847C1C1Ev();
extern void _ZN8S20847C1D2Ev();
Name_Map name_map_S20847C1[] = {
  NSPAIR(_ZN8S20847C1C1Ev),
  NSPAIR(_ZN8S20847C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20847C3;
extern VTBL_ENTRY _ZTI8S20847C3[];
extern  VTBL_ENTRY _ZTV8S20847C3[];
extern Class_Descriptor cd_S20847C2;
extern VTBL_ENTRY _ZTI8S20847C2[];
extern  VTBL_ENTRY _ZTV8S20847C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20847C2[];
static Base_Class bases_S20847C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20847C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20847C2,    ABISELECT(48,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20847C1[];
extern void _ZN8S20847C32v3Ev();
extern void _ZN8S20847C1D1Ev();
extern void _ZN8S20847C1D0Ev();
extern void _ZN8S20847C12v1Ev();
extern void _ZN8S20847C12v2Ev();
extern void _ZN8S20847C32v3Ev();
extern void _ZN8S20847C22v4Ev();
extern void _ZN8S20847C22v5Ev();
extern void _ZN8S20847C22v6Ev();
extern void _ZN8S20847C22v7Ev();
extern void _ZN8S20847C22v8Ev();
extern void _ZN8S20847C22v9Ev();
static  VTBL_ENTRY vtc_S20847C1[] = {
  0,
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20847C1[0]),
  (VTBL_ENTRY)&_ZN8S20847C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20847C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20847C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20847C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20847C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20847C1[0]),
  (VTBL_ENTRY)&_ZN8S20847C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S20847C1[];
extern void _ZN8S20847C32v3Ev();
extern void _ZN8S20847C22v4Ev();
extern void _ZN8S20847C22v5Ev();
extern void _ZN8S20847C22v6Ev();
extern void _ZN8S20847C22v7Ev();
extern void _ZN8S20847C22v8Ev();
extern void _ZN8S20847C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20847C2__8S20847C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20847C2[0]),
  (VTBL_ENTRY)&_ZN8S20847C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20847C22v9Ev,
};
extern void _ZN8S20847C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20847C3__8S20847C2__8S20847C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20847C2[0]),
  (VTBL_ENTRY)&_ZN8S20847C32v3Ev,
};
static  VTT_ENTRY vtt_S20847C1[] = {
  {&(_ZTV8S20847C1[5]),  5,27},
  {&(_ZTV8S20847C1[20]),  20,27},
  {&(_ZTV8S20847C1[5]),  5,27},
  {&(_tg__ZTV8S20847C2__8S20847C1[4]),  4,11},
  {&(_tg__ZTV8S20847C3__8S20847C2__8S20847C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20847C1[];
extern  VTBL_ENTRY _ZTV8S20847C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20847C1[];
Class_Descriptor cd_S20847C1 = {  "S20847C1", // class name
  bases_S20847C1, 2,
  &(vtc_S20847C1[0]), // expected_vtbl_contents
  &(vtt_S20847C1[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20847C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20847C1),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20847C1),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9451C2  {
  void *s9451c2f0[2];
  char s9451c2f1[128];
  void *s9451c2f2[2];
  virtual  ~S9451C2(); // _ZN7S9451C2D1Ev
  virtual void  v3(); // _ZN7S9451C22v3Ev
  virtual void  v4(); // _ZN7S9451C22v4Ev
  virtual void  v5(); // _ZN7S9451C22v5Ev
  virtual void  v6(); // _ZN7S9451C22v6Ev
  S9451C2(); // tgen
};
//SIG(-1 S9451C2) C1{ vd v1 v2 v3 v4 Fp[2] Fc[128] Fp[2]}


 S9451C2 ::~S9451C2(){ note_dtor("S9451C2", this);}
void  S9451C2 ::v3(){vfunc_called(this, "_ZN7S9451C22v3Ev");}
void  S9451C2 ::v4(){vfunc_called(this, "_ZN7S9451C22v4Ev");}
void  S9451C2 ::v5(){vfunc_called(this, "_ZN7S9451C22v5Ev");}
void  S9451C2 ::v6(){vfunc_called(this, "_ZN7S9451C22v6Ev");}
S9451C2 ::S9451C2(){ note_ctor("S9451C2", this);} // tgen

static void Test_S9451C2()
{
  extern Class_Descriptor cd_S9451C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9451C2, buf);
    S9451C2 *dp, &lv = *(dp=new (buf) S9451C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9451C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9451C2)");
    check_field_offset(lv, s9451c2f0, ABISELECT(8,4), "S9451C2.s9451c2f0");
    check_field_offset(lv, s9451c2f1, ABISELECT(24,12), "S9451C2.s9451c2f1");
    check_field_offset(lv, s9451c2f2, ABISELECT(152,140), "S9451C2.s9451c2f2");
    test_class_info(&lv, &cd_S9451C2);
    dp->~S9451C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9451C2(Test_S9451C2, "S9451C2", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9451C2C1Ev();
extern void _ZN7S9451C2D1Ev();
Name_Map name_map_S9451C2[] = {
  NSPAIR(_ZN7S9451C2C1Ev),
  NSPAIR(_ZN7S9451C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9451C2[];
extern void _ZN7S9451C2D1Ev();
extern void _ZN7S9451C2D0Ev();
extern void _ZN7S9451C22v3Ev();
extern void _ZN7S9451C22v4Ev();
extern void _ZN7S9451C22v5Ev();
extern void _ZN7S9451C22v6Ev();
static  VTBL_ENTRY vtc_S9451C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9451C2[0]),
  (VTBL_ENTRY)&_ZN7S9451C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9451C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9451C2[];
extern  VTBL_ENTRY _ZTV7S9451C2[];
Class_Descriptor cd_S9451C2 = {  "S9451C2", // class name
  0,0,//no base classes
  &(vtc_S9451C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9451C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9451C2),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  S9451C1  : S9451C2 {
  virtual  ~S9451C1(); // _ZN7S9451C1D1Ev
  virtual void  v1(); // _ZN7S9451C12v1Ev
  virtual void  v2(); // _ZN7S9451C12v2Ev
  S9451C1(); // tgen
};
//SIG(1 S9451C1) C1{ BC2{ vd v3 v4 v5 v6 Fp[2] Fc[128] Fp[2]} vd v1 v2}


 S9451C1 ::~S9451C1(){ note_dtor("S9451C1", this);}
void  S9451C1 ::v1(){vfunc_called(this, "_ZN7S9451C12v1Ev");}
void  S9451C1 ::v2(){vfunc_called(this, "_ZN7S9451C12v2Ev");}
S9451C1 ::S9451C1(){ note_ctor("S9451C1", this);} // tgen

static void Test_S9451C1()
{
  extern Class_Descriptor cd_S9451C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,38)];
    init_test(&cd_S9451C1, buf);
    S9451C1 *dp, &lv = *(dp=new (buf) S9451C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,148), "sizeof(S9451C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9451C1)");
    check_base_class_offset(lv, (S9451C2*), 0, "S9451C1");
    test_class_info(&lv, &cd_S9451C1);
    dp->~S9451C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9451C1(Test_S9451C1, "S9451C1", ABISELECT(168,148));

#else // __cplusplus

extern void _ZN7S9451C1C1Ev();
extern void _ZN7S9451C1D1Ev();
Name_Map name_map_S9451C1[] = {
  NSPAIR(_ZN7S9451C1C1Ev),
  NSPAIR(_ZN7S9451C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9451C2;
extern VTBL_ENTRY _ZTI7S9451C2[];
extern  VTBL_ENTRY _ZTV7S9451C2[];
static Base_Class bases_S9451C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9451C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9451C1[];
extern void _ZN7S9451C1D1Ev();
extern void _ZN7S9451C1D0Ev();
extern void _ZN7S9451C22v3Ev();
extern void _ZN7S9451C22v4Ev();
extern void _ZN7S9451C22v5Ev();
extern void _ZN7S9451C22v6Ev();
extern void _ZN7S9451C12v1Ev();
extern void _ZN7S9451C12v2Ev();
static  VTBL_ENTRY vtc_S9451C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9451C1[0]),
  (VTBL_ENTRY)&_ZN7S9451C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9451C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9451C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9451C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9451C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9451C1[];
extern  VTBL_ENTRY _ZTV7S9451C1[];
Class_Descriptor cd_S9451C1 = {  "S9451C1", // class name
  bases_S9451C1, 1,
  &(vtc_S9451C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,148), // object size
  NSPAIRA(_ZTI7S9451C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9451C1),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  S3854C2  : S2242C7_nt {
  char s3854c2f0;
  void *s3854c2f1;
  int s3854c2f2;
  virtual  ~S3854C2(); // _ZN7S3854C2D1Ev
  virtual void  v3(); // _ZN7S3854C22v3Ev
  virtual void  v4(); // _ZN7S3854C22v4Ev
  S3854C2(); // tgen
};
//SIG(-1 S3854C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3854C2 ::~S3854C2(){ note_dtor("S3854C2", this);}
void  S3854C2 ::v3(){vfunc_called(this, "_ZN7S3854C22v3Ev");}
void  S3854C2 ::v4(){vfunc_called(this, "_ZN7S3854C22v4Ev");}
S3854C2 ::S3854C2(){ note_ctor("S3854C2", this);} // tgen

static void Test_S3854C2()
{
  extern Class_Descriptor cd_S3854C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3854C2, buf);
    S3854C2 *dp, &lv = *(dp=new (buf) S3854C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3854C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3854C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3854C2");
    check_field_offset(lv, s3854c2f0, ABISELECT(12,8), "S3854C2.s3854c2f0");
    check_field_offset(lv, s3854c2f1, ABISELECT(16,12), "S3854C2.s3854c2f1");
    check_field_offset(lv, s3854c2f2, ABISELECT(24,16), "S3854C2.s3854c2f2");
    test_class_info(&lv, &cd_S3854C2);
    dp->~S3854C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3854C2(Test_S3854C2, "S3854C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3854C2C1Ev();
extern void _ZN7S3854C2D1Ev();
Name_Map name_map_S3854C2[] = {
  NSPAIR(_ZN7S3854C2C1Ev),
  NSPAIR(_ZN7S3854C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3854C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3854C2[];
extern void _ZN7S3854C2D1Ev();
extern void _ZN7S3854C2D0Ev();
extern void _ZN7S3854C22v3Ev();
extern void _ZN7S3854C22v4Ev();
static  VTBL_ENTRY vtc_S3854C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3854C2[0]),
  (VTBL_ENTRY)&_ZN7S3854C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3854C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3854C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3854C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3854C2[];
extern  VTBL_ENTRY _ZTV7S3854C2[];
Class_Descriptor cd_S3854C2 = {  "S3854C2", // class name
  bases_S3854C2, 1,
  &(vtc_S3854C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3854C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3854C2),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  S3854C1  : S3854C2 {
  int s3854c1f0;
  virtual  ~S3854C1(); // _ZN7S3854C1D1Ev
  virtual void  v1(); // _ZN7S3854C12v1Ev
  virtual void  v2(); // _ZN7S3854C12v2Ev
  S3854C1(); // tgen
};
//SIG(1 S3854C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2 Fi}


 S3854C1 ::~S3854C1(){ note_dtor("S3854C1", this);}
void  S3854C1 ::v1(){vfunc_called(this, "_ZN7S3854C12v1Ev");}
void  S3854C1 ::v2(){vfunc_called(this, "_ZN7S3854C12v2Ev");}
S3854C1 ::S3854C1(){ note_ctor("S3854C1", this);} // tgen

static void Test_S3854C1()
{
  extern Class_Descriptor cd_S3854C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3854C1, buf);
    S3854C1 *dp, &lv = *(dp=new (buf) S3854C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3854C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3854C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3854C2*), 0, "S3854C1");
    check_base_class_offset(lv, (S3854C2*), 0, "S3854C1");
    check_field_offset(lv, s3854c1f0, ABISELECT(28,20), "S3854C1.s3854c1f0");
    test_class_info(&lv, &cd_S3854C1);
    dp->~S3854C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3854C1(Test_S3854C1, "S3854C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3854C1C1Ev();
extern void _ZN7S3854C1D1Ev();
Name_Map name_map_S3854C1[] = {
  NSPAIR(_ZN7S3854C1C1Ev),
  NSPAIR(_ZN7S3854C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3854C2;
extern VTBL_ENTRY _ZTI7S3854C2[];
extern  VTBL_ENTRY _ZTV7S3854C2[];
static Base_Class bases_S3854C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3854C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3854C1[];
extern void _ZN7S3854C1D1Ev();
extern void _ZN7S3854C1D0Ev();
extern void _ZN7S3854C22v3Ev();
extern void _ZN7S3854C22v4Ev();
extern void _ZN7S3854C12v1Ev();
extern void _ZN7S3854C12v2Ev();
static  VTBL_ENTRY vtc_S3854C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3854C1[0]),
  (VTBL_ENTRY)&_ZN7S3854C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3854C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3854C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3854C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3854C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3854C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3854C1[];
extern  VTBL_ENTRY _ZTV7S3854C1[];
Class_Descriptor cd_S3854C1 = {  "S3854C1", // class name
  bases_S3854C1, 2,
  &(vtc_S3854C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3854C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3854C1),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  S10878C4_nt  {
  char s10878c4f0[20];
};
//SIG(-1 S10878C4_nt) C1{ Fc[20]}



//skip512 S10878C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10878C3_nt  {
  ::S10878C4_nt s10878c3f0;
  char s10878c3f1[16];
};
//SIG(-1 S10878C3_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S10878C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10878C2  {
  ::S10878C3_nt s10878c2f0;
  char s10878c2f1[132];
};
//SIG(1 S10878C2) C1{ FC2{ FC3{ Fc[20]} Fc[16]} Fc[132]}



static void Test_S10878C2()
{
  {
    init_simple_test("S10878C2");
    S10878C2 lv;
    check2(sizeof(lv), 168, "sizeof(S10878C2)");
    check2(__alignof__(lv), 1, "__alignof__(S10878C2)");
    check_field_offset(lv, s10878c2f0, 0, "S10878C2.s10878c2f0");
    check_field_offset(lv, s10878c2f1, 36, "S10878C2.s10878c2f1");
  }
}
static Arrange_To_Call_Me vS10878C2(Test_S10878C2, "S10878C2", 168);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10878C1  {
  char s10878c1f0[4];
  ::S10878C2 s10878c1f1[7];
};
//SIG(1 S10878C1) C1{ Fc[4] FC2{ FC3{ FC4{ Fc[20]} Fc[16]} Fc[132]}[7]}



static void Test_S10878C1()
{
  {
    init_simple_test("S10878C1");
    S10878C1 lv;
    check2(sizeof(lv), 1180, "sizeof(S10878C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10878C1)");
    check_field_offset(lv, s10878c1f0, 0, "S10878C1.s10878c1f0");
    check_field_offset(lv, s10878c1f1, 4, "S10878C1.s10878c1f1");
  }
}
static Arrange_To_Call_Me vS10878C1(Test_S10878C1, "S10878C1", 1180);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16206C1  {
  ::S16385C7 s16206c1f0;
  ::S16385C7 s16206c1f1;
  ::S16385C7 s16206c1f2;
  ::S16385C7 s16206c1f3;
  int s16206c1f4;
  ::S16385C7 s16206c1f5;
  ::S16385C7 s16206c1f6;
  void  mf16206c1(); // _ZN8S16206C19mf16206c1Ev
};
//SIG(1 S16206C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 Fi FC2 FC2}


void  S16206C1 ::mf16206c1(){}

static void Test_S16206C1()
{
  {
    init_simple_test("S16206C1");
    S16206C1 lv;
    check2(sizeof(lv), ABISELECT(104,76), "sizeof(S16206C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16206C1)");
    check_field_offset(lv, s16206c1f0, 0, "S16206C1.s16206c1f0");
    check_field_offset(lv, s16206c1f1, ABISELECT(16,12), "S16206C1.s16206c1f1");
    check_field_offset(lv, s16206c1f2, ABISELECT(32,24), "S16206C1.s16206c1f2");
    check_field_offset(lv, s16206c1f3, ABISELECT(48,36), "S16206C1.s16206c1f3");
    check_field_offset(lv, s16206c1f4, ABISELECT(64,48), "S16206C1.s16206c1f4");
    check_field_offset(lv, s16206c1f5, ABISELECT(72,52), "S16206C1.s16206c1f5");
    check_field_offset(lv, s16206c1f6, ABISELECT(88,64), "S16206C1.s16206c1f6");
  }
}
static Arrange_To_Call_Me vS16206C1(Test_S16206C1, "S16206C1", ABISELECT(104,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20001C2_nt  {
  int s20001c2f0;
  virtual void  v11(); // _ZN11S20001C2_nt3v11Ev
  ~S20001C2_nt(); // tgen
  S20001C2_nt(); // tgen
};
//SIG(-1 S20001C2_nt) C1{ v1 Fi}


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

//skip512 S20001C2_nt

#else // __cplusplus

extern void _ZN11S20001C2_ntC1Ev();
extern void _ZN11S20001C2_ntD1Ev();
Name_Map name_map_S20001C2_nt[] = {
  NSPAIR(_ZN11S20001C2_ntC1Ev),
  NSPAIR(_ZN11S20001C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20001C2_nt[];
extern void _ZN11S20001C2_nt3v11Ev();
static  VTBL_ENTRY vtc_S20001C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20001C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20001C2_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI11S20001C2_nt[];
VTBL_ENTRY *P__ZTI11S20001C2_nt = _ZTI11S20001C2_nt; 
extern  VTBL_ENTRY _ZTV11S20001C2_nt[];
Class_Descriptor cd_S20001C2_nt = {  "S20001C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20001C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20001C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20001C2_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  S20001C1  : virtual S20001C2_nt {
  virtual void  v1(); // _ZN8S20001C12v1Ev
  virtual void  v2(); // _ZN8S20001C12v2Ev
  virtual void  v3(); // _ZN8S20001C12v3Ev
  virtual void  v4(); // _ZN8S20001C12v4Ev
  virtual void  v5(); // _ZN8S20001C12v5Ev
  virtual void  v6(); // _ZN8S20001C12v6Ev
  virtual void  v7(); // _ZN8S20001C12v7Ev
  virtual void  v8(); // _ZN8S20001C12v8Ev
  virtual void  v9(); // _ZN8S20001C12v9Ev
  virtual void  v10(); // _ZN8S20001C13v10Ev
  ~S20001C1(); // tgen
  S20001C1(); // tgen
};
//SIG(1 S20001C1) C1{ VBC2{ v11 Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


void  S20001C1 ::v1(){vfunc_called(this, "_ZN8S20001C12v1Ev");}
void  S20001C1 ::v2(){vfunc_called(this, "_ZN8S20001C12v2Ev");}
void  S20001C1 ::v3(){vfunc_called(this, "_ZN8S20001C12v3Ev");}
void  S20001C1 ::v4(){vfunc_called(this, "_ZN8S20001C12v4Ev");}
void  S20001C1 ::v5(){vfunc_called(this, "_ZN8S20001C12v5Ev");}
void  S20001C1 ::v6(){vfunc_called(this, "_ZN8S20001C12v6Ev");}
void  S20001C1 ::v7(){vfunc_called(this, "_ZN8S20001C12v7Ev");}
void  S20001C1 ::v8(){vfunc_called(this, "_ZN8S20001C12v8Ev");}
void  S20001C1 ::v9(){vfunc_called(this, "_ZN8S20001C12v9Ev");}
void  S20001C1 ::v10(){vfunc_called(this, "_ZN8S20001C13v10Ev");}
S20001C1 ::~S20001C1(){ note_dtor("S20001C1", this);} // tgen
S20001C1 ::S20001C1(){ note_ctor("S20001C1", this);} // tgen

static void Test_S20001C1()
{
  extern Class_Descriptor cd_S20001C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20001C1, buf);
    S20001C1 *dp, &lv = *(dp=new (buf) S20001C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20001C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20001C1)");
    check_base_class_offset(lv, (S20001C2_nt*), ABISELECT(8,4), "S20001C1");
    test_class_info(&lv, &cd_S20001C1);
    dp->~S20001C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20001C1(Test_S20001C1, "S20001C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20001C1C1Ev();
extern void _ZN8S20001C1D1Ev();
Name_Map name_map_S20001C1[] = {
  NSPAIR(_ZN8S20001C1C1Ev),
  NSPAIR(_ZN8S20001C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20001C2_nt;
extern VTBL_ENTRY _ZTI11S20001C2_nt[];
extern  VTBL_ENTRY _ZTV11S20001C2_nt[];
static Base_Class bases_S20001C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20001C2_nt,    ABISELECT(8,4), //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},
  {0}};
extern VTBL_ENTRY _ZTI8S20001C1[];
extern void _ZN8S20001C12v1Ev();
extern void _ZN8S20001C12v2Ev();
extern void _ZN8S20001C12v3Ev();
extern void _ZN8S20001C12v4Ev();
extern void _ZN8S20001C12v5Ev();
extern void _ZN8S20001C12v6Ev();
extern void _ZN8S20001C12v7Ev();
extern void _ZN8S20001C12v8Ev();
extern void _ZN8S20001C12v9Ev();
extern void _ZN8S20001C13v10Ev();
extern void _ZN11S20001C2_nt3v11Ev();
static  VTBL_ENTRY vtc_S20001C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20001C1[0]),
  (VTBL_ENTRY)&_ZN8S20001C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v7Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v8Ev,
  (VTBL_ENTRY)&_ZN8S20001C12v9Ev,
  (VTBL_ENTRY)&_ZN8S20001C13v10Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20001C1[0]),
  (VTBL_ENTRY)&_ZN11S20001C2_nt3v11Ev,
};
extern VTBL_ENTRY _ZTV8S20001C1[];
static  VTT_ENTRY vtt_S20001C1[] = {
  {&(_ZTV8S20001C1[3]),  3,17},
  {&(_ZTV8S20001C1[16]),  16,17},
};
extern VTBL_ENTRY _ZTI8S20001C1[];
extern  VTBL_ENTRY _ZTV8S20001C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20001C1[];
Class_Descriptor cd_S20001C1 = {  "S20001C1", // class name
  bases_S20001C1, 1,
  &(vtc_S20001C1[0]), // expected_vtbl_contents
  &(vtt_S20001C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20001C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20001C1),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20001C1),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  S3855C2  : S2242C7_nt {
  char s3855c2f0;
  void *s3855c2f1;
  int s3855c2f2;
  virtual  ~S3855C2(); // _ZN7S3855C2D1Ev
  virtual void  v3(); // _ZN7S3855C22v3Ev
  virtual void  v4(); // _ZN7S3855C22v4Ev
  S3855C2(); // tgen
};
//SIG(-1 S3855C2) C1{ BC2{ vd m Fi} vd v1 v2 Fc Fp Fi}


 S3855C2 ::~S3855C2(){ note_dtor("S3855C2", this);}
void  S3855C2 ::v3(){vfunc_called(this, "_ZN7S3855C22v3Ev");}
void  S3855C2 ::v4(){vfunc_called(this, "_ZN7S3855C22v4Ev");}
S3855C2 ::S3855C2(){ note_ctor("S3855C2", this);} // tgen

static void Test_S3855C2()
{
  extern Class_Descriptor cd_S3855C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3855C2, buf);
    S3855C2 *dp, &lv = *(dp=new (buf) S3855C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3855C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3855C2)");
    check_base_class_offset(lv, (S2242C7_nt*), 0, "S3855C2");
    check_field_offset(lv, s3855c2f0, ABISELECT(12,8), "S3855C2.s3855c2f0");
    check_field_offset(lv, s3855c2f1, ABISELECT(16,12), "S3855C2.s3855c2f1");
    check_field_offset(lv, s3855c2f2, ABISELECT(24,16), "S3855C2.s3855c2f2");
    test_class_info(&lv, &cd_S3855C2);
    dp->~S3855C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3855C2(Test_S3855C2, "S3855C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3855C2C1Ev();
extern void _ZN7S3855C2D1Ev();
Name_Map name_map_S3855C2[] = {
  NSPAIR(_ZN7S3855C2C1Ev),
  NSPAIR(_ZN7S3855C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
static Base_Class bases_S3855C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3855C2[];
extern void _ZN7S3855C2D1Ev();
extern void _ZN7S3855C2D0Ev();
extern void _ZN7S3855C22v3Ev();
extern void _ZN7S3855C22v4Ev();
static  VTBL_ENTRY vtc_S3855C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3855C2[0]),
  (VTBL_ENTRY)&_ZN7S3855C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3855C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3855C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3855C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3855C2[];
extern  VTBL_ENTRY _ZTV7S3855C2[];
Class_Descriptor cd_S3855C2 = {  "S3855C2", // class name
  bases_S3855C2, 1,
  &(vtc_S3855C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3855C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3855C2),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  S3855C1  : S3855C2 {
  virtual  ~S3855C1(); // _ZN7S3855C1D1Ev
  virtual void  v1(); // _ZN7S3855C12v1Ev
  virtual void  v2(); // _ZN7S3855C12v2Ev
  S3855C1(); // tgen
};
//SIG(1 S3855C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4 Fc Fp Fi} vd v1 v2}


 S3855C1 ::~S3855C1(){ note_dtor("S3855C1", this);}
void  S3855C1 ::v1(){vfunc_called(this, "_ZN7S3855C12v1Ev");}
void  S3855C1 ::v2(){vfunc_called(this, "_ZN7S3855C12v2Ev");}
S3855C1 ::S3855C1(){ note_ctor("S3855C1", this);} // tgen

static void Test_S3855C1()
{
  extern Class_Descriptor cd_S3855C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3855C1, buf);
    S3855C1 *dp, &lv = *(dp=new (buf) S3855C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3855C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3855C1)");
    check_base_class_offset(lv, (S2242C7_nt*)(S3855C2*), 0, "S3855C1");
    check_base_class_offset(lv, (S3855C2*), 0, "S3855C1");
    test_class_info(&lv, &cd_S3855C1);
    dp->~S3855C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3855C1(Test_S3855C1, "S3855C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3855C1C1Ev();
extern void _ZN7S3855C1D1Ev();
Name_Map name_map_S3855C1[] = {
  NSPAIR(_ZN7S3855C1C1Ev),
  NSPAIR(_ZN7S3855C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2242C7_nt;
extern VTBL_ENTRY _ZTI10S2242C7_nt[];
extern  VTBL_ENTRY _ZTV10S2242C7_nt[];
extern Class_Descriptor cd_S3855C2;
extern VTBL_ENTRY _ZTI7S3855C2[];
extern  VTBL_ENTRY _ZTV7S3855C2[];
static Base_Class bases_S3855C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2242C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3855C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3855C1[];
extern void _ZN7S3855C1D1Ev();
extern void _ZN7S3855C1D0Ev();
extern void _ZN7S3855C22v3Ev();
extern void _ZN7S3855C22v4Ev();
extern void _ZN7S3855C12v1Ev();
extern void _ZN7S3855C12v2Ev();
static  VTBL_ENTRY vtc_S3855C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3855C1[0]),
  (VTBL_ENTRY)&_ZN7S3855C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3855C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3855C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3855C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3855C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3855C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3855C1[];
extern  VTBL_ENTRY _ZTV7S3855C1[];
Class_Descriptor cd_S3855C1 = {  "S3855C1", // class name
  bases_S3855C1, 2,
  &(vtc_S3855C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3855C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3855C1),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  S21795C1  {
  void *s21795c1f0[2];
  ::S2293C5_nt s21795c1f1;
  int s21795c1f2;
  char s21795c1f3;
  void *s21795c1f4;
  void  mf21795c1(); // _ZN8S21795C19mf21795c1Ev
  virtual  ~S21795C1(); // _ZN8S21795C1D1Ev
  S21795C1(); // tgen
};
//SIG(1 S21795C1) C1{ vd m Fp[2] FC2{ m Fp Fi[2] FC3{ m}} Fi Fc Fp}


void  S21795C1 ::mf21795c1(){}
 S21795C1 ::~S21795C1(){ note_dtor("S21795C1", this);}
S21795C1 ::S21795C1(){ note_ctor("S21795C1", this);} // tgen

static void Test_S21795C1()
{
  extern Class_Descriptor cd_S21795C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S21795C1, buf);
    S21795C1 *dp, &lv = *(dp=new (buf) S21795C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21795C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21795C1)");
    check_field_offset(lv, s21795c1f0, ABISELECT(8,4), "S21795C1.s21795c1f0");
    check_field_offset(lv, s21795c1f1, ABISELECT(24,12), "S21795C1.s21795c1f1");
    check_field_offset(lv, s21795c1f2, ABISELECT(48,28), "S21795C1.s21795c1f2");
    check_field_offset(lv, s21795c1f3, ABISELECT(52,32), "S21795C1.s21795c1f3");
    check_field_offset(lv, s21795c1f4, ABISELECT(56,36), "S21795C1.s21795c1f4");
    test_class_info(&lv, &cd_S21795C1);
    dp->~S21795C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21795C1(Test_S21795C1, "S21795C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21795C1C1Ev();
extern void _ZN8S21795C1D1Ev();
Name_Map name_map_S21795C1[] = {
  NSPAIR(_ZN8S21795C1C1Ev),
  NSPAIR(_ZN8S21795C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21795C1[];
extern void _ZN8S21795C1D1Ev();
extern void _ZN8S21795C1D0Ev();
static  VTBL_ENTRY vtc_S21795C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21795C1[0]),
  (VTBL_ENTRY)&_ZN8S21795C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21795C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21795C1[];
extern  VTBL_ENTRY _ZTV8S21795C1[];
Class_Descriptor cd_S21795C1 = {  "S21795C1", // class name
  0,0,//no base classes
  &(vtc_S21795C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21795C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21795C1),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  S20194C2  {
  char s20194c2f0;
  void *s20194c2f1[4];
  virtual void  v4(); // _ZN8S20194C22v4Ev
  virtual void  v5(); // _ZN8S20194C22v5Ev
  virtual void  v6(); // _ZN8S20194C22v6Ev
  virtual void  v7(); // _ZN8S20194C22v7Ev
  virtual void  v8(); // _ZN8S20194C22v8Ev
  ~S20194C2(); // tgen
  S20194C2(); // tgen
};
//SIG(-1 S20194C2) C1{ v1 v2 v3 v4 v5 Fc Fp[4]}


void  S20194C2 ::v4(){vfunc_called(this, "_ZN8S20194C22v4Ev");}
void  S20194C2 ::v5(){vfunc_called(this, "_ZN8S20194C22v5Ev");}
void  S20194C2 ::v6(){vfunc_called(this, "_ZN8S20194C22v6Ev");}
void  S20194C2 ::v7(){vfunc_called(this, "_ZN8S20194C22v7Ev");}
void  S20194C2 ::v8(){vfunc_called(this, "_ZN8S20194C22v8Ev");}
S20194C2 ::~S20194C2(){ note_dtor("S20194C2", this);} // tgen
S20194C2 ::S20194C2(){ note_ctor("S20194C2", this);} // tgen

static void Test_S20194C2()
{
  extern Class_Descriptor cd_S20194C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20194C2, buf);
    S20194C2 *dp, &lv = *(dp=new (buf) S20194C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20194C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20194C2)");
    check_field_offset(lv, s20194c2f0, ABISELECT(8,4), "S20194C2.s20194c2f0");
    check_field_offset(lv, s20194c2f1, ABISELECT(16,8), "S20194C2.s20194c2f1");
    test_class_info(&lv, &cd_S20194C2);
    dp->~S20194C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20194C2(Test_S20194C2, "S20194C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20194C2C1Ev();
extern void _ZN8S20194C2D1Ev();
Name_Map name_map_S20194C2[] = {
  NSPAIR(_ZN8S20194C2C1Ev),
  NSPAIR(_ZN8S20194C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20194C2[];
extern void _ZN8S20194C22v4Ev();
extern void _ZN8S20194C22v5Ev();
extern void _ZN8S20194C22v6Ev();
extern void _ZN8S20194C22v7Ev();
extern void _ZN8S20194C22v8Ev();
static  VTBL_ENTRY vtc_S20194C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20194C2[0]),
  (VTBL_ENTRY)&_ZN8S20194C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v8Ev,
};
extern VTBL_ENTRY _ZTI8S20194C2[];
extern  VTBL_ENTRY _ZTV8S20194C2[];
Class_Descriptor cd_S20194C2 = {  "S20194C2", // class name
  0,0,//no base classes
  &(vtc_S20194C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20194C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20194C2),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  S20194C1  : virtual S20194C2 {
  virtual  ~S20194C1(); // _ZN8S20194C1D2Ev
  virtual void  v1(); // _ZN8S20194C12v1Ev
  virtual void  v2(); // _ZN8S20194C12v2Ev
  virtual void  v3(); // _ZN8S20194C12v3Ev
  S20194C1(); // tgen
};
//SIG(1 S20194C1) C1{ VBC2{ v4 v5 v6 v7 v8 Fc Fp[4]} vd v1 v2 v3}


 S20194C1 ::~S20194C1(){ note_dtor("S20194C1", this);}
void  S20194C1 ::v1(){vfunc_called(this, "_ZN8S20194C12v1Ev");}
void  S20194C1 ::v2(){vfunc_called(this, "_ZN8S20194C12v2Ev");}
void  S20194C1 ::v3(){vfunc_called(this, "_ZN8S20194C12v3Ev");}
S20194C1 ::S20194C1(){ note_ctor("S20194C1", this);} // tgen

static void Test_S20194C1()
{
  extern Class_Descriptor cd_S20194C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S20194C1, buf);
    S20194C1 *dp, &lv = *(dp=new (buf) S20194C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S20194C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20194C1)");
    check_base_class_offset(lv, (S20194C2*), ABISELECT(8,4), "S20194C1");
    test_class_info(&lv, &cd_S20194C1);
    dp->~S20194C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20194C1(Test_S20194C1, "S20194C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S20194C1C1Ev();
extern void _ZN8S20194C1D2Ev();
Name_Map name_map_S20194C1[] = {
  NSPAIR(_ZN8S20194C1C1Ev),
  NSPAIR(_ZN8S20194C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20194C2;
extern VTBL_ENTRY _ZTI8S20194C2[];
extern  VTBL_ENTRY _ZTV8S20194C2[];
static Base_Class bases_S20194C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20194C2,    ABISELECT(8,4), //bcp->offset
    8, //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 _ZTI8S20194C1[];
extern void _ZN8S20194C1D1Ev();
extern void _ZN8S20194C1D0Ev();
extern void _ZN8S20194C12v1Ev();
extern void _ZN8S20194C12v2Ev();
extern void _ZN8S20194C12v3Ev();
extern void _ZN8S20194C22v4Ev();
extern void _ZN8S20194C22v5Ev();
extern void _ZN8S20194C22v6Ev();
extern void _ZN8S20194C22v7Ev();
extern void _ZN8S20194C22v8Ev();
static  VTBL_ENTRY vtc_S20194C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20194C1[0]),
  (VTBL_ENTRY)&_ZN8S20194C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20194C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20194C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20194C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20194C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20194C1[0]),
  (VTBL_ENTRY)&_ZN8S20194C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20194C22v8Ev,
};
extern VTBL_ENTRY _ZTV8S20194C1[];
static  VTT_ENTRY vtt_S20194C1[] = {
  {&(_ZTV8S20194C1[3]),  3,20},
  {&(_ZTV8S20194C1[15]),  15,20},
};
extern VTBL_ENTRY _ZTI8S20194C1[];
extern  VTBL_ENTRY _ZTV8S20194C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20194C1[];
Class_Descriptor cd_S20194C1 = {  "S20194C1", // class name
  bases_S20194C1, 1,
  &(vtc_S20194C1[0]), // expected_vtbl_contents
  &(vtt_S20194C1[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S20194C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20194C1),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20194C1),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  S21201C2  {
  void *s21201c2f0;
  int s21201c2f1:15;
  void *s21201c2f2;
  short s21201c2f3;
  void  mf21201c2(); // _ZN8S21201C29mf21201c2Ev
  virtual  ~S21201C2(); // _ZN8S21201C2D1Ev
  S21201C2(); // tgen
};
//SIG(-1 S21201C2) C1{ vd m Fp Fi:15 Fp Fs}


void  S21201C2 ::mf21201c2(){}
 S21201C2 ::~S21201C2(){ note_dtor("S21201C2", this);}
S21201C2 ::S21201C2(){ note_ctor("S21201C2", this);} // tgen

static void Test_S21201C2()
{
  extern Class_Descriptor cd_S21201C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S21201C2, buf);
    S21201C2 *dp, &lv = *(dp=new (buf) S21201C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S21201C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21201C2)");
    check_field_offset(lv, s21201c2f0, ABISELECT(8,4), "S21201C2.s21201c2f0");
    set_bf_and_test(lv, s21201c2f1, ABISELECT(16,8), 0, 15, 1, "S21201C2");
    set_bf_and_test(lv, s21201c2f1, ABISELECT(16,8), 0, 15, hide_sll(1LL<<14), "S21201C2");
    check_field_offset(lv, s21201c2f2, ABISELECT(24,12), "S21201C2.s21201c2f2");
    check_field_offset(lv, s21201c2f3, ABISELECT(32,16), "S21201C2.s21201c2f3");
    test_class_info(&lv, &cd_S21201C2);
    dp->~S21201C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21201C2(Test_S21201C2, "S21201C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S21201C2C1Ev();
extern void _ZN8S21201C2D1Ev();
Name_Map name_map_S21201C2[] = {
  NSPAIR(_ZN8S21201C2C1Ev),
  NSPAIR(_ZN8S21201C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21201C2[];
extern void _ZN8S21201C2D1Ev();
extern void _ZN8S21201C2D0Ev();
static  VTBL_ENTRY vtc_S21201C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21201C2[0]),
  (VTBL_ENTRY)&_ZN8S21201C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21201C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21201C2[];
extern  VTBL_ENTRY _ZTV8S21201C2[];
Class_Descriptor cd_S21201C2 = {  "S21201C2", // class name
  0,0,//no base classes
  &(vtc_S21201C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S21201C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21201C2),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  S21201C1  : virtual S21201C2 {
  short s21201c1f0;
  int s21201c1f1;
  __tsi64 s21201c1f2;
  void *s21201c1f3;
  virtual void  v1(); // _ZN8S21201C12v1Ev
  ~S21201C1(); // tgen
  S21201C1(); // tgen
};
//SIG(1 S21201C1) C1{ VBC2{ vd m Fp Fi:15 Fp Fs} v1 Fs Fi FL Fp}


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

static void Test_S21201C1()
{
  extern Class_Descriptor cd_S21201C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S21201C1, buf);
    S21201C1 *dp, &lv = *(dp=new (buf) S21201C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S21201C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21201C1)");
    check_base_class_offset(lv, (S21201C2*), ABISELECT(32,24), "S21201C1");
    check_field_offset(lv, s21201c1f0, ABISELECT(8,4), "S21201C1.s21201c1f0");
    check_field_offset(lv, s21201c1f1, ABISELECT(12,8), "S21201C1.s21201c1f1");
    check_field_offset(lv, s21201c1f2, ABISELECT(16,12), "S21201C1.s21201c1f2");
    check_field_offset(lv, s21201c1f3, ABISELECT(24,20), "S21201C1.s21201c1f3");
    test_class_info(&lv, &cd_S21201C1);
    dp->~S21201C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21201C1(Test_S21201C1, "S21201C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S21201C1C1Ev();
extern void _ZN8S21201C1D1Ev();
Name_Map name_map_S21201C1[] = {
  NSPAIR(_ZN8S21201C1C1Ev),
  NSPAIR(_ZN8S21201C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21201C2;
extern VTBL_ENTRY _ZTI8S21201C2[];
extern  VTBL_ENTRY _ZTV8S21201C2[];
static Base_Class bases_S21201C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21201C2,    ABISELECT(32,24), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21201C1[];
extern void _ZN8S21201C12v1Ev();
extern void _ZN8S21201C1D1Ev();
extern void _ZN8S21201C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21201C1D1Ev,_ZTv0_n12_N8S21201C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S21201C1D1Ev,_ZThn24_N8S21201C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21201C1D0Ev,_ZTv0_n12_N8S21201C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S21201C1D0Ev,_ZThn24_N8S21201C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21201C1[] = {
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21201C1[0]),
  (VTBL_ENTRY)&_ZN8S21201C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21201C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21201C1D0Ev,
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21201C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21201C1D1Ev,_ZTv0_n12_N8S21201C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21201C1D0Ev,_ZTv0_n12_N8S21201C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21201C1[];
static  VTT_ENTRY vtt_S21201C1[] = {
  {&(_ZTV8S21201C1[3]),  3,11},
  {&(_ZTV8S21201C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21201C1[];
extern  VTBL_ENTRY _ZTV8S21201C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21201C1[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21201C1D0Ev,_ZTv0_n12_N8S21201C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21201C1D0Ev,_ZThn24_N8S21201C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21201C1D1Ev,_ZTv0_n12_N8S21201C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21201C1D1Ev,_ZThn24_N8S21201C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21201C1 = {  "S21201C1", // class name
  bases_S21201C1, 1,
  &(vtc_S21201C1[0]), // expected_vtbl_contents
  &(vtt_S21201C1[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S21201C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21201C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21201C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12811C1  {
  int s12811c1f0;
  void *s12811c1f1[9];
  int s12811c1f2[4];
  void *s12811c1f3[5];
  int s12811c1f4;
  void *s12811c1f5[2];
  int s12811c1f6;
  void *s12811c1f7[7];
};
//SIG(1 S12811C1) C1{ Fi Fp[9] Fi[4] Fp[5] Fi Fp[2] Fi Fp[7]}



static void Test_S12811C1()
{
  {
    init_simple_test("S12811C1");
    S12811C1 lv;
    check2(sizeof(lv), ABISELECT(224,120), "sizeof(S12811C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12811C1)");
    check_field_offset(lv, s12811c1f0, 0, "S12811C1.s12811c1f0");
    check_field_offset(lv, s12811c1f1, ABISELECT(8,4), "S12811C1.s12811c1f1");
    check_field_offset(lv, s12811c1f2, ABISELECT(80,40), "S12811C1.s12811c1f2");
    check_field_offset(lv, s12811c1f3, ABISELECT(96,56), "S12811C1.s12811c1f3");
    check_field_offset(lv, s12811c1f4, ABISELECT(136,76), "S12811C1.s12811c1f4");
    check_field_offset(lv, s12811c1f5, ABISELECT(144,80), "S12811C1.s12811c1f5");
    check_field_offset(lv, s12811c1f6, ABISELECT(160,88), "S12811C1.s12811c1f6");
    check_field_offset(lv, s12811c1f7, ABISELECT(168,92), "S12811C1.s12811c1f7");
  }
}
static Arrange_To_Call_Me vS12811C1(Test_S12811C1, "S12811C1", ABISELECT(224,120));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21728C1  {
  void *s21728c1f0;
  ::S16385C7 s21728c1f1;
  char s21728c1f2;
  void *s21728c1f3[3];
  char s21728c1f4;
  void  mf21728c1(); // _ZN8S21728C19mf21728c1Ev
  virtual  ~S21728C1(); // _ZN8S21728C1D1Ev
  S21728C1(); // tgen
};
//SIG(1 S21728C1) C1{ vd m Fp FC2{ m Fp Fi FC3{ m}} Fc Fp[3] Fc}


void  S21728C1 ::mf21728c1(){}
 S21728C1 ::~S21728C1(){ note_dtor("S21728C1", this);}
S21728C1 ::S21728C1(){ note_ctor("S21728C1", this);} // tgen

static void Test_S21728C1()
{
  extern Class_Descriptor cd_S21728C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S21728C1, buf);
    S21728C1 *dp, &lv = *(dp=new (buf) S21728C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S21728C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21728C1)");
    check_field_offset(lv, s21728c1f0, ABISELECT(8,4), "S21728C1.s21728c1f0");
    check_field_offset(lv, s21728c1f1, ABISELECT(16,8), "S21728C1.s21728c1f1");
    check_field_offset(lv, s21728c1f2, ABISELECT(32,20), "S21728C1.s21728c1f2");
    check_field_offset(lv, s21728c1f3, ABISELECT(40,24), "S21728C1.s21728c1f3");
    check_field_offset(lv, s21728c1f4, ABISELECT(64,36), "S21728C1.s21728c1f4");
    test_class_info(&lv, &cd_S21728C1);
    dp->~S21728C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21728C1(Test_S21728C1, "S21728C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S21728C1C1Ev();
extern void _ZN8S21728C1D1Ev();
Name_Map name_map_S21728C1[] = {
  NSPAIR(_ZN8S21728C1C1Ev),
  NSPAIR(_ZN8S21728C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21728C1[];
extern void _ZN8S21728C1D1Ev();
extern void _ZN8S21728C1D0Ev();
static  VTBL_ENTRY vtc_S21728C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21728C1[0]),
  (VTBL_ENTRY)&_ZN8S21728C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21728C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21728C1[];
extern  VTBL_ENTRY _ZTV8S21728C1[];
Class_Descriptor cd_S21728C1 = {  "S21728C1", // class name
  0,0,//no base classes
  &(vtc_S21728C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S21728C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21728C1),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  S5484C2  {
  ::S1538C14_nt s5484c2f0;
  ::S1538C14_nt s5484c2f1;
  ::S1538C14_nt s5484c2f2;
  ::S1538C14_nt s5484c2f3;
};
//SIG(-1 S5484C2) C1{ FC2{ m Fi[3]} FC2 FC2 FC2}



static void Test_S5484C2()
{
  {
    init_simple_test("S5484C2");
    S5484C2 lv;
    check2(sizeof(lv), 48, "sizeof(S5484C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5484C2)");
    check_field_offset(lv, s5484c2f0, 0, "S5484C2.s5484c2f0");
    check_field_offset(lv, s5484c2f1, 12, "S5484C2.s5484c2f1");
    check_field_offset(lv, s5484c2f2, 24, "S5484C2.s5484c2f2");
    check_field_offset(lv, s5484c2f3, 36, "S5484C2.s5484c2f3");
  }
}
static Arrange_To_Call_Me vS5484C2(Test_S5484C2, "S5484C2", 48);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5484C1  : S5484C2 {
  ::S19490C26 s5484c1f0[4];
};
//SIG(1 S5484C1) C1{ BC2{ FC3{ m Fi[3]} FC3 FC3 FC3} FC4{ m}[4]}



static void Test_S5484C1()
{
  extern Class_Descriptor cd_S5484C1;
  void *lvp;
  {
    int buf[14];
    init_test(&cd_S5484C1, buf);
    S5484C1 &lv = *(new (buf) S5484C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 52, "sizeof(S5484C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5484C1)");
    check_base_class_offset(lv, (S5484C2*), 0, "S5484C1");
    check_field_offset(lv, s5484c1f0, 48, "S5484C1.s5484c1f0");
    test_class_info(&lv, &cd_S5484C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5484C1(Test_S5484C1, "S5484C1", 52);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5483C1  : S5484C2 {
  ::S19490C26 s5483c1f0[3];
};
//SIG(1 S5483C1) C1{ BC2{ FC3{ m Fi[3]} FC3 FC3 FC3} FC4{ m}[3]}



static void Test_S5483C1()
{
  extern Class_Descriptor cd_S5483C1;
  void *lvp;
  {
    int buf[14];
    init_test(&cd_S5483C1, buf);
    S5483C1 &lv = *(new (buf) S5483C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 52, "sizeof(S5483C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5483C1)");
    check_base_class_offset(lv, (S5484C2*), 0, "S5483C1");
    check_field_offset(lv, s5483c1f0, 48, "S5483C1.s5483c1f0");
    test_class_info(&lv, &cd_S5483C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5483C1(Test_S5483C1, "S5483C1", 52);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S21202C1  : virtual S21201C2 {
  int s21202c1f0[10];
  virtual  ~S21202C1(); // _ZN8S21202C1D2Ev
  virtual void  v1(); // _ZN8S21202C12v1Ev
  S21202C1(); // tgen
};
//SIG(1 S21202C1) C1{ VBC2{ vd m Fp Fi:15 Fp Fs} vd v1 Fi[10]}


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

static void Test_S21202C1()
{
  extern Class_Descriptor cd_S21202C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S21202C1, buf);
    S21202C1 *dp, &lv = *(dp=new (buf) S21202C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S21202C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21202C1)");
    check_base_class_offset(lv, (S21201C2*), ABISELECT(48,44), "S21202C1");
    check_field_offset(lv, s21202c1f0, ABISELECT(8,4), "S21202C1.s21202c1f0");
    test_class_info(&lv, &cd_S21202C1);
    dp->~S21202C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21202C1(Test_S21202C1, "S21202C1", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN8S21202C1C1Ev();
extern void _ZN8S21202C1D2Ev();
Name_Map name_map_S21202C1[] = {
  NSPAIR(_ZN8S21202C1C1Ev),
  NSPAIR(_ZN8S21202C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21201C2;
extern VTBL_ENTRY _ZTI8S21201C2[];
extern  VTBL_ENTRY _ZTV8S21201C2[];
static Base_Class bases_S21202C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21201C2,    ABISELECT(48,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21202C1[];
extern void _ZN8S21202C1D1Ev();
extern void _ZN8S21202C1D0Ev();
extern void _ZN8S21202C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S21202C1D1Ev,_ZTv0_n12_N8S21202C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21202C1D1Ev,_ZThn44_N8S21202C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21202C1D0Ev,_ZTv0_n12_N8S21202C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21202C1D0Ev,_ZThn44_N8S21202C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21202C1[] = {
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21202C1[0]),
  (VTBL_ENTRY)&_ZN8S21202C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21202C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21202C12v1Ev,
  ABISELECT(-48,-44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S21202C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21202C1D1Ev,_ZTv0_n12_N8S21202C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21202C1D0Ev,_ZTv0_n12_N8S21202C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21202C1[];
static  VTT_ENTRY vtt_S21202C1[] = {
  {&(_ZTV8S21202C1[3]),  3,11},
  {&(_ZTV8S21202C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21202C1[];
extern  VTBL_ENTRY _ZTV8S21202C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21202C1[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21202C1D0Ev,_ZTv0_n12_N8S21202C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21202C1D0Ev,_ZThn44_N8S21202C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21202C1D1Ev,_ZTv0_n12_N8S21202C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21202C1D1Ev,_ZThn44_N8S21202C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21202C1 = {  "S21202C1", // class name
  bases_S21202C1, 1,
  &(vtc_S21202C1[0]), // expected_vtbl_contents
  &(vtt_S21202C1[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI8S21202C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21202C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21202C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17490C1  {
  void *s17490c1f0;
  ::S1538C30 s17490c1f1;
  int s17490c1f2[8];
  void  mf17490c1(); // _ZN8S17490C19mf17490c1Ev
};
//SIG(1 S17490C1) C1{ m Fp FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[8]}


void  S17490C1 ::mf17490c1(){}

static void Test_S17490C1()
{
  {
    init_simple_test("S17490C1");
    S17490C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S17490C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17490C1)");
    check_field_offset(lv, s17490c1f0, 0, "S17490C1.s17490c1f0");
    check_field_offset(lv, s17490c1f1, ABISELECT(8,4), "S17490C1.s17490c1f1");
    check_field_offset(lv, s17490c1f2, ABISELECT(24,16), "S17490C1.s17490c1f2");
  }
}
static Arrange_To_Call_Me vS17490C1(Test_S17490C1, "S17490C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6089C2  {
  short s6089c2f0[4];
  void  mf6089c2(); // _ZN7S6089C28mf6089c2Ev
};
//SIG(-1 S6089C2) C1{ m Fs[4]}


void  S6089C2 ::mf6089c2(){}

static void Test_S6089C2()
{
  {
    init_simple_test("S6089C2");
    S6089C2 lv;
    check2(sizeof(lv), 8, "sizeof(S6089C2)");
    check2(__alignof__(lv), 2, "__alignof__(S6089C2)");
    check_field_offset(lv, s6089c2f0, 0, "S6089C2.s6089c2f0");
  }
}
static Arrange_To_Call_Me vS6089C2(Test_S6089C2, "S6089C2", 8);

#else // __cplusplus

Class_Descriptor cd_S6089C2 = {  "S6089C2", // 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  S6089C1  : S6089C2 {
  ::S1538C14_nt s6089c1f0;
  ::S1538C14_nt s6089c1f1;
  ::S1538C14_nt s6089c1f2;
  ::S1538C14_nt s6089c1f3;
};
//SIG(1 S6089C1) C1{ BC2{ m Fs[4]} FC3{ m Fi[3]} FC3 FC3 FC3}



static void Test_S6089C1()
{
  extern Class_Descriptor cd_S6089C1;
  void *lvp;
  {
    int buf[15];
    init_test(&cd_S6089C1, buf);
    S6089C1 &lv = *(new (buf) S6089C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 56, "sizeof(S6089C1)");
    check2(__alignof__(lv), 4, "__alignof__(S6089C1)");
    check_base_class_offset(lv, (S6089C2*), 0, "S6089C1");
    check_field_offset(lv, s6089c1f0, 8, "S6089C1.s6089c1f0");
    check_field_offset(lv, s6089c1f1, 20, "S6089C1.s6089c1f1");
    check_field_offset(lv, s6089c1f2, 32, "S6089C1.s6089c1f2");
    check_field_offset(lv, s6089c1f3, 44, "S6089C1.s6089c1f3");
    test_class_info(&lv, &cd_S6089C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6089C1(Test_S6089C1, "S6089C1", 56);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S12771C2  {
  void *s12771c2f0;
  char s12771c2f1[16];
};
//SIG(-1 S12771C2) C1{ Fp Fc[16]}



static void Test_S12771C2()
{
  {
    init_simple_test("S12771C2");
    S12771C2 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S12771C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12771C2)");
    check_field_offset(lv, s12771c2f0, 0, "S12771C2.s12771c2f0");
    check_field_offset(lv, s12771c2f1, ABISELECT(8,4), "S12771C2.s12771c2f1");
  }
}
static Arrange_To_Call_Me vS12771C2(Test_S12771C2, "S12771C2", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12771C1  {
  int s12771c1f0;
  void *s12771c1f1[3];
  int s12771c1f2;
  void *s12771c1f3;
  int s12771c1f4;
  ::S12771C2 s12771c1f5;
  int s12771c1f6;
};
//SIG(1 S12771C1) C1{ Fi Fp[3] Fi Fp Fi FC2{ Fp Fc[16]} Fi}



static void Test_S12771C1()
{
  {
    init_simple_test("S12771C1");
    S12771C1 lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S12771C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12771C1)");
    check_field_offset(lv, s12771c1f0, 0, "S12771C1.s12771c1f0");
    check_field_offset(lv, s12771c1f1, ABISELECT(8,4), "S12771C1.s12771c1f1");
    check_field_offset(lv, s12771c1f2, ABISELECT(32,16), "S12771C1.s12771c1f2");
    check_field_offset(lv, s12771c1f3, ABISELECT(40,20), "S12771C1.s12771c1f3");
    check_field_offset(lv, s12771c1f4, ABISELECT(48,24), "S12771C1.s12771c1f4");
    check_field_offset(lv, s12771c1f5, ABISELECT(56,28), "S12771C1.s12771c1f5");
    check_field_offset(lv, s12771c1f6, ABISELECT(80,48), "S12771C1.s12771c1f6");
  }
}
static Arrange_To_Call_Me vS12771C1(Test_S12771C1, "S12771C1", ABISELECT(88,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5485C1  : S5484C2 {
  ::S19490C26 s5485c1f0;
};
//SIG(1 S5485C1) C1{ BC2{ FC3{ m Fi[3]} FC3 FC3 FC3} FC4{ m}}



static void Test_S5485C1()
{
  extern Class_Descriptor cd_S5485C1;
  void *lvp;
  {
    int buf[14];
    init_test(&cd_S5485C1, buf);
    S5485C1 &lv = *(new (buf) S5485C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 52, "sizeof(S5485C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5485C1)");
    check_base_class_offset(lv, (S5484C2*), 0, "S5485C1");
    check_field_offset(lv, s5485c1f0, 48, "S5485C1.s5485c1f0");
    test_class_info(&lv, &cd_S5485C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5485C1(Test_S5485C1, "S5485C1", 52);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S21672C1  {
  int s21672c1f0[3];
  ::S2293C5_nt s21672c1f1;
  void  mf21672c1(); // _ZN8S21672C19mf21672c1Ev
  virtual  ~S21672C1(); // _ZN8S21672C1D1Ev
  S21672C1(); // tgen
};
//SIG(1 S21672C1) C1{ vd m Fi[3] FC2{ m Fp Fi[2] FC3{ m}}}


void  S21672C1 ::mf21672c1(){}
 S21672C1 ::~S21672C1(){ note_dtor("S21672C1", this);}
S21672C1 ::S21672C1(){ note_ctor("S21672C1", this);} // tgen

static void Test_S21672C1()
{
  extern Class_Descriptor cd_S21672C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S21672C1, buf);
    S21672C1 *dp, &lv = *(dp=new (buf) S21672C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S21672C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21672C1)");
    check_field_offset(lv, s21672c1f0, ABISELECT(8,4), "S21672C1.s21672c1f0");
    check_field_offset(lv, s21672c1f1, ABISELECT(24,16), "S21672C1.s21672c1f1");
    test_class_info(&lv, &cd_S21672C1);
    dp->~S21672C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21672C1(Test_S21672C1, "S21672C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S21672C1C1Ev();
extern void _ZN8S21672C1D1Ev();
Name_Map name_map_S21672C1[] = {
  NSPAIR(_ZN8S21672C1C1Ev),
  NSPAIR(_ZN8S21672C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21672C1[];
extern void _ZN8S21672C1D1Ev();
extern void _ZN8S21672C1D0Ev();
static  VTBL_ENTRY vtc_S21672C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21672C1[0]),
  (VTBL_ENTRY)&_ZN8S21672C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21672C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21672C1[];
extern  VTBL_ENTRY _ZTV8S21672C1[];
Class_Descriptor cd_S21672C1 = {  "S21672C1", // class name
  0,0,//no base classes
  &(vtc_S21672C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S21672C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21672C1),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  S17438C1  {
  void *s17438c1f0;
  char s17438c1f1;
  ::S10878C3_nt s17438c1f2;
  int s17438c1f3;
  void  mf17438c1(); // _ZN8S17438C19mf17438c1Ev
};
//SIG(1 S17438C1) C1{ m Fp Fc FC2{ FC3{ Fc[20]} Fc[16]} Fi}


void  S17438C1 ::mf17438c1(){}

static void Test_S17438C1()
{
  {
    init_simple_test("S17438C1");
    S17438C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S17438C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17438C1)");
    check_field_offset(lv, s17438c1f0, 0, "S17438C1.s17438c1f0");
    check_field_offset(lv, s17438c1f1, ABISELECT(8,4), "S17438C1.s17438c1f1");
    check_field_offset(lv, s17438c1f2, ABISELECT(9,5), "S17438C1.s17438c1f2");
    check_field_offset(lv, s17438c1f3, ABISELECT(48,44), "S17438C1.s17438c1f3");
  }
}
static Arrange_To_Call_Me vS17438C1(Test_S17438C1, "S17438C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10373C1  : S7223C9_nt {
  void *s10373c1f0;
  ::S16385C7 s10373c1f1;
  int s10373c1f2[3];
};
//SIG(1 S10373C1) C1{ BC2{} Fp FC3{ m Fp Fi FC4{ m}} Fi[3]}



static void Test_S10373C1()
{
  extern Class_Descriptor cd_S10373C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S10373C1, buf);
    S10373C1 &lv = *(new (buf) S10373C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S10373C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10373C1)");
    check_base_class_offset(lv, (S7223C9_nt*), 0, "S10373C1");
    check_field_offset(lv, s10373c1f0, 0, "S10373C1.s10373c1f0");
    check_field_offset(lv, s10373c1f1, ABISELECT(8,4), "S10373C1.s10373c1f1");
    check_field_offset(lv, s10373c1f2, ABISELECT(24,16), "S10373C1.s10373c1f2");
    test_class_info(&lv, &cd_S10373C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10373C1(Test_S10373C1, "S10373C1", ABISELECT(40,28));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S14940C2_nt  {
  __tsi64 s14940c2f0[2];
};
//SIG(-1 S14940C2_nt) C1{ FL[2]}



//skip512 S14940C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14940C1  {
  short s14940c1f0[4];
  long s14940c1f1[2];
  short s14940c1f2[2];
  char s14940c1f3;
  ::S14940C2_nt s14940c1f4;
};
//SIG(1 S14940C1) C1{ Fs[4] Fl[2] Fs[2] Fc FC2{ FL[2]}}



static void Test_S14940C1()
{
  {
    init_simple_test("S14940C1");
    S14940C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S14940C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14940C1)");
    check_field_offset(lv, s14940c1f0, 0, "S14940C1.s14940c1f0");
    check_field_offset(lv, s14940c1f1, 8, "S14940C1.s14940c1f1");
    check_field_offset(lv, s14940c1f2, ABISELECT(24,16), "S14940C1.s14940c1f2");
    check_field_offset(lv, s14940c1f3, ABISELECT(28,20), "S14940C1.s14940c1f3");
    check_field_offset(lv, s14940c1f4, ABISELECT(32,24), "S14940C1.s14940c1f4");
  }
}
static Arrange_To_Call_Me vS14940C1(Test_S14940C1, "S14940C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15022C1  {
  char s15022c1f0;
  ::S1538C30 s15022c1f1;
  void  mf15022c1(); // _ZN8S15022C19mf15022c1Ev
};
//SIG(1 S15022C1) C1{ m Fc FC2{ BC3{ BC4{ m Fp Fi[2]}}}}


void  S15022C1 ::mf15022c1(){}

static void Test_S15022C1()
{
  {
    init_simple_test("S15022C1");
    S15022C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S15022C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15022C1)");
    check_field_offset(lv, s15022c1f0, 0, "S15022C1.s15022c1f0");
    check_field_offset(lv, s15022c1f1, ABISELECT(8,4), "S15022C1.s15022c1f1");
  }
}
static Arrange_To_Call_Me vS15022C1(Test_S15022C1, "S15022C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14432C1  {
  void *s14432c1f0[10];
  int s14432c1f1[6];
  void *s14432c1f2;
  int s14432c1f3[3];
  void *s14432c1f4;
  int s14432c1f5[3];
};
//SIG(1 S14432C1) C1{ Fp[10] Fi[6] Fp Fi[3] Fp Fi[3]}



static void Test_S14432C1()
{
  {
    init_simple_test("S14432C1");
    S14432C1 lv;
    check2(sizeof(lv), ABISELECT(152,96), "sizeof(S14432C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14432C1)");
    check_field_offset(lv, s14432c1f0, 0, "S14432C1.s14432c1f0");
    check_field_offset(lv, s14432c1f1, ABISELECT(80,40), "S14432C1.s14432c1f1");
    check_field_offset(lv, s14432c1f2, ABISELECT(104,64), "S14432C1.s14432c1f2");
    check_field_offset(lv, s14432c1f3, ABISELECT(112,68), "S14432C1.s14432c1f3");
    check_field_offset(lv, s14432c1f4, ABISELECT(128,80), "S14432C1.s14432c1f4");
    check_field_offset(lv, s14432c1f5, ABISELECT(136,84), "S14432C1.s14432c1f5");
  }
}
static Arrange_To_Call_Me vS14432C1(Test_S14432C1, "S14432C1", ABISELECT(152,96));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8816C2_nt  {
  void *s8816c2f0[2];
  virtual  ~S8816C2_nt(); // _ZN10S8816C2_ntD1Ev
  virtual void  v2(); // _ZN10S8816C2_nt2v2Ev
  S8816C2_nt(); // tgen
};
//SIG(-1 S8816C2_nt) C1{ vd v1 Fp[2]}


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

//skip512 S8816C2_nt

#else // __cplusplus

extern void _ZN10S8816C2_ntC1Ev();
extern void _ZN10S8816C2_ntD1Ev();
Name_Map name_map_S8816C2_nt[] = {
  NSPAIR(_ZN10S8816C2_ntC1Ev),
  NSPAIR(_ZN10S8816C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8816C2_nt[];
extern void _ZN10S8816C2_ntD1Ev();
extern void _ZN10S8816C2_ntD0Ev();
extern void _ZN10S8816C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S8816C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8816C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8816C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8816C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8816C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S8816C2_nt[];
VTBL_ENTRY *P__ZTI10S8816C2_nt = _ZTI10S8816C2_nt; 
extern  VTBL_ENTRY _ZTV10S8816C2_nt[];
Class_Descriptor cd_S8816C2_nt = {  "S8816C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8816C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S8816C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8816C2_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  S8816C1  : S8816C2_nt {
  __tsi64 s8816c1f0;
  char s8816c1f1;
  void *s8816c1f2;
  virtual  ~S8816C1(); // _ZN7S8816C1D1Ev
  virtual void  v1(); // _ZN7S8816C12v1Ev
  S8816C1(); // tgen
};
//SIG(1 S8816C1) C1{ BC2{ vd v2 Fp[2]} vd v1 FL Fc Fp}


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

static void Test_S8816C1()
{
  extern Class_Descriptor cd_S8816C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S8816C1, buf);
    S8816C1 *dp, &lv = *(dp=new (buf) S8816C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S8816C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8816C1)");
    check_base_class_offset(lv, (S8816C2_nt*), 0, "S8816C1");
    check_field_offset(lv, s8816c1f0, ABISELECT(24,12), "S8816C1.s8816c1f0");
    check_field_offset(lv, s8816c1f1, ABISELECT(32,20), "S8816C1.s8816c1f1");
    check_field_offset(lv, s8816c1f2, ABISELECT(40,24), "S8816C1.s8816c1f2");
    test_class_info(&lv, &cd_S8816C1);
    dp->~S8816C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8816C1(Test_S8816C1, "S8816C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S8816C1C1Ev();
extern void _ZN7S8816C1D1Ev();
Name_Map name_map_S8816C1[] = {
  NSPAIR(_ZN7S8816C1C1Ev),
  NSPAIR(_ZN7S8816C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8816C2_nt;
extern VTBL_ENTRY _ZTI10S8816C2_nt[];
extern  VTBL_ENTRY _ZTV10S8816C2_nt[];
static Base_Class bases_S8816C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8816C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8816C1[];
extern void _ZN7S8816C1D1Ev();
extern void _ZN7S8816C1D0Ev();
extern void _ZN10S8816C2_nt2v2Ev();
extern void _ZN7S8816C12v1Ev();
static  VTBL_ENTRY vtc_S8816C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8816C1[0]),
  (VTBL_ENTRY)&_ZN7S8816C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8816C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8816C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S8816C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8816C1[];
extern  VTBL_ENTRY _ZTV7S8816C1[];
Class_Descriptor cd_S8816C1 = {  "S8816C1", // class name
  bases_S8816C1, 1,
  &(vtc_S8816C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S8816C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8816C1),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  S16350C2  {
  void *s16350c2f0;
  __tsi64 s16350c2f1;
  char s16350c2f2;
  void *s16350c2f3;
  void  mf16350c2(); // _ZN8S16350C29mf16350c2Ev
};
//SIG(1 S16350C2) C1{ m Fp FL Fc Fp}


void  S16350C2 ::mf16350c2(){}

static void Test_S16350C2()
{
  {
    init_simple_test("S16350C2");
    S16350C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16350C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16350C2)");
    check_field_offset(lv, s16350c2f0, 0, "S16350C2.s16350c2f0");
    check_field_offset(lv, s16350c2f1, ABISELECT(8,4), "S16350C2.s16350c2f1");
    check_field_offset(lv, s16350c2f2, ABISELECT(16,12), "S16350C2.s16350c2f2");
    check_field_offset(lv, s16350c2f3, ABISELECT(24,16), "S16350C2.s16350c2f3");
  }
}
static Arrange_To_Call_Me vS16350C2(Test_S16350C2, "S16350C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16350C1  {
  ::S16350C2 s16350c1f0[2];
  __tsi64 s16350c1f1[4];
  void  mf16350c1(); // _ZN8S16350C19mf16350c1Ev
};
//SIG(1 S16350C1) C1{ m FC2{ m Fp FL Fc Fp}[2] FL[4]}


void  S16350C1 ::mf16350c1(){}

static void Test_S16350C1()
{
  {
    init_simple_test("S16350C1");
    S16350C1 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S16350C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16350C1)");
    check_field_offset(lv, s16350c1f0, 0, "S16350C1.s16350c1f0");
    check_field_offset(lv, s16350c1f1, ABISELECT(64,40), "S16350C1.s16350c1f1");
  }
}
static Arrange_To_Call_Me vS16350C1(Test_S16350C1, "S16350C1", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14888C2_nt  {
  char s14888c2f0[64];
};
//SIG(-1 S14888C2_nt) C1{ Fc[64]}



//skip512 S14888C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14888C1  {
  short s14888c1f0[2];
  int s14888c1f1;
  short s14888c1f2;
  ::S14888C2_nt s14888c1f3;
  void *s14888c1f4;
  int s14888c1f5;
};
//SIG(1 S14888C1) C1{ Fs[2] Fi Fs FC2{ Fc[64]} Fp Fi}



static void Test_S14888C1()
{
  {
    init_simple_test("S14888C1");
    S14888C1 lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S14888C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14888C1)");
    check_field_offset(lv, s14888c1f0, 0, "S14888C1.s14888c1f0");
    check_field_offset(lv, s14888c1f1, 4, "S14888C1.s14888c1f1");
    check_field_offset(lv, s14888c1f2, 8, "S14888C1.s14888c1f2");
    check_field_offset(lv, s14888c1f3, 10, "S14888C1.s14888c1f3");
    check_field_offset(lv, s14888c1f4, ABISELECT(80,76), "S14888C1.s14888c1f4");
    check_field_offset(lv, s14888c1f5, ABISELECT(88,80), "S14888C1.s14888c1f5");
  }
}
static Arrange_To_Call_Me vS14888C1(Test_S14888C1, "S14888C1", ABISELECT(96,84));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14591C1  {
  void *s14591c1f0[3];
  ::S12771C2 s14591c1f1;
  int s14591c1f2;
  void *s14591c1f3;
  int s14591c1f4;
};
//SIG(1 S14591C1) C1{ Fp[3] FC2{ Fp Fc[16]} Fi Fp Fi}



static void Test_S14591C1()
{
  {
    init_simple_test("S14591C1");
    S14591C1 lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S14591C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14591C1)");
    check_field_offset(lv, s14591c1f0, 0, "S14591C1.s14591c1f0");
    check_field_offset(lv, s14591c1f1, ABISELECT(24,12), "S14591C1.s14591c1f1");
    check_field_offset(lv, s14591c1f2, ABISELECT(48,32), "S14591C1.s14591c1f2");
    check_field_offset(lv, s14591c1f3, ABISELECT(56,36), "S14591C1.s14591c1f3");
    check_field_offset(lv, s14591c1f4, ABISELECT(64,40), "S14591C1.s14591c1f4");
  }
}
static Arrange_To_Call_Me vS14591C1(Test_S14591C1, "S14591C1", ABISELECT(72,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20127C2  {
  short s20127c2f0:7;
  virtual void  v3(); // _ZN8S20127C22v3Ev
  virtual void  v4(); // _ZN8S20127C22v4Ev
  virtual void  v5(); // _ZN8S20127C22v5Ev
  virtual void  v6(); // _ZN8S20127C22v6Ev
  ~S20127C2(); // tgen
  S20127C2(); // tgen
};
//SIG(-1 S20127C2) C1{ v1 v2 v3 v4 Fs:7}


void  S20127C2 ::v3(){vfunc_called(this, "_ZN8S20127C22v3Ev");}
void  S20127C2 ::v4(){vfunc_called(this, "_ZN8S20127C22v4Ev");}
void  S20127C2 ::v5(){vfunc_called(this, "_ZN8S20127C22v5Ev");}
void  S20127C2 ::v6(){vfunc_called(this, "_ZN8S20127C22v6Ev");}
S20127C2 ::~S20127C2(){ note_dtor("S20127C2", this);} // tgen
S20127C2 ::S20127C2(){ note_ctor("S20127C2", this);} // tgen

static void Test_S20127C2()
{
  extern Class_Descriptor cd_S20127C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20127C2, buf);
    S20127C2 *dp, &lv = *(dp=new (buf) S20127C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20127C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20127C2)");
    set_bf_and_test(lv, s20127c2f0, ABISELECT(8,4), 0, 7, 1, "S20127C2");
    set_bf_and_test(lv, s20127c2f0, ABISELECT(8,4), 0, 7, hide_sll(1LL<<6), "S20127C2");
    test_class_info(&lv, &cd_S20127C2);
    dp->~S20127C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20127C2(Test_S20127C2, "S20127C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20127C2C1Ev();
extern void _ZN8S20127C2D1Ev();
Name_Map name_map_S20127C2[] = {
  NSPAIR(_ZN8S20127C2C1Ev),
  NSPAIR(_ZN8S20127C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20127C2[];
extern void _ZN8S20127C22v3Ev();
extern void _ZN8S20127C22v4Ev();
extern void _ZN8S20127C22v5Ev();
extern void _ZN8S20127C22v6Ev();
static  VTBL_ENTRY vtc_S20127C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20127C2[0]),
  (VTBL_ENTRY)&_ZN8S20127C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20127C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20127C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20127C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20127C2[];
extern  VTBL_ENTRY _ZTV8S20127C2[];
Class_Descriptor cd_S20127C2 = {  "S20127C2", // class name
  0,0,//no base classes
  &(vtc_S20127C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20127C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20127C2),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  S20127C1  : virtual S20127C2 {
  virtual void  v1(); // _ZN8S20127C12v1Ev
  virtual void  v2(); // _ZN8S20127C12v2Ev
  ~S20127C1(); // tgen
  S20127C1(); // tgen
};
//SIG(1 S20127C1) C1{ VBC2{ v3 v4 v5 v6 Fs:7} v1 v2}


void  S20127C1 ::v1(){vfunc_called(this, "_ZN8S20127C12v1Ev");}
void  S20127C1 ::v2(){vfunc_called(this, "_ZN8S20127C12v2Ev");}
S20127C1 ::~S20127C1(){ note_dtor("S20127C1", this);} // tgen
S20127C1 ::S20127C1(){ note_ctor("S20127C1", this);} // tgen

static void Test_S20127C1()
{
  extern Class_Descriptor cd_S20127C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20127C1, buf);
    S20127C1 *dp, &lv = *(dp=new (buf) S20127C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20127C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20127C1)");
    check_base_class_offset(lv, (S20127C2*), ABISELECT(8,4), "S20127C1");
    test_class_info(&lv, &cd_S20127C1);
    dp->~S20127C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20127C1(Test_S20127C1, "S20127C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20127C1C1Ev();
extern void _ZN8S20127C1D1Ev();
Name_Map name_map_S20127C1[] = {
  NSPAIR(_ZN8S20127C1C1Ev),
  NSPAIR(_ZN8S20127C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20127C2;
extern VTBL_ENTRY _ZTI8S20127C2[];
extern  VTBL_ENTRY _ZTV8S20127C2[];
static Base_Class bases_S20127C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20127C2,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20127C1[];
extern void _ZN8S20127C12v1Ev();
extern void _ZN8S20127C12v2Ev();
extern void _ZN8S20127C22v3Ev();
extern void _ZN8S20127C22v4Ev();
extern void _ZN8S20127C22v5Ev();
extern void _ZN8S20127C22v6Ev();
static  VTBL_ENTRY vtc_S20127C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20127C1[0]),
  (VTBL_ENTRY)&_ZN8S20127C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20127C12v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20127C1[0]),
  (VTBL_ENTRY)&_ZN8S20127C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20127C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20127C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20127C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20127C1[];
static  VTT_ENTRY vtt_S20127C1[] = {
  {&(_ZTV8S20127C1[3]),  3,15},
  {&(_ZTV8S20127C1[11]),  11,15},
};
extern VTBL_ENTRY _ZTI8S20127C1[];
extern  VTBL_ENTRY _ZTV8S20127C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20127C1[];
Class_Descriptor cd_S20127C1 = {  "S20127C1", // class name
  bases_S20127C1, 1,
  &(vtc_S20127C1[0]), // expected_vtbl_contents
  &(vtt_S20127C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20127C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20127C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20127C1),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  S14501C1  {
  void *s14501c1f0[2];
  int s14501c1f1;
  char s14501c1f2[4];
  long s14501c1f3;
  int s14501c1f4;
  char s14501c1f5[36];
};
//SIG(1 S14501C1) C1{ Fp[2] Fi Fc[4] Fl Fi Fc[36]}



static void Test_S14501C1()
{
  {
    init_simple_test("S14501C1");
    S14501C1 lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S14501C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14501C1)");
    check_field_offset(lv, s14501c1f0, 0, "S14501C1.s14501c1f0");
    check_field_offset(lv, s14501c1f1, ABISELECT(16,8), "S14501C1.s14501c1f1");
    check_field_offset(lv, s14501c1f2, ABISELECT(20,12), "S14501C1.s14501c1f2");
    check_field_offset(lv, s14501c1f3, ABISELECT(24,16), "S14501C1.s14501c1f3");
    check_field_offset(lv, s14501c1f4, ABISELECT(32,20), "S14501C1.s14501c1f4");
    check_field_offset(lv, s14501c1f5, ABISELECT(36,24), "S14501C1.s14501c1f5");
  }
}
static Arrange_To_Call_Me vS14501C1(Test_S14501C1, "S14501C1", ABISELECT(72,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10759C1  {
  char s10759c1f0[21];
  int s10759c1f1[3];
  char s10759c1f2[288];
  int s10759c1f3;
  char s10759c1f4;
};
//SIG(1 S10759C1) C1{ Fc[21] Fi[3] Fc[288] Fi Fc}



static void Test_S10759C1()
{
  {
    init_simple_test("S10759C1");
    S10759C1 lv;
    check2(sizeof(lv), 332, "sizeof(S10759C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10759C1)");
    check_field_offset(lv, s10759c1f0, 0, "S10759C1.s10759c1f0");
    check_field_offset(lv, s10759c1f1, 24, "S10759C1.s10759c1f1");
    check_field_offset(lv, s10759c1f2, 36, "S10759C1.s10759c1f2");
    check_field_offset(lv, s10759c1f3, 324, "S10759C1.s10759c1f3");
    check_field_offset(lv, s10759c1f4, 328, "S10759C1.s10759c1f4");
  }
}
static Arrange_To_Call_Me vS10759C1(Test_S10759C1, "S10759C1", 332);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14252C1  {
  void *s14252c1f0;
  int s14252c1f1;
  void *s14252c1f2[5];
  int s14252c1f3;
  void *s14252c1f4;
  int s14252c1f5;
  void *s14252c1f6;
  int s14252c1f7;
};
//SIG(1 S14252C1) C1{ Fp Fi Fp[5] Fi Fp Fi Fp Fi}



static void Test_S14252C1()
{
  {
    init_simple_test("S14252C1");
    S14252C1 lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S14252C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14252C1)");
    check_field_offset(lv, s14252c1f0, 0, "S14252C1.s14252c1f0");
    check_field_offset(lv, s14252c1f1, ABISELECT(8,4), "S14252C1.s14252c1f1");
    check_field_offset(lv, s14252c1f2, ABISELECT(16,8), "S14252C1.s14252c1f2");
    check_field_offset(lv, s14252c1f3, ABISELECT(56,28), "S14252C1.s14252c1f3");
    check_field_offset(lv, s14252c1f4, ABISELECT(64,32), "S14252C1.s14252c1f4");
    check_field_offset(lv, s14252c1f5, ABISELECT(72,36), "S14252C1.s14252c1f5");
    check_field_offset(lv, s14252c1f6, ABISELECT(80,40), "S14252C1.s14252c1f6");
    check_field_offset(lv, s14252c1f7, ABISELECT(88,44), "S14252C1.s14252c1f7");
  }
}
static Arrange_To_Call_Me vS14252C1(Test_S14252C1, "S14252C1", ABISELECT(96,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10886C1  {
  char s10886c1f0[4];
  int s10886c1f1;
  char s10886c1f2[2];
  short s10886c1f3;
  int s10886c1f4;
  __tsi64 s10886c1f5[2];
};
//SIG(1 S10886C1) C1{ Fc[4] Fi Fc[2] Fs Fi FL[2]}



static void Test_S10886C1()
{
  {
    init_simple_test("S10886C1");
    S10886C1 lv;
    check2(sizeof(lv), 32, "sizeof(S10886C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10886C1)");
    check_field_offset(lv, s10886c1f0, 0, "S10886C1.s10886c1f0");
    check_field_offset(lv, s10886c1f1, 4, "S10886C1.s10886c1f1");
    check_field_offset(lv, s10886c1f2, 8, "S10886C1.s10886c1f2");
    check_field_offset(lv, s10886c1f3, 10, "S10886C1.s10886c1f3");
    check_field_offset(lv, s10886c1f4, 12, "S10886C1.s10886c1f4");
    check_field_offset(lv, s10886c1f5, 16, "S10886C1.s10886c1f5");
  }
}
static Arrange_To_Call_Me vS10886C1(Test_S10886C1, "S10886C1", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18310C1  {
  void *s18310c1f0[3];
  int s18310c1f1;
  __tsi64 s18310c1f2;
  int s18310c1f3;
  void *s18310c1f4[2];
  char s18310c1f5;
  void  mf18310c1(); // _ZN8S18310C19mf18310c1Ev
};
//SIG(1 S18310C1) C1{ m Fp[3] Fi FL Fi Fp[2] Fc}


void  S18310C1 ::mf18310c1(){}

static void Test_S18310C1()
{
  {
    init_simple_test("S18310C1");
    S18310C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S18310C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18310C1)");
    check_field_offset(lv, s18310c1f0, 0, "S18310C1.s18310c1f0");
    check_field_offset(lv, s18310c1f1, ABISELECT(24,12), "S18310C1.s18310c1f1");
    check_field_offset(lv, s18310c1f2, ABISELECT(32,16), "S18310C1.s18310c1f2");
    check_field_offset(lv, s18310c1f3, ABISELECT(40,24), "S18310C1.s18310c1f3");
    check_field_offset(lv, s18310c1f4, ABISELECT(48,28), "S18310C1.s18310c1f4");
    check_field_offset(lv, s18310c1f5, ABISELECT(64,36), "S18310C1.s18310c1f5");
  }
}
static Arrange_To_Call_Me vS18310C1(Test_S18310C1, "S18310C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10703C1  {
  char s10703c1f0[2];
  short s10703c1f1[3];
  int s10703c1f2[2];
  char s10703c1f3[584];
};
//SIG(1 S10703C1) C1{ Fc[2] Fs[3] Fi[2] Fc[584]}



static void Test_S10703C1()
{
  {
    init_simple_test("S10703C1");
    S10703C1 lv;
    check2(sizeof(lv), 600, "sizeof(S10703C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10703C1)");
    check_field_offset(lv, s10703c1f0, 0, "S10703C1.s10703c1f0");
    check_field_offset(lv, s10703c1f1, 2, "S10703C1.s10703c1f1");
    check_field_offset(lv, s10703c1f2, 8, "S10703C1.s10703c1f2");
    check_field_offset(lv, s10703c1f3, 16, "S10703C1.s10703c1f3");
  }
}
static Arrange_To_Call_Me vS10703C1(Test_S10703C1, "S10703C1", 600);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21696C1  {
  __tsi64 s21696c1f0;
  ::S2191C7_nt s21696c1f1;
  ::S2191C7_nt s21696c1f2;
  char s21696c1f3;
  int s21696c1f4;
  void  mf21696c1(); // _ZN8S21696C19mf21696c1Ev
  virtual  ~S21696C1(); // _ZN8S21696C1D1Ev
  S21696C1(); // tgen
};
//SIG(1 S21696C1) C1{ vd m FL FC2{ FL} FC2 Fc Fi}


void  S21696C1 ::mf21696c1(){}
 S21696C1 ::~S21696C1(){ note_dtor("S21696C1", this);}
S21696C1 ::S21696C1(){ note_ctor("S21696C1", this);} // tgen

static void Test_S21696C1()
{
  extern Class_Descriptor cd_S21696C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,10)];
    init_test(&cd_S21696C1, buf);
    S21696C1 *dp, &lv = *(dp=new (buf) S21696C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S21696C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21696C1)");
    check_field_offset(lv, s21696c1f0, ABISELECT(8,4), "S21696C1.s21696c1f0");
    check_field_offset(lv, s21696c1f1, ABISELECT(16,12), "S21696C1.s21696c1f1");
    check_field_offset(lv, s21696c1f2, ABISELECT(24,20), "S21696C1.s21696c1f2");
    check_field_offset(lv, s21696c1f3, ABISELECT(32,28), "S21696C1.s21696c1f3");
    check_field_offset(lv, s21696c1f4, ABISELECT(36,32), "S21696C1.s21696c1f4");
    test_class_info(&lv, &cd_S21696C1);
    dp->~S21696C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21696C1(Test_S21696C1, "S21696C1", ABISELECT(40,36));

#else // __cplusplus

extern void _ZN8S21696C1C1Ev();
extern void _ZN8S21696C1D1Ev();
Name_Map name_map_S21696C1[] = {
  NSPAIR(_ZN8S21696C1C1Ev),
  NSPAIR(_ZN8S21696C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21696C1[];
extern void _ZN8S21696C1D1Ev();
extern void _ZN8S21696C1D0Ev();
static  VTBL_ENTRY vtc_S21696C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21696C1[0]),
  (VTBL_ENTRY)&_ZN8S21696C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21696C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21696C1[];
extern  VTBL_ENTRY _ZTV8S21696C1[];
Class_Descriptor cd_S21696C1 = {  "S21696C1", // class name
  0,0,//no base classes
  &(vtc_S21696C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,36), // object size
  NSPAIRA(_ZTI8S21696C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21696C1),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  S18072C1  {
  void *s18072c1f0[2];
  int s18072c1f1;
  ::S1538C5_nt s18072c1f2;
  void  mf18072c1(); // _ZN8S18072C19mf18072c1Ev
};
//SIG(1 S18072C1) C1{ m Fp[2] Fi FC2{ m Fi[2]}}


void  S18072C1 ::mf18072c1(){}

static void Test_S18072C1()
{
  {
    init_simple_test("S18072C1");
    S18072C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18072C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18072C1)");
    check_field_offset(lv, s18072c1f0, 0, "S18072C1.s18072c1f0");
    check_field_offset(lv, s18072c1f1, ABISELECT(16,8), "S18072C1.s18072c1f1");
    check_field_offset(lv, s18072c1f2, ABISELECT(20,12), "S18072C1.s18072c1f2");
  }
}
static Arrange_To_Call_Me vS18072C1(Test_S18072C1, "S18072C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18860C1  {
  virtual  ~S18860C1(); // _ZN8S18860C1D1Ev
  virtual void  v1(); // _ZN8S18860C12v1Ev
  virtual void  v2(); // _ZN8S18860C12v2Ev
  virtual void  v3(); // _ZN8S18860C12v3Ev
  virtual void  v4(); // _ZN8S18860C12v4Ev
  virtual void  v5(); // _ZN8S18860C12v5Ev
  virtual void  v6(); // _ZN8S18860C12v6Ev
  virtual void  v7(); // _ZN8S18860C12v7Ev
  S18860C1(); // tgen
};
//SIG(1 S18860C1) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S18860C1 ::~S18860C1(){ note_dtor("S18860C1", this);}
void  S18860C1 ::v1(){vfunc_called(this, "_ZN8S18860C12v1Ev");}
void  S18860C1 ::v2(){vfunc_called(this, "_ZN8S18860C12v2Ev");}
void  S18860C1 ::v3(){vfunc_called(this, "_ZN8S18860C12v3Ev");}
void  S18860C1 ::v4(){vfunc_called(this, "_ZN8S18860C12v4Ev");}
void  S18860C1 ::v5(){vfunc_called(this, "_ZN8S18860C12v5Ev");}
void  S18860C1 ::v6(){vfunc_called(this, "_ZN8S18860C12v6Ev");}
void  S18860C1 ::v7(){vfunc_called(this, "_ZN8S18860C12v7Ev");}
S18860C1 ::S18860C1(){ note_ctor("S18860C1", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S18860C1C1Ev();
extern void _ZN8S18860C1D1Ev();
Name_Map name_map_S18860C1[] = {
  NSPAIR(_ZN8S18860C1C1Ev),
  NSPAIR(_ZN8S18860C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18860C1[];
extern void _ZN8S18860C1D1Ev();
extern void _ZN8S18860C1D0Ev();
extern void _ZN8S18860C12v1Ev();
extern void _ZN8S18860C12v2Ev();
extern void _ZN8S18860C12v3Ev();
extern void _ZN8S18860C12v4Ev();
extern void _ZN8S18860C12v5Ev();
extern void _ZN8S18860C12v6Ev();
extern void _ZN8S18860C12v7Ev();
static  VTBL_ENTRY vtc_S18860C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18860C1[0]),
  (VTBL_ENTRY)&_ZN8S18860C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18860C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18860C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S18860C1[];
extern  VTBL_ENTRY _ZTV8S18860C1[];
Class_Descriptor cd_S18860C1 = {  "S18860C1", // class name
  0,0,//no base classes
  &(vtc_S18860C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18860C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18860C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13591C1  {
  int s13591c1f0[6];
  short s13591c1f1[36];
  char s13591c1f2[138];
  int s13591c1f3;
};
//SIG(1 S13591C1) C1{ Fi[6] Fs[36] Fc[138] Fi}



static void Test_S13591C1()
{
  {
    init_simple_test("S13591C1");
    S13591C1 lv;
    check2(sizeof(lv), 240, "sizeof(S13591C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13591C1)");
    check_field_offset(lv, s13591c1f0, 0, "S13591C1.s13591c1f0");
    check_field_offset(lv, s13591c1f1, 24, "S13591C1.s13591c1f1");
    check_field_offset(lv, s13591c1f2, 96, "S13591C1.s13591c1f2");
    check_field_offset(lv, s13591c1f3, 236, "S13591C1.s13591c1f3");
  }
}
static Arrange_To_Call_Me vS13591C1(Test_S13591C1, "S13591C1", 240);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11036C1  {
  char s11036c1f0[96];
  int s11036c1f1[3];
  char s11036c1f2[64];
  int s11036c1f3;
};
//SIG(1 S11036C1) C1{ Fc[96] Fi[3] Fc[64] Fi}



static void Test_S11036C1()
{
  {
    init_simple_test("S11036C1");
    S11036C1 lv;
    check2(sizeof(lv), 176, "sizeof(S11036C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11036C1)");
    check_field_offset(lv, s11036c1f0, 0, "S11036C1.s11036c1f0");
    check_field_offset(lv, s11036c1f1, 96, "S11036C1.s11036c1f1");
    check_field_offset(lv, s11036c1f2, 108, "S11036C1.s11036c1f2");
    check_field_offset(lv, s11036c1f3, 172, "S11036C1.s11036c1f3");
  }
}
static Arrange_To_Call_Me vS11036C1(Test_S11036C1, "S11036C1", 176);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11570C1  {
  ::S5979C6_nt s11570c1f0;
  ::S5979C6_nt s11570c1f1;
  __tsi64 s11570c1f2;
  int s11570c1f3[2];
};
//SIG(1 S11570C1) C1{ FC2{ Fi[2]} FC2 FL Fi[2]}



static void Test_S11570C1()
{
  {
    init_simple_test("S11570C1");
    S11570C1 lv;
    check2(sizeof(lv), 32, "sizeof(S11570C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11570C1)");
    check_field_offset(lv, s11570c1f0, 0, "S11570C1.s11570c1f0");
    check_field_offset(lv, s11570c1f1, 8, "S11570C1.s11570c1f1");
    check_field_offset(lv, s11570c1f2, 16, "S11570C1.s11570c1f2");
    check_field_offset(lv, s11570c1f3, 24, "S11570C1.s11570c1f3");
  }
}
static Arrange_To_Call_Me vS11570C1(Test_S11570C1, "S11570C1", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12574C3_nt  {
  int s12574c3f0;
  void  mf12574c3(); // _ZN11S12574C3_nt9mf12574c3Ev
};
//SIG(-1 S12574C3_nt) C1{ m Fi}


void  S12574C3_nt ::mf12574c3(){}

//skip512 S12574C3_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S12574C1  {
  int s12574c1f0;
  ::S1538C9_nt s12574c1f1;
  ::S12574C3_nt s12574c1f2;
};
//SIG(1 S12574C1) C1{ Fi FC2{ m Fi} FC3{ m Fi}}



static void Test_S12574C1()
{
  {
    init_simple_test("S12574C1");
    S12574C1 lv;
    check2(sizeof(lv), 12, "sizeof(S12574C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12574C1)");
    check_field_offset(lv, s12574c1f0, 0, "S12574C1.s12574c1f0");
    check_field_offset(lv, s12574c1f1, 4, "S12574C1.s12574c1f1");
    check_field_offset(lv, s12574c1f2, 8, "S12574C1.s12574c1f2");
  }
}
static Arrange_To_Call_Me vS12574C1(Test_S12574C1, "S12574C1", 12);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12079C1  {
  ::S1538C14_nt s12079c1f0;
  ::S1538C14_nt s12079c1f1;
  int s12079c1f2[2];
};
//SIG(1 S12079C1) C1{ FC2{ m Fi[3]} FC2 Fi[2]}



static void Test_S12079C1()
{
  {
    init_simple_test("S12079C1");
    S12079C1 lv;
    check2(sizeof(lv), 32, "sizeof(S12079C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12079C1)");
    check_field_offset(lv, s12079c1f0, 0, "S12079C1.s12079c1f0");
    check_field_offset(lv, s12079c1f1, 12, "S12079C1.s12079c1f1");
    check_field_offset(lv, s12079c1f2, 24, "S12079C1.s12079c1f2");
  }
}
static Arrange_To_Call_Me vS12079C1(Test_S12079C1, "S12079C1", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13224C1  {
  int s13224c1f0[2];
  void *s13224c1f1[2];
  int s13224c1f2[3];
  __tsi64 s13224c1f3;
};
//SIG(1 S13224C1) C1{ Fi[2] Fp[2] Fi[3] FL}



static void Test_S13224C1()
{
  {
    init_simple_test("S13224C1");
    S13224C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S13224C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13224C1)");
    check_field_offset(lv, s13224c1f0, 0, "S13224C1.s13224c1f0");
    check_field_offset(lv, s13224c1f1, 8, "S13224C1.s13224c1f1");
    check_field_offset(lv, s13224c1f2, ABISELECT(24,16), "S13224C1.s13224c1f2");
    check_field_offset(lv, s13224c1f3, ABISELECT(40,28), "S13224C1.s13224c1f3");
  }
}
static Arrange_To_Call_Me vS13224C1(Test_S13224C1, "S13224C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19885C3  : virtual S19490C26 {
  int s19885c3f0;
  ~S19885C3(); // tgen
  S19885C3(); // tgen
};
//SIG(-1 S19885C3) C1{ VBC2{ m} Fi}


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

static void Test_S19885C3()
{
  extern Class_Descriptor cd_S19885C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19885C3, buf);
    S19885C3 *dp, &lv = *(dp=new (buf) S19885C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19885C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19885C3)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19885C3");
    check_field_offset(lv, s19885c3f0, ABISELECT(8,4), "S19885C3.s19885c3f0");
    test_class_info(&lv, &cd_S19885C3);
    dp->~S19885C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19885C3(Test_S19885C3, "S19885C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19885C3C1Ev();
extern void _ZN8S19885C3D1Ev();
Name_Map name_map_S19885C3[] = {
  NSPAIR(_ZN8S19885C3C1Ev),
  NSPAIR(_ZN8S19885C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
static Base_Class bases_S19885C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19885C3[];
static  VTBL_ENTRY vtc_S19885C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19885C3[0]),
};
extern VTBL_ENTRY _ZTV8S19885C3[];
static  VTT_ENTRY vtt_S19885C3[] = {
  {&(_ZTV8S19885C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19885C3[];
extern  VTBL_ENTRY _ZTV8S19885C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19885C3[];
Class_Descriptor cd_S19885C3 = {  "S19885C3", // class name
  bases_S19885C3, 1,
  &(vtc_S19885C3[0]), // expected_vtbl_contents
  &(vtt_S19885C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19885C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19885C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19885C3),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  S19885C1  : virtual S19490C26 , virtual S19885C3 {
  ~S19885C1(); // tgen
  S19885C1(); // tgen
};
//SIG(1 S19885C1) C1{ VBC2{ m} VBC3{ VBC2 Fi}}


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

static void Test_S19885C1()
{
  extern Class_Descriptor cd_S19885C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19885C1, buf);
    S19885C1 *dp, &lv = *(dp=new (buf) S19885C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19885C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19885C1)");
    check_base_class_offset(lv, (S19490C26*), 0, "S19885C1");
    check_base_class_offset(lv, (S19490C26*)(S19885C3*), 0, "S19885C1");
    check_base_class_offset(lv, (S19885C3*), ABISELECT(8,4), "S19885C1");
    test_class_info(&lv, &cd_S19885C1);
    dp->~S19885C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19885C1(Test_S19885C1, "S19885C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19885C1C1Ev();
extern void _ZN8S19885C1D1Ev();
Name_Map name_map_S19885C1[] = {
  NSPAIR(_ZN8S19885C1C1Ev),
  NSPAIR(_ZN8S19885C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19490C26;
extern VTBL_ENTRY _ZTI9S19490C26[];
extern Class_Descriptor cd_S19885C3;
extern VTBL_ENTRY _ZTI8S19885C3[];
extern  VTBL_ENTRY _ZTV8S19885C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19885C3[];
static Base_Class bases_S19885C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19490C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19885C3,    ABISELECT(8,4), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19885C1[];
static  VTBL_ENTRY vtc_S19885C1[] = {
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19885C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19885C1[0]),
};
extern VTBL_ENTRY _ZTV8S19885C1[];
static  VTBL_ENTRY _tg__ZTV8S19885C3__8S19885C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19885C3[0]),
};
static  VTT_ENTRY vtt_S19885C1[] = {
  {&(_ZTV8S19885C1[4]),  4,7},
  {&(_ZTV8S19885C1[7]),  7,7},
  {&(_tg__ZTV8S19885C3__8S19885C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19885C1[];
extern  VTBL_ENTRY _ZTV8S19885C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19885C1[];
Class_Descriptor cd_S19885C1 = {  "S19885C1", // class name
  bases_S19885C1, 2,
  &(vtc_S19885C1[0]), // expected_vtbl_contents
  &(vtt_S19885C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19885C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19885C1),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19885C1),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  S14696C1  {
  void *s14696c1f0[5];
  int s14696c1f1;
  void *s14696c1f2[3];
  int s14696c1f3;
  void *s14696c1f4;
};
//SIG(1 S14696C1) C1{ Fp[5] Fi Fp[3] Fi Fp}



static void Test_S14696C1()
{
  {
    init_simple_test("S14696C1");
    S14696C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S14696C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14696C1)");
    check_field_offset(lv, s14696c1f0, 0, "S14696C1.s14696c1f0");
    check_field_offset(lv, s14696c1f1, ABISELECT(40,20), "S14696C1.s14696c1f1");
    check_field_offset(lv, s14696c1f2, ABISELECT(48,24), "S14696C1.s14696c1f2");
    check_field_offset(lv, s14696c1f3, ABISELECT(72,36), "S14696C1.s14696c1f3");
    check_field_offset(lv, s14696c1f4, ABISELECT(80,40), "S14696C1.s14696c1f4");
  }
}
static Arrange_To_Call_Me vS14696C1(Test_S14696C1, "S14696C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17413C1  {
  __tsi64 s17413c1f0[3];
  long s17413c1f1[2];
  int s17413c1f2[4];
  void  mf17413c1(); // _ZN8S17413C19mf17413c1Ev
};
//SIG(1 S17413C1) C1{ m FL[3] Fl[2] Fi[4]}


void  S17413C1 ::mf17413c1(){}

static void Test_S17413C1()
{
  {
    init_simple_test("S17413C1");
    S17413C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S17413C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17413C1)");
    check_field_offset(lv, s17413c1f0, 0, "S17413C1.s17413c1f0");
    check_field_offset(lv, s17413c1f1, 24, "S17413C1.s17413c1f1");
    check_field_offset(lv, s17413c1f2, ABISELECT(40,32), "S17413C1.s17413c1f2");
  }
}
static Arrange_To_Call_Me vS17413C1(Test_S17413C1, "S17413C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12938C1  {
  int s12938c1f0:6;
  int s12938c1f1:2;
  int s12938c1f2:8;
  int s12938c1f3:8;
};
//SIG(1 S12938C1) C1{ Fi:6 Fi:2 Fi:8 Fi:8}



static void Test_S12938C1()
{
  {
    init_simple_test("S12938C1");
    static S12938C1 lv;
    check2(sizeof(lv), 4, "sizeof(S12938C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12938C1)");
    set_bf_and_test(lv, s12938c1f0, 0, 0, 6, 1, "S12938C1");
    set_bf_and_test(lv, s12938c1f0, 0, 0, 6, hide_sll(1LL<<5), "S12938C1");
    set_bf_and_test(lv, s12938c1f1, 0, 6, 2, 1, "S12938C1");
    set_bf_and_test(lv, s12938c1f1, 0, 6, 2, hide_sll(1LL<<1), "S12938C1");
    set_bf_and_test(lv, s12938c1f2, 1, 0, 8, 1, "S12938C1");
    set_bf_and_test(lv, s12938c1f2, 1, 0, 8, hide_sll(1LL<<7), "S12938C1");
    set_bf_and_test(lv, s12938c1f3, 2, 0, 8, 1, "S12938C1");
    set_bf_and_test(lv, s12938c1f3, 2, 0, 8, hide_sll(1LL<<7), "S12938C1");
  }
}
static Arrange_To_Call_Me vS12938C1(Test_S12938C1, "S12938C1", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18468C1  {
  char s18468c1f0;
  long double s18468c1f1;
  ::S7223C9_nt s18468c1f2;
  char s18468c1f3:4;
  virtual void  v1(); // _ZN8S18468C12v1Ev
  ~S18468C1(); // tgen
  S18468C1(); // tgen
};
//SIG(1 S18468C1) C1{ v1 Fc FD FC2{} Fc:4}


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

static void Test_S18468C1()
{
  extern Class_Descriptor cd_S18468C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S18468C1, buf);
    S18468C1 *dp, &lv = *(dp=new (buf) S18468C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S18468C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18468C1)");
    check_field_offset(lv, s18468c1f0, ABISELECT(8,4), "S18468C1.s18468c1f0");
    check_field_offset(lv, s18468c1f1, ABISELECT(16,8), "S18468C1.s18468c1f1");
    check_field_offset(lv, s18468c1f2, ABISELECT(32,20), "S18468C1.s18468c1f2");
    set_bf_and_test(lv, s18468c1f3, ABISELECT(33,21), 0, 4, 1, "S18468C1");
    set_bf_and_test(lv, s18468c1f3, ABISELECT(33,21), 0, 4, hide_sll(1LL<<3), "S18468C1");
    test_class_info(&lv, &cd_S18468C1);
    dp->~S18468C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18468C1(Test_S18468C1, "S18468C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S18468C1C1Ev();
extern void _ZN8S18468C1D1Ev();
Name_Map name_map_S18468C1[] = {
  NSPAIR(_ZN8S18468C1C1Ev),
  NSPAIR(_ZN8S18468C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18468C1[];
extern void _ZN8S18468C12v1Ev();
static  VTBL_ENTRY vtc_S18468C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18468C1[0]),
  (VTBL_ENTRY)&_ZN8S18468C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18468C1[];
extern  VTBL_ENTRY _ZTV8S18468C1[];
Class_Descriptor cd_S18468C1 = {  "S18468C1", // class name
  0,0,//no base classes
  &(vtc_S18468C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S18468C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18468C1),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  S17942C2_nt  {
  void *s17942c2f0[2];
};
//SIG(-1 S17942C2_nt) C1{ Fp[2]}



//skip512 S17942C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17942C1  {
  void *s17942c1f0[2];
  ::S17942C2_nt s17942c1f1;
  void  mf17942c1(); // _ZN8S17942C19mf17942c1Ev
};
//SIG(1 S17942C1) C1{ m Fp[2] FC2{ Fp[2]}}


void  S17942C1 ::mf17942c1(){}

static void Test_S17942C1()
{
  {
    init_simple_test("S17942C1");
    S17942C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S17942C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17942C1)");
    check_field_offset(lv, s17942c1f0, 0, "S17942C1.s17942c1f0");
    check_field_offset(lv, s17942c1f1, ABISELECT(16,8), "S17942C1.s17942c1f1");
  }
}
static Arrange_To_Call_Me vS17942C1(Test_S17942C1, "S17942C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12245C1  {
  int s12245c1f0;
  char s12245c1f1[2048];
  int s12245c1f2[2];
};
//SIG(1 S12245C1) C1{ Fi Fc[2048] Fi[2]}



static void Test_S12245C1()
{
  {
    init_simple_test("S12245C1");
    S12245C1 lv;
    check2(sizeof(lv), 2060, "sizeof(S12245C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12245C1)");
    check_field_offset(lv, s12245c1f0, 0, "S12245C1.s12245c1f0");
    check_field_offset(lv, s12245c1f1, 4, "S12245C1.s12245c1f1");
    check_field_offset(lv, s12245c1f2, 2052, "S12245C1.s12245c1f2");
  }
}
static Arrange_To_Call_Me vS12245C1(Test_S12245C1, "S12245C1", 2060);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12101C1  {
  ::S1538C24_nt s12101c1f0;
  void *s12101c1f1[4];
};
//SIG(1 S12101C1) C1{ FC2{ m Fi[4]} Fp[4]}



static void Test_S12101C1()
{
  {
    init_simple_test("S12101C1");
    S12101C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S12101C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12101C1)");
    check_field_offset(lv, s12101c1f0, 0, "S12101C1.s12101c1f0");
    check_field_offset(lv, s12101c1f1, 16, "S12101C1.s12101c1f1");
  }
}
static Arrange_To_Call_Me vS12101C1(Test_S12101C1, "S12101C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21427C1  {
  ::S6744C8_nt s21427c1f0;
  void  mf21427c1(); // _ZN8S21427C19mf21427c1Ev
  virtual  ~S21427C1(); // _ZN8S21427C1D1Ev
  S21427C1(); // tgen
};
//SIG(1 S21427C1) C1{ vd m FC2{ m FL[2]}}


void  S21427C1 ::mf21427c1(){}
 S21427C1 ::~S21427C1(){ note_dtor("S21427C1", this);}
S21427C1 ::S21427C1(){ note_ctor("S21427C1", this);} // tgen

static void Test_S21427C1()
{
  extern Class_Descriptor cd_S21427C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S21427C1, buf);
    S21427C1 *dp, &lv = *(dp=new (buf) S21427C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S21427C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21427C1)");
    check_field_offset(lv, s21427c1f0, ABISELECT(8,4), "S21427C1.s21427c1f0");
    test_class_info(&lv, &cd_S21427C1);
    dp->~S21427C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21427C1(Test_S21427C1, "S21427C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S21427C1C1Ev();
extern void _ZN8S21427C1D1Ev();
Name_Map name_map_S21427C1[] = {
  NSPAIR(_ZN8S21427C1C1Ev),
  NSPAIR(_ZN8S21427C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21427C1[];
extern void _ZN8S21427C1D1Ev();
extern void _ZN8S21427C1D0Ev();
static  VTBL_ENTRY vtc_S21427C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21427C1[0]),
  (VTBL_ENTRY)&_ZN8S21427C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21427C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21427C1[];
extern  VTBL_ENTRY _ZTV8S21427C1[];
Class_Descriptor cd_S21427C1 = {  "S21427C1", // class name
  0,0,//no base classes
  &(vtc_S21427C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S21427C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21427C1),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  S13095C2_nt  {
  int s13095c2f0[3];
};
//SIG(-1 S13095C2_nt) C1{ Fi[3]}



//skip512 S13095C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13095C1  {
  int s13095c1f0[2];
  ::S13095C2_nt s13095c1f1;
};
//SIG(1 S13095C1) C1{ Fi[2] FC2{ Fi[3]}}



static void Test_S13095C1()
{
  {
    init_simple_test("S13095C1");
    S13095C1 lv;
    check2(sizeof(lv), 20, "sizeof(S13095C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13095C1)");
    check_field_offset(lv, s13095c1f0, 0, "S13095C1.s13095c1f0");
    check_field_offset(lv, s13095c1f1, 8, "S13095C1.s13095c1f1");
  }
}
static Arrange_To_Call_Me vS13095C1(Test_S13095C1, "S13095C1", 20);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5537C3_nt  {
  int s5537c3f0;
};
//SIG(-1 S5537C3_nt) C1{ Fi}



//skip512 S5537C3_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5537C1  : S13320C50_nt , S5537C3_nt {
  int s5537c1f0;
};
//SIG(1 S5537C1) C1{ BC2{ Fi} BC3{ Fi} Fi}



static void Test_S5537C1()
{
  extern Class_Descriptor cd_S5537C1;
  void *lvp;
  {
    int buf[4];
    init_test(&cd_S5537C1, buf);
    S5537C1 &lv = *(new (buf) S5537C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 12, "sizeof(S5537C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5537C1)");
    check_base_class_offset(lv, (S13320C50_nt*), 0, "S5537C1");
    check_base_class_offset(lv, (S5537C3_nt*), 4, "S5537C1");
    check_field_offset(lv, s5537c1f0, 8, "S5537C1.s5537c1f0");
    test_class_info(&lv, &cd_S5537C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5537C1(Test_S5537C1, "S5537C1", 12);

#else // __cplusplus

extern Class_Descriptor cd_S13320C50_nt;
extern Class_Descriptor cd_S5537C3_nt;
static Base_Class bases_S5537C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S13320C50_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5537C3_nt,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5537C1 = {  "S5537C1", // class name
  bases_S5537C1, 2,
  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  S16975C1  {
  int s16975c1f0;
  void *s16975c1f1[3];
  int s16975c1f2[3];
  void  mf16975c1(); // _ZN8S16975C19mf16975c1Ev
};
//SIG(1 S16975C1) C1{ m Fi Fp[3] Fi[3]}


void  S16975C1 ::mf16975c1(){}

static void Test_S16975C1()
{
  {
    init_simple_test("S16975C1");
    S16975C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S16975C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16975C1)");
    check_field_offset(lv, s16975c1f0, 0, "S16975C1.s16975c1f0");
    check_field_offset(lv, s16975c1f1, ABISELECT(8,4), "S16975C1.s16975c1f1");
    check_field_offset(lv, s16975c1f2, ABISELECT(32,16), "S16975C1.s16975c1f2");
  }
}
static Arrange_To_Call_Me vS16975C1(Test_S16975C1, "S16975C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S16995C2  {
  __tsi64 s16995c2f0;
  char s16995c2f1;
};
//SIG(1 S16995C2) U1{ FL Fc}

#endif // __cplusplus
#ifdef __cplusplus

struct  S16995C1  {
  int s16995c1f0;
  ::S16995C2 s16995c1f1;
  void  mf16995c1(); // _ZN8S16995C19mf16995c1Ev
};
//SIG(1 S16995C1) C1{ m Fi FU2{ FL Fc}}


void  S16995C1 ::mf16995c1(){}

static void Test_S16995C1()
{
  {
    init_simple_test("S16995C1");
    S16995C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S16995C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16995C1)");
    check_field_offset(lv, s16995c1f0, 0, "S16995C1.s16995c1f0");
    check_field_offset(lv, s16995c1f1, ABISELECT(8,4), "S16995C1.s16995c1f1");
  }
}
static Arrange_To_Call_Me vS16995C1(Test_S16995C1, "S16995C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12060C1  {
  ::S1538C5_nt s12060c1f0;
  int s12060c1f1;
};
//SIG(1 S12060C1) C1{ FC2{ m Fi[2]} Fi}



static void Test_S12060C1()
{
  {
    init_simple_test("S12060C1");
    S12060C1 lv;
    check2(sizeof(lv), 12, "sizeof(S12060C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12060C1)");
    check_field_offset(lv, s12060c1f0, 0, "S12060C1.s12060c1f0");
    check_field_offset(lv, s12060c1f1, 8, "S12060C1.s12060c1f1");
  }
}
static Arrange_To_Call_Me vS12060C1(Test_S12060C1, "S12060C1", 12);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5881C1  : S12574C3_nt {
  __tsi64 s5881c1f0;
  int s5881c1f1;
};
//SIG(1 S5881C1) C1{ BC2{ m Fi} FL Fi}



static void Test_S5881C1()
{
  extern Class_Descriptor cd_S5881C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S5881C1, buf);
    S5881C1 &lv = *(new (buf) S5881C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S5881C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5881C1)");
    check_base_class_offset(lv, (S12574C3_nt*), 0, "S5881C1");
    check_field_offset(lv, s5881c1f0, ABISELECT(8,4), "S5881C1.s5881c1f0");
    check_field_offset(lv, s5881c1f1, ABISELECT(16,12), "S5881C1.s5881c1f1");
    test_class_info(&lv, &cd_S5881C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5881C1(Test_S5881C1, "S5881C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S12574C3_nt;
static Base_Class bases_S5881C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S12574C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5881C1 = {  "S5881C1", // class name
  bases_S5881C1, 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  S14519C1  {
  void *s14519c1f0[2];
  int s14519c1f1;
  void *s14519c1f2[2];
};
//SIG(1 S14519C1) C1{ Fp[2] Fi Fp[2]}



static void Test_S14519C1()
{
  {
    init_simple_test("S14519C1");
    S14519C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S14519C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14519C1)");
    check_field_offset(lv, s14519c1f0, 0, "S14519C1.s14519c1f0");
    check_field_offset(lv, s14519c1f1, ABISELECT(16,8), "S14519C1.s14519c1f1");
    check_field_offset(lv, s14519c1f2, ABISELECT(24,12), "S14519C1.s14519c1f2");
  }
}
static Arrange_To_Call_Me vS14519C1(Test_S14519C1, "S14519C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21763C1  {
  void *s21763c1f0;
  int s21763c1f1[3];
  void  mf21763c1(); // _ZN8S21763C19mf21763c1Ev
  virtual  ~S21763C1(); // _ZN8S21763C1D1Ev
  S21763C1(); // tgen
};
//SIG(1 S21763C1) C1{ vd m Fp Fi[3]}


void  S21763C1 ::mf21763c1(){}
 S21763C1 ::~S21763C1(){ note_dtor("S21763C1", this);}
S21763C1 ::S21763C1(){ note_ctor("S21763C1", this);} // tgen

static void Test_S21763C1()
{
  extern Class_Descriptor cd_S21763C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21763C1, buf);
    S21763C1 *dp, &lv = *(dp=new (buf) S21763C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21763C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21763C1)");
    check_field_offset(lv, s21763c1f0, ABISELECT(8,4), "S21763C1.s21763c1f0");
    check_field_offset(lv, s21763c1f1, ABISELECT(16,8), "S21763C1.s21763c1f1");
    test_class_info(&lv, &cd_S21763C1);
    dp->~S21763C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21763C1(Test_S21763C1, "S21763C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21763C1C1Ev();
extern void _ZN8S21763C1D1Ev();
Name_Map name_map_S21763C1[] = {
  NSPAIR(_ZN8S21763C1C1Ev),
  NSPAIR(_ZN8S21763C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21763C1[];
extern void _ZN8S21763C1D1Ev();
extern void _ZN8S21763C1D0Ev();
static  VTBL_ENTRY vtc_S21763C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21763C1[0]),
  (VTBL_ENTRY)&_ZN8S21763C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21763C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21763C1[];
extern  VTBL_ENTRY _ZTV8S21763C1[];
Class_Descriptor cd_S21763C1 = {  "S21763C1", // class name
  0,0,//no base classes
  &(vtc_S21763C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21763C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21763C1),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  S14988C1  {
  ::S16995C2 s14988c1f0[2];
};
//SIG(1 S14988C1) C1{ FU2{ FL Fc}[2]}



static void Test_S14988C1()
{
  {
    init_simple_test("S14988C1");
    S14988C1 lv;
    check2(sizeof(lv), 16, "sizeof(S14988C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14988C1)");
    check_field_offset(lv, s14988c1f0, 0, "S14988C1.s14988c1f0");
  }
}
static Arrange_To_Call_Me vS14988C1(Test_S14988C1, "S14988C1", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10767C1  {
  char s10767c1f0[21];
  int s10767c1f1[4];
};
//SIG(1 S10767C1) C1{ Fc[21] Fi[4]}



static void Test_S10767C1()
{
  {
    init_simple_test("S10767C1");
    S10767C1 lv;
    check2(sizeof(lv), 40, "sizeof(S10767C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10767C1)");
    check_field_offset(lv, s10767c1f0, 0, "S10767C1.s10767c1f0");
    check_field_offset(lv, s10767c1f1, 24, "S10767C1.s10767c1f1");
  }
}
static Arrange_To_Call_Me vS10767C1(Test_S10767C1, "S10767C1", 40);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12099C1  {
  ::S1538C14_nt s12099c1f0;
};
//SIG(1 S12099C1) C1{ FC2{ m Fi[3]}}



static void Test_S12099C1()
{
  {
    init_simple_test("S12099C1");
    S12099C1 lv;
    check2(sizeof(lv), 12, "sizeof(S12099C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12099C1)");
    check_field_offset(lv, s12099c1f0, 0, "S12099C1.s12099c1f0");
  }
}
static Arrange_To_Call_Me vS12099C1(Test_S12099C1, "S12099C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14055C1  {
  void *s14055c1f0;
  char s14055c1f1;
  void *s14055c1f2;
  int s14055c1f3;
};
//SIG(1 S14055C1) C1{ Fp Fc Fp Fi}



static void Test_S14055C1()
{
  {
    init_simple_test("S14055C1");
    S14055C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S14055C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14055C1)");
    check_field_offset(lv, s14055c1f0, 0, "S14055C1.s14055c1f0");
    check_field_offset(lv, s14055c1f1, ABISELECT(8,4), "S14055C1.s14055c1f1");
    check_field_offset(lv, s14055c1f2, ABISELECT(16,8), "S14055C1.s14055c1f2");
    check_field_offset(lv, s14055c1f3, ABISELECT(24,12), "S14055C1.s14055c1f3");
  }
}
static Arrange_To_Call_Me vS14055C1(Test_S14055C1, "S14055C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10473C1  {
  char s10473c1f0;
  int s10473c1f1[2];
  void *s10473c1f2;
};
//SIG(1 S10473C1) C1{ Fc Fi[2] Fp}



static void Test_S10473C1()
{
  {
    init_simple_test("S10473C1");
    S10473C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S10473C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10473C1)");
    check_field_offset(lv, s10473c1f0, 0, "S10473C1.s10473c1f0");
    check_field_offset(lv, s10473c1f1, 4, "S10473C1.s10473c1f1");
    check_field_offset(lv, s10473c1f2, ABISELECT(16,12), "S10473C1.s10473c1f2");
  }
}
static Arrange_To_Call_Me vS10473C1(Test_S10473C1, "S10473C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14259C1  {
  void *s14259c1f0;
  int s14259c1f1;
  void *s14259c1f2[9];
};
//SIG(1 S14259C1) C1{ Fp Fi Fp[9]}



static void Test_S14259C1()
{
  {
    init_simple_test("S14259C1");
    S14259C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S14259C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14259C1)");
    check_field_offset(lv, s14259c1f0, 0, "S14259C1.s14259c1f0");
    check_field_offset(lv, s14259c1f1, ABISELECT(8,4), "S14259C1.s14259c1f1");
    check_field_offset(lv, s14259c1f2, ABISELECT(16,8), "S14259C1.s14259c1f2");
  }
}
static Arrange_To_Call_Me vS14259C1(Test_S14259C1, "S14259C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14989C1  {
  ::S16995C2 s14989c1f0;
};
//SIG(1 S14989C1) C1{ FU2{ FL Fc}}



static void Test_S14989C1()
{
  {
    init_simple_test("S14989C1");
    S14989C1 lv;
    check2(sizeof(lv), 8, "sizeof(S14989C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14989C1)");
    check_field_offset(lv, s14989c1f0, 0, "S14989C1.s14989c1f0");
  }
}
static Arrange_To_Call_Me vS14989C1(Test_S14989C1, "S14989C1", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12794C1  {
  int s12794c1f0;
  void *s12794c1f1[44];
};
//SIG(1 S12794C1) C1{ Fi Fp[44]}



static void Test_S12794C1()
{
  {
    init_simple_test("S12794C1");
    S12794C1 lv;
    check2(sizeof(lv), ABISELECT(360,180), "sizeof(S12794C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12794C1)");
    check_field_offset(lv, s12794c1f0, 0, "S12794C1.s12794c1f0");
    check_field_offset(lv, s12794c1f1, ABISELECT(8,4), "S12794C1.s12794c1f1");
  }
}
static Arrange_To_Call_Me vS12794C1(Test_S12794C1, "S12794C1", ABISELECT(360,180));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13538C1  {
  int s13538c1f0[5];
  char s13538c1f1;
};
//SIG(1 S13538C1) C1{ Fi[5] Fc}



static void Test_S13538C1()
{
  {
    init_simple_test("S13538C1");
    S13538C1 lv;
    check2(sizeof(lv), 24, "sizeof(S13538C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13538C1)");
    check_field_offset(lv, s13538c1f0, 0, "S13538C1.s13538c1f0");
    check_field_offset(lv, s13538c1f1, 20, "S13538C1.s13538c1f1");
  }
}
static Arrange_To_Call_Me vS13538C1(Test_S13538C1, "S13538C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10790C1  {
  char s10790c1f0[259];
};
//SIG(1 S10790C1) C1{ Fc[259]}



static void Test_S10790C1()
{
  {
    init_simple_test("S10790C1");
    S10790C1 lv;
    check2(sizeof(lv), 259, "sizeof(S10790C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10790C1)");
    check_field_offset(lv, s10790c1f0, 0, "S10790C1.s10790c1f0");
  }
}
static Arrange_To_Call_Me vS10790C1(Test_S10790C1, "S10790C1", 259);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13631C1  {
  int s13631c1f0[90];
};
//SIG(1 S13631C1) C1{ Fi[90]}



static void Test_S13631C1()
{
  {
    init_simple_test("S13631C1");
    S13631C1 lv;
    check2(sizeof(lv), 360, "sizeof(S13631C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13631C1)");
    check_field_offset(lv, s13631c1f0, 0, "S13631C1.s13631c1f0");
  }
}
static Arrange_To_Call_Me vS13631C1(Test_S13631C1, "S13631C1", 360);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

